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

Re: [Xen-devel] [PATCH 08/12] xenpaging: drop paged pages in guest_remove_page


  • To: xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: Olaf Hering <olaf@xxxxxxxxx>
  • Date: Fri, 14 Jan 2011 17:53:07 +0100
  • Delivery-date: Fri, 14 Jan 2011 08:56:18 -0800
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

On Mon, Jan 10, Olaf Hering wrote:

> Simply drop paged-pages in guest_remove_page(), and notify xenpaging to
> drop its reference to the gfn. If the ring is full, the page will
> remain in paged-out state in xenpaging. This is not an issue, it just
> means this gfn will not be nominated again.

>  send one-way notification to pager to release page

Here I need some help to make that a true one-way event.

The currently applied version of the patch just fills up the ring, with
the result that the guest can not proceed because there is no way to
tell the pager about required page-in requests.

How can the request which was just consumed with get_response() be freed
from the ring buffer? I tried a modified version of
mem_event_pause_vcpu() which does not call mem_event_pause_vcpu(), but
that does not change anything. It seems the stuck guest is a result of
incorrect mem_event_ring handling.

Olaf

> +void p2m_mem_paging_drop_page(struct p2m_domain *p2m, unsigned long gfn)
> +{
> +    struct vcpu *v = current;
> +    mem_event_request_t req;
> +    struct domain *d = p2m->domain;
> +
> +    /* Check that there's space on the ring for this request */
> +    if ( mem_event_check_ring(d) == 0)
> +    {
> +        /* Send release notification to pager */
> +        memset(&req, 0, sizeof(req));
> +        req.flags |= MEM_EVENT_FLAG_DROP_PAGE;
> +        req.gfn = gfn;
> +        req.vcpu_id = v->vcpu_id;
> +
> +        mem_event_put_request(d, &req);
> +    }
> +}
> +



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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