All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ilya Yanok <yanok@emcraft.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 3/6] mcx: Disable DCACHE since USB EHCI is enabled
Date: Wed, 04 Jul 2012 00:10:24 +0400	[thread overview]
Message-ID: <4FF351B0.30109@emcraft.com> (raw)
In-Reply-To: <201206302127.10984.marex@denx.de>

Dear Marek,

30.06.2012 23:27, Marek Vasut wrote:
>>>          do {
>>>
>>>                  /* Invalidate dcache */
>>>                  invalidate_dcache_range((uint32_t)&qh_list,
>>>
>>>                          (uint32_t)&qh_list + sizeof(struct QH));
>>>
>>>                  invalidate_dcache_range((uint32_t)&qh,
>>>
>>>                          (uint32_t)&qh + sizeof(struct QH));
>>>
>>>                  invalidate_dcache_range((uint32_t)qtd,
>>>
>>>                          (uint32_t)qtd + sizeof(qtd));
>> These guys are 32-byte aligned, right? So the assumption is that
>> cacheline is not greater than 32. Sounds like a bug to me (though could
>> be fixed rather easily with USB_MINALIGN introduced by Tom).
> Oooh, good catch indeed. Actually, look at the structures, even they have some
> weird alignment crap in them. Maybe that can also be dropped and the alignment
> shall be fixed properly. I'll have to research this more.

I guess that's because they have to be both address and size aligned.

>>>                  token = hc32_to_cpu(vtd->qt_token);
>>>                  if (!(token&  0x80))
>>>
>>>                          break;
>>>
>>>                  WATCHDOG_RESET();
>>>
>>>          } while (get_timer(ts)<  timeout);
>>>
>>>          /* Invalidate the memory area occupied by buffer */
>>>          invalidate_dcache_range(((uint32_t)buffer&  ~31),
>>>
>>>                  ((uint32_t)buffer&  ~31) + roundup(length, 32));
>> That's worse. First of all, rounding is wrong: consider buffer=31,
>> length=32. But that's easy to fix too. The bad part is that with
>> writeback cache you can't just enlarge the range to cover the buffer and
>> fit alignment requirements -- this can potentially destroy some changes
>> that are in the same cache line but not yet stored to RAM.
> Correct, so we have multiple bugs in here that need to be squashed ASAP.
>
> Ilya, can you possibly submit a patch for this?

Hm.. Fixing alignment for qh, qd and stuff is easy, I can surely submit 
a patch for this. But I don't really know what to do this the last one: 
if we are at this point there is no correct way out... We can increase 
the range to cover the buffer or decrease it to be inside buffer -- but 
both options are incorrect. Actually we should return error when 
unaligned buffer is submitted in the first place... But this will likely 
break a lot of systems... Probably put this check under if 
(dcache_enabled())?

Regards, Ilya.

  reply	other threads:[~2012-07-03 20:10 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-14 19:01 [U-Boot] [PATCH 0/4] USB and cache related fixes Tom Rini
2012-06-14 19:01 ` [U-Boot] [PATCH 1/4] ehci-omap: Do not call dcache_off from omap_ehci_hcd_init Tom Rini
2012-06-14 21:57   ` Marek Vasut
2012-06-14 22:14     ` Tom Rini
2012-06-14 19:01 ` [U-Boot] [PATCH 2/4] cache_v7: Check for dcache enablement in dcache flush functions Tom Rini
2012-06-14 22:00   ` Marek Vasut
2012-06-14 22:11     ` Tom Rini
2012-06-14 23:17       ` Marek Vasut
2012-06-15  5:48   ` R, Sricharan
2012-06-15 14:07     ` Tom Rini
2012-06-15 14:25       ` Marek Vasut
2012-06-15 14:30         ` Tom Rini
2012-06-15 14:33           ` Marek Vasut
2012-06-15 14:48       ` R, Sricharan
2012-06-15 15:00         ` Tom Rini
2012-06-15 15:18           ` R, Sricharan
2012-06-15 15:20             ` Tom Rini
2012-06-18 14:13               ` R, Sricharan
2012-06-18 15:23                 ` Tom Rini
2012-06-20 16:46         ` Aneesh V
2012-06-21  9:25           ` Sricharan R
2012-06-21 15:23             ` R, Sricharan
2012-06-27 23:40               ` Aneesh V
2012-06-28  5:49                 ` R, Sricharan
2012-06-27 23:17             ` Aneesh V
2012-06-14 19:01 ` [U-Boot] [PATCH 3/4] ehci-hcd.c: Add a new USB_DMA_MINALIGN define for cache alignment Tom Rini
2012-06-14 19:29   ` Marek Vasut
2012-06-14 19:30     ` Tom Rini
2012-06-14 19:41       ` Marek Vasut
2012-06-14 19:54         ` Tom Rini
2012-06-14 20:02           ` Marek Vasut
2012-06-14 19:01 ` [U-Boot] [PATCH 4/4] musb_core.h: " Tom Rini
2012-06-14 21:45 ` [U-Boot] [PATCH v2 0/3] USB and cache related fixes Tom Rini
2012-06-14 21:45   ` [U-Boot] [PATCH v2 1/3] ehci-omap: Do not call dcache_off from omap_ehci_hcd_init Tom Rini
2012-06-14 21:45   ` [U-Boot] [PATCH v2 2/3] cache_v7: Check for dcache enablement in dcache flush functions Tom Rini
2012-06-14 21:45   ` [U-Boot] [PATCH v2 3/3] ehci-hcd.c, musb_core, usb.h: Add USB_DMA_MINALIGN define for cache alignment Tom Rini
2012-06-20 16:21   ` [U-Boot] [PATCH v3 0/6] USB and cache related fixes Tom Rini
2012-06-20 16:21     ` [U-Boot] [PATCH v3 1/6] ehci-omap: Do not call dcache_off from omap_ehci_hcd_init Tom Rini
2012-06-20 16:21     ` [U-Boot] [PATCH v3 2/6] ehci-hcd.c, musb_core, usb.h: Add USB_DMA_MINALIGN define for cache alignment Tom Rini
2012-06-20 19:00       ` Marek Vasut
2012-06-20 19:15         ` Tom Rini
2012-06-20 21:15           ` Marek Vasut
2012-06-20 22:07             ` Tom Rini
2012-06-21  0:09               ` Marek Vasut
2012-06-20 16:21     ` [U-Boot] [PATCH v3 3/6] mcx: Disable DCACHE since USB EHCI is enabled Tom Rini
2012-06-20 16:21     ` [U-Boot] [PATCH v3 4/6] omap3_beagle: " Tom Rini
2012-06-20 16:21     ` [U-Boot] [PATCH v3 5/6] omap4_panda: " Tom Rini
2012-06-20 16:21     ` [U-Boot] [PATCH v3 6/6] tam3517-common: " Tom Rini
2012-06-20 22:14     ` [U-Boot] [PATCH v4 0/6] USB and cache related fixes Tom Rini
2012-06-20 22:14       ` [U-Boot] [PATCH v4 1/6] ehci-omap: Do not call dcache_off from omap_ehci_hcd_init Tom Rini
2012-06-20 22:14       ` [U-Boot] [PATCH v4 2/6] ehci-hcd.c, musb_core, usb.h: Add USB_DMA_MINALIGN define for cache alignment Tom Rini
2012-06-20 22:14       ` [U-Boot] [PATCH v4 3/6] mcx: Disable DCACHE since USB EHCI is enabled Tom Rini
2012-06-27 22:28         ` Ilya Yanok
2012-06-27 22:48           ` Marek Vasut
2012-06-28 13:57             ` Ilya Yanok
2012-06-28 14:37               ` Marek Vasut
2012-06-28 14:57                 ` Ilya Yanok
2012-06-28 15:41                   ` Marek Vasut
2012-06-30 15:51                     ` Ilya Yanok
2012-06-30 19:27                       ` Marek Vasut
2012-07-03 20:10                         ` Ilya Yanok [this message]
2012-07-03 21:23                           ` Marek Vasut
2012-06-28 17:29                 ` Tom Rini
2012-06-28 22:01                   ` Marek Vasut
2012-06-28 22:34                     ` Tom Rini
2012-06-28 22:36                       ` Marek Vasut
2012-06-28 23:01                         ` Tom Rini
2012-06-29  0:54                           ` Marek Vasut
2012-06-29  2:14                             ` Tom Rini
2012-06-30 15:55                             ` Ilya Yanok
2012-06-30 19:28                               ` Marek Vasut
2012-07-03 20:13                                 ` Ilya Yanok
2012-07-03 20:43                                   ` Tom Rini
2012-07-03 21:12                                     ` Ilya Yanok
2012-07-04  0:14                                       ` Marek Vasut
2012-07-04 13:08                                         ` Ilya Yanok
2012-07-03 21:24                                     ` Marek Vasut
2012-06-20 22:14       ` [U-Boot] [PATCH v4 4/6] omap3_beagle: " Tom Rini
2012-06-20 22:14       ` [U-Boot] [PATCH v4 5/6] omap4_panda: " Tom Rini
2012-06-21 11:19         ` Sricharan R
2012-06-21 16:40           ` R, Sricharan
2012-06-20 22:14       ` [U-Boot] [PATCH v4 6/6] tam3517-common: " Tom Rini
2012-06-14 22:02 ` [U-Boot] [PATCH 0/4] USB and cache related fixes Marek Vasut
2012-06-14 22:13   ` Tom Rini
2012-06-14 23:17     ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FF351B0.30109@emcraft.com \
    --to=yanok@emcraft.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.