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: