hi,

On a custom platform running a niagara2 cpu, i am seeing panics when the
bge driver for a broadcom 5704s (device id 16a8) is attached. the
problem is in bge_poll_firmware() function:

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/bge/bge_chip2.c#bge_poll_firmware

during the attach process the chip is resetted by the driver, which
enters a loop waiting for the 5704s chip f/w to come back out of reset.
this is what bge_poll_firmware() is doing by polling the chip memory
location NIC_MEM_GENCOMM:

for (i = 0; i < 1000; ++i) {
                drv_usecwait(1000);
                gen = bge_nic_get64(bgep, NIC_MEM_GENCOMM) >> 32;
                mac = bge_reg_get64(bgep, MAC_ADDRESS_REG(0));
....

but at the same time in that loop, it tries to also read the 5704s mac
address register (offset 0x410). this is that very access which is
causing the panic. if i use kadb to nop that pci memory access, then the
attach completes OK, and later the chip works fine.
so it looks like on that particular chip (16a8) you can't access the mac
address register while the chip is in reset.

this looks strange. did anyone ever have that problem?
looks like there is a broadcom doc (570X-PG104-R) which describes the
(tricky) init of the chip. but i don't have it....

thanks
-jf simon

_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to