[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] paging mechanism clarification
> The most important difference is that in PV mode the pagetables the guest > generates are directly used by the host processor. For this reason, there > are various changes required to the way the guest updates its pagetables. > The most important of these is that the guest must translate its > pseudophysical addresses to host machine addresses before filling out page > table entries. > > Thanks for the clarification Mark. > But Isn't Xen hypevisor supposed to do this translation of pseuophysical > addresses to host machine address, instead of the guest itself? Not for paravirtualised (Xen-aware) guests. They handle their own translations, which makes it possible to eliminate shadow paging entirely for them; this is a benefit to performance. Shadow pagetables are normally only used for a PV guest when live migration is in progress. HTH, Cheers, Mark > Thank you > --pradeep > > In PV mode, pages that are currently part of a pagetable are only ever > allowed to be mapped readonly in order to prevent tampering by the guest. > > Cheers, > Mark > > > > > I hope i made myself clear. > > > > Please enlighten me :-). > > > > > > > > When paging is enabled, we use a shadow page-table, which is > > > > essentially > > > > that the GUEST sees one page-table, and the processor another > > > > (thanks to > > > > the fact that the hypervisor intercepts the CR3 read/write > > > > > > operations, > > > > > > > and when CR3 is read back by the guest, we don't send back the value > > > > it's ACTUALLY POINTING TO IN THE PROCESSOR, but the value > > > > > > that was set > > > > > > > by the guest). So there are two page-tables. > > > > > > > > Got this well, thanks Mats :). > > > > > > > > To make the page-table updates by the guest visible to the > > > > > > hypervisor, > > > > > > > all of the guest-page-tables are made read-only (by scanning > > > > the new CR3 > > > > value whenever one is set). > > > > > > > > I didn't get this either well :( > > > > sorry, but do you mean CR3 for the guest or for the > > > > processor? i hope you mean guest? > > > > > > Yes, scan the guest-CR3 to see where it placed the page-tables. > > > > > > > Whenever a page-fault happens, the hypervisor has "first look", and > > > > determines if the update is for a page-table or not. If it is a > > > > page-table update, the guest operation is emulated (in > > > > > > x86_emulate.c), > > > > > > > and the result is written to the shadow-page-table AND the > > > > > > > > Why do we need emulation?some peculiar reason for emulating? > > > > Do you mean to say if i am running a 32 bit domU on top of a > > > > 64 bit processor, the guest operation for updating the page > > > > table is emulated by the hypervisor.am i right? > > > > > > No, it's simply because we need to see the result of the > > > instruction and > > > write it to two places (with some modification in one of > > > those places). > > > So if the code is doing, for example: "*pte |= 1;" (set a > > > page-table-entry to "present"), we need to mark both the > > > guest-page-table-entry to "present", and mark our > > > shadow-entry "present" > > > (and perhaps do some other work too, but that's the minimum work > > > needed). > > > > > > This brings one more question in my mind.Why do we use pinning then? > > > > I believe there's two types of pinning! Page-pinning, which is blocking > > a page from being accessed in an incorrect way [again, I'm not 100% sure > > how this works, or exactly what it does - just that it's a term used in > > the general way I described in the previous sentence]. > > > > > As i see at it.To avoid shadow page tables to be swapped out > > > before the page tables they actually point to are swapped.Am i right? > > > > > > But according to interface manual,-> to bind a vcpu to a > > > specific CPU in a SMP environment we use pining.But these two > > > look pretty orthogonal statements to me, which means i may be > > > wrong :(. > > > Can somebody help me in this regard? > > > > CPU pinning is to tie a VCPU to a (set of) processor(s). For example, > > you may want to pin Dom0 to run only on CPU0, and pin a DomU to run on > > CPU's 1,2 and 3. That way, Dom0 is ALWAYS able to run on it's own CPU, > > and it's never in contention about which CPU to use, and DomU can run on > > three CPU's as much as it likes. You could have another DomU pinned to > > CPU 3 if you wish. That means that CPU 1, 2 are exclusively for the > > first DomU, whilst the second DomU shares CPU3 with the first DomU (so > > they both get half the CPU performance of one CPU - on average over a > > reasonable amount of time). > > > > -- > > Mats > > > > > Pointers to actual code will be of great help. > > > > > > Thanks a lot Mats. > > > Thank you all. > > > > > > --pradeep > > > > > > > Does this means on a x86 platform this overkill or this > > > > emulation is skipped altogether? > > > > Please bear with me as i am an absolute Xen newbie out here :-). > > > > > > No, it's ALWAYS used for all page-table writes, as far as I > > > understand. > > > > > > -- > > > Mats > > > > > > > guest-page-table, but in the shadow-page-table, the value is > > > > modified to > > > > reflect the actual address in machine-space, rather than what > > > > the guest > > > > thinks it should be. > > > > > > > > In futuer versions of AMD processors (and I believe Intel are > > > > working on > > > > something very similar if not the same), there will be a mode > > > > where the > > > > processor is able to work in "nested paging mode", which means that > > > > there are two "parallel" page-tables. The first one is the > > > > "guest-page-table", the second one is the "host-page-table". In this > > > > case, every lookup in the guest-page-table will be done through the > > > > host-page-table. So we have a "simple" way to just take the > > > > guest-page-table and translate it to machine-physical-address > > > > - with the > > > > good thing that the host-page-table needn't change, since the > > > > pages that > > > > the host consists of is pretty much static for the duration of the > > > > guest. > > > > > > > > Yes, read about about this in an article mention how Pacifica > > > > is better than VT. > > > > > > > > Say for example, we have a guest that lives at 256-512MB. The > > > > guest-page-table would contain, for example, a mapping for > > > > 0x12200000 -> > > > > guest-physical 0x100000 (1MB). The host-page-table > > > > > > translates this to > > > > > > > 0x10100000 because the 1MB entry in guest-address is 256+1MB in > > > > machine-address. > > > > > > > > Exactly, got this well on spot :). > > > > > > > > [In reality, it's very likely that the guest never gets all > > > > the space in > > > > one big chunk, but rather a few pages here and a few pages there. If > > > > there are big chunks, we could use large pages to map those!]. > > > > > > > > Thanks a ton Mats and all. > > > > > > > > --pradeep > > > > > > > > The support for nested paging (called HAP, Hardware Assisted > > > > Paging) is > > > > in the Unstable version of Xen since a few days back. > > > > > > > > -- > > > > Mats > > > > > > > > > And this whole 2 level paging consitutes Xen's shadow page > > > > > tables. Right? > > > > > > > > > > Is my understanding of Xen's paging mechanism correct?or am i > > > > > missing something? > > > > > > > > > > Thank you > > > > > > > > > > -pradeep > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@xxxxxxxxxxxxxxxxxxx > > http://lists.xensource.com/xen-devel > > -- > Dave: Just a question. What use is a unicyle with no seat? And no pedals! > Mark: To answer a question with a question: What use is a skateboard? > Dave: Skateboards have wheels. > Mark: My wheel has a wheel! -- Dave: Just a question. What use is a unicyle with no seat? And no pedals! Mark: To answer a question with a question: What use is a skateboard? Dave: Skateboards have wheels. Mark: My wheel has a wheel! _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |