tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pmap_mmap
On Wed, Nov 17, 2010 at 04:07:04PM +0000, Eduardo Horvath wrote:
> On Thu, 18 Nov 2010, Masao Uebayashi wrote:
>
> > On Thu, Nov 18, 2010 at 12:30:52AM +0900, Izumi Tsutsui wrote:
>
> > > > What I ended up is pmap_mmap(9), which is exactly mmmmap(), but
> > > > made public.
> > > >
> > > > Does this sound right?
> > >
> > > Probably it's time to remove "mmap cookie" type as pmap(9) says
> > > since we have separate paddr_t and vaddr_t?
> >
> > I'm all for rethinking the design from ground.
>
> Yes, this needs to be carefully considered. The "mmap cookie" is not
> necessarily a PA. On sparc64 it contains additional information that pmap
> needs to know to successfully set up a correct TLB entry. And some
> machines, even modern ones, may not have linear physical address spaces.
Understood. Like the ECC bits you mentioned.
>
> > And my answer to this question is, bus_space_physload(9).
>
> What's that do and how is that relevent to managed memory?
Managed memory has vm_pages. Device driver looks up the vm_physseg
(and offset) from vm_pages (usually bus_dma(9) ones). My point
is, by allocating vm_physseg for devices too, we can equally return
physical page identities.
I think cdevs can be easily converted, because there's a dedicated
udv_fault(), where we can easily pass the "mmap cookie" equivalent
to pmap_enter(9).
(XIP on kernel .data is much different, but this is another story.)
>
> > cdev_mmap(9) will return "struct vm_physseg *" + "off_t", instead
> > of "mmap cookie". The vm_physseg is either on device's MMIO page
> > or RAM. I hope this will be understood. Otherwise I have to do
> > so many hacks to achieve XIP... :(
>
> I think that will break existing implementations.
Yes, it needs a new name, like cdev_page(9).
>
> Eduardo
--
Masao Uebayashi / Tombi Inc. / Tel: +81-90-9141-4635
Home |
Main Index |
Thread Index |
Old Index