Thread (46 messages) flat view 46 messages, 9 authors, 2007-07-18

Re: [patch 5/6] ps3: BD/DVD/CD-ROM Storage Driver

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2007-07-13 23:07:11
Also in: linux-scsi, lkml

On Fri, 2007-07-13 at 09:02 -0400, James Bottomley wrote:
On Wed, 2007-07-04 at 15:22 +0200, Geert Uytterhoeven wrote:
quoted
+                       kaddr = kmap_atomic(sgpnt->page, KM_USER0);
+                       if (!kaddr)
+                               return -1;
+                       len = sgpnt->length;
+                       if ((req_len + len) > buflen) {
+                               active = 0;
+                               len = buflen - req_len;
+                       }
+                       memcpy(kaddr + sgpnt->offset, buf + req_len,
len);
+                       kunmap_atomic(kaddr, KM_USER0);
This isn't a SCSI objection, but this sequence appears several times in
this driver.  It's wrong for a non-PIPT architecture (and I believe the
PS3 is VIPT) because you copy into the kernel alias for the page, which
dirties the line in the cache of that alias (the user alias cache line
was already invalidated).  However, unless you flush the kernel alias to
main memory, the user could read stale data.  The way this is supposed
to be done is to do a 
Nah, we have no cache aliasing on ppc, at least not that matter here and
not on cell.

Ben.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help