
Dear Anatolij Gustschin,
Hi Marek,
On Mon, 9 Apr 2012 06:47:31 +0200
Marek Vasut marex@denx.de wrote:
Discard the creepy cache flushing mechanisms in ehci-hcd.c and replace them with more straightforward flushing. In the new approach, the flushing takes place directly in ehci_submit_async() call instead of going through the QH list and flushing all members and buffers. This discards a lot of weird bit operations on the members of QH and qTD structures.
NOTE: Certainly, this flushes even qTDs which are possibly unused in some transactions, though the overhead of the previous code was much higher than is the overhead of flushing two more cache lines (which most probably aren't even cached).
Signed-off-by: Marek Vasut marex@denx.de Cc: Puneet Saxena puneets@nvidia.com
drivers/usb/host/ehci-hcd.c | 127 +++++++++---------------------------------- 1 files changed, 27 insertions(+), 100 deletions(-)
Unfortunately this patch breaks compiling for many powerpc boards, mpc512x, mpc83xx, mpc85xx and QorIQ Px based with USB support enabled.
Because they have broken cache implementation, right? I mean, they have their own snooping methods, so they don't need the cache flushing at all, but then, if they don't, these methods (dcache_flush() etc) should be optimized to empty functions. Maybe we should implement them for these CPUs then? btw. I thought these compiled before, hm...
Thanks, Anatolij
Best regards, Marek Vasut