NetBSD Problem Report #33742

From srp@dirt.tworoads.net  Thu Jun 15 19:22:32 2006
Return-Path: <srp@dirt.tworoads.net>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by narn.NetBSD.org (Postfix) with ESMTP id D2D1063B882
	for <gnats-bugs@gnats.NetBSD.org>; Thu, 15 Jun 2006 19:22:32 +0000 (UTC)
Message-Id: <200606151921.k5FJLGT1005538@dirt.tworoads.net>
Date: Thu, 15 Jun 2006 12:21:16 -0700 (PDT)
From: srp@tworoads.net
Reply-To: srp@tworoads.net
To: gnats-bugs@NetBSD.org
Subject: Multiple bktr cards and changing PCI latency.
X-Send-Pr-Version: 3.95

>Number:         33742
>Category:       kern
>Synopsis:       multiple bktr cards may require change in PCI latency.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    kern-bug-people
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Jun 15 19:25:00 +0000 2006
>Last-Modified:  Mon Jun 26 17:15:04 +0000 2006
>Originator:     Scott Presnell
>Release:        NetBSD 3.0_STABLE
>Organization:
	Self
>Environment:

NetBSD 3.0_STABLE (SKOK) #4: Thu Jun 15 08:30:40 PDT 2006
	srp@dirt.tworoads.net:/usr/src/sys/arch/i386/compile/SKOK

Architecture: i386
Machine: i386

>Description:

I use a webcam to monitor a remote location.  Recently I added a second
camera and second WinTV (bktr driver) card, but when I did one of the cards
started acting as though it was not getting a full frame capture, when
running in continuous capture mode (seemed to work OK when single capture
mode was used).

After checking the software and other possible souces of error, I
discovered that the manufacturer had in the past recommended reducing
the PCI latency under similar circumstances

