Hi Kenneth,

I noticed you hacked in umass land lately, so maybe you happen to know
the answer. I am trying to find the exclusion mechanism which prevents
umass_bbb_transfer in umass.c from being called twice in a row by
umass_scsi.c (through wire_xfer pointer) without an intervening
umass_bbb_state dequeueing the CSW. This could be the reason for those
pesky errors:

umass1: Invalid CSW: tag 4430 should be 4431

Another thing is, how does umass code avoid violating this requirement
in the spec?
http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf

3.4 Command Queuing
The host shall not transfer a CBW to the device until the host has
received the CSW for any outstanding CBW.
If the host issues two consecutive CBWs without an intervening CSW or
reset, the device response to the second
CBW is indeterminate.

Thanks
Greg

On Sun, Jan 3, 2010 at 12:16 AM, Greg Steuck <[email protected]> wrote:
> Looks like this diagnostic assertion in ehci_device_clear_toggle can
> be triggered in many different scenarios. E.g.
>
> umass1: Invalid CSW: tag 4430 should be 4431
> umass1: Invalid CSW: tag 4430 should be 4432
> umass1: Invalid CSW: tag 4431 should be 4433
> umass1: Invalid CSW: tag 4433 should be 4434
> panic: ehci_device_clear_toggle: queue active
> ...
> ddb> tr
> panic() at panic+0x122
> ehci_device_clear_toggle() at ehci_device_clear_toggle+0x25
> usbd_clear_endpoint_toggle() at usbd_clear_endpoint_toggle+0xb
> umass_clear_endpoint_stall() at umass_clear_endpoint_stall+0x3e
> usb_transfer_complete() at usb_transfer_complete+0x1e5
> ehci_softintr() at ehci_softintr+0x2f
> softintr_dispatch() at softintr_dispatch+0x73
> Xsoftnet() at Xsoftnet+0xb1
> --- interrupt ---
> (null)() at 0x8
> end of kernel
> end trace frame: 0x123a, count: -10
>
> My particular one is triggered by running dd if=/dev/sdXi of=/dev/null
> for two different sd4 & sd5 devices attached to the same umass1. The
> system is otherwise booted -s so nothing is running. The active
> process is idle0 (pid 2).
>
> I'll happily test any patches people may have but am unlikely to do
> any code reading myself...
>
> OpenBSD 4.6-current (GENERIC) #34: Fri Jan  1 14:47:15 MST 2010
>    [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC
> real mem = 1071841280 (1022MB)
> avail mem = 1031987200 (984MB)
> mainbus0 at root
> bios0 at mainbus0: SMBIOS rev. 2.3 @ 0xf0520 (68 entries)
> bios0: vendor American Megatrends Inc. version "1003.002" date 05/18/2004
> bios0: ASUSTeK Computer Inc. K8VSEDX
> acpi0 at bios0: rev 0
> acpi0: tables DSDT FACP APIC OEMB
> acpi0: wakeup devices PCI0(S4) PS2K(S4) PS2M(S4) UAR2(S4) UAR1(S4)
> AC97(S4) USB1(S4) USB2(S4) USB3(S4) USB4(S4) EHCI(S4) PWRB(S4)
> SLPB(S4)
> acpitimer0 at acpi0: 3579545 Hz, 24 bits
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> cpu0 at mainbus0: apid 0 (boot processor)
> cpu0: AMD Athlon(tm) 64 Processor 2800+, 1802.63 MHz
> cpu0:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUS
H,MMX,FXSR,SSE,SSE2,NXE,MMXX,LONG,3DNOW2,3DNOW
> cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB
> 64b/line 16-way L2 cache
> cpu0: ITLB 32 4KB entries fully associative, 8 4MB entries fully
associative
> cpu0: DTLB 32 4KB entries fully associative, 8 4MB entries fully
associative
> cpu0: AMD errata 86, 89, 97, 104 present, BIOS upgrade may be required
> cpu0: apic clock running at 200MHz
> ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 3, 24 pins
> ioapic0: misconfigured as apic 2, remapped to apid 1
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpicpu0 at acpi0
> acpibtn0 at acpi0: PWRB
> acpibtn1 at acpi0: SLPB
> pci0 at mainbus0 bus 0
> pchb0 at pci0 dev 0 function 0 "VIA K8HTB Host" rev 0x01
> agp at pchb0 not configured
> ppb0 at pci0 dev 1 function 0 "VIA K8HTB AGP" rev 0x00
> pci1 at ppb0 bus 1
> vga1 at pci1 dev 0 function 0 "Matrox MGA G400/G450 AGP" rev 0x85
> wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
> wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
> pciide0 at pci0 dev 8 function 0 "Promise PDC20378" rev 0x02: DMA
> pciide0: using apic 1 int 18 (irq 5) for native-PCI interrupt
> skc0 at pci0 dev 10 function 0 "Marvell Yukon 88E8001/8003/8010" rev
> 0x13, Yukon Lite rev. A3 (0x7): apic 1 int 17 (irq 10)
> sk0 at skc0 port A: address 00:11:2f:00:00:00
> eephy0 at sk0 phy 0: 88E1011 Gigabit PHY, rev. 5
> pciide1 at pci0 dev 15 function 0 "VIA VT6420 SATA" rev 0x80: DMA
> pciide1: using apic 1 int 20 (irq 10) for native-PCI interrupt
> pciide2 at pci0 dev 15 function 1 "VIA VT82C571 IDE" rev 0x06: ATA133,
> channel 0 configured to compatibility, channel 1 configured to
> compatibility
> wd0 at pciide2 channel 0 drive 0: <ST3400832A>
> wd0: 16-sector PIO, LBA48, 381554MB, 781422768 sectors
> wd0(pciide2:0:0): using PIO mode 4, Ultra-DMA mode 5
> atapiscsi0 at pciide2 channel 1 drive 1
> scsibus0 at atapiscsi0: 2 targets
> cd0 at scsibus0 targ 0 lun 0: <PLEXTOR, CD-R PX-W4824A, 1.04> ATAPI
> 5/cdrom removable
> cd0(pciide2:1:1): using PIO mode 4, Ultra-DMA mode 2
> uhci0 at pci0 dev 16 function 0 "VIA VT83C572 USB" rev 0x81: apic 1
> int 21 (irq 11)
> uhci1 at pci0 dev 16 function 1 "VIA VT83C572 USB" rev 0x81: apic 1
> int 21 (irq 11)
> uhci2 at pci0 dev 16 function 2 "VIA VT83C572 USB" rev 0x81: apic 1
> int 21 (irq 10)
> uhci3 at pci0 dev 16 function 3 "VIA VT83C572 USB" rev 0x81: apic 1
> int 21 (irq 10)
> ehci0 at pci0 dev 16 function 4 "VIA VT6202 USB" rev 0x86: apic 1 int 21
(irq 5)
> usb0 at ehci0: USB revision 2.0
> uhub0 at usb0 "VIA EHCI root hub" rev 2.00/1.00 addr 1
> viapm0 at pci0 dev 17 function 0 "VIA VT8237 ISA" rev 0x00
> iic0 at viapm0
> lm1 at iic0 addr 0x2f: W83791SD
> iic0: addr 0x4a 00=3f 01=03 02=7f 03=07 05=30 06=c0 07=90 08=3f 09=03
> 0a=7f 0b=07 0d=30 0e=c0 0f=90 10=3f 11=03 12=7f 13=07 15=30 16=c0
> 17=90 18=3f 19=03 1a=7f 1b=07 1d=30 1e=c0 1f=90 20=3f 21=03 22=7f
> 23=07 25=30 26=c0 27=90 28=3f 29=03 2a=7f 2b=07 2d=30 2e=c0 2f=90
> 30=3f 31=03 32=7f 33=07 35=30 36=c0 37=90 38=3f 39=03 3a=7f 3b=07
> 3d=30 3e=c0 3f=90 40=3f 41=03 42=7f 43=07 45=30 46=c0 47=90 48=3f
> 49=03 4a=7f 4b=07 4d=30 4e=c0 4f=90 50=3f 51=03 52=7f 53=07 55=30
> 56=c0 57=90 58=3f 59=03 5a=7f 5b=07 5d=30 5e=c0 5f=90 60=3f 61=03
> 62=7f 63=07 65=30 66=c0 67=90 68=3f 69=03 6a=7f 6b=07 6d=30 6e=c0
> 6f=90 70=3f 71=03 72=7f 73=07 75=30 76=c0 77=90 78=3f 79=03 7a=7f
> 7b=07 7d=30 7e=c0 7f=90 80=3f 81=03 82=7f 83=07 85=30 86=c0 87=90
> 88=3f 89=03 8a=7f 8b=07 8d=30 8e=c0 8f=90 90=3f 91=03 92=7f 93=07
> 95=30 96=c0 97=90 98=3f 99=03 9a=7f 9b=07 9d=30 9e=c0 9f=90 a0=3f
> a1=03 a2=7f a3=07 a5=30 a6=c0 a7=90 a8=3f a9=03 aa=7f ab=07 ad=30
> ae=c0 af=90 b0=3f b1=03 b2=7f b3=07 b5=30 b6=c0 b7=90 b8=3f b9=03
> ba=7f bb=07 bd=30 be=c0 bf=90 c0=3f c1=03 c2=7f c3=07 c5=30 c6=c0
> c7=90 c8=3f c9=03 ca=7f cb=07 cd=30 ce=c0 cf=90 d0=3f d1=03 d2=7f
> d3=07 d5=30 d6=c0 d7=90 d8=3f d9=03 da=7f db=07 dd=30 de=c0 df=90
> e0=3f e1=03 e2=7f e3=07 e5=30 e6=c0 e7=90 e8=3f e9=03 ea=7f eb=07
> ed=30 ee=c0 ef=90 f0=3f f1=03 f2=7f f3=07 f5=30 f6=c0 f7=90 f8=3f
> f9=03 fa=7f fb=07 fd=30 fe=c0 ff=90 words 00=3fff 01=03ff 02=7fff
> 03=07ff 04=00ff 05=30ff 06=c0ff 07=90ff
> spdmem0 at iic0 addr 0x50: 512MB DDR SDRAM non-parity PC3200CL3.0
> spdmem1 at iic0 addr 0x51: 512MB DDR SDRAM non-parity PC3200CL2.5
> auvia0 at pci0 dev 17 function 5 "VIA VT8233 AC97" rev 0x60: apic 1
> int 22 (irq 5)
> ac97: codec id 0x41445370 (Analog Devices AD1980)
> ac97: codec features headphone, 20 bit DAC, No 3D Stereo
> audio0 at auvia0
> pchb1 at pci0 dev 24 function 0 "AMD AMD64 0Fh HyperTransport" rev 0x00
> pchb2 at pci0 dev 24 function 1 "AMD AMD64 0Fh Address Map" rev 0x00
> pchb3 at pci0 dev 24 function 2 "AMD AMD64 0Fh DRAM Cfg" rev 0x00
> kate0 at pci0 dev 24 function 3 "AMD AMD64 0Fh Misc Cfg" rev 0x00
> usb1 at uhci0: USB revision 1.0
> uhub1 at usb1 "VIA UHCI root hub" rev 1.00/1.00 addr 1
> usb2 at uhci1: USB revision 1.0
> uhub2 at usb2 "VIA UHCI root hub" rev 1.00/1.00 addr 1
> usb3 at uhci2: USB revision 1.0
> uhub3 at usb3 "VIA UHCI root hub" rev 1.00/1.00 addr 1
> usb4 at uhci3: USB revision 1.0
> uhub4 at usb4 "VIA UHCI root hub" rev 1.00/1.00 addr 1
> isa0 at mainbus0
> isadma0 at isa0
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
> pckbc0 at isa0 port 0x60/5
> pckbd0 at pckbc0 (kbd slot)
> pckbc0: using irq 1 for kbd slot
> wskbd0 at pckbd0: console keyboard, using wsdisplay0
> pcppi0 at isa0 port 0x61
> midi0 at pcppi0: <PC speaker>
> spkr0 at pcppi0
> lpt0 at isa0 port 0x378/4 irq 7
> wbsio0 at isa0 port 0x2e/2: W83697HF rev 0x12
> lm2 at wbsio0 port 0x290/8: W83697HF
> fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
> mtrr: Pentium Pro MTRR support
> uhub5 at uhub0 port 4 "Standard Microsystems product 0x2502" rev
> 2.00/0.01 addr 2
> uhub6 at uhub5 port 1 "Standard Microsystems Hub" rev 2.00/0.01 addr 3
> uhidev0 at uhub6 port 1 configuration 1 interface 0 "Logitech USB
> Mouse" rev 1.10/6.10 addr 4
> uhidev0: iclass 3/1
> ums0 at uhidev0: 3 buttons, Z dir
> wsmouse0 at ums0 mux 0
> umass0 at uhub5 port 2 configuration 1 interface 0 "SMSC USB2223" rev
> 2.00/3.60 addr 5
> umass0: using SCSI over Bulk-Only
> scsibus1 at umass0: 2 targets, initiator 0
> sd0 at scsibus1 targ 1 lun 0: <SMSC, 223 U HS-CF, 3.60> SCSI0 0/direct
removable
> sd0: drive offline
> sd1 at scsibus1 targ 1 lun 1: <SMSC, 223 U HS-MS, 3.60> SCSI0 0/direct
removable
> sd1: drive offline
> sd2 at scsibus1 targ 1 lun 2: <SMSC, 223 U HS-SM, 3.60> SCSI0 0/direct
removable
> sd2: drive offline
> sd3 at scsibus1 targ 1 lun 3: <SMSC, 223 U HS-SD/MMC, 3.60> SCSI0
> 0/direct removable
> sd3: drive offline
> vscsi0 at root
> scsibus2 at vscsi0: 256 targets
> softraid0 at root
> root on wd0a swap on wd0b dump on wd0b
> umass1 at uhub6 port 2 configuration 1 interface 0 "JVC GZ-MG155" rev
> 2.00/10.01 addr 6
> umass1: using SCSI over Bulk-Only
> scsibus3 at umass1: 2 targets, initiator 0
> sd4 at scsibus3 targ 1 lun 0: <JVC, GZ-MG155, 1.1> SCSI2 0/direct removable
> sd4: 28600MB, 512 bytes/sec, 58572990 sec total
> sd5 at scsibus3 targ 1 lun 1: <JVC, GZ-MG155, 1.1> SCSI2 0/direct removable
> sd5: 1938MB, 512 bytes/sec, 3970048 sec total
>
> --
> nest.cx is Gmail hosted, use PGP for anything private. Key:
> http://tinyurl.com/ho8qg
> Fingerprint: 5E2B 2D0E 1E03 2046 BEC3  4D50 0B15 42BD 8DF5 A1B0
>



--
nest.cx is Gmail hosted, use PGP for anything private. Key:
http://tinyurl.com/ho8qg
Fingerprint: 5E2B 2D0E 1E03 2046 BEC3  4D50 0B15 42BD 8DF5 A1B0

Reply via email to