After updating my netbook from 8.x r237444 to 8.x r242865, I
found it panics "page fault while in kernel mode" in
ata_identify(). Working back, ata_boot_attach() is passing
NULL to ata_identify() and the device_get_softc() at the top
of ata_identify() is dereferencing that and setting "ch" to
garbage which panics on ch->devices.
Working back further, I have "hint.ata.0.disabled=1" in my
loader.conf (because the boot device is on ata1 and there's
nothing attached to ata0 so disabling it sped up the boot).
It appears that this leaves ata0 with a present but zero'd
softc - which isn't correctly handled in ata_boot_attach().
It's not clear to me what changed between r237444 and r242865
to cause this problem to become apparent. The relevant ata(4)
code has not been touched for some time.
Fix: Whilst I have only tested it on 8.x, this patch appears to
be applicable to 9.x and head as well.
How-To-Repeat: On a system with an ATA controllor and ata(4) in the kernel,
boot with ata0 disabled as per the above.
For bugs matching the following criteria:
Status: In Progress Changed: (is less than) 2014-06-01
Reset to default assignee and clear in-progress tags.
Mail being skipped