From: Arnd Bergmann <arnd@arndb.de>
To: carsteno@de.ibm.com
Cc: Maxim Shchetynin <maxim@de.ibm.com>,
linuxppc-dev@ozlabs.org, cbe-oss-dev@ozlabs.org,
linux-kernel@vger.kernel.org
Subject: Re: [Cbe-oss-dev] [patch 3/5] cell: updated driver for DDR2 memory on AXON
Date: Tue, 26 Jun 2007 19:38:06 +0200 [thread overview]
Message-ID: <200706261938.07112.arnd@arndb.de> (raw)
In-Reply-To: <46815286.1010808@de.ibm.com>
On Tuesday 26 June 2007, Carsten Otte wrote:
>
> Arnd Bergmann wrote:
> > What will actually happen if you try to mount an axonram device with ext2?
> > I suppose mount should fail with a proper error code if the block size is
> > larger than 4kb, but does that happen?
> >
> > If you have a 4k block size axonram device, the ext2 really should work
> > using XIP as expected, including the mmap() operation.
> >
> Absolutely. What's the symptom if you try mount -o xip? I am willing
> to fix any bugs that show in the ext2/xip code in that scenario...
The real problem is that the ->direct_access function is supposed to return
a kernel virtual address in the linear mapping, which does not make any
sense for axonram. The physical address of the underlying device is
outside of the kernel mapping, and gets mapped into the kernel virtual
space using ioremap, with flags to disallow caching.
If ->direct_access returns a physical address, the file system cannot
access the data through the kernel mapping, but if it returns the
ioremapped address, it cannot know what address to map into the
user page tables, because virt_to_page() is not defined for the
ioremap space.
Maximchose to return the physical address, which is what he needs in
his file system, but that's just not how the interface was designed
to be used.
One way to change fix the problem might be to give a flag to the
->direct_access function to ask for either the page frame number,
or the virtual address (from ioremap or the linear mapping).
It's rather ugly though, so if you have a better idea, let us
know.
Another problem is that the mmap, or no_page, function really
needs to know about the pgprot value it should use. If we add
a field to struct block_device for this, the drivers could set
it there.
Arnd <><
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: carsteno@de.ibm.com
Cc: cbe-oss-dev@ozlabs.org, Maxim Shchetynin <maxim@de.ibm.com>,
linuxppc-dev@ozlabs.org, linux-kernel@vger.kernel.org
Subject: Re: [Cbe-oss-dev] [patch 3/5] cell: updated driver for DDR2 memory on AXON
Date: Tue, 26 Jun 2007 19:38:06 +0200 [thread overview]
Message-ID: <200706261938.07112.arnd@arndb.de> (raw)
In-Reply-To: <46815286.1010808@de.ibm.com>
On Tuesday 26 June 2007, Carsten Otte wrote:
>
> Arnd Bergmann wrote:
> > What will actually happen if you try to mount an axonram device with ext2?
> > I suppose mount should fail with a proper error code if the block size is
> > larger than 4kb, but does that happen?
> >
> > If you have a 4k block size axonram device, the ext2 really should work
> > using XIP as expected, including the mmap() operation.
> >
> Absolutely. What's the symptom if you try mount -o xip? I am willing
> to fix any bugs that show in the ext2/xip code in that scenario...
The real problem is that the ->direct_access function is supposed to return
a kernel virtual address in the linear mapping, which does not make any
sense for axonram. The physical address of the underlying device is
outside of the kernel mapping, and gets mapped into the kernel virtual
space using ioremap, with flags to disallow caching.
If ->direct_access returns a physical address, the file system cannot
access the data through the kernel mapping, but if it returns the
ioremapped address, it cannot know what address to map into the
user page tables, because virt_to_page() is not defined for the
ioremap space.
Maximchose to return the physical address, which is what he needs in
his file system, but that's just not how the interface was designed
to be used.
One way to change fix the problem might be to give a flag to the
->direct_access function to ask for either the page frame number,
or the virtual address (from ioremap or the linear mapping).
It's rather ugly though, so if you have a better idea, let us
know.
Another problem is that the mmap, or no_page, function really
needs to know about the pgprot value it should use. If we add
a field to struct block_device for this, the drivers could set
it there.
Arnd <><
next prev parent reply other threads:[~2007-06-26 17:38 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <OF39A5D2DB.6FC50A30-ONC1257306.0051B925-C1257306.0052040B@de.ibm.com>
2007-06-26 16:21 ` [Cbe-oss-dev] [patch 3/5] cell: updated driver for DDR2 memory on AXON Arnd Bergmann
2007-06-26 17:53 ` Carsten Otte
2007-06-26 17:38 ` Arnd Bergmann [this message]
2007-06-26 17:38 ` Arnd Bergmann
2007-06-18 22:42 [patch 0/5] cell patches for 2.6.23 Arnd Bergmann
2007-06-18 22:42 ` [patch 3/5] cell: updated driver for DDR2 memory on AXON Arnd Bergmann
[not found] ` <20070619154812.GA20347@ps3linux.grid.fixstars.com>
2007-06-19 23:03 ` [Cbe-oss-dev] " Arnd Bergmann
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=200706261938.07112.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=carsteno@de.ibm.com \
--cc=cbe-oss-dev@ozlabs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=maxim@de.ibm.com \
/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.