Re: tws(4) kernel panic on boot

From: Konstantin Belousov <kostikbel_at_gmail.com>
Date: Thu, 23 May 2013 09:23:06 +0300
On Wed, May 22, 2013 at 11:08:50AM -0700, Andreas Turriff wrote:
> On 5/21/2013 9:25 AM, Andreas Turriff wrote:
> > On 5/21/2013 5:33 AM, Konstantin Belousov wrote:
> >> On Mon, May 20, 2013 at 07:09:41PM -0700, Andreas Turriff wrote:
> >>> On migrating one of my servers to -current, I discovered that the tws
> >>> driver panics on boot; I will follow up with a full backtrace once I
> >>> have a chance to extract it. In the meantime, there is a PR about a 
> >>> very
> >>> similar error in twa - 177020. Is it possible those are related, and 
> >>> the
> >>> same sort of change needs to be made to tws?
> >> It is possible that the regression was in r246713, but the code is
> >> structured differently, and there were more tws(4) changes since then.
> >> You need to provide data for somebody to start looking into the problem.
> > I know. That's why I said, I'd follow up with more info once I can 
> > extract it.
> >
> > The system in question is a Dell PowerEdge 840 server, 8 GiByte RAM, 
> > with an Intel NIC driven by em(4) and a 3Ware 9750-4i RAID controller. 
> > There is no src.conf
> >
> > /etc/make.conf:
> > CPUTYPE?=core2
> >
> > Error message:
> >
> > LSI 3ware device driver for SAS/SATA storage controllers, version: 
> > 10.80.00.005
> > tws0: <LSI 3ware SAS/SATA Storage Controller> port 0xec00-0xecff mem 
> > 0xfe9fc000-0xfe9fffff,0xfe980000-0xfe9bffff irq 16 at device 0.0 o1
> > tws0: Using MSIng APIC ID to 4
> > panic: _bus_dmamap_load_ccb: Unsupported func code 0
> > cpuid = 0Version 2.0> irqs 0-23 on motherboard
> > KDB: enter: panic2.0> irqs 32-55 on motherboard
> > [ thread pid 0 tid 100000 ]
> > Stopped at      kdb_enter+0x3e: movq    $0,kdb_why
> >
> > Backtrace
> >
> > Tracing pid 0 tid 100000 td 0xffffffff81376610
> > kdb_enter() at kdb_enter+0x3e/frame 0xffffffff8191a340
> > panic() at panic+0x175/frame 0xffffffff8191a3c0
> > _bus_dmamap_load_ccb() at _bus_dmamap_load_ccb+0x1c3/frame 
> > 0xffffffff8191a420
> > bus_dmamap_load_ccb() at bus_dmamap_load_ccb+0x91/frame 
> > 0xffffffff8191a480
> > tws_map_request() at tws_map_request+0x71/frame 0xffffffff8191a4c0
> > tws_get_param() at tws_get_param+0xdd/frame 0xffffffff8191a520
> > tws_display_ctlr_info() at tws_display_ctlr_info+0x38/frame 
> > 0xffffffff8191a590
> > tws_init_ctlr() at tws_init_ctlr+0x6b/frame 0xffffffff8191a5b0
> > tws_attach() at tws_attach+0xd79/frame 0xffffffff8191a670
> > device_attach() at device_attach+0x396/frame 0xffffffff8191a6c0
> > bus_generic_attach() at bus_generic_attach+0x2d/frame 0xffffffff8191a6e0
> > acpi_pci_attach() at acpi_pci_attach+0x15f/frame 0xffffffff8191a730
> > device_attach() at device_attach+0x396/frame 0xffffffff8191a780
> > bus_generic_attach() at bus_generic_attach+0x2d/frame 0xffffffff8191a7a0
> > acpi_pcib_attach() at acpi_pcib_attach+0x24d/frame 0xffffffff8191a7f0
> > acpi_pcib_pci_attach() at acpi_pcib_pci_attach+0x9f/frame 
> > 0xffffffff8191a830
> > device_attach() at device_attach+0x396/frame 0xffffffff8191a880
> > bus_generic_attach() at bus_generic_attach+0x2d/frame 0xffffffff8191a8a0
> > acpi_pci_attach() at acpi_pci_attach+0x15f/frame 0xffffffff8191a8f0
> > device_attach() at device_attach+0x396/frame 0xffffffff8191a940
> > bus_generic_attach() at bus_generic_attach+0x2d/frame 0xffffffff8191a960
> > acpi_pcib_attach() at acpi_pcib_attach+0x24d/frame 0xffffffff8191a9b0
> > acpi_pcib_acpi_attach() at acpi_pcib_acpi_attach+0x299/frame 
> > 0xffffffff8191aa00
> > device_attach() at device_attach+0x396/frame 0xffffffff8191aa50
> > bus_generic_attach() at bus_generic_attach+0x2d/frame 0xffffffff8191aa70
> > acpi_attach() at acpi_attach+0xdd6/frame 0xffffffff8191ab30
> > device_attach() at device_attach+0x396/frame 0xffffffff8191ab80
> > bus_generic_attach() at bus_generic_attach+0x2d/frame 0xffffffff8191aba0
> > nexus_acpi_attach() at nexus_acpi_attach+0x76/frame 0xffffffff8191abd0
> > device_attach() at device_attach+0x396/frame 0xffffffff8191ac20
> > bus_generic_new_pass() at bus_generic_new_pass+0xe9/frame 
> > 0xffffffff8191ac50
> > bus_set_pass() at bus_set_pass+0x8f/frame 0xffffffff8191ac80
> > configure() at configure+0xa/frame 0xffffffff8191ac90
> > mi_startup() at mi_startup+0x118/frame 0xffffffff8191acb0
> > btext() at btext+0x2c
> >
> >
> >
> > _______________________________________________
> > freebsd-current_at_freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-current
> > To unsubscribe, send any mail to 
> > "freebsd-current-unsubscribe_at_freebsd.org"
> And after taking a very close look at the source code for tws, I spotted 
> the problem. Patch included.
> 
> ~Andreas
> 
> Index: sys/dev/tws/tws.h
> ===================================================================
> --- sys/dev/tws/tws.h   (revision 250856)
> +++ sys/dev/tws/tws.h   (working copy)
> _at__at_ -137,7 +137,7 _at__at_
>       TWS_DIR_IN = 0x2,
>       TWS_DIR_OUT = 0x4,
>       TWS_DIR_NONE = 0x8,
> -    TWS_DATA_CCB = 0x16,
> +    TWS_DATA_CCB = 0x10,
>   };
> 
>   enum tws_intrs {
> 

Do you mean that this change alone fixes your panic and the controller
works after the boot ?

I started looking at the code, and thought that there some issues
with DATA_CCB flag set too eagerly.

Received on Thu May 23 2013 - 04:23:11 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:37 UTC