Subject: kern/30505: fxp locks out audio for half a second
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <mlelstv@serpens.de>
List: netbsd-bugs
Date: 06/12/2005 12:33:00
>Number:         30505
>Category:       kern
>Synopsis:       fxp locks out audio for half a second
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Jun 12 12:33:00 +0000 2005
>Originator:     Michael van Elst
>Release:        NetBSD 3.0_BETA
>Organization:
-- 
                                Michael van Elst
Internet: mlelstv@serpens.de
                                "A potential Snark may lurk in every tree."
>Environment:
	
	
System: NetBSD pepew 3.0_BETA NetBSD 3.0_BETA (PEPEW_ACPI) #11: Sun Jun 12 14:04:40 CEST 2005 src@pepew:/usr/obj/usr/src/sys/arch/i386/compile/PEPEW_ACPI i386
Architecture: i386
Machine: i386
>Description:
The initialization of the fxp driver takes half a second at splnet().
This does disrupt other services like audio output.

The initialization is done when running 'ifconfig up', when
dhclient polls for a DHCP server and every 16 seconds if
no packet is received.

Nothing of this was observed with NetBSD-2.0.2.

The 16 second interval was introduced in NetBSD-3 as a workaround
for bugs in some fxp chipsets. However, polling a DHCP server
wasn't.

The system is a Dell Inspiron 8000 configured with ACPI and
ACPI_PCI_FIXUP.

Here is an excerpt from the autoconfiguration:

pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
ppb1 at pci0 dev 30 function 0: Intel 82801BAM Hub-PCI Bridge (rev. 0x02)
pci2 at ppb1 bus 2
pci2: i/o space, memory space enabled
ppb2 at pci2 dev 6 function 0: Action Tec Electronics product 0x0100 (rev. 0x11)
pci3 at ppb2 bus 8
pci3: i/o space, memory space enabled
fxp0 at pci3 dev 4 function 0: i82559 Ethernet, rev 8
fxp0: interrupting at irq 10
fxp0: Ethernet address 00:20:e0:68:5b:cd
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4


>How-To-Repeat:

Configure and enable an fxp interface and watch output of
'vmstat 1'. Every 16 seconds you see about 40-50% of the CPU
spent for 'sy'. If you run dhclient there are additional peaks.

The output of 'top' shows that the time is really spent within
an interrupt.

>Fix:
none known. Disabling the FXP_RECV_WORKAROUND stops the interruption
every 16 second, but running dhclient still causes problems.

>Unformatted: