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

Re: [Xen-devel] [PATCH] x86/mm: Improve ring management for memory events. Do not lose guest events

On Wed, Jan 11, Andres Lagar-Cavilla wrote:

> @@ -898,7 +902,7 @@ void p2m_mem_paging_drop_page(struct dom
>   * already sent to the pager. In this case the caller has to try again until 
> the
>   * gfn is fully paged in again.
>   */
> -void p2m_mem_paging_populate(struct domain *d, unsigned long gfn)
> +int p2m_mem_paging_populate(struct domain *d, unsigned long gfn)
>  {
>      struct vcpu *v = current;
>      mem_event_request_t req;

What is the reason to return an error here? None of the callers need to
check it because they already know their condition (which is
p2m_is_paging()). And your patch doesnt seem to update them. Foreigners
try again, requests from the target domain do currently also try again
until my change to use wait queues in gfn_to_mfn* is finished. And even
then the call p2m_mem_paging_populate() will most likely remain a
one-shot/must-succeed thing if the request is from the target domain.

The only condition to care about in p2m_mem_paging_populate() is -ENOSYS
from mem_event_claim_slot(), which your patch already handles by
crashing the guest. Since the guest is in an kind-of undefined state
anyway if the pager disappears while some gfns are still in paging state,
this is one of the possible actions.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.