On 21.09.2011 00:23, Matt Thomas wrote:
XXX PAE suspend does not work in amd64 currently, due to (yet
again!) page validation issues with hypervisor. Will fix.
Got it, pool cache invalidation is not working as expected during
save. I remember discussing this matter with Mindaugas a while
back, and due to pool_cache(9) limitations back then the code was
commented out (see the #if 0 ... #endif part in
pool_cache_invalidate).
I had to implement a pool_cache_invalidate_local(), but this wasn't
technically appreciated by many as it made pool_cache abstraction
leaky (and they were right)
I'll discuss this matter again, I think I have an alternative
solution for that one. I may hit a pmf(9) limitation though :/
Maybe add pmf hook for cpu device_t in mi_cpu_attach
That's the idea; that way I could write initial code for vcpu suspend
when Xen MP gets committed.
Unfortunately, the limitation I currently have is for invalidation: only
the CPU can invalidate its own caches, so I have to teach the pmf hook
to somehow execute the "pool_cache(9) deplete" on the right CPU when
pmf_system_suspend is called, or use xcall(9).
rmind@ implemented high priority xcall(9) some time ago, so IMHO the
pool_cache(9) invalidation should now be able to handle all kind of
pools situations, including high IPL pools. But I'll have to check this
one first before uncommenting the xcall part in pool_cache_invalidate().
There's already MD code that tried to circumvent the invalidation
limitation (eg. not handling per-CPU pools, like x86 pmap_create
"try_again" loop).
--
Jean-Yves Migeon
jeanyves.mig...@free.fr