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

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

From: James Bottomley <hidden>
Date: 2007-07-13 14:02:27
Also in: linux-scsi, lkml

On Fri, 2007-07-13 at 15:45 +0200, Geert Uytterhoeven wrote:
On Fri, 13 Jul 2007, James Bottomley wrote:
quoted
On Fri, 2007-07-13 at 15:25 +0200, Geert Uytterhoeven wrote:
quoted
kmap() just returns page_address() on ppc64, as there's no highmem.
kunmap() is a no-op.
quoted
So technically I could just use page_address() directly, but Christoph
wanted
me to keep the kmap()/kunmap() sequence because it's considered a good
practice.
The point isn't what kmap and kunmap do ... it's the addresses they
return.  By and large, a kernel virtual address for a page is different
from the user virtual address.  If the cache is virtually indexed you
get different cache lines for the same page ... and that sets you up
with aliases you need to resolve.  parisc is the same ... our
kmap/kunmap are nops as well, but our kernel virtual addresses are still
different from the user virtual ones.
IC.

  - flush_kernel_dcache_page() is a no-op on ppc64
    (ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE is defined on parisc only).

  - For reference, drivers/scsi/ipr.c (another ppc64 driver) just uses a plain
    kmap/memcpy/kunmap sequence

So what should I do?
Ask someone who knows the architecture ... Anton, Paulus or Benh ... I'm
fairly certain PPC is VIPT and will need some kind of alias
resolution ... perhaps its associative enough not to let the aliases be
a problem.

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