tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: Introducing non-RAM managed page ("device page")
UVM allocates a managed page's state (struct vm_page) for each page-sized
RAM,
because its main purpose is "page cache" - cache of on-disk page-sized data.
OTOH, "device pages" is always volatile. They're not cache.
i think there are more reasons than simple page cache issues.
I'd propose a simple extension to struct vm_page handling. Make ``struct
vm_page *'' either a pointer to its object *or* a magic integral value, which
contains physical address (or offset of its physical device's base). Users
of
struct vm_page * have to check if it's really a RAM's vm_page, like
if (uvm_pageisdevice_p(pg)) {
...
}
If anyone knows things I'm missing, please let me know.
there are hundreds of uses of this that would need to be updated. it
seems like a very invasive hack to support your use-cases.
can you do it with the "wasteful" full vm_page and see what happens?
this seems like a premature and extremely invasive optimisation.
i'd like to see some more support in the MI VM code to handle different
page sizes (large ones :-) and other similar problems in the future, but
this does not seem like the right way forward to me.
.mrg.
Home |
Main Index |
Thread Index |
Old Index