Linus Torvalds wrote: > Virtualization in general. We don't know what it is - in IBM machines it's > a hypervisor. With Xen and VMware, it's usually a hypervisor too. With > KVM, it's obviously a host Linux kernel/user-process combination. > > The point being that in the guests, hotunplug is almost useless (for > bigger ranges), and we're much better off just telling the virtualization > hosts on a per-page level whether we care about a page or not, than to > worry about fragmentation. > > And in hosts, we usually don't care EITHER, since it's usually done in a > hypervisor. >
The paravirt_ops patches I just posted implement all the machinery required to create a pseudo-physical to machine address mapping under the kernel. This is used under Xen because it directly exposes the pagetables to its guests, but there's no reason why you couldn't use this layer to implement the same mapping without an underlying hypervisor. This allows the kernel to see a normal linear "physical" address space which is in fact its mapped over a discontigious set of machine ("real physical") pages. Andrew and I discussed using it for a kdump kernel, so that you could load it into a random bunch of pages, and set things up so that it sees itself as being contiguous. The mapping is pretty simple. It intercepts __pte (__pmd, etc) to map the "physical" page to the real machine page, and pte_val does the reverse mapping. You could implement this today as a farily simple, thin paravirt_ops backend. The main tricky part is making sure all the device drivers are correct in using bus addresses (which are mapped to real machine addresses), and that they don't assume that adjacent kernel virtual pages are physically adjacent. J - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/