This patch adds basic tracking of outstanding DMA requests on
grant table entries marked as PageForeign.
When a PageForeign struct page is about to be mapped for DMA,
we set its map count to 1 (or zero in actual value). This is
then checked for when we need to free a grant table entry early
to ensure that we don't free an entry that's currently used for
DMA.
So any entry that has been marked for DMA will not be freed early.
If the unmapping API had a struct page (which exists for the sg
case) then we could do this properly.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
The operation unmap_and_replace is an extension of unmap_grant_ref.
A new argument in the form of a virtual address (for PV) is given.
Instead of modifying the PTE for the mapped grant table entry to
null, we change it to the PTE for the new address. In turn we
point the new address to null.
As it stands grant table entries once mapped cannot be
remapped by the guest OS (it can however perform a new
mapping on the same entry but that is within our control).
Therefore it's safe to manipulate the mapped PTE entry to
redirect it to a normal page where we've copied the contents.
It's intended to be used as follows:
1) map_grant_ref to v1
2) ...
3) alloc page at v2
4) copy the page at v1 to v2
5) unmap_and_replace v1 with v2
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Added compat integration (PAE-on-64).
Signed-off-by: Keir Fraser <keir@xensource.com>
abusing mk_kernel_pgd.
Also set the user bit on the vsyscall entry in the user pgd.
Both changes suggested by Jan Beulich.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
- replace incomplete pXX_val_ma() set with complete __pXX_val() set
- use __pXX_val() instead of pXX_val() when only flags are accessed or
the frame number is only compared against zero
Signed-off-by: Jan Beulich <jbeulich@novell.com>
This enables the switch to the generic flavor ia64 kernel for the -xen
and -xen0 kernels. -xenU is changed to a CONFIG_IA64_XEN build.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
This allows us to easily switch between hardware or software iommu and
simple remapping. The Xen machine vector is only intended for domU
guests at this point.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
We get a bad pointer dereference if we don't fill something in
here. -1 will give us a global allocation, which is good enough
until we have better NUMA support.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
With this patch we can remove linux-2.6-xen-sparse/arch/ia64/dig/setup.c,
linux-2.6-xen-sparse/include/asm-ia64/machvec.h.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
xen-platform-pci fails to load w/ undefined symbols for some of the
sched_op hypercalls in machine_reboot.c. This adds them to xencomm
mini to allow them to be called from modules.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
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>