if_msk in 6.2

Marv b at helectronics.de
Thu Apr 5 07:29:49 UTC 2007


It works with acpi disabled:

mskkc0: <Marvell Yukon 88E8038 Gigabit Ethernet> port 0x2000-0x20ff mem
0xd0000000-0xd0003fff irq 16 at device 0.0 on pci2
msk0: <Marvell Technology Group Ltd. Yukon FE Id 0xb7 Rev 0x01> on mskc0
msk0: Ethernet address: 00:16:36:8a:f4:a3
miibus0: <MII bus> on msk0
e1000phy0: <Marvell 88E3082 10/100 Fast Ethernet PHY> on miibus0
e1000phy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

When using acpi I get the same error as before but without hang of
course.

On Thu, Apr 05, 2007 at 09:15:33AM +0900, Pyun YongHyeon wrote:
> On Wed, Apr 04, 2007 at 09:06:49PM +0200, Marv wrote:
>  > Thanks for your reply. I checked out the kernel source tree of RELENG_6,
>  > applied your patch and compiled a new kernel.
>  > 
>  > The kernel boots and detects a 88E8038 Ethernet card but then hangs:
>  > 
>  > mskc0: <Marvell Yukon 88E8038 Gigabit Ethernet> irq 16 at device 0.0 on
>  > pci2
>  > mskc0: 0x4000 bytes of rid 0x10 res 3 failed (0, 0xffffffff).
>  > mskc0: unknown device: id=0xff, rev=0x0f
>  > 
>  > (doing nothing no more at this point).
>  > 
>  > Was there some kind of detection failure or is my ethernet controller
>  > not configured properly to fit the driver?
>  > 
> 
> Since msk(4) supports 88E8038 I guess the device was not properly
> initialized/recognized by system BIOS.
> 
> But it's driver bug if it hang your system when it encounter an
> exceptional condition. Try attached patch and report back the result.
> It wouldn't fix device recognization but it will not hang your system.
> 
> -- 
> Regards,
> Pyun YongHyeon

> Index: if_msk.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/dev/msk/if_msk.c,v
> retrieving revision 1.11.2.2
> diff -u -r1.11.2.2 if_msk.c
> --- if_msk.c	2 Apr 2007 01:22:31 -0000	1.11.2.2
> +++ if_msk.c	5 Apr 2007 00:12:53 -0000
> @@ -1581,8 +1581,8 @@
>  	    sc->msk_hw_id > CHIP_ID_YUKON_FE) {
>  		device_printf(dev, "unknown device: id=0x%02x, rev=0x%02x\n",
>  		    sc->msk_hw_id, sc->msk_hw_rev);
> -		error = ENXIO;
> -		goto fail;
> +		mtx_destroy(&sc->msk_mtx);
> +		return (ENXIO);
>  	}
>  
>  	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),



More information about the freebsd-net mailing list