[haiku-development] Re: [Haiku-commits] r26488 - in haiku/trunk/src/system/kernel: device_manager fs

> "François Revol" <revol@xxxxxxx> wrote:
> > > * Implemented the DMA and I/O requests/scheduler framework - for
> > > now
> > > in C++ only. It's a work in progress and not used anywhere yet.
> > Btw, talking about DMA, I'm digging vm setup on 68k, and talked
> > with
> > Travis, the current code doesn't differentiate DMAble memory from
> > "fast" ram, it just sees it as a single pool.
> > While it shouldn't be a problem for PCI initiated DMA on x86, it
> > will
> > certainly be an issue for ISA DMA, and on other platforms (I
> > suppose
> > PPC just uses PCI style DMA, but...).
> > Without going as deep as handling NUMA ranges with cpu affinities,
> > it
> > would be nice to have the vm know about it so it can respect the
> > B_LOMEM and B_SLOWMEM flags.
>
> I don't really want to add support for those (although maybe we have
> to
> in architecture independent way), but we definitely need a
> create_area() version that allows for address and alignment
> restrictions. We also need this to correctly implement DMAResource.
>
> For platform wide but varying restrictions, something like B_LOMEM/
> B_SLOWMEM might be a good idea, even though I would prefer a way to
> retrieve general DMA restrictions from the bus in question.
>

Right, but to support existing driver we should still handle this.
The bus manager could have a call to allocate areas itself, since he
knows the restrictions. I think solaris does it this way, or from the
device, recalling from OSS code.

François.

Other related posts: