Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Sep 2012 11:24:07 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        Barbara <barbara.freebsd@gmail.com>
Cc:        freebsd-stable@FreeBSD.org, Andriy Gapon <avg@FreeBSD.org>
Subject:   Re: Fatal trap 12: hda
Message-ID:  <506018A7.1070006@FreeBSD.org>
In-Reply-To: <505F73F2.80501@FreeBSD.org>
References:  <CAETvGMAut5%2BjTcwZzCGNeVjtYdJP7WBhwz-Owjx4N6KB=tSahA@mail.gmail.com> <505F73F2.80501@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 23.09.2012 23:41, Andriy Gapon wrote:
> on 23/09/2012 23:10 Barbara said the following:
>> After updating src on RELENG_9 from r240236 to r240821 I have rebuilt
>> my world+kernel.
>> On reboot I had a kernel panic, "supervisor read, page not present"
>> for process swapper.
>> Trying to reboot in Single User Mode I accidentally disabled ACPI.
>> Luckily the machine booted succesfully but there was nothing new in
>> /var/crash.
>> Then I tried again with ACPI enabled: same kernel panic.
>> So I run nm on the instruction pointer of the panic and I noticed that
>> it was in hdaa_sense_init, in sys/dev/sound/pci/hda/hdaa.c.
>> BTW, I have "device sound" and "device snd_hda" in my KERNCONF, and
>> the sound hw detection happens before HDs, is that the reason why I
>> wasn't able to get a dump or dumping using DDB and the panicking
>> process is swapper? Is there any trick I'm missing for that?
>>
>> Booting in verbose mode and comparing the output with ACPI enabled
>> (where the panic happens) and disabled, I guessed that the problem was
>> where "No presence detection support at nid..." is printed, as it was
>> missing in the former case for nid 27 - Headphone (Green Jack). With
>> ACPI disabled the value was looking quite weird: 36765696.
>> So I made the following change:
>>
>> --------------------------------------------------------------------------------
>> --- sys/dev/sound/pci/hda/hdaa.c.orig	2012-09-22 20:06:20.000000000 +0200
>> +++ sys/dev/sound/pci/hda/hdaa.c	2012-09-23 20:39:32.000000000 +0200
>> @@ -627,7 +627,7 @@
>>   			    (HDA_CONFIG_DEFAULTCONF_MISC(w->wclass.pin.config) & 1) != 0) {
>>   				device_printf(devinfo->dev,
>>   				    "No presence detection support at nid %d\n",
>> -				    as[i].pins[15]);
>> +				    as->pins[15]);
>>   			} else {
>>   				if (w->unsol < 0)
>>   					poll = 1;
>> --------------------------------------------------------------------------------
>>
>> Maybe the fix is not correct, but at least the new kernel boots successfully.
>> Can someone review that?
>> I tried looking in svn commits between the two builds, but I don't
>> know what exposed the problem.
>> If anyone is interested in my verbose log, or doing some tests, please ask.
>
> Your patch looks correct, looks like a bug could have been introduced via
> copy+paste.

Good catch. Thank you. Slightly modified patch committed at r240884.

-- 
Alexander Motin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?506018A7.1070006>