On Thu, 4 Mar 2004, David Brownell wrote: > How does this (from Ben's patch) do instead? Theory being:
Well, it survived the enumeration so it's probably better (kind of) than the other one. But still running into bad entry issue with test11 - see below. > HC: issue memory writes, they're in PCI buffers, raises IRQ. > HCD: receives IRQ, reads memory ... old ED and TD contents. > Sees no updates, recycles wrong TD, corrupts queue when > the writes finally arrive. Not sure if this is allowed by the PCI specs. While the HC is busmastering to system memory the hostbridge must issue snoop cycles to complete cpu write-back and cache flushing first. And even if it would not, I doubt the readl would help - it's purpose would be rather to complete posted cpu-to-pci writes, not pci-to-memory. IMHO those should be in sync due to the fact all ED's, TD's and HCCA use consistent pci mappings. FWIW, I've played a bit with the chipset trying to set the snoop-control as conservative as possible (basically disabling fast merging of snoop and cpu write-back and anything else in the snoop control which was named "faster" or "advanced" in the hostbridge datasheet). Furthermore I've also disabled posted cpu-to-pci writes. Result: no change, bad entries still triggered, same pattern. And I don't believe it's a hardware issue, since I'd expect to see similar problems with ehci-hc and other busmasters then. Martin ---------------- usbtest 3-2.4:1.0: TEST 11: unlink 1000 reads of 512 ohci_hcd 0000:00:0c.1: bad entry bbee000 ohci_hcd 0000:00:0c.1: td_hash[0] ohci_hcd 0000:00:0c.1: entry td c15d0000; urb c1fd9c94 index 0; hw next td 015d0040 ohci_hcd 0000:00:0c.1: info 00140000 CC=0 (CARRY) DI=0 IN R ohci_hcd 0000:00:0c.1: cbp 01827020 be 01827020 (len 1) ohci_hcd 0000:00:0c.1: td_hash[2] ohci_hcd 0000:00:0c.1: entry td cbbee080; urb c810a34c index 0; hw next td 0bbee000 ohci_hcd 0000:00:0c.1: info 02100000 CC=0 DATA0 DI=0 IN ohci_hcd 0000:00:0c.1: cbp 07fe2080 be 07fe21ff (len 384) ohci_hcd 0000:00:0c.1: bad? td cbbee000; urb 00000000 index 0; hw next td 00000000 ohci_hcd 0000:00:0c.1: info 5f000000 CC=5 DATA1 DI=0 SETUP ohci_hcd 0000:00:0c.1: cbp 00000000 be 00000000 (len 0) ohci_hcd 0000:00:0c.1: bad entry bbee080 ohci_hcd 0000:00:0c.1: td_hash[0] ohci_hcd 0000:00:0c.1: entry td cbbee000; urb c810a34c index 0; hw next td 00000000 ohci_hcd 0000:00:0c.1: info 02100000 CC=0 DATA0 DI=0 IN ohci_hcd 0000:00:0c.1: cbp 00000000 be 07fe21ff (len 0) ohci_hcd 0000:00:0c.1: entry td c15d0000; urb c1fd9c94 index 0; hw next td 015d0040 ohci_hcd 0000:00:0c.1: info 00140000 CC=0 (CARRY) DI=0 IN R ohci_hcd 0000:00:0c.1: cbp 01827020 be 01827020 (len 1) ohci_hcd 0000:00:0c.1: bad? td cbbee080; urb 00000000 index 0; hw next td 0bbee083 ohci_hcd 0000:00:0c.1: info 5f000000 CC=5 DATA1 DI=0 SETUP ohci_hcd 0000:00:0c.1: cbp 00000000 be 00000000 (len 0) ohci_hcd 0000:00:0c.1: OHCI Unrecoverable Error, disabled ohci_hcd 0000:00:0c.1: OHCI controller state ohci_hcd 0000:00:0c.1: OHCI 1.0, with legacy support registers ohci_hcd 0000:00:0c.1: control 0x08f HCFS=operational IE PLE CBSR=3 ohci_hcd 0000:00:0c.1: cmdstatus 0x00000 SOC=0 ohci_hcd 0000:00:0c.1: intrstatus 0x00000076 RHSC FNO UE SF WDH ohci_hcd 0000:00:0c.1: intrenable 0x80000016 MIE UE SF WDH ohci_hcd 0000:00:0c.1: hcca frame #3e96 ohci_hcd 0000:00:0c.1: roothub.a ff000202 POTPGT=255 NPS NDP=2 ohci_hcd 0000:00:0c.1: roothub.b 00000000 PPCM=0000 DR=0000 ohci_hcd 0000:00:0c.1: roothub.status 00000000 ohci_hcd 0000:00:0c.1: roothub.portstatus [0] 0x00000100 PPS ohci_hcd 0000:00:0c.1: roothub.portstatus [1] 0x00000103 PPS PES CCS ohci_hcd 0000:00:0c.1: reset, control = 0x8f ohci_hcd 0000:00:0c.1: HC died; cleaning up usb 3-2: USB disconnect, address 2 usb 3-2.4: USB disconnect, address 3 drivers/usb/misc/usbtest.c: submit/unlink fail -19 drivers/usb/misc/usbtest.c: unlink reads failed, iterations left 817 usbtest 3-2.4:1.0: disconnect ohci_hcd 0000:00:0c.1: leak ed c9788040 (#2) state 0 (has tds) $ rmmod ohci_hcd ohci_hcd 0000:00:0c.1: remove, state 0 usb usb3: USB disconnect, address 1 ohci_hcd 0000:00:0c.1: stop reset controller (state 0x00) ohci_hcd 0000:00:0c.1: OHCI controller state ohci_hcd 0000:00:0c.1: OHCI 1.0, with legacy support registers ohci_hcd 0000:00:0c.1: control 0x000 HCFS=reset CBSR=0 ohci_hcd 0000:00:0c.1: cmdstatus 0x00000 SOC=0 ohci_hcd 0000:00:0c.1: intrstatus 0x00000000 ohci_hcd 0000:00:0c.1: intrenable 0x00000000 ohci_hcd 0000:00:0c.1: hcca frame #3e96 ohci_hcd 0000:00:0c.1: roothub.a ff000202 POTPGT=255 NPS NDP=2 ohci_hcd 0000:00:0c.1: roothub.b 00000000 PPCM=0000 DR=0000 ohci_hcd 0000:00:0c.1: roothub.status 00000000 ohci_hcd 0000:00:0c.1: roothub.portstatus [0] 0x00000100 PPS ohci_hcd 0000:00:0c.1: roothub.portstatus [1] 0x00000100 PPS ohci_hcd 0000:00:0c.1: dma_pool_destroy ohci_ed, c9788000 busy ohci_hcd 0000:00:0c.1: dma_pool_destroy buffer-512, c7fe2000 busy ohci_hcd 0000:00:0c.1: USB bus 3 deregistered ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel