Hi Francesco. On Jul 23, 2011, at 4:02 PM, Francesco Di Paolo wrote:
> Hello there, > i'd like some hints in regards how the CR3 register is handled. From what > i've learned, it seems that VirtualBox, everytime a guest O.S. try to write > on CR3. generates a #GP and > uses a function EMInterpretCRxWrite() that calls emUpdateCRx() which modifies > the VCpu. In particular, in regards to CR3, it sets the new value(with > CPUMSetGuestCR3 )and does a flush calling PGMFlushTLB() that remap the CR3 > with the function MapCR3(). Now, i think that VirtualBox has to do the setup > of the new page table right? And, in order to catch all the exceptions, it > has to write protect it or am i wrong?and if it is so,can anyone address me > to the source code that does these?? > i would appreciate We cache shadow paging structures. So, when the guest loads a new value into CR3 its very likely that it will be in our cache. The cache is called PGMPool. It will take care of monitoring the paging structures and keeping the shadow sufficiently up to date. Missing entries in the shadow paging structures will mostly be synced over from the guest structures when a page fault occurs, i.e. when they normally would be loaded into the CPUs TLB. -- Kind regards / Mit freundlichen Gruessen / Vennlig hilsen, bird -- ORACLE Deutschland B.V. & Co. KG Knut St. Osmundsen Werkstrasse 24 Senior Staff Engineer, VirtualBox 71384 Weinstadt, Germany mailto:[email protected] Hauptverwaltung: Riesstr. 25, D-80992 Muenchen Registergericht: Amtsgericht Muenchen, HRA 95603 Komplementaerin: ORACLE Deutschland Verwaltung B.V. Rijnzathe 6, 3454PV De Meern, Niederlande Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697 Geschaeftsfuehrer: J. Kunz, M. van de Molen, A. van der Ven
_______________________________________________ vbox-dev mailing list [email protected] http://vbox.innotek.de/mailman/listinfo/vbox-dev
