Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/arch

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

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

Home | Main Index | Thread Index | Old Index