|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH 08/12] xenpaging: drop paged pages in guest_remov
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
|
|
|
|
|