Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/dev



> Date: Tue, 04 Oct 2022 12:12:15 +0900
> From: Ryo ONODERA <ryo%tetera.org@localhost>
> 
> "Taylor R Campbell" <riastradh%netbsd.org@localhost> writes:
> 
> > console(4), constty(4): Rip off the kernel lock.
> 
> After introduction of MP-safe console/constty, my kernel stopped
> just after genfb(4) detection.
> LOCKDEBUG, DIAGNOSTIC, DEBUG options does not provide any additional
> information with me.
> Could you take a look at my problem?

Sorry about that -- I've reverted this change and the MP-safe cons(4)
change for now, but let's try to figure out what's wrong with them so
I can reapply them and get the console paths out of the kernel lock
for good.

Can you try the attached patch on top?
From 2de03f1efbe5b73d42dc2f59730c17b99c04b3b9 Mon Sep 17 00:00:00 2001
From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
Date: Tue, 4 Oct 2022 05:24:49 +0000
Subject: [PATCH] squash! constty(4): Make MP-safe.

- Fix initialization of ok in cn_redirect.
---
 sys/dev/cons.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/sys/dev/cons.c b/sys/dev/cons.c
index f4f9a1602221..e621292a6b4a 100644
--- a/sys/dev/cons.c
+++ b/sys/dev/cons.c
@@ -463,7 +463,7 @@ cn_redirect(dev_t *devp, int is_read, int *error, struct tty **ctpp)
 	dev_t dev = *devp;
 	struct tty *ctp;
 	int s;
-	bool ok;
+	bool ok = false;
 
 	*error = ENXIO;
 	*ctpp = NULL;
@@ -472,18 +472,17 @@ cn_redirect(dev_t *devp, int is_read, int *error, struct tty **ctpp)
 	    (cn_tab == NULL || (cn_tab->cn_pri != CN_REMOTE))) {
 		if (is_read) {
 			*error = 0;
-			ok = false;
 			goto out;
 		}
 		tty_acquire(ctp);
 		*ctpp = ctp;
 		dev = ctp->t_dev;
 	} else if (cn_tab == NULL) {
-		ok = false;
 		goto out;
 	} else {
 		dev = cn_tab->cn_dev;
 	}
+	ok = true;
 	*devp = dev;
 out:	pserialize_read_exit(s);
 	return ok;


Home | Main Index | Thread Index | Old Index