Commit Graph
32173 Commits
Author SHA1 Message Date
Ian Jackson dcdb658877 libxl: Fix doc comment ref to DOMAIN_DEATH
The doc comment for libxl_evdisable_domain_death mistakenly referred
to DOMAIN_DESTROY but the event type name is actually DOMAIN_DEATH.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2016-01-04 17:41:35 +00:00
Ian Jackson 3110c30a1b QEMU_TAG update 2016-01-04 15:35:25 +00:00
Jan Beulich 8e4d18e113 IOMMU: unhide messages useful for diagnostics
Undue use of dprintk() lead to many messages useful in diagnosing
issues in the field now being hidden in non-debug (i.e. production)
builds. Re-surface them.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
2015-12-22 10:12:14 +01:00
Jan Beulich 009298d7ba VT-d: unhide messages needed for diagnosing firmware issues
Undue use of dprintk() lead to many messages useful in diagnosing
issues in the field now being hidden in non-debug (i.e. production)
builds. Re-surface them, namely when init-time only and/or already
guarded by iommu_{verbose,debug} conditionals. Switch from using
iommu_verbose to iommu_debug in a couple of runtime cases.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Feng Wu <feng.wu@intel.com>
2015-12-22 10:11:44 +01:00
Andrew Cooper 0d82868e1f x86/mmuext: unify okay/rc error handling in do_mmuext_op()
c/s 506db90 "x86/HVM: merge HVM and PVH hypercall tables" introduced a path
whereby 'okay' was used uninitialised, with broke compilation on CentOS 7.

Splitting the error handling like this is fragile and unnecessary.  Drop the
okay variable entirely and just use rc directly, substituting rc = -EINVAL/0
for okay = 0/1.

In addition, two error messages are updated to print rc, and some stray
whitespace is dropped.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>

Make setting of rc happen consistently after MEM_LOG(), if that is being
used.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
2015-12-22 10:10:44 +01:00
Alex Xu bf925a9f12 get-fields.sh: use printf for POSIX compat
xen/tools/get-fields.sh used echo -n which is not POSIX compatible and
breaks building with dash (shell). Change it to use printf %s which is
usable everywhere.

Signed-off-by: Alex Xu <alex_y_xu@yahoo.ca>
2015-12-21 17:11:17 +01:00
Jan Beulich 68136245ec arm: add missing newlines to printk()s
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2015-12-21 17:10:09 +01:00
Huaitong Han 673807ab5c x86/hvm: add pkeys support when setting CR4
Signed-off-by: Huaitong Han <huaitong.han@intel.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
2015-12-21 17:09:36 +01:00
Huaitong Han 28cf749348 x86/hvm: a flag to enable Memory Protection Keys
Signed-off-by: Huaitong Han <huaitong.han@intel.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
2015-12-21 17:09:09 +01:00
Yu Zhang e2b84f09ec x86/HVM: remove identical relationship between ioreq type and rangeset type
This patch uses HVMOP_IO_RANGE_XXX values rather than the raw ioreq
type to select the ioreq server, therefore the identical relationship
between ioreq type and rangeset type is no longer necessary.

Signed-off-by: Yu Zhang <yu.c.zhang@linux.intel.com>
Signed-off-by: Shuai Ruan <shuai.ruan@linux.intel.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
2015-12-21 17:07:55 +01:00
Boris Ostrovsky 33c19df9a5 x86/PCI: intercept accesses to RO MMIO from dom0s in HVM containers
Commit 9256f66c16 ("x86/PCI: intercept all PV Dom0 MMCFG writes")
added intercepts for writes to RO MMCFG space from PV dom0.

Similar functionality, including access to RO non-MMCFG addresses, is
needed by dom0s in HVM containers (such as PVH and, in the future,
HVMlite).

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
2015-12-21 14:05:02 +01:00
Malcolm Crossley 5c1048565b x86: make debug output consistent in hvm_set_callback_via
The unconditional printks in the switch statement of the
hvm_set_callback_via function results in Xen log spam in non debug
versions of Xen. The printks are for debug output only so conditionally
compile the entire switch statement on debug versions of Xen only.

