Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/dev
Hi,
Taylor R Campbell <campbell+netbsd-source-changes-d%mumble.net@localhost> writes:
>> 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.
No problem. And thanks for your quick response.
> Can you try the attached patch on top?
With this patch, it works fine for me.
There is no stall after genfb(4).
And I do not find any other problem so far.
$ cd /usr/src
$ TZ=UTC cvs up -dP -D2022-10-04
$ patch -p1 < ~/consokfix.patch
$ ./build.sh ... kernel=...
Thank you very much!!!
> 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;
--
Ryo ONODERA // ryo%tetera.org@localhost
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB FD1B F404 27FA C7D1 15F3
Home |
Main Index |
Thread Index |
Old Index