tx(4) MPSAFE patch

Florian Smeets flo at kasimir.com
Mon Jun 2 23:02:45 UTC 2008


John Baldwin wrote:
> On Monday 02 June 2008 05:09:57 pm Florian Smeets wrote:
>> John Baldwin wrote:
>>> I have a patch to make tx(4) MPSAFE.  I do not have the hardware to test 
> this 
>>> however.  Unlike many of the previous patches, though, this driver appears 
> to 
>>> be for hardware that is not entirely ancient, so there is hopefully a 
> decent 
>>> chance someone can test this.
>>>
>>> http://www.FreeBSD.org/~jhb/patches/tx.patch
>>>
>> Hi John,
>>
>> sorry does not work, do you need anything else than the backtrace? FWIW, 
>> this is an SMP system with 2 CPUs.
> 
> Ok, I've updated the patch to fix this (and to fix a few other minor nits with 
> the driver).  Please refetch the patch from the URL above and try again.  
> Thanks.
> 

It get's a little further but i get a lot of witness warnings:

tx0: <SMC EtherPower II 10/100> port 0xc400-0xc4ff mem 
0xe7000000-0xe7000fff irq 18 at device 11.0 on pci0
uma_zalloc_arg: zone "64" with the following non-sleepable locks held:
exclusive sleep mutex tx0 (network driver) r = 0 (0xc2046c54) locked @ 
/usr/src/sys/dev/tx/if_tx.c:382
KDB: stack backtrace:
db_trace_self_wrapper(c079791b,c0c20838,c05df997,c0797db3,c0c2084c,...) 
at db_trace_self_wrapper+0x26
kdb_backtrace(c0797db3,c0c2084c,4,1,0,...) at kdb_backtrace+0x29
witness_warn(5,0,c07af22e,c079afd6,c07575ce,...) at witness_warn+0x1d7
uma_zalloc_arg(c1072d20,0,102,2,c08597b4,...) at uma_zalloc_arg+0x34
malloc(2c,c08145c0,102,0,c2048de0,...) at malloc+0xd2
sysctl_add_oid(c2048de0,c08597b4,ffffffff,c2048dec,80000001,...) at 
sysctl_add_oid+0x95
device_attach(c2132280,c2132280,c0796f86,935,c2132280,...) at 
device_attach+0x85
device_probe_and_attach(c2132280,3,c0c20974,c04e7aea,c20fad80,...) at 
device_probe_and_attach+0x100
bus_generic_attach(c20fad80,3,1,c2046c54,c2046c00,...) at 
bus_generic_attach+0x19
mii_phy_probe(c20fad80,c2046c0c,c0531fa0,c05303d0,c052f1b0,...) at 
mii_phy_probe+0xfa
epic_attach(c20fad80,c20d0854,c080bd04,c0797028,80000000,...) at 
epic_attach+0x822
device_attach(c20fad80,c20fad80,c0796f86,935,c20fad80,...) at 
device_attach+0x36f
device_probe_and_attach(c20fad80,c2088980,c0c20a94,c048126c,c20fac00,...) 
at device_probe_and_attach+0x100
bus_generic_attach(c20fac00,c204fda0,1,c0480cb0,c20fac00,0,c204fda0) at 
bus_generic_attach+0x19
acpi_pci_attach(c20fac00,c20d5854,c080bd04,c0797028,80000000,...) at 
acpi_pci_attach+0x18c
device_attach(c20fac00,c20fac00,c0796f86,935,c20fac00,...) at 
device_attach+0x36f
device_probe_and_attach(c20fac00,c2088c00,c0c20b34,c04832c4,c2088980,...) 
at device_probe_and_attach+0x100
bus_generic_attach(c2088980,c07b61e2,0,c0c20b24,c204fda0,...) at 
bus_generic_attach+0x19
acpi_pcib_attach(c2088980,c21151b4,0,c0c20b54,2,...) at 
acpi_pcib_attach+0x194
acpi_pcib_acpi_attach(c2088980,c20ac054,c080bd04,c0797028,80000000,...) 
at acpi_pcib_acpi_attach+0x236
device_attach(c2088980,c2088980,c0796f86,935,c2088980,...) at 
device_attach+0x36f
device_probe_and_attach(c2088980,297,c0c20c54,c0478faa,c2088c00,...) at 
device_probe_and_attach+0x100
bus_generic_attach(c2088c00,294,297,c2112668,294,...) at 
bus_generic_attach+0x19
acpi_attach(c2088c00,c20ad854,c080bd04,c0797028,80000000,...) at 
acpi_attach+0xb3a
device_attach(c2088c00,c2088c00,c0796f86,935,c2088c00,...) at 
device_attach+0x36f
device_probe_and_attach(c2088c00,c20fa280,c0c20ce8,c0727abe,c20fa280,...) 
at device_probe_and_attach+0x100
bus_generic_attach(c20fa280,a,c077be4c,0) at bus_generic_attach+0x19
nexus_acpi_attach(c20fa280,c20e6854,c080bd04,c0797028,80000000,...) at 
nexus_acpi_attach+0x7e
device_attach(c20fa280,c20fa280,c0796f86,935,c20fa280,...) at 
device_attach+0x36f
device_probe_and_attach(c20fa280,c07c0298,c0c20d6c,c072c86c,c085b054,...) 
at device_probe_and_attach+0x100
root_bus_configure(c085b054,c0c20d88,c056af66,0,c1ec00,...) at 
root_bus_configure+0x1b
configure(0,c1ec00,c1ec00,c1e000,c25000,...) at configure+0xc
mi_startup() at mi_startup+0x96
begin() at begin+0x2c
uma_zalloc_arg: zone "16" with the following non-sleepable locks held:
exclusive sleep mutex tx0 (network driver) r = 0 (0xc2046c54) locked @ 
/usr/src/sys/dev/tx/if_tx.c:382
KDB: stack backtrace:
db_trace_self_wrapper(c079791b,c0c20838,c05df997,c0797db3,c0c2084c,...) 
at db_trace_self_wrapper+0x26
kdb_backtrace(c0797db3,c0c2084c,4,1,0,...) at kdb_backtrace+0x29
witness_warn(5,0,c07af22e,c0784364,c07575ce,...) at witness_warn+0x1d7
uma_zalloc_arg(c1072960,0,2,2,c08597b4,...) at uma_zalloc_arg+0x34
malloc(7,c08145c0,2,6,c2048de0,...) at malloc+0xd2
sysctl_add_oid(c2048de0,c08597b4,ffffffff,c2048dec,80000001,...) at 
sysctl_add_oid+0xd8
device_attach(c2132280,c2132280,c0796f86,935,c2132280,...) at 
device_attach+0x85
device_probe_and_attach(c2132280,3,c0c20974,c04e7aea,c20fad80,...) at 
device_probe_and_attach+0x100
bus_generic_attach(c20fad80,3,1,c2046c54,c2046c00,...) at 
bus_generic_attach+0x19
mii_phy_probe(c20fad80,c2046c0c,c0531fa0,c05303d0,c052f1b0,...) at 
mii_phy_probe+0xfa
epic_attach(c20fad80,c20d0854,c080bd04,c0797028,80000000,...) at 
epic_attach+0x822
device_attach(c20fad80,c20fad80,c0796f86,935,c20fad80,...) at 
device_attach+0x36f
device_probe_and_attach(c20fad80,c2088980,c0c20a94,c048126c,c20fac00,...) 
at device_probe_and_attach+0x100
bus_generic_attach(c20fac00,c204fda0,1,c0480cb0,c20fac00,0,c204fda0) at 
bus_generic_attach+0x19
acpi_pci_attach(c20fac00,c20d5854,c080bd04,c0797028,80000000,...) at 
acpi_pci_attach+0x18c
device_attach(c20fac00,c20fac00,c0796f86,935,c20fac00,...) at 
device_attach+0x36f
device_probe_and_attach(c20fac00,c2088c00,c0c20b34,c04832c4,c2088980,...) 
at device_probe_and_attach+0x100
bus_generic_attach(c2088980,c07b61e2,0,c0c20b24,c204fda0,...) at 
bus_generic_attach+0x19
acpi_pcib_attach(c2088980,c21151b4,0,c0c20b54,2,...) at 
acpi_pcib_attach+0x194
acpi_pcib_acpi_attach(c2088980,c20ac054,c080bd04,c0797028,80000000,...) 
at acpi_pcib_acpi_attach+0x236
device_attach(c2088980,c2088980,c0796f86,935,c2088980,...) at 
device_attach+0x36f
device_probe_and_attach(c2088980,297,c0c20c54,c0478faa,c2088c00,...) at 
device_probe_and_attach+0x100
bus_generic_attach(c2088c00,294,297,c2112668,294,...) at 
bus_generic_attach+0x19
acpi_attach(c2088c00,c20ad854,c080bd04,c0797028,80000000,...) at 
acpi_attach+0xb3a
device_attach(c2088c00,c2088c00,c0796f86,935,c2088c00,...) at 
device_attach+0x36f
device_probe_and_attach(c2088c00,c20fa280,c0c20ce8,c0727abe,c20fa280,...) 
at device_probe_and_attach+0x100
bus_generic_attach(c20fa280,a,c077be4c,0) at bus_generic_attach+0x19
nexus_acpi_attach(c20fa280,c20e6854,c080bd04,c0797028,80000000,...) at 
nexus_acpi_attach+0x7e
device_attach(c20fa280,c20fa280,c0796f86,935,c20fa280,...) at 
device_attach+0x36f
device_probe_and_attach(c20fa280,c07c0298,c0c20d6c,c072c86c,c085b054,...) 
at device_probe_and_attach+0x100
root_bus_configure(c085b054,c0c20d88,c056af66,0,c1ec00,...) at 
root_bus_configure+0x1b
configure(0,c1ec00,c1ec00,c1e000,c25000,...) at configure+0xc
mi_startup() at mi_startup+0x96
begin() at begin+0x2c


It goes on like that forever sometimes the zone varies between "16" "32" 
and "64". The system does not boot further, or i was just to impatient...

Anything i can do?

Thanks,
Florian


More information about the freebsd-current mailing list