This is XSA-169.

Signed-off-by: Malcolm Crossley <malcolm.crossley@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-21 13:40:48 +01:00
Boris Ostrovsky 506db9078c x86/HVM: merge HVM and PVH hypercall tables
The tables are almost identical and therefore there is little reason to
keep both sets.

PVH needs 3 extra hypercalls:
* mmuext_op. MMUEXT_PIN_L<x>_TABLE are required by control domain (dom0)
  when building guests. We add MMUEXT_UNPIN_TABLE for completeness.
* platform_op. These are only available to privileged domains. We will
  (eventually) have privileged HVMlite guests and therefore shouldn't
  limit this to PVH only.
* xenpmu_op. any guest with !has_vlapic() (i.e. PV, PVH and HVMlite)
  should be able to use it.

Note that until recently PVH guests used mmuext_op's MMUEXT_INVLPG_MULTI and
MMUEXT_TLB_FLUSH_MULTI commands but it has been determined that using the
former was incorrect and using the latter is correct for now but is not
guaranteed to work in the future.

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
2015-12-21 13:40:13 +01:00
Doug Goldstein df9f556700 build: convert CONFIG_COMPAT to Kconfig
Use the Kconfig generated CONFIG_COMPAT defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
2015-12-21 13:39:27 +01:00
Boris Ostrovsky 1a966b46a0 x86/mm: add information about faulted page's presence to npfec structure
This is provided explicitly in SVM and implicitly in VMX (when neither of
the three EPT_EFFECTIVE_* bits is set).

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
2015-12-21 13:38:53 +01:00
Jan Beulich 5d0683a4f5 x86/vPMU: constrain MSR_IA32_DS_AREA loads
For one, loading the MSR with a possibly non-canonical address was
possible since the verification is conditional, while the MSR load
wasn't. And then for PV guests we need to further limit the range of
valid addresses to exclude the hypervisor range.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
2015-12-21 13:38:22 +01:00
Huaitong Han 2a4b84706e x86/xsaves: get_xsave_addr, check xsave header and support uncompressed format
The check needs to be against the xsave header in the area, rather than Xen's
maximum xfeature_mask. A guest might easily have a smaller xcr0 than the
maximum Xen is willing to allow, causing the pointer below to be bogus.

The get_xsave_addr() is modified to support uncompressed xstate areas.

Signed-off-by: Huaitong Han <huaitong.han@intel.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
2015-12-21 13:37:17 +01:00
David Vrabel 8eb2235599 x86/ept: invalidate guest physical mappings on VMENTER
If a guest allocates a page and the tlbflush_timestamp on the page
indicates that a TLB flush of the previous owner is required, only the
linear and combined mappings are invalidated.  The guest-physical
mappings are not invalidated.

This is currently safe because the EPT code ensures that the
guest-physical and combined mappings are invalidated /before/ the page
is freed.  However, this prevents us from deferring the EPT invalidate
until after the page is freed (e.g., to defer the invalidate until the
p2m locks are released).

The TLB flush that may be done after allocating page already causes
the original guest to VMEXIT, thus on VMENTER we can do an INVEPT if
one is pending.

This means __ept_sync_domain() need not do anything and the thus the
on_selected_cpu() call does not need to wait for as long.

ept_sync_domain() now marks all PCPUs as needing to be invalidated,
including PCPUs that the domain has not run on.  We still only IPI
those PCPUs that are active so this does not result in any more INVEPT
calls.

We do not attempt to track when PCPUs may have cached translations
because the only safe way to clear this per-CPU state is if
immediately after an invalidate the PCPU is not active (i.e., the PCPU
is not in d->domain_dirty_cpumask).  Since we only invalidate on
VMENTER or by IPIing active PCPUs this can never happen.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Reviewed-by: George Dunlap <george.dunlap@citrix.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
2015-12-21 13:36:41 +01:00
Konrad Rzeszutek Wilk 8916fcf457 x86/domain: compile with lock_profile=y enabled
Our 'struct domain' has when lock profiling is enabled is bigger than
one page.

