summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Pau Monne <roger.pau@citrix.com>2018-01-11 11:41:20 +0000
committerRoger Pau Monne <roger.pau@citrix.com>2018-01-12 15:47:32 +0000
commitb5be9c817d04b006886a0d7b87eacf7bd78f504d (patch)
treee09d5b909b47044f2ccbfe0a1a4e35887f6d40bf
parent9d60bc96bef01444e30a9653ebf06b24c5bc8be5 (diff)
downloadxen-b5be9c817d04b006886a0d7b87eacf7bd78f504d.tar.gz
xen/pvshim: use default position for the m2p mappings
When running a 32bit kernel as Dom0 on a 64bit hypervisor the hypervisor will try to shrink the hypervisor hole to the minimum needed, and thus requires the Dom0 to use XENMEM_machphys_mapping in order to fetch the position of the start of the hypervisor virtual mappings. Disable this feature when running as a PV shim, since some DomU kernels don't implemented XENMEM_machphys_mapping and break if the m2p doesn't begin at the default address. NB: support for the XENMEM_machphys_mapping was added in Linux by commit 7e7750. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Acked-by: Jan Beulich <jbeulich@suse.com>
-rw-r--r--xen/arch/x86/pv/dom0_build.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 72752b8656..ebcb47bf26 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -398,7 +398,8 @@ int __init dom0_construct_pv(struct domain *d,
if ( parms.pae == XEN_PAE_EXTCR3 )
set_bit(VMASST_TYPE_pae_extended_cr3, &d->vm_assist);
- if ( (parms.virt_hv_start_low != UNSET_ADDR) && elf_32bit(&elf) )
+ if ( !pv_shim && (parms.virt_hv_start_low != UNSET_ADDR) &&
+ elf_32bit(&elf) )
{
unsigned long mask = (1UL << L2_PAGETABLE_SHIFT) - 1;
value = (parms.virt_hv_start_low + mask) & ~mask;