Where possible,
- use hypercalls instead of writing to read-only pages
- fold TLB flushes into page table update hypercalls
- on PAE, use single-access updates instead of two-access ones
The single change to PAE pte_clear() yields a 25-30% boost for kernel
builds on a 4x2x2 CPUs, 8Gb box; the other changes together yield
improvements of 2-5%.
Also, adjust backward compatibility handling in a few more places.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
A character device for accessing (in user-space) pages that have been
granted by other domains.
Signed-off-by: Derek Murray <Derek.Murray@cl.cam.ac.uk>
Fix ioctl interface to be 32/64-bit invariant. Move xen_class
mechanism to common util.c.
Signed-off-by: Keir Fraser <keir@xensource.com>
For support of steal time accounting, only supports
VCPUOP_register_runstate_memory_area right now.
Signed-off-by: Atsushi SAKAI <sakaia@jp.fujitsu.com>
While shuffling quite a few things around, this gets us closer to
native, which clearly had a reason to do the DMI scan early.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
This changes netback to use struct page's mapping field instead of the
index one, and the PageForeign logic the other way around. That way,
CONFIG_SPLIT_PTLOCK_CPUS doesn't have to be suppressed anymore for x86.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
workqueue_mutex. This is a new deadlock since the workqueue_mutex is
acquired in the workqueue_cpu_calbback() function across
CPU_UP_PREPARE->CPU_ONLINE.
The fix is for us not to rudely grab the cpu_hotplug_lock() during
save/restore -- it's really not necessary.
This patch is applicable to any of our 2.6 kernels, but is absolutely
required from 2.6.18 onwards.
Signed-off-by: Keir Fraser <keir@xensource.com>
A 3.0.2 compatibility requirement slipped my attention before
submitting the original page table handling changes.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Ensure that all and only those page table entries that have their
present bit set undergo p2m/m2p translation in all relevant places.
This should fix migration issues with _PAGE_PROTNONE pages which
previously could retain MFNs in PTEs while having the present bit
clear (and thus were not getting (un)canonicalized during save/
restore).
Many thanks to Keir Fraser for his analysis, suggestions, and
corrections.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Also consolidate time-xen.c in giving get_time_values_from_xen() a
'cpu' parameter to match other functions (this consolidation could of
course also be done the other way around, but I think this way the
resulting code can be more efficient).
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Also vmalloc_sync_all() is only defined for x86 architectures so make
use of it in driver code conditional on CONFIG_X86.
Signed-off-by: Keir Fraser <keir@xensource.com>
This is needed for 32-on-64 support. Right now there are three
protocols: native, x86_32 and x86_64. If needed it can be extended.
Interface changes (io/blkif.h)
* Define the x86_32 and x86_64 structs additionally to the native
version.
* Add helper functions to convert them requests to native.
Backend changes:
* Look at the "protocol" name of the frontend and switch ring
handling accordingly. If the protocol node isn't present it
assumes native protocol.
* As the request struct is copied anyway before being processed (for
security reasons) it is converted to native at that point so most
backend code doesn't need to know what the frontend speaks.
* In case of blktap this is completely transparent to userspace, the
kernel/userspace ring is always native no matter what the frontend
speaks.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
32on64 supports 168Gb for 32-bit guests, hence at least 38 bits must
be specified here. The foreign frame bit is MFN bit 31, so the maximum
valid value here would be 43.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Don't destroy xenstore watches on suspend, and only recreate them when
resuming in a new domain. Likewise, only invoke frontend device resume
code when in a new domain (the resume functions all tear down the
existing function and wait for the backend to negotiate a new one,
which does not happen in the source domain).
Signed-off-by: Brendan Cully <brendan@cs.ubc.ca>
Signed-off-by: Keir Fraser <keir@xensource.com>