tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Device page



On Feb 2, 2010, at 10:20 AM, Masao Uebayashi wrote:

> As I briefly mentioned before, I'll need device page to support XIP.  It's
> a struct vm_page *, which is actually a magic value which conveys data from
> pgo_get() to pmap_enter().
> 
> When a device page is pmap_enter()'ed, pmap checks if it's a device page or
> not, if so, stores a PV into a dedicated vm_physseg for devices.  When a
> device page is passed to pmap_page_*() (struct vm_page *-oriented functions),
> they look for the device vm_physseg, look up a PV header, then look up a PV.
> 
> I also want to make these minimal PV handling moved to some MI place - 
> probably
> uvm_page.c.  Now we don't define MI PV header yet, I'll allocate struct
> vm_page_md *[] for each XIP-capable device.  This will be put in uvm_page.c
> too.

I'd rather change the arguments to pmap_{zero,copy}_page from paddr_t to struct 
vm_page * since it's easier to fetch the physical address from the page than 
getting the vm_page from the pa.

It also means that you can easily have a VM_PAGE_DEVICE_PAGE_P(pg) macro to 
detect whether this page is a device page or not.  No need for the pmap to know 
what physseg it is in.



Home | Main Index | Thread Index | Old Index