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 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>
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>
Use non-trivial dma_{un,}map_page only when CONFIG_HIGHMEM, allowing
to not compile swiotlb_{un,}map_page in that case, which in neither
case need exporting.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Use address width needed by device rather than dma_bits in
dma_alloc_coherent().
Probe supported address width in swiotlb initialization.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
While, as discussed, the performance impact of this option is
certainly higher than on native Linux, the option should not be
entirely disallowed if people want to sacrifice performance for less
lowmem pressure.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
The recent change to use a default DMA bit width of 30 bits (required
by chips like the b44) only converted the streaming DMA primitives.
The coherent mappings are still hard-coded to 31 bits. This means
that b44 still doesn't work under Xen.
This patch makes the io_tlb_dma_bits variable global and uses it for
coherent memory mappings.
Thanks to Calvin Webster for providing a machine with a b44 and 2G
of memory I've been able to verify that this finally makes the b44
work under Xen.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Rename 'io_tlb_dma_bits' to the more correct 'dma_bits'. This also
affects the name of the boot parameter, which is now 'dma_bits='.
Signed-off-by: Keir Fraser <keir@xensource.com>
This patch contains the x86_32 implementation of Kexec / Kdump for Xen.
Signed-Off-By: Magnus Damm <magnus@valinux.co.jp>
Signed-Off-By: Simon Horman <horms@verge.net.au>
1. Balloon driver does not need to set M2P entry.
This is done by the populate_physmap hypercall.
2. Xen now translates foreign mappings from GMFN->MFN.
Tools are simplified because of this.
Signed-off-by: Keir Fraser <keir@xensource.com>
The original /dev/mem (linux/drivers/char/mem.c) is aware of IA64
specific issues. On the other hand paravirtualized /dev/mem
(linux-2.6-xen-sparse/drivers/xen/char/mem.c) is simplifed not to be
aware of IA64. This patch makes it IA64-aware to use X on domain0/IA64.
With this patch and ia64-specific patches, X server can boot on domain0/IA64.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
- compilation fix when CONFIG_OPROFILE=m with minor clean up
- don't export xenoprof_is_primary.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Introduce a new elfnote that specifies the lower boundary the kernel
wants to tolerate for the hypervisor hole.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
As currently physical mapping only reaches the initial reservation,
we're unable to balloon up to more than mem (even when maxmem > mem)
in any situation.
Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>
include/asm-{i386,x86_64}/mach-xen/asm/fixmap.h was needlessly
including include/xen/gnttab.h. Removing this made necessary explicit
inclusion of that header in tpm_xen.c, the build of which should not
have succeeded on non-x86 architectures before.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Probably still not catching all possible cases, but using static
(where not already the case) makes the code size smaller, and using __initdata
has the usual advantages.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
support PV-on-HVM drivers for older kernel releases.
The compatability code is included in the xen-platform-pci module
since this module underpins all the others.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
Signed-off-by: K. Y. Srinivasan <ksrinivasan@novell.com>
Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>