[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Invalid types between save and restore, Xen 3.1.4
On 04/12/2008 17:26, "Jean-Yves Migeon" <jeanyves.migeon@xxxxxxx> wrote: > What I would like to know is the kind of operations that could result on > such a situation. Considering that the xentools should have an accurate > view of the pfn_types through the p2m table, how could it become > possible that between save and restore, hypervisor refuses to validate > pages, as mappings should not change after the call to HYPERVISOR_suspend()? > > For example, why is Xen expecting a writable mapping while the page is > validated as L1? My guess is that Xen's existing save/restore code is not compatible with your 'alternative' recursive PDs. For such a recursive PD to be detected, the PD being mapped must *already* be validated as a PD. Otherwise (let's assume 2-level pagetables for a moment, with levels called PD and PT) if the mapped PD is not yet validated, it will by default get validated as a PT! This explains what you see: the pages mapped by the PD are not interpreted as PTs but as data pages (because Xen has erroneously decided that the PD is a PT). Then it will try to validate them as writable data pages and get confused because some of them are already validated as pagetable pages! How to fix this... Well: (a) Hack xc_domain_save.c and xc_domain_restore.c a bunch. Not fun. (b) In the NetBSD kernel, zap alternative recursive PDs before suspending yourself. If this is possible it will save you a headache. Perhaps you can flush them somehow, or otherwise zap _PAGE_PRESENT and then reinstate it yourself during resume? If you have to go down route (a)... I'd have to think a bit about how best to fix the issue. Oh, I'll add that this whole issue will definitely not exist for *self* recursive PDs. Those will work no problem. -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |