aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenpaging
Commit message (Collapse)AuthorAgeFilesLines
* Fix emacs local variable block to use correct C style variable.David Vrabel2013-02-217-7/+7
| | | | | | | The emacs variable to set the C style from a local variable block is c-file-style, not c-set-style. Signed-off-by: David Vrabel <david.vrabel@citrix.com
* nstore: rename public xenstore headersIan Campbell2012-05-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | The xenstore header xs.h is producing conflicts with other software[1]. xs is a too short identifier and does not matche the library. Renaming the headers to xenstore.h and xenstore_lib.h is the easiest way to make them easy recognizable and prevent furthe problems. [1]: http://bugs.debian.org/668550 [ Also update QEMU_TAG, to bring in corresponding change to qemu-xen-traditional. -iwj ] Signed-off-by: Bastian Blank <waldi@debian.org> Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com> --HG-- rename : tools/xenstore/xs.h => tools/xenstore/xenstore.h rename : tools/xenstore/xs_lib.h => tools/xenstore/xenstore_lib.h
* tools: Use PTHREAD_CFLAGS, _LDFLAGS, _LIBSIan Jackson2012-04-111-2/+3
| | | | | | | | | | | Replace all literal occurrences of -lpthread and -pthread in Makefiles by references to PTHREAD_CFLAGS, PTHREAD_LDFLAGS and PTHREAD_LIBS. These are the new variables set by configure, and currently expand to -pthread on the compilation and link lines as is required. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
* xenpaging: add error code to indicate iommem passthroughOlaf Hering2012-03-301-1/+4
| | | | | | | | | | | | | | | Similar to the existing ENODEV and EXDEV error codes, add EMDEV to indicate that iommu passthrough is not compatible with paging. All error codes are just made-up return codes to give proper error messages in the pager. Also update the HAP related error message now that paging is enabled also on AMD hosts. Signed-off-by: Olaf Hering <olaf@aepfle.de> Acked-by: Ian Jackson <Ian.Jackson@citrix.com> Acked-by: Tim Deegan <tim@xen.org> Committed-by: Tim Deegan <tim@xen.org>
* Tools: After a helper maps a ring, yank it from the guest physmapTim Deegan2012-03-081-0/+5
| | | | | | | | | This limits the ability of the guest to play around with its own rings, and DoS itself. Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Tim Deegan <tim@xen.org>
* Use a reserved pfn in the guest address space to store mem event ringsTim Deegan2012-03-081-15/+37
| | | | | | | | | | | | | | | | | | This solves a long-standing issue in which the pages backing these rings were pages belonging to dom0 user-space processes. Thus, if the process would die unexpectedly, Xen would keep posting events to a page now belonging to some other process. We update all API-consumers in tree (xenpaging and xen-access). This is an API/ABI change, so please speak up if it breaks your accumptions. The patch touches tools, hypervisor x86/hvm bits, and hypervisor x86/mm bits. Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org> Acked-by: Tim Deegan <tim@xen.org> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Tim Deegan <tim@xen.org>
* Tools: Remove shared page from mem_event/access/paging interfacesTim Deegan2012-03-082-16/+3
| | | | | | | | | | | | | | | | | | | | | | Don't use the superfluous shared page, return the event channel directly as part of the domctl struct, instead. In-tree consumers (xenpaging, xen-access) updated. This is an ABI/API change, so please voice any concerns. Known pending issues: - pager could die and its ring page could be used by some other process, yet Xen retains the mapping to it. - use a saner interface for the paging_load buffer. This change also affects the x86/mm bits in the hypervisor that process the mem_event setup domctl. Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org> Acked-by: Tim Deegan <tim@xen.org> Acked-by: Olaf Hering <olaf@aepfle.de> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Tim Deegan <tim@xen.org>
* xenpaging: remove obsolete XENMEM_paging_op_resumeOlaf Hering2012-03-011-10/+1
| | | | | | | | | | | | | | | | | | | | With changeset 24364:0964341efd65 an event channel based notification of new responses in the ringbuffer is implemented. This makes the memevent interface obsolete. Currently a call to p2m_mem_paging_resume() is triggered twice by xenpaging, once per memevent and once per even channel. In practice this double call does not lead to issues because p2m_mem_paging_resume() processes only available events. xenpaging used the event channel notification since the beginning, but it was a no-op until changeset mentioned above. This change removes the unneeded XENMEM_paging_op_resume functionality. Pagers are notified via an event channel of new requests, and now they are required to notify the hypervisor about their responses also with an event channel. Signed-off-by: Olaf Hering <olaf@aepfle.de> Acked-by: Tim Deegan <tim@xen.org> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* xenpaging: implement stack of free slots in pagefileOlaf Hering2012-02-202-0/+25
| | | | | | | | | Scanning the slot_to_gfn[] array for a free slot is expensive because evict_pages() always needs to scan the whole array. Remember the last slots freed during page-in requests and reuse them in evict_pages(). Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: move page_buffer into struct xenpagingOlaf Hering2012-02-202-6/+11
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: move pagefile filedescriptor into struct xenpagingOlaf Hering2012-02-202-23/+20
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: unify error handlingOlaf Hering2012-02-201-63/+60
| | | | | | | | | | | | | Update functions to return -1 on error, 0 on success. Simplify init_page() and make sure errno is assigned. Adjust PERROR/ERROR usage, use PERROR early because it overwrites errno. Adjust xenpaging_populate_page() to handle gfn as unsigned long. Update xenpaging exit code handling. xenpaging_teardown cant possible fail. Adjust mainloop to indicate possible errors to final exit. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: improve performance in policy_choose_victimOlaf Hering2012-02-201-16/+41
| | | | | | | | | | | | | | policy_choose_victim() is one of the bottlenecks in xenpaging. It is called alot to find free bits in the fragmented bitmaps. Reduce turnaround time by skipping longs with all bits set. Adjust wrap detection in loop. v2: - fix copy&paste error, bitmap was tested twice Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: move nominate+evict into single functionOlaf Hering2012-02-201-7/+35
| | | | | | | | | Move all code to evict a single gfn into one function. This simplifies error handling in caller. The function returns -1 on fatal error, 0 on success and 1 if the gfn cant be paged. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: reduce number of qemu cache flushesOlaf Hering2012-02-201-12/+14
| | | | | | | | | | | | | | | | | Currently the command to flush the qemu cache is called alot if there are no more pages to evict. This causes churn in the logfiles, and qemu can not release more pages anyway since the last command. Fix this by remembering the current number of paged-out gfns, if this number did not change since the last flush command then sending another new flush command will not free any more gfns. Remove return code from xenpaging_mem_paging_flush_ioemu_cache() since errors do not matter, and will be handled elsewhere. Also failure to send the flush command is not fatal. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: no poll timeout while page-out is in progressOlaf Hering2012-02-203-1/+16
| | | | | | | | | | | | | | | | | | | The main loop calls xenpaging_wait_for_event_or_timeout() unconditionally before doing any work. This function calls poll() with a timeout of 100ms. As a result the page-out process is very slow due to the delay in poll(). Call poll() without timeout so that it returns immediately until the page-out is done. Page-out is done when either the policy finds no more pages to nominate or when the requested number of pages is reached. The condition is cleared when a watch event arrives, so that processing the new target is not delayed once again by poll(). v2: - no poll timeout also when large number of evicts is pending Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: use flat index for pagefile and page-in requestsOlaf Hering2012-02-204-63/+57
| | | | | | | | | | | | | | | | | | | | | | | This change is based on an idea by <hongkaixing@huawei.com> and <bicky.shi@huawei.com>. Scanning the victims[] array is time consuming with a large number of target pages. Replace the loop to find the slot in the pagefile which holds the requested gfn with an index. Remove the victims array and replace it with a flat array. This array holds the gfn for a given slot in the pagefile. Adjust all users of the victims array. Rename variable in main() from i to slot to clearify the meaning. Update xenpaging_evict_page() to pass a pointer to xen_pfn_t to xc_map_foreign_pages(). Update policy_choose_victim() to return either a gfn or INVALID_MFN. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: mmap guest pages read-onlyOlaf Hering2012-02-201-1/+1
| | | | | | | | | xenpaging does not write to the gfn, so map the gfn to page-out in read-only mode. Signed-off-by: Olaf Hering <olaf@aepfle.de> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* xenpaging: deal with MEM_EVENT_FLAG_EVICT_FAIL request in tools/xenpagingOlaf Hering2012-02-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | If a page is nominated but not evicted,then dom0 accesses the page,it will change the page's p2mt to be p2m_ram_paging_in,and the req.flags is MEM_EVENT_FLAG_EVICT_FAIL;so it will fail in p2m_mem_paging_evict() because of the p2mt;and paging->num_paged_out will not increase in this case;After the paging process is terminated, the p2mt p2m_ram_paging_in still remains in p2m table.Once domU accesses the nominated page,it will result in BSOD or vm'stuck. The patch adds the dealing of this request to resume the page before xenpaging is ended. [ This can happen if p2m_mem_paging_populate() was called by a foreign domain. In this case MEM_EVENT_FLAG_VCPU_PAUSED is not set and xenpaging will not sent a response. And in this case the ring is in an inconsistent state anyway, new requests cant be added, I think. - Olaf ] Signed-off-by: hongkaixing <hongkaixing@huawei.com> Signed-off-by: shizhen <bicky.shi@huawei.com> Acked-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* xenpaging: make file_op largefile awareOlaf Hering2012-01-271-3/+3
| | | | | | | | | lseek() takes an off_t, the used "int << shiftsize" does not automatically convert the int into a larger type. This leads to write errors with pagefiles larger than 2G. Fix this by shifting an off_t instead of an int. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* xenpaging: convert mem_event_t to struct mem_eventOlaf Hering2012-01-092-5/+5
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: convert xenpaging_t to struct xenpagingOlaf Hering2012-01-095-23/+23
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: convert xenpaging_victim_t to struct victimOlaf Hering2012-01-094-11/+9
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: remove _XOPEN_SOURCERoger Pau Monne2012-01-051-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | The _XOPEN_SOURCE define was breaking the compilation under NetBSD. I've removed it becasue it is not necessary. Error message: gcc -O1 -fno-omit-frame-pointer -m64 -g -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wno-unused-value -Wdeclaration-after-statement -D__XEN_TOOLS__ -MMD -MF .xenpaging.o.d -fno-optimize-sibling-calls -I/root/xen-04102011/tools/xenpaging/../../tools/libxc -I/root/xen-04102011/tools/xenpaging/../../tools/include -I/root/xen-04102011/tools/xenpaging/../../tools/xenstore -I/root/xen-04102011/tools/xenpaging/../../tools/include -Werror -Wno-unused -g -c -o xenpaging.o xenpaging.c -I/usr/xen42/include -I/usr/include cc1: warnings being treated as errors xenpaging.c: In function 'xenpaging_init': xenpaging.c:333: warning: implicit declaration of function 'asprintf' Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* Teach xenpaging to use the new and non-racy xc_mem_paging_load interfaceAndres Lagar-Cavilla2011-12-011-22/+21
| | | | | | Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org> Acked-by: Olaf Hering <olaf@aepfle.de> Committed-by: Tim Deegan <tim@xen.org>
* xenpaging: restrict pagefile permissionsOlaf Hering2011-11-201-1/+1
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: add debug to show received watch event.Olaf Hering2011-11-201-0/+1
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: improve policy mru list handlingOlaf Hering2011-11-203-5/+35
| | | | | | | | | | | | | | | | | | | Without this change it is not possible to page-out all guest pages, then trigger a page-in for all pages, and then page-out everything once again. All pages in the mru list can not be paged out because they remain active in the internal bitmap of paged pages. Use the mru list only if the number of paged-out pages is larger than the mru list. If the number is smaller, start to clear the mru list. In case the number of paged-out pages drops to zero the mru list and the internal bitmap will be empty as well. Also add a new interface for dropped pages. If a gfn was dropped there is no need to adjust the mru list because dropping a page is not usage of a page. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: add cmdline interface for pagerOlaf Hering2011-11-202-37/+103
| | | | | | | | | | | | | | | | | | | Introduce a cmdline handling for the pager. This simplifies libxl support, debug and mru_size are not passed via the environment anymore. The new interface looks like this: xenpaging [options] -f <pagefile> -d <domain_id> options: -d <domid> --domain=<domid> numerical domain_id of guest. This option is required. -f <file> --pagefile=<file> pagefile to use. This option is required. -m <max_memkb> --max_memkb=<max_memkb> maximum amount of memory to handle. -r <num> --mru_size=<num> number of paged-in pages to keep in memory. -d --debug enable debug output. -h --help this output. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: watch the guests memory/target-tot_pages xenstore valueOlaf Hering2011-11-201-1/+50
| | | | | | | | | Subsequent patches will use xenstored to store the numbers of pages xenpaging is suppose to page-out. Remove num_pages and use target_pages instead. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: use guests tot_pages as working targetOlaf Hering2011-11-203-20/+61
| | | | | | | | | This change reverses the task of xenpaging. Before this change a fixed number of pages was paged out. With this change the guest will not have access to more than the given number of pages at the same time. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: add XEN_PAGING_DIR / libxl_xenpaging_dir_path()Olaf Hering2011-11-201-1/+1
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: install into LIBEXEC dirOlaf Hering2011-11-201-2/+2
| | | | | | | | In preparation of upcoming libxl integration, move xenpaging binary from /usr/sbin/ to /usr/lib/xen/bin/ Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: retry unpageable gfnsOlaf Hering2011-11-201-0/+14
| | | | | | | | | | | Nomination of gfns can fail, but may succeed later. Thats the case for a guest that starts ballooned. v2: - print debug when clearing uncosumed happens Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: improve mainloop exit handlingOlaf Hering2011-11-201-7/+9
| | | | | | | | Remove the if/else logic to exit from the in case a signal arrives. Update comments. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: move page add/resume loops into its own function.Olaf Hering2011-11-201-33/+61
| | | | | | | | | | | | | | | | Move page resume loop into its own function. Move page eviction loop into its own function. Allocate all possible slots in a paging file to allow growing and shrinking of the number of paged-out pages. Adjust other places to iterate over all slots. This change is required by subsequent patches. v2: - check if victims allocation succeeded Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: track the number of paged-out pagesOlaf Hering2011-11-202-0/+9
| | | | | | | This change is required by subsequent changes. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: remove xc_dominfo_t from paging_tOlaf Hering2011-11-203-22/+17
| | | | | | | | Remove xc_dominfo_t from paging_t, record only max_pages. This value is used to setup internal data structures. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: update xenpaging_initOlaf Hering2011-11-201-11/+11
| | | | | | | | Move comment about xc_handle to the right place. Allocate paging early and use calloc. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: print gfn in failure caseOlaf Hering2011-11-201-9/+9
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: simplify file_opOlaf Hering2011-11-201-20/+9
| | | | | | | | | | | | Catch lseek() errors. Use -1 as return value and let caller read errno. Remove const casts from buffer pointers, the page is writeable. Use wrapper for write() which matches the read() prototype. Remove unused stdarg.h inclusion. Remove unused macro. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: use PERROR to print errnoOlaf Hering2011-11-201-29/+29
| | | | | | | | | | v3: - adjust arguments for xc_mem_paging_enable() failures v2: - move changes to file_op() to different patch Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: remove obsolete comment in resume pathOlaf Hering2011-11-201-1/+0
| | | | | | | | | Remove stale comment. If a page was populated several times the vcpu is paused and xenpaging has to unpause it again. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* xenpaging: remove filename from commentOlaf Hering2011-11-203-3/+0
| | | | | Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* tools/build: Introduce {PREPEND,APPEND}_{LIB,INCLUDES}Roger Pau Monne2011-11-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Create two new variables called APPEND_ and PREPEND_ to add compile flags at the beginning or at the end of the search path. Added a new semantic for user defined compile flags, here is the list of possible options: PREPEND_LIB: add libraries to the search path before xen (before xen installation folders). PREPEND_INCLUDES: add headers to the search path before xen (before xen installation folders). APPEND_LIB: add libraries to the search path at the end (after all xen installation folders have been added). APPEND_INCLUDES: add libraries to the search path at the end (after all xen installation folders have been added). EXTRA_INCLUDES and EXTRA_LIB can still be used, and they will have the same effect as PREPEND_INCLUDES and PREPEND_LIB. Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* xenpaging: munmap all pages after page-inOlaf Hering2011-11-141-1/+1
| | | | | | | | | | Do munmap() on all mapped pages, not just the first one. Without this change the gfns backing the remaining pages can not be paged out again because the page count does not go down to 1. This change was missing from changeset 23827:d1d6abc1db20. Signed-off-by: Olaf Hering <olaf@aepfle.de> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* xenpaging: disallow paging in a PoD guestOlaf Hering2011-10-201-0/+3
| | | | | | | | | Disallow xenpaging in a PoD guest until coexistance between the two features is properly implemented. Signed-off-by: Olaf Hering <olaf@aepfle.de> Acked-by: Tim Deegan <tim@xen.org> Committed-by: Tim Deegan <tim@xen.org>
* xenpaging: handle evict failuresOlaf Hering2011-10-131-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | Evict of a nominated gfn must fail if some other process mapped the page without checking the p2mt of that gfn first. Add a check to cancel eviction if the page usage count is not 1. Handle the possible eviction failure in the page-in paths. After nominate and before evict, something may check the p2mt and call populate. Handle this case and let the gfn enter the page-in path. The gfn may still be connected to a mfn, so there is no need to allocate a new page in prep. Adjust do_mmu_update to return -ENOENT only if the gfn has entered the page-in path and if it is not yet connected to a mfn. Otherwise linux_privcmd_map_foreign_bulk() may loop forever. Add MEM_EVENT_FLAG_EVICT_FAIL to inform pager that a page-in request for a possible not-evicted page was sent. xenpaging does currently not need that flag because failure to evict a gfn will be caught. Signed-off-by: Olaf Hering <olaf@aepfle.de> Acked-by: Tim Deegan <tim@xen.org> Committed-by: Tim Deegan <tim@xen.org>
* xenpaging: clear page content after evictOlaf Hering2011-10-111-3/+0
| | | | | | | | | | | | | | If the guest happens to read from the gfn while xenpaging is in the process of evicting the page, the guest may read zeros instead of actual data. Also if eviction fails the page content will be corrupted and xenpaging wont attempt to restore the page. Remove page scrubbing from pager and do it after successful eviction. Signed-off-by: Olaf Hering <olaf@aepfle.de> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Acked-by: Tim Deegan <tim@xen.org> Committed-by: Tim Deegan <tim@xen.org>
* mem_event: use different ringbuffers for share, paging and accessOlaf Hering2011-09-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | Up to now a single ring buffer was used for mem_share, xenpaging and xen-access. Each helper would have to cooperate and pull only its own requests from the ring. Unfortunately this was not implemented. And even if it was, it would make the whole concept fragile because a crash or early exit of one helper would stall the others. What happend up to now is that active xenpaging + memory_sharing would push memsharing requests in the buffer. xenpaging is not prepared for such requests. This patch creates an independet ring buffer for mem_share, xenpaging and xen-access and adds also new functions to enable xenpaging and xen-access. The xc_mem_event_enable/xc_mem_event_disable functions will be removed. The various XEN_DOMCTL_MEM_EVENT_* macros were cleaned up. Due to the removal the API changed, so the SONAME will be changed too. Signed-off-by: Olaf Hering <olaf@aepfle.de> Acked-by: Tim Deegan <tim@xen.org> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Tim Deegan <tim@xen.org>