(http://www.hauppauge.com/html/sw_wcst.htm) 

...so I tried this first as a hack, it seemed to work, then rewrote it as a
bktr driver kernel option.  A latency value of 0x10 worked in my case.

>How-To-Repeat:

Find an old 180 MHz Pentium pro, install two bktr cards, start capturing in
continuous mode (a program called camserv was used).

NetBSD 3.0_STABLE (SKOK) #4: Thu Jun 15 08:30:40 PDT 2006
	srp@dirt.tworoads.net:/usr/src/sys/arch/i386/compile/SKOK
total memory = 127 MB
avail memory = 120 MB
BIOS32 rev. 0 found at 0xffe90
mainbus0 (root)
cpu0 at mainbus0: (uniprocessor)
cpu0: Intel Pentium Pro (686-class), 179.64 MHz, id 0x619
cpu0: features fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR>
cpu0: features fbff<PGE,MCA,CMOV>
cpu0: I-cache 8 KB 32B/line 4-way, D-cache 8 KB 32B/line 2-way
cpu0: L2 cache 256 KB 32B/line 4-way
cpu0: ITLB 32 4 KB entries 4-way, 2 4 MB entries fully associative
cpu0: DTLB 64 4 KB entries 4-way, 8 4 MB entries 4-way
cpu0: 16 page colors
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 0 function 0
pchb0: Intel 82441FX (PMC) PCI and Memory Controller (rev. 0x02)
pcib0 at pci0 dev 13 function 0
pcib0: Intel 82371SB (PIIX3) PCI-ISA Bridge (rev. 0x01)
piixide0 at pci0 dev 13 function 1
piixide0: Intel 82371SB IDE Interface (PIIX3) (rev. 0x00)
piixide0: bus-master DMA support present
piixide0: primary channel wired to compatibility mode
piixide0: primary channel interrupting at irq 14
atabus0 at piixide0 channel 0
piixide0: secondary channel wired to compatibility mode
piixide0: secondary channel interrupting at irq 15
atabus1 at piixide0 channel 1
uhci0 at pci0 dev 13 function 2: Intel 82371SB (PIIX3) USB Host Controller (rev. 0x01)
uhci0: interrupting at irq 11
usb0 at uhci0: USB revision 1.0
uhub0 at usb0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
ppb0 at pci0 dev 14 function 0: Digital Equipment DC21052 PCI-PCI Bridge (rev. 0x01)
pci1 at ppb0 bus 1
pci1: i/o space, memory space enabled, rd/line, wr/inv ok
ex0 at pci1 dev 8 function 0: 3Com 3c905-TX 10/100 Ethernet (rev. 0x0)
ex0: interrupting at irq 11
ex0: MAC address 00:c0:4f:b6:af:9e
exphy0 at ex0 phy 24: 3Com internal media interface
exphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
bktr0 at pci1 dev 9 function 0
bktr0: interrupting at irq 11
bktr0: Hauppauge Model 38101 B410
bktr0: Hauppauge WinCast/TV, Philips NTSC tuner.
Brooktree Bt878 Video Capture (Audio Section) (miscellaneous multimedia, revision 0x11) at pci1 dev 9 function 1 not configured
vga1 at pci0 dev 16 function 0: S3 Trio32/64 (rev. 0x54)
wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
wsmux1: connecting to wsdisplay0
bktr1 at pci0 dev 17 function 0
bktr1: interrupting at irq 10
bktr1: Hauppauge Model 44801 C110
bktr1: Hauppauge WinCast/TV, Philips NTSC tuner.
Brooktree Bt878 Video Capture (Audio Section) (miscellaneous multimedia, revision 0x11) at pci0 dev 17 function 1 not configured
isa0 at pcib0
lpt0 at isa0 port 0x378-0x37b irq 7
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
com2 at isa0 port 0x3e8-0x3ef irq 5: ns16550a, working fifo
pckbc0 at isa0 port 0x60-0x64
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pcppi0 at isa0 port 0x61
sysbeep0 at pcppi0
isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
npx0 at isa0 port 0xf0-0xff: using exception 16
fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
isapnp0: no ISA Plug 'n Play devices found
fd0 at fdc0 drive 0: 1.44MB, 80 cyl, 2 head, 18 sec
ulpt0 at uhub0 port 1 configuration 1 interface 0
ulpt0: HewLett Packard HP LaserJet 1200, rev 1.10/1.00, addr 2, iclass 7/1
ulpt0: using bi-directional mode
ugen0 at uhub0 port 2
ugen0: American Power Conversion Back-UPS NS 1050 FW:7.g3 .D USB FW:g3, rev 1.10/1.06, addr 3
wd0 at atabus0 drive 0: <WDC AC22100H>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 2014 MB, 4092 cyl, 16 head, 63 sec, 512 bytes/sect x 4124736 sectors
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2
wd0(piixide0:0:0): using PIO mode 4, DMA mode 2 (using DMA)
atapibus0 at atabus1: 2 targets
cd0 at atapibus0 drive 0: <NEC                 CD-ROM DRIVE:282, , 3.07> cdrom removable
cd0: 32-bit data port
cd0: drive supports PIO mode 3, DMA mode 1
cd0(piixide0:1:0): using PIO mode 0, DMA mode 1 (using DMA)
boot device: wd0
root on wd0a dumps on wd0b
root file system type: ffs
wsdisplay0: screen 1 added (80x25, vt100 emulation)
wsdisplay0: screen 2 added (80x25, vt100 emulation)
wsdisplay0: screen 3 added (80x25, vt100 emulation)
wsdisplay0: screen 4 added (80x25, vt100 emulation)

>Fix:


The following patch adds BKTR_OVERRIDE_LATENCY as a kernel option
for the bktr driver.

--- sys/dev/pci/files.pci.orig	2006-06-15 08:07:56.000000000 -0700
+++ sys/dev/pci/files.pci	2006-06-15 08:08:57.000000000 -0700
@@ -10,7 +10,7 @@
 defflag	opt_bktr.h	BKTR_430_FX_MODE BKTR_GPIO_ACCESS BKTR_NO_MSP_RESET
 			BKTR_REVERSE_MUTE BKTR_SIS_VIA_MODE BKTR_USE_PLL
 defparam opt_bktr.h	BKTR_OVERRIDE_CARD BKTR_OVERRIDE_TUNER BKTR_OVERRIDE_DBX
-			BKTR_OVERRIDE_MSP BKTR_SYSTEM_DEFAULT
+			BKTR_OVERRIDE_MSP BKTR_OVERRIDE_LATENCY BKTR_SYSTEM_DEFAULT

 defflag	opt_pciide.h	PCIIDE_CMD064x_DISABLE PCIIDE_AMD756_ENABLEDMA
 			PCIIDE_CMD0646U_ENABLEUDMA PCIIDE_I31244_DISABLEDMA
--- sys/dev/pci/bktr/bktr_os.c.orig	2006-06-15 10:38:53.000000000 -0700
+++ sys/dev/pci/bktr/bktr_os.c	2006-06-15 08:29:41.000000000 -0700
@@ -1520,18 +1520,33 @@
 #ifndef BROOKTREE_DEF_LATENCY_VALUE
 #define BROOKTREE_DEF_LATENCY_VALUE	0x10
 #endif
+
+	latency = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_LATENCY_TIMER);
+	latency = (latency >> 8) & 0xff;
+
+#if defined(BKTR_OVERRIDE_LATENCY)
+
+	printf("%s: overriding PCI bus latency was %d changing to %d\n",
+	       bktr_name(bktr), (int) latency, BKTR_OVERRIDE_LATENCY);
+	latency = BKTR_OVERRIDE_LATENCY;
+	pci_conf_write(pa->pa_pc, pa->pa_tag,
+		       PCI_LATENCY_TIMER, latency<<8);
+
+#else
+	
 	latency = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_LATENCY_TIMER);
 	latency = (latency >> 8) & 0xff;

 	if (!latency) {
 		if (bootverbose) {
-			printf("%s: PCI bus latency was 0 changing to %d",
+			printf("%s: PCI bus latency was 0 changing to %d\n",
 			       bktr_name(bktr), BROOKTREE_DEF_LATENCY_VALUE);
 		}
 		latency = BROOKTREE_DEF_LATENCY_VALUE;
 		pci_conf_write(pa->pa_pc, pa->pa_tag,
 			       PCI_LATENCY_TIMER, latency<<8);
 	}
+#endif

 	common_bktr_attach(bktr, unit, pa->pa_id, PCI_REVISION(pa->pa_class));

===

The resulting dmesg changes when using 

options BKTR_OVERRIDE_LATENCY 0x10

dmesg:

bktr0 at pci1 dev 9 function 0
bktr0: interrupting at irq 11
bktr0: overriding PCI bus latency was 32 changing to 16
bktr0: Hauppauge Model 38101 B410
bktr0: Hauppauge WinCast/TV, Philips NTSC tuner.
Brooktree Bt878 Video Capture (Audio Section) (miscellaneous multimedia, revision 0x11) at pci1 dev 9 function 1 not configured
bktr1 at pci0 dev 17 function 0
bktr1: interrupting at irq 10
bktr1: overriding PCI bus latency was 32 changing to 16
bktr1: Hauppauge Model 44801 C110
bktr1: Hauppauge WinCast/TV, Philips NTSC tuner.
Brooktree Bt878 Video Capture (Audio Section) (miscellaneous multimedia, revision 0x11) at pci0 dev 17 function 1 not configured

>Audit-Trail:
From: christos@zoulas.com (Christos Zoulas)
To: gnats-bugs@NetBSD.org, kern-bug-people@netbsd.org,
	gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Cc: 
Subject: Re: kern/33742: Multiple bktr cards and changing PCI latency.
Date: Thu, 15 Jun 2006 15:36:52 -0400

 On Jun 15,  7:25pm, srp@tworoads.net (srp@tworoads.net) wrote:
 -- Subject: kern/33742: Multiple bktr cards and changing PCI latency.

 | >Number:         33742
 | >Category:       kern
 | >Synopsis:       multiple bktr cards may require change in PCI latency.
 | >Confidential:   no
 | >Severity:       non-critical
 | >Priority:       low
 | >Responsible:    kern-bug-people
 | >State:          open
 | >Class:          change-request
 | >Submitter-Id:   net
 | >Arrival-Date:   Thu Jun 15 19:25:00 +0000 2006
 | >Originator:     Scott Presnell
 | >Release:        NetBSD 3.0_STABLE
 | >Organization:
 | 	Self
 | >Environment:
 | 
 | NetBSD 3.0_STABLE (SKOK) #4: Thu Jun 15 08:30:40 PDT 2006
 | 	srp@dirt.tworoads.net:/usr/src/sys/arch/i386/compile/SKOK
 | 
 | Architecture: i386
 | Machine: i386
 | 
 | >Description:
 | 
 | I use a webcam to monitor a remote location.  Recently I added a second
 | camera and second WinTV (bktr driver) card, but when I did one of the cards
 | started acting as though it was not getting a full frame capture, when
 | running in continuous capture mode (seemed to work OK when single capture
 | mode was used).
 | 
 | After checking the software and other possible souces of error, I
 | discovered that the manufacturer had in the past recommended reducing
 | the PCI latency under similar circumstances
 | 
 | (http://www.hauppauge.com/html/sw_wcst.htm) 
 | 
 | ...so I tried this first as a hack, it seemed to work, then rewrote it as a
 | bktr driver kernel option.  A latency value of 0x10 worked in my case.
 | 
 | >How-To-Repeat:
 | 
 | Find an old 180 MHz Pentium pro, install two bktr cards, start capturing in
 | continuous mode (a program called camserv was used).
 | 
 | NetBSD 3.0_STABLE (SKOK) #4: Thu Jun 15 08:30:40 PDT 2006
 | 	srp@dirt.tworoads.net:/usr/src/sys/arch/i386/compile/SKOK
 | total memory = 127 MB
 | avail memory = 120 MB
 | BIOS32 rev. 0 found at 0xffe90
 | mainbus0 (root)
 | cpu0 at mainbus0: (uniprocessor)
 | cpu0: Intel Pentium Pro (686-class), 179.64 MHz, id 0x619
 | cpu0: features fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR>
 | cpu0: features fbff<PGE,MCA,CMOV>
 | cpu0: I-cache 8 KB 32B/line 4-way, D-cache 8 KB 32B/line 2-way
 | cpu0: L2 cache 256 KB 32B/line 4-way
 | cpu0: ITLB 32 4 KB entries 4-way, 2 4 MB entries fully associative
 | cpu0: DTLB 64 4 KB entries 4-way, 8 4 MB entries 4-way
 | cpu0: 16 page colors
 | pci0 at mainbus0 bus 0: configuration mode 1
 | pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
 | pchb0 at pci0 dev 0 function 0
 | pchb0: Intel 82441FX (PMC) PCI and Memory Controller (rev. 0x02)
 | pcib0 at pci0 dev 13 function 0
 | pcib0: Intel 82371SB (PIIX3) PCI-ISA Bridge (rev. 0x01)
 | piixide0 at pci0 dev 13 function 1
 | piixide0: Intel 82371SB IDE Interface (PIIX3) (rev. 0x00)
 | piixide0: bus-master DMA support present
 | piixide0: primary channel wired to compatibility mode
 | piixide0: primary channel interrupting at irq 14
 | atabus0 at piixide0 channel 0
 | piixide0: secondary channel wired to compatibility mode
 | piixide0: secondary channel interrupting at irq 15
 | atabus1 at piixide0 channel 1
 | uhci0 at pci0 dev 13 function 2: Intel 82371SB (PIIX3) USB Host Controller (rev. 0x01)
 | uhci0: interrupting at irq 11
 | usb0 at uhci0: USB revision 1.0
 | uhub0 at usb0
 | uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
 | uhub0: 2 ports with 2 removable, self powered
 | ppb0 at pci0 dev 14 function 0: Digital Equipment DC21052 PCI-PCI Bridge (rev. 0x01)
 | pci1 at ppb0 bus 1
 | pci1: i/o space, memory space enabled, rd/line, wr/inv ok
 | ex0 at pci1 dev 8 function 0: 3Com 3c905-TX 10/100 Ethernet (rev. 0x0)
 | ex0: interrupting at irq 11
 | ex0: MAC address 00:c0:4f:b6:af:9e
 | exphy0 at ex0 phy 24: 3Com internal media interface
 | exphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
 | bktr0 at pci1 dev 9 function 0
 | bktr0: interrupting at irq 11
 | bktr0: Hauppauge Model 38101 B410
 | bktr0: Hauppauge WinCast/TV, Philips NTSC tuner.
 | Brooktree Bt878 Video Capture (Audio Section) (miscellaneous multimedia, revision 0x11) at pci1 dev 9 function 1 not configured
 | vga1 at pci0 dev 16 function 0: S3 Trio32/64 (rev. 0x54)
 | wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
 | wsmux1: connecting to wsdisplay0
 | bktr1 at pci0 dev 17 function 0
 | bktr1: interrupting at irq 10
 | bktr1: Hauppauge Model 44801 C110
 | bktr1: Hauppauge WinCast/TV, Philips NTSC tuner.
 | Brooktree Bt878 Video Capture (Audio Section) (miscellaneous multimedia, revision 0x11) at pci0 dev 17 function 1 not configured
 | isa0 at pcib0
 | lpt0 at isa0 port 0x378-0x37b irq 7
 | com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
 | com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
 | com2 at isa0 port 0x3e8-0x3ef irq 5: ns16550a, working fifo
 | pckbc0 at isa0 port 0x60-0x64
 | pckbd0 at pckbc0 (kbd slot)
 | pckbc0: using irq 1 for kbd slot
 | wskbd0 at pckbd0: console keyboard, using wsdisplay0
 | pcppi0 at isa0 port 0x61
 | sysbeep0 at pcppi0
 | isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
 | npx0 at isa0 port 0xf0-0xff: using exception 16
 | fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
 | isapnp0: no ISA Plug 'n Play devices found
 | fd0 at fdc0 drive 0: 1.44MB, 80 cyl, 2 head, 18 sec
 | ulpt0 at uhub0 port 1 configuration 1 interface 0
 | ulpt0: HewLett Packard HP LaserJet 1200, rev 1.10/1.00, addr 2, iclass 7/1
 | ulpt0: using bi-directional mode
 | ugen0 at uhub0 port 2
 | ugen0: American Power Conversion Back-UPS NS 1050 FW:7.g3 .D USB FW:g3, rev 1.10/1.06, addr 3
 | wd0 at atabus0 drive 0: <WDC AC22100H>
 | wd0: drive supports 16-sector PIO transfers, LBA addressing
 | wd0: 2014 MB, 4092 cyl, 16 head, 63 sec, 512 bytes/sect x 4124736 sectors
 | wd0: 32-bit data port
 | wd0: drive supports PIO mode 4, DMA mode 2
 | wd0(piixide0:0:0): using PIO mode 4, DMA mode 2 (using DMA)
 | atapibus0 at atabus1: 2 targets
 | cd0 at atapibus0 drive 0: <NEC                 CD-ROM DRIVE:282, , 3.07> cdrom removable
 | cd0: 32-bit data port
 | cd0: drive supports PIO mode 3, DMA mode 1
 | cd0(piixide0:1:0): using PIO mode 0, DMA mode 1 (using DMA)
 | boot device: wd0
 | root on wd0a dumps on wd0b
 | root file system type: ffs
 | wsdisplay0: screen 1 added (80x25, vt100 emulation)
 | wsdisplay0: screen 2 added (80x25, vt100 emulation)
 | wsdisplay0: screen 3 added (80x25, vt100 emulation)
 | wsdisplay0: screen 4 added (80x25, vt100 emulation)
 | 
 | >Fix:
 | 
 | 
 | The following patch adds BKTR_OVERRIDE_LATENCY as a kernel option
 | for the bktr driver.
 | 
 | --- sys/dev/pci/files.pci.orig	2006-06-15 08:07:56.000000000 -0700
 | +++ sys/dev/pci/files.pci	2006-06-15 08:08:57.000000000 -0700
 | @@ -10,7 +10,7 @@
 |  defflag	opt_bktr.h	BKTR_430_FX_MODE BKTR_GPIO_ACCESS BKTR_NO_MSP_RESET
 |  			BKTR_REVERSE_MUTE BKTR_SIS_VIA_MODE BKTR_USE_PLL
 |  defparam opt_bktr.h	BKTR_OVERRIDE_CARD BKTR_OVERRIDE_TUNER BKTR_OVERRIDE_DBX
 | -			BKTR_OVERRIDE_MSP BKTR_SYSTEM_DEFAULT
 | +			BKTR_OVERRIDE_MSP BKTR_OVERRIDE_LATENCY BKTR_SYSTEM_DEFAULT
 |  
 |  defflag	opt_pciide.h	PCIIDE_CMD064x_DISABLE PCIIDE_AMD756_ENABLEDMA
 |  			PCIIDE_CMD0646U_ENABLEUDMA PCIIDE_I31244_DISABLEDMA
 | --- sys/dev/pci/bktr/bktr_os.c.orig	2006-06-15 10:38:53.000000000 -0700
 | +++ sys/dev/pci/bktr/bktr_os.c	2006-06-15 08:29:41.000000000 -0700
 | @@ -1520,18 +1520,33 @@
 |  #ifndef BROOKTREE_DEF_LATENCY_VALUE
 |  #define BROOKTREE_DEF_LATENCY_VALUE	0x10
 |  #endif
 | +
 | +	latency = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_LATENCY_TIMER);
 | +	latency = (latency >> 8) & 0xff;
 | +
 | +#if defined(BKTR_OVERRIDE_LATENCY)
 | +
 | +	printf("%s: overriding PCI bus latency was %d changing to %d\n",
 | +	       bktr_name(bktr), (int) latency, BKTR_OVERRIDE_LATENCY);
 | +	latency = BKTR_OVERRIDE_LATENCY;
 | +	pci_conf_write(pa->pa_pc, pa->pa_tag,
 | +		       PCI_LATENCY_TIMER, latency<<8);
 | +
 | +#else
 | +	
 |  	latency = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_LATENCY_TIMER);
 |  	latency = (latency >> 8) & 0xff;
 |  
 |  	if (!latency) {
 |  		if (bootverbose) {
 | -			printf("%s: PCI bus latency was 0 changing to %d",
 | +			printf("%s: PCI bus latency was 0 changing to %d\n",
 |  			       bktr_name(bktr), BROOKTREE_DEF_LATENCY_VALUE);
 |  		}
 |  		latency = BROOKTREE_DEF_LATENCY_VALUE;
 |  		pci_conf_write(pa->pa_pc, pa->pa_tag,
 |  			       PCI_LATENCY_TIMER, latency<<8);
 |  	}
 | +#endif
 |  
 |  	common_bktr_attach(bktr, unit, pa->pa_id, PCI_REVISION(pa->pa_class));
 |  
 | ===
 | 
 | The resulting dmesg changes when using 
 | 
 | options BKTR_OVERRIDE_LATENCY 0x10
 | 

 What are the valid values of latency? Shouldn't the driver check for those?

 christos

From: Scott Presnell <srp@tworoads.net>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/33742: Multiple bktr cards and changing PCI latency.
Date: Thu, 15 Jun 2006 12:52:33 -0700

 Christos Zoulas wrote:
 > The following reply was made to PR kern/33742; it has been noted by GNATS.
 > 
 > From: christos@zoulas.com (Christos Zoulas)
 > To: gnats-bugs@NetBSD.org, kern-bug-people@netbsd.org,
 > 	gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
 > Cc: 
 > Subject: Re: kern/33742: Multiple bktr cards and changing PCI latency.
 > Date: Thu, 15 Jun 2006 15:36:52 -0400
 > 
 >  On Jun 15,  7:25pm, srp@tworoads.net (srp@tworoads.net) wrote:
 >  -- Subject: kern/33742: Multiple bktr cards and changing PCI latency.
 >  
 >  
 >  What are the valid values of latency? Shouldn't the driver check for those?
 >  
 >  christos
 >  

 (I am at the edge of my understanding).

 To the best of my knowledge the driver does not check except for the
 case of !latency.

 pcictl shows the following for a similar card but in a very different
 machine. (can't get to the machine in question at this time)

 PCI configuration registers:
   Common header:
     0x00: 0x036e109e 0x02800106 0x04000002 0x00804000

     Vendor Name: Brooktree (0x109e)
     Device Name: Bt878 Video Capture (0x036e)
     Command register: 0x0106
       I/O space accesses: off
       Memory space accesses: on
       Bus mastering: on
       Special cycles: off
       MWI transactions: off
       Palette snooping: off
       Parity error checking: off
       Address/data stepping: off
       System error (SERR): on
       Fast back-to-back transactions: off
     Status register: 0x0280
       Capability List support: off
       66 MHz capable: off
       User Definable Features (UDF) support: off
       Fast back-to-back capable: on
       Data parity error detected: off
       DEVSEL timing: medium (0x1)
       Slave signaled Target Abort: off
       Master received Target Abort: off
       Master received Master Abort: off
       Asserted System Error (SERR): off
       Parity error detected: off
     Class Name: multimedia (0x04)
     Subclass Name: video (0x00)
     Interface: 0x00
     Revision ID: 0x02
     BIST: 0x00
     Header Type: 0x00+multifunction (0x80)
     Latency Timer: 0x40
     Cache Line Size: 0x00

   Type 0 ("normal" device) header:
     0x10: 0xf2001008 0x00000000 0x00000000 0x00000000
     0x20: 0x00000000 0x00000000 0x00000000 0x13eb0070
     0x30: 0x00000000 0x00000000 0x00000000 0x2810010a

     Base address register at 0x10
       type: 32-bit prefetchable memory
       base: 0xf2001000, not sized
     Base address register at 0x14
       not implemented(?)
     Base address register at 0x18
       not implemented(?)
     Base address register at 0x1c
       not implemented(?)
     Base address register at 0x20
       not implemented(?)
     Base address register at 0x24
       not implemented(?)
     Cardbus CIS Pointer: 0x00000000
     Subsystem vendor ID: 0x0070
     Subsystem ID: 0x13eb
     Expansion ROM Base Address: 0x00000000
     Reserved @ 0x34: 0x00000000
     Reserved @ 0x38: 0x00000000
     Maximum Latency: 0x28
     Minimum Grant: 0x10
     Interrupt pin: 0x01 (pin A)
     Interrupt line: 0x0a

   Device-dependent header:
     0x40: 0x00000000 0x00000000 0x00000000 0x00000000
     0x50: 0x00000000 0x00000000 0x00000000 0x00000000
     0x60: 0x00000000 0x00000000 0x00000000 0x00000000
     0x70: 0x00000000 0x00000000 0x00000000 0x00000000
     0x80: 0x00000000 0x00000000 0x00000000 0x00000000
     0x90: 0x00000000 0x00000000 0x00000000 0x00000000
     0xa0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xb0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xc0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xd0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xe0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xf0: 0x00000000 0x00000000 0x00000000 0x00000000

From: Scott Presnell <srp@tworoads.net>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/33742: Multiple bktr cards and changing PCI latency.
Date: Mon, 26 Jun 2006 10:13:59 -0700

 This bug-report/change-request can be closed. I found that a better
 solution was to get a more recent bktr based card (problem card was
 very, very early model). Two more recent cards can be used together
 without chaning the latency.

 	Thanks.

 	- Scott

 Christos Zoulas wrote:
 > The following reply was made to PR kern/33742; it has been noted by GNATS.
 > 
 > From: christos@zoulas.com (Christos Zoulas)
 > To: gnats-bugs@NetBSD.org, kern-bug-people@netbsd.org,
 > 	gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
 > Cc: 
 > Subject: Re: kern/33742: Multiple bktr cards and changing PCI latency.
 > Date: Thu, 15 Jun 2006 15:36:52 -0400
 > 
 >  On Jun 15,  7:25pm, srp@tworoads.net (srp@tworoads.net) wrote:
 >  -- Subject: kern/33742: Multiple bktr cards and changing PCI latency.
 >  
 >  | >Number:         33742
 >  | >Category:       kern
 >  | >Synopsis:       multiple bktr cards may require change in PCI latency.
 >  | >Confidential:   no
 >  | >Severity:       non-critical
 >  | >Priority:       low
 >  | >Responsible:    kern-bug-people
 >  | >State:          open
 >  | >Class:          change-request
 >  | >Submitter-Id:   net
 >  | >Arrival-Date:   Thu Jun 15 19:25:00 +0000 2006
 >  | >Originator:     Scott Presnell
 >  | >Release:        NetBSD 3.0_STABLE
 >  | >Organization:
 >  | 	Self
 >  | >Environment:
 >  | 
 >  | NetBSD 3.0_STABLE (SKOK) #4: Thu Jun 15 08:30:40 PDT 2006
 >  | 	srp@dirt.tworoads.net:/usr/src/sys/arch/i386/compile/SKOK
 >  | 
 >  | Architecture: i386
 >  | Machine: i386
 >  | 
 >  | >Description:
 >  | 
 >  | I use a webcam to monitor a remote location.  Recently I added a second
 >  | camera and second WinTV (bktr driver) card, but when I did one of the cards
 >  | started acting as though it was not getting a full frame capture, when
 >  | running in continuous capture mode (seemed to work OK when single capture
 >  | mode was used).
 >  | 
 >  | After checking the software and other possible souces of error, I
 >  | discovered that the manufacturer had in the past recommended reducing
 >  | the PCI latency under similar circumstances
 >  | 
 >  | (http://www.hauppauge.com/html/sw_wcst.htm) 
 >  | 
 >  | ...so I tried this first as a hack, it seemed to work, then rewrote it as a
 >  | bktr driver kernel option.  A latency value of 0x10 worked in my case.
 >  | 

 >  What are the valid values of latency? Shouldn't the driver check for those?
 >  
 >  christos
 >  

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.