We can't use vmap nor vzalloc as both of those stash the
physical address in struct page which makes the assumptions
in 'arch_init_memory' trip over ASSERTs.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
2015-12-21 13:35:55 +01:00
Jan Beulich a2b4b8c204 VMX: allocate APIC access page from domain heap
... since we don't need its virtual address anywhere (it's a
placeholder page only after all). For this to work (and possibly be
done elsewhere too) share_xen_page_with_guest() needs to mark pages
handed to it as Xen heap ones.

To be on the safe side, also explicitly clear the page (not having done
so was okay due to the XSA-100 fix, but is still a latent bug since we
don't formally guarantee allocations to come out zeroed, and in fact
this property may disappear again as soon as the asynchronous runtime
scrubbing patches arrive).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
2015-12-21 13:35:13 +01:00
Doug Goldstein 4996f8b1f5 build: add support configuring for x86_32
This will allow OSSTest to run `make dist` for XEN_TARGET_ARCH=x86_32
but will still not build the hypervisor for x86_32.

Fixes: http://logs.test-lab.xenproject.org/osstest/logs/66454/
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2015-12-21 13:33:11 +01:00
Ian Jackson 8e8b0d2181 QEMU_TAG update 2015-12-18 14:55:57 +00:00
Konrad Rzeszutek Wilk 7d66a4ba69 libvchan: Read prod/cons only once.
We must ensure that the prod/cons are only read once and that
the compiler won't try to optimize the reads. That is split
the read of these in multiple instructions influencing later
branch code. As such insert barriers when fetching the cons
and prod index.

This is part of XSA155.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2015-12-18 09:50:02 -05:00
Konrad Rzeszutek Wilk 19f6c522a6 blktap2: Use RING_COPY_REQUEST
Instead of RING_GET_REQUEST. Using a local copy of the
ring (and also with proper memory barriers) will mean
we can do not have to worry about the compiler optimizing
the code and doing a double-fetch in the shared memory space.

This is part of XSA155.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2015-12-18 09:49:43 -05:00
David Vrabel 3f20b8def0 xen: Add RING_COPY_REQUEST()
Using RING_GET_REQUEST() on a shared ring is easy to use incorrectly
(i.e., by not considering that the other end may alter the data in the
shared ring while it is being inspected).  Safe usage of a request
generally requires taking a local copy.

Provide a RING_COPY_REQUEST() macro to use instead of
RING_GET_REQUEST() and an open-coded memcpy().  This takes care of
ensuring that the copy is done correctly regardless of any possible
compiler optimizations.

Use a volatile source to prevent the compiler from reordering or
omitting the copy.

This is part of XSA155.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2015-12-18 09:49:07 -05:00
Jan Beulich b452430a4c x86/HVM: avoid reading ioreq state more than once
Otherwise, especially when the compiler chooses to translate the
switch() to a jump table, unpredictable behavior (and in the jump table
case arbitrary code execution) can result.

This is XSA-166.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-17 14:22:46 +01:00
Jan Beulich 81818b3f27 x86: don't leak ST(n)/XMMn values to domains first using them
FNINIT doesn't alter these registers, and hence using it is
insufficient to initialize a guest's initial state.

This is CVE-2015-8555 / XSA-165.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
2015-12-17 14:22:13 +01:00
Doug Goldstein 7458d58535 build: convert HAS_GICV3 use to Kconfig
Use the Kconfig generated CONFIG_HAS_GICV3 defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:55:21 +01:00
Doug Goldstein 384cc72afc build: convert HAS_MEM_SHARING use to Kconfig
Use the Kconfig generated CONFIG_HAS_MEM_SHARING defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Razvan Cojocaru <rcojocaru@bitdefender.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
2015-12-16 17:54:55 +01:00
Doug Goldstein c248338b7a build: convert HAS_MEM_PAGING use to Kconfig
Use the Kconfig generated CONFIG_HAS_MEM_PAGING defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Razvan Cojocaru <rcojocaru@bitdefender.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:54:31 +01:00
Doug Goldstein ab26ab3084 build: convert HAS_MEM_ACCESS use to Kconfig
Use the Kconfig generated CONFIG_HAS_MEM_ACCESS defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Razvan Cojocaru <rcojocaru@bitdefender.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:53:49 +01:00
Doug Goldstein 1e02021d84 build: convert HAS_EHCI use to Kconfig
Use the Kconfig generated CONFIG_HAS_EHCI defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
2015-12-16 17:53:15 +01:00
Doug Goldstein ef6409ae1b build: convert HAS_SCIF use to Kconfig
Use the Kconfig generated CONFIG_HAS_SCIF defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:52:54 +01:00
Doug Goldstein ee6b91d12e build: convert HAS_OMAP use to Kconfig
Use the Kconfig generated CONFIG_HAS_OMAP defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:52:33 +01:00
Doug Goldstein 60e9b9670e build: convert HAS_EXYNOS4210 use to Kconfig
Use the Kconfig generated CONFIG_HAS_EXYNOS4210 defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:52:12 +01:00
Doug Goldstein 162df803d6 build: convert HAS_PL011 use to Kconfig
Use the Kconfig generated CONFIG_HAS_PL011 defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:51:48 +01:00
Doug Goldstein d21e3663af build: convert HAS_CADENCE_UART use to Kconfig
Use the Kconfig generated CONFIG_HAS_CADENCE_UART defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:51:27 +01:00
Doug Goldstein 6eb48cbfdf build: convert HAS_ARM_HDLCD use to Kconfig
Use the Kconfig generated CONFIG_HAS_ARM_HDLCD defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:50:44 +01:00
Doug Goldstein 684b413064 build: convert HAS_KEXEC / KEXEC use to Kconfig
Use the Kconfig generated CONFIG_HAS_KEXEC defines in the build system
and replace kexec :=y in Rules.mk with a kconfig option called
CONFIG_KEXEC. Purposefully did not merge the two variables together in
this patch to keep this as mechanical as possible.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
2015-12-16 17:49:40 +01:00
Doug Goldstein 04075af137 build: convert HAS_PDX use to Kconfig
Use the Kconfig generated CONFIG_HAS_PDX defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:49:16 +01:00
Doug Goldstein 9ad19015ce build: convert HAS_GDBSX use to Kconfig
Use the Kconfig generated CONFIG_HAS_GDBSX defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
2015-12-16 17:48:51 +01:00
Doug Goldstein 994ce40a91 build: convert HAS_CPUFREQ use to Kconfig
Use the Kconfig generated CONFIG_HAS_CPUFREQ defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
2015-12-16 17:48:14 +01:00
Doug Goldstein 56f7d5db12 build: convert HAS_VGA use to Kconfig
Use the Kconfig generated CONFIG_HAS_VGA defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
2015-12-16 17:47:48 +01:00
Doug Goldstein 415a5b9588 build: convert HAS_VIDEO use to Kconfig
Use the Kconfig generated CONFIG_HAS_VIDEO defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:46:55 +01:00
Doug Goldstein 933daac823 build: convert HAS_ACPI use to Kconfig
Use the Kconfig generated CONFIG_HAS_ACPI defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
2015-12-16 17:46:15 +01:00
Doug Goldstein 642efcc683 build: convert HAS_IOPORTS use to Kconfig
Use the Kconfig generated CONFIG_HAS_IOPORTS defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
2015-12-16 17:45:45 +01:00
Doug Goldstein f02ad35724 build: convert HAS_NS16550 use to Kconfig
Use the Kconfig generated CONFIG_HAS_NS16550 defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:45:07 +01:00
Doug Goldstein 1809d50035 build: convert HAS_PCI use to Kconfig
Use the Kconfig generated CONFIG_HAS_PCI defines in the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
2015-12-16 17:44:22 +01:00
Doug Goldstein e7bb2a30a3 build: convert HAS_DEVICE_TREE use to Kconfig
Use the Kconfig generated CONFIG_HAS_DEVICE_TREE defines in the code
base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:43:24 +01:00
Doug Goldstein e0d44c1f94 build: convert HAS_PASSTHROUGH use to Kconfig
Use the Kconfig generated HAS_PASSTHROUGH defines for the code base.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-12-16 17:42:03 +01:00