[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1 of 7] xenpaging: correct dropping pages to avoid full ring buffer
# HG changeset patch # User Olaf Hering <olaf@xxxxxxxxx> # Date 1301386985 -7200 # Node ID cc831886cb6a2ee356e132e331741dff2257fca3 # Parent 8ec7808f9c232e1aa6dcf9a51a8a8925444122a1 xenpaging: correct dropping pages to avoid full ring buffer Doing a one-way channel from Xen to xenpaging is not possible with the current ring buffer implementation. xenpaging uses the mem_event ring buffer, which expects request/response pairs to make progress. The previous patch, which tried to establish a one-way communication from Xen to xenpaging, stalled the guest once the buffer was filled up with requests. Correct page-dropping by taking the slow path and let p2m_mem_paging_resume() consume the response from xenpaging. This makes room for yet another request/response pair and avoids hanging guests. Signed-off-by: Olaf Hering <olaf@xxxxxxxxx> diff -r 8ec7808f9c23 -r cc831886cb6a tools/xenpaging/xenpaging.c --- a/tools/xenpaging/xenpaging.c Thu Mar 24 11:09:02 2011 +0000 +++ b/tools/xenpaging/xenpaging.c Tue Mar 29 10:23:05 2011 +0200 @@ -653,19 +653,19 @@ ERROR("Error populating page"); goto out; } + } - /* Prepare the response */ - rsp.gfn = req.gfn; - rsp.p2mt = req.p2mt; - rsp.vcpu_id = req.vcpu_id; - rsp.flags = req.flags; + /* Prepare the response */ + rsp.gfn = req.gfn; + rsp.p2mt = req.p2mt; + rsp.vcpu_id = req.vcpu_id; + rsp.flags = req.flags; - rc = xenpaging_resume_page(paging, &rsp, 1); - if ( rc != 0 ) - { - ERROR("Error resuming page"); - goto out; - } + rc = xenpaging_resume_page(paging, &rsp, 1); + if ( rc != 0 ) + { + ERROR("Error resuming page"); + goto out; } /* Evict a new page to replace the one we just paged in */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |