Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.4
xen.548
xenpaging.optimize_p2m_mem_paging_populate.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xenpaging.optimize_p2m_mem_paging_populate.patch of Package xen.548
Subject: xenpaging: optimize p2m_mem_paging_populate p2m_mem_paging_populate will always put another request in the ring. To reduce pressure on the ring, place only required requests in the ring. If the gfn was already processed by another thread, and the current vcpu does not need to be paused, p2m_mem_paging_resume will do nothing with the request. And also xenpaging will drop the request if the vcpu does not need a wakeup. (xen-unstable changeset: 22444:7fe9cad00e15) Signed-off-by: Olaf Hering <olaf@aepfle.de> --- xen/arch/x86/mm/p2m.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) Index: xen-4.0.3-testing/xen/arch/x86/mm/p2m.c =================================================================== --- xen-4.0.3-testing.orig/xen/arch/x86/mm/p2m.c +++ xen-4.0.3-testing/xen/arch/x86/mm/p2m.c @@ -2590,12 +2590,12 @@ void p2m_mem_paging_populate(struct doma mem_event_request_t req; p2m_type_t p2mt; - memset(&req, 0, sizeof(req)); - /* Check that there's space on the ring for this request */ if ( mem_event_check_ring(d) ) return; + memset(&req, 0, sizeof(req)); + /* Fix p2m mapping */ /* XXX: It seems inefficient to have this here, as it's only needed * in one case (ept guest accessing paging out page) */ @@ -2613,6 +2613,11 @@ void p2m_mem_paging_populate(struct doma vcpu_pause_nosync(v); req.flags |= MEM_EVENT_FLAG_VCPU_PAUSED; } + else if ( p2mt != p2m_ram_paging_out && p2mt != p2m_ram_paged ) + { + /* gfn is already on its way back and vcpu is not paused */ + return; + } /* Send request to pager */ req.gfn = gfn;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor