ipr SATA support is causing problems
Paul Mackerras
paulus at samba.org
Fri Nov 10 22:37:13 EST 2006
Brian,
Today I compiled up a kernel from Linus' git tree and tried it on a
POWER6 partition. First I found that my config no longer had the ipr
driver, because I didn't have CONFIG_ATA and ipr now depends on
CONFIG_ATA. So I enabled CONFIG_ATA without enabling any of the ATA
chip drivers, which seems a little weird, and re-enabled ipr.
However, the kernel crashed on boot with a null pointer dereference in
the ata code called from the ipr driver (see stack trace below).
Other people have also reported such a crash. I then reverted commit
35a39691e4, and the resulting kernel booted without crashing.
It looks like there is still some bug in the SATA support in ipr.c,
perhaps something not getting initialized that needs to be
initialized. We may have to get Linus to revert that commit if the
bug can't be found and fixed, because otherwise 2.6.19 will be
unusable on pseries partitions with ipr SCSI adaptors.
Paul.
Unable to handle kernel paging request for data at address 0x00000010
Faulting instruction address: 0xc000000000063ca0
cpu 0x2: Vector: 300 (Data Access) at [c000000002f2ecc0]
pc: c000000000063ca0: .flush_workqueue+0x28/0xdc
lr: c000000000366848: .ata_port_flush_task+0x5c/0x124
sp: c000000002f2ef40
msr: 8000000000009032
dar: 10
dsisr: 40000000
current = 0xc000000002f29800
paca = 0xc0000000005aa800
pid = 1, comm = swapper
enter ? for help
[c000000002f2efd0] c000000000366848 .ata_port_flush_task+0x5c/0x124
[c000000002f2f060] c00000000036afe4 .ata_exec_internal+0x260/0x418
[c000000002f2f170] c00000000036b2b0 .ata_dev_read_id+0x114/0x36c
[c000000002f2f250] c00000000036bfa0 .ata_bus_probe+0x180/0x34c
[c000000002f2f310] c00000000036f4d8 .ata_sas_port_init+0x50/0x70
[c000000002f2f3a0] c00000000034fca8 .ipr_slave_alloc+0x17c/0x200
[c000000002f2f430] c00000000032dc88 .scsi_alloc_sdev+0x1d0/0x248
[c000000002f2f4f0] c00000000032dee0 .scsi_probe_and_add_lun+0x118/0x918
[c000000002f2f5f0] c00000000032ee6c .__scsi_scan_target+0xf0/0x608
[c000000002f2f700] c00000000032f3d8 .scsi_scan_channel+0x54/0xd0
[c000000002f2f7a0] c00000000032f50c .scsi_scan_host_selected+0xb8/0x130
[c000000002f2f850] c00000000034f2f4 .ipr_probe+0xe98/0xf80
[c000000002f2f960] c000000000227298 .pci_device_probe+0x144/0x1e4
[c000000002f2fa20] c0000000002a35b8 .really_probe+0x80/0x19c
[c000000002f2fac0] c0000000002a397c .__driver_attach+0xa0/0x124
[c000000002f2fb50] c0000000002a2708 .bus_for_each_dev+0x7c/0xd4
[c000000002f2fc10] c0000000002a3430 .driver_attach+0x28/0x40
[c000000002f2fc90] c0000000002a2bdc .bus_add_driver+0x80/0x1ec
[c000000002f2fd30] c0000000002a3d60 .driver_register+0xa8/0xc4
[c000000002f2fdb0] c0000000002275f4 .__pci_register_driver+0x9c/0xe4
[c000000002f2fe40] c00000000056e03c .ipr_init+0x34/0x4c
[c000000002f2fec0] c0000000000093ac .init+0x1e0/0x3c0
[c000000002f2ff90] c000000000023f04 .kernel_thread+0x4c/0x68
2:mon> r
R00 = c000000000366848 R16 = 4000000002100000
R01 = c000000002f2ef40 R17 = c0000000004a7cf0
R02 = c0000000007ba890 R18 = c00000000283022c
R03 = 0000000000000000 R19 = 00000000000000a1
R04 = 8000000000009032 R20 = 0000000000000200
R05 = 0000000000000160 R21 = 00000000fafbfcfd
R06 = 0000000024002042 R22 = 0000000000000000
R07 = 0000000000000000 R23 = 0000000000000000
R08 = 0000000000000000 R24 = 0000000000000002
R09 = 0000000000000010 R25 = c000000002f2f1e0
R10 = c000000002f2f0e8 R26 = 8000000000009032
R11 = c000000002f2f0e8 R27 = c000000002830200
R12 = 8000000001310000 R28 = c000000000867fb8
R13 = c0000000005aa800 R29 = 0000000000000000
R14 = 0000000000000000 R30 = c0000000005e2d58
R15 = c0000000004a9268 R31 = c000000002830000
pc = c000000000063ca0 .flush_workqueue+0x28/0xdc
lr = c000000000366848 .ata_port_flush_task+0x5c/0x124
msr = 8000000000009032 cr = 24002042
ctr = 0000000000000000 xer = 000000002000000c trap = 300
dar = 0000000000000010 dsisr = 40000000
More information about the Linuxppc-dev
mailing list