[Cbe-oss-dev] [patch 3/5] cell: updated driver for DDR2 memory on AXON
Jean-Christophe Dubois
jdubois at mc.com
Wed Jun 27 02:46:30 EST 2007
On Tuesday 26 June 2007 18:37:01 Maxim Shchetynin wrote:
> No, I mean azfs - a tiny filesystem which we have written for Axon DDR. It
> provides direct access from user to DDR2 without use of any buffer-methods
> nor readahead, which saves us some performance by getting rid of
> unnecessary memory to memory copies.
Is it published? I don't remember seeing it ... Any pointer?
Now why would the "contract" between azfs and the direct_access method of the
block device be different from ext2? I believe you should be able to use azfs
and ext2 interchangeably ... Or is there a good reason for the "contract" to
be different? And how to prevent ext2 to fail in this case (beside not
using "xip" at mount time)?
JC
>
> Mit freundlichen Grüßen / met vriendelijke groeten / avec regards
>
> Maxim V. Shchetynin
> Linux Kernel Entwicklung
> IBM Deutschland Entwicklung GmbH
> Linux für Cell, Abteilung 3250
> Schönaicher Straße 220
> 71032 Böblingen
>
> Vorsitzender des Aufsichtsrats: Johann Weihen
> Geschäftsführung: Herbert Kircher
> Sitz der Gesellschaft: Böblingen
> Registriergericht: Amtsgericht Stuttgart, HRB 243294
>
> Fahr nur so schnell wie dein Schutzengel fliegen kann!
>
>
>
>
> Jean-Christophe
> Dubois
> <jdubois at mc.com> To
> cbe-oss-dev at ozlabs.org
> 26.06.2007 17:19 cc
> Maxim Shchetynin/Germany/IBM at IBMDE,
> Arnd Bergmann <arnd at arndb.de>,
> powerpc-dev at ozlabs.org
> Subject
> Re: [Cbe-oss-dev] [patch 3/5] cell:
> updated driver for DDR2 memory on
> AXON
>
> On Tuesday 26 June 2007 16:57:11 Maxim Shchetynin wrote:
> > Hi,
> >
> > Actually, axon_ram's direct_access method would not be used by ext2 at
>
> all
>
> > - ext2 feels comfortable with make_request().
>
> hum ... ext2 seems to be the only file system in the kernel tree able to
> use
> the direct_access. And if you mount it with "xip" on the axonram block
> device, it will fail. This should be fixed somehow ...
>
> > We have the direct_access method here only because it is needed for the
> > azfs file-system, which we recommend to use for accessing the Axon's RAM
> > rather then ext2 or any other buffered file-systems.
>
> Do you mean ZFS (http://www.wizy.org/wiki/ZFS_on_FUSE)? Or something else?
>
> JC
>
> > Mit freundlichen Grüßen / met vriendelijke groeten / avec regards
> >
> > Maxim V. Shchetynin
> > Linux Kernel Entwicklung
> > IBM Deutschland Entwicklung GmbH
> > Linux für Cell, Abteilung 3250
> > Schönaicher Straße 220
> > 71032 Böblingen
> >
> > Vorsitzender des Aufsichtsrats: Johann Weihen
> > Geschäftsführung: Herbert Kircher
> > Sitz der Gesellschaft: Böblingen
> > Registriergericht: Amtsgericht Stuttgart, HRB 243294
> >
> > Fahr nur so schnell wie dein Schutzengel fliegen kann!
> >
> > On Tuesday 26 June 2007, Christophe Lamoureux wrote:
> > > > +/**
> > > > + * axon_ram_direct_access - direct_access() method for block device
> > > > + * @device, @sector, @data: see block_device_operations method
> > > > + */
> > > > +static int
> > > > +axon_ram_direct_access(struct block_device *device, sector_t sector,
> > > > + unsigned long *data)
> > > > +{
> > > > + struct axon_ram_bank *bank = device->bd_disk->private_data;
> > > > + loff_t offset;
> > > > +
> > > > + offset = sector << AXON_RAM_SECTOR_SHIFT;
> > > > + if (offset >= bank->size) {
> > > > + dev_err(&bank->device->dev, "Access outside of address space\n");
> > > > + return -ERANGE;
> > > > + }
> > > > +
> > > > + *data = bank->ph_addr + offset;
> > > > +
> > > > + return 0;
> > > > +}
> > >
> > > By looking the ext2 implementation in 2.6.21 and doing some trials (
>
> this
>
> > is
> >
> > > the only file-system that looks to use the direct_access method of
>
> block
>
> > > device ) I do not understand how this direct access function (
> > > axon_ram_direct_access ) implementation could work.
> > >
> > > The value of *data returned is a physical address of the DDR as seen
>
> from
>
> > the
> >
> > > PPU ( something like 0x100_0000_0000+ offset )
> > >
> > > The method ext2_clear_xip_target() will call clear_page() with this
> >
> > physical
> >
> > > address. This does not work.
> > >
> > > There is the same kind of issue later in method ext2_get_xip_page()
>
> with
>
> > > virt_to_page() with the physical address.
> > >
> > > Note, that if the line
> > >
> > > *data = bank->ph_addr + offset;
> > >
> > > in axon_ram_direct_access is changed to
> > >
> > > *data = bank->io_addr + offset;
> > >
> > > the issue in ext2_clear_xip_target() --> clear_page() would be
>
> corrected
>
> > but
> >
> > > the ext2_get_xip_page() --> virt_to_page() would not work as the
>
> virtual
>
> > > address given would be the result of a ioremap_flags().
> > >
> > > Did I misunderstood or miss something ?
> >
> > From looking at the code, I'd say you are right. Maxim, could you give
> > Christoph
> > some insight on this?
> >
> > Arnd <><
> >
> >
> > _______________________________________________
> > cbe-oss-dev mailing list
> > cbe-oss-dev at ozlabs.org
> > https://ozlabs.org/mailman/listinfo/cbe-oss-dev
>
> _______________________________________________
> cbe-oss-dev mailing list
> cbe-oss-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/cbe-oss-dev
More information about the cbe-oss-dev
mailing list