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

Reply via email to