Commit Graph
24113 Commits
Author SHA1 Message Date
Tim Deegan 3ceb653eb5 x86/mm: Declare an order-enforcing construct for external locks used in the mm layer
Declare an order-enforcing construct for a lock used in the mm layer
that is not of type mm_lock_t. This is useful whenever the mm layer
takes locks from other subsystems, or locks not implemented as
mm_lock_t.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
2011-11-10 11:12:35 +00:00
Tim Deegan 5865e0c533 x86/mm: Refactor mm-lock ordering constructs
The mm layer has a construct to enforce locks are taken in a pre-
defined order, and thus avert deadlock. Refactor pieces of this
code for later use, no functional changes.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
2011-11-10 11:12:35 +00:00
Ian Campbell 75fb78ef66 add a comment for hypercall_xlat_continuation
The interface of this function is really rather complex and having reverse
engineered it for the N'th time I think it is time to write things down.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
2011-11-10 10:24:19 +01:00
Jan Beulich ff51b780c3 VMX: extend last branch MSR info to cover newer CPU models #2
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: "Shan, Haitao" <haitao.shan@intel.com>
2011-11-09 10:37:45 +01:00
Jan Beulich e501d9f69b x86/MSI: fix dump_msi() after c/s 24068:6928172f7ded
The function must not blindly take the lock on IRQ descriptors.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
2011-11-09 10:36:20 +01:00
Jean Guyader 35a5ddf29a xsm: Add support for HVMOP_track_dirty_vram.
Xen try to inforce the xsm policy when a HVMOP_track_dirty_vram
is received (xen/arch/x86/hvm/hvm.c:3637). It was failing because
in flask_hvmcontext, xsm didn't have any case for this operation.

Signed-off-by: Jean Guyader <jean.guyader@eu.citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
2011-11-08 19:41:47 +00:00
Olaf Hering 2b7ee729c5 mem_event: check capabilities only once
It is not required to check the system capabilities during every domctl.
Rearrange the code to check them only once.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Committed-by: Keir Fraser <keir@xen.org>
2011-11-08 19:35:42 +00:00
Olaf Hering 80b73b501b xenpaging: compare domain pointer in p2m_mem_paging_populate
Compare just the domain pointer instead of the domain_id number.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Committed-by: Keir Fraser <keir@xen.org>
2011-11-08 19:35:01 +00:00
Keir Fraser 1186671a0e waitqueue: Double size of x86 shadow stack.
Signed-off-by: Keir Fraser <keir@xen.org>
2011-11-08 19:33:46 +00:00
Jan Beulich 666578d701 x86/cpuidle: clean up hw residencies reading code
Fold redundant code and eliminate pointless casts.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
2011-11-08 17:30:00 +01:00
Jan Beulich 4779dc810e bump sysctl interface version after c/s 23995:8943a9696358
That c/s made binary incompatible changes to struct pm_cx_stat.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
2011-11-08 17:29:31 +01:00
Jan Beulich 56a0652b05 x86/IRQ: create_irq() should call assign_irq_vector()
... rather than __assign_irq_vector(), to ensure desc->affinity gets
initialized properly.

This at once eliminates the need to forward-declare the latter function.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-08 17:28:31 +01:00
Jean Guyader a88942bf7e mm: Cleanup, use PAGE_ORDER_4K as page_order instead of "0".
Signed-off-by: Jean Guyader <jean.guyader@eu.citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
2011-11-08 13:01:41 +00:00
Wei Wang e38a069687 amd iommu: enable ats devices
Signed-off-by: Wei Wang <wei.wang2@amd.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
2011-11-08 11:26:53 +01:00
Wei Wang d1e271f59d amd iommu: add iotlb invalidation command
Signed-off-by: Wei Wang <wei.wang2@amd.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
2011-11-08 11:26:13 +01:00
Wei Wang 67dca204c4 ats: Add new ATS helper functions
Signed-off-by Wei Wang <wei.wang2@amd.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
2011-11-08 11:25:51 +01:00
Wei Wang 3a1ba3c2e7 amd iommu: Fix iommu page size encoding when page order > 0.
Fix io address in invalid all pages command.

Signed-off-by: Wei Wang <wei.wang2@amd.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
2011-11-08 11:25:19 +01:00
Wei Wang 83df02ecd3 ats: Move some ats functions to a new directory.
Remove VTD prefix from debug output.
passhrough/x86 holds vendor neutral codes for x86 architecture.

Signed-off-by: Wei Wang <wei.wang2@amd.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
2011-11-08 11:24:11 +01:00
Jan Beulich 4e84a8fad0 eliminate remaining uses of struct irq_cfg
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-08 10:37:08 +01:00
Jan Beulich 22bdce1c04 eliminate first_cpu() etc
This includes the conversion from for_each_cpu_mask() to for_each-cpu().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-08 10:36:10 +01:00
Jan Beulich fe9ff5a9d5 eliminate cpu_clear()
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-08 10:35:12 +01:00
Jan Beulich e82e07391c eliminate cpu_set()
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-08 10:34:33 +01:00
Jan Beulich d814eb0255 eliminate cpu_test_xyz()
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-08 10:33:02 +01:00
Jan Beulich 8996e45431 eliminate cpus_xyz()
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-08 10:31:47 +01:00
Jan Beulich 488355d213 IRQ: move a few more bits into common code
... as they're not really arch-specific.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
2011-11-07 16:28:26 +01:00
Juergen Gross c3ffb81943 avoid hypervisor panic when printing lock profiling information
When printing lock profiling information via keyhandler in the
hypervisor the system will panic. This patch corrects the problem.

Signed-off-by: Juergen Gross <juergen.gross@ts.fujitsu.com>
Committed-by: Keir Fraser <keir@xen.org>
2011-11-07 14:37:51 +00:00
Juergen Gross d98feda5c7 Make lock profiling usable again
Using lock profiling (option lock_profile in xen/Rules.mk) resulted in
build errors.
Changes:
- Include public/sysctl.h in spinlock.h when using lock profiling.
- Allocate profile data in an own structure to avoid struct domain
  becoming larger then one page

Signed-off-by: Juergen Gross <juergen.gross@ts.fujitsu.com>
Acked-by: Keir Fraser <keir@xen.org>
2011-11-07 14:36:44 +00:00
Jan Beulich 4e3d89fbfa cpufreq: allocate CPU masks dynamically
struct cpufreq_policy, including a cpumask_t member, gets copied in
cpufreq_limit_change(), cpufreq_add_cpu(), set_cpufreq_gov(), and
set_cpufreq_para(). Make the member a cpumask_var_t, thus reducing the
amount of data needing copying (particularly with large NR_CPUS).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
2011-11-07 10:29:14 +01:00
Jan Beulich 7b3b6e2648 powernow: don't read never initialized structure member
c/s 20361:51b031b0737e removed the writing of struct
processor_performance's shared_cpu_map member, but the powernow driver
still has code to read it (though presumably that code path can't be
taken on actual hardware supported by the powernow driver). Remove the
use of the field along with the field itself.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
2011-11-07 10:26:23 +01:00
Anthony PERARD 31b39b17c8 libxl: Remove a passthrough device through QMP.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
---
 tools/libxl/libxl_pci.c |   72 +++++++++++++++++++++++++++++++---------------
 1 files changed, 48 insertions(+), 24 deletions(-)
2011-11-04 15:34:50 +00:00
Anthony PERARD 2396de148a libxl: libxl_qmp: Introduce libxl__qmp_pci_del
To remove a pci passthough device from QEMU (upstream).

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
---
 tools/libxl/libxl_internal.h |    2 ++
 tools/libxl/libxl_qmp.c      |   35 +++++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 0 deletions(-)
2011-11-04 15:34:50 +00:00
Jan Beulich 8d1277c729 x86/IRQ: fix create_irq() after c/s 24068:6928172f7ded
init_one_irq_desc() must be called with interrupts enabled (as it may
call functions from the xmalloc() group). Rather than mis-using
vector_lock to also protect the finding of an unused IRQ, make this
lockless through using cmpxchg(), and obtain the lock only around the
actual assignment of the vector.

Also fold find_unassigned_irq() into its only caller.

It is, btw, questionable whether create_irq() calling
__assign_irq_vector() (rather than assign_irq_vector()) is actually
correct - desc->affinity appears to not get initialized properly in
this case.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
2011-11-04 15:55:50 +01:00
Anthony PERARD 66a1a9c38d libxl: Use QMP to insert a passthrough device when using upstream QEMU
Also move the xenstore specific code to a new function and add a
message if sscanf fails.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-11-04 14:24:07 +00:00
Anthony PERARD e8334a19d7 libxl: libxl_qmp: Introduce libxl__qmp_pci_add.
This function insert a PCI passthrough device in qemu.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-11-04 14:24:07 +00:00
Anthony PERARD e89264c3df libxl: libxl_json: Handle number above LONG_MAX.
The integers are now "long long" in the json_object.

If a number (decimal or integer) is too big (or too low), it is stored as it in
a string. So for that, we introduce a new type JSON_NUMBER.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-11-04 12:38:25 +00:00
Anthony PERARD ca8450a226 libxl: libxl_qmp: Introduce qmp_request_context.
This structure helps to track the return code of a callback. It's only used
between qmp_synchronous_send and qmp_send.

Now, qmp_synchronous_send will return the rc of the callback if there is no
error.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-11-04 12:38:25 +00:00
Anthony PERARD cec0a61c43 libxl: libxl_qmp: Always insert a command id in the callback_list.
Because the function qmp_synchronous_send rely on the presence of the id
in the callback_list.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2011-11-04 12:38:24 +00:00
Anthony PERARD 44fbf3fa3e libxl: libxl_qmp: Introduce list of arguments to qmp_send
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2011-11-04 12:38:24 +00:00
Anthony PERARD 1bc91b8ea7 libxl: libxl_qmp: Introduce an opaque argument to the callbacks.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2011-11-04 12:38:23 +00:00
Anthony PERARD 6291ab8bf8 libxl: libxl: Introduce dm-version xenstore key.
The all key is /libxl/$domid/dm-version.

The /libxl/$domid dir is created with the domain and should be only accessible
by the toolstack domain. The function libxl__xs_libxl_path() give this path.

This come with libxl__device_model_version_running() helper function.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-11-04 12:38:23 +00:00
Anthony PERARD 46e9ab5b1c libxl: libxl_qmp: Better error message after a parse error.
By setting the next string to parse after having printed any error messages.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-11-04 12:38:22 +00:00
Anthony PERARD a3671a3ba7 libxl: libxl_json: Check the parser status before to call parse_complete
Also, use goto to handle an error.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-11-04 12:38:22 +00:00
Anthony PERARD 4b9b9734be libxl: libxl_qmp: Fix return check of fcntl
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-11-04 12:38:22 +00:00
Jan Beulich 948d141b1a x86/IRQ: consolidate IRQ disabling when acquiring vector lock
__assign_irq_vector() doesn't need to disable interrupts (its callers
are required to when acquiring the lock), and set_desc_affinity() can
use the normal spin lock primitives.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-03 17:28:41 +01:00
Jan Beulich 792920245b IRQ: allocate CPU masks dynamically
This includes delaying the initialization of dynamically created IRQs
until their actual first use and some further elimination of uses of
struct irq_cfg.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
2011-11-03 17:27:38 +01:00
Tim Deegan bbff299b86 xen: provide pse36 cpuid bit
Provide pse36 cpuid bit if guest runs in 32bit PAE
or in long mode. Hyper-V refuses to start as
the "cpu does not provide required hw features"
if it does not find the pse36 cpuid bits.

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
2011-11-03 12:19:23 +00:00
Juergen Gross b07e31c4ab docs: Correct man page of xl regarding cpu-pools
Signed-off-by: juergen.gross@ts.fujitsu.com
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
2011-11-02 17:09:09 +00:00
Roger Pau Monne 331f2c59fd libxl: handle the return value of wait_for_dev_destroy select
Handle the return value of the select call inside wait_for_dev_destroy
properly, and return 0 if a device is removed, or ERROR_* if a timeout
or error happened. Use the return value of wait_for_dev_destroy inside
libxl__device_remove to properly return from that function.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
2011-11-02 17:06:04 +00:00
Philipp Hahn 93bf609a77 pygrub: Add HybridISO support for PyGrub2
grub-mkrescue internally uses xorriso, which generates a so-called
"Hybrid ISO": The ISO images also contains a DOS partition table,
which allows the identical ISO file to be stored on an USB stick for
booting from it. This breaks PyGrub, since it (wrongly) detects only
the DOS partition table and uses the first partition instead of the
complete ISO file.

Add a check to detect HybridISO files and use offset 0 in addition to
partition table parsing.

Signed-off-by: Philipp Hahn <hahn@univention.de>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
2011-11-02 16:28:57 +00:00
Ian Campbell 70e7871d0f libxl: libxl__device_pci_destroy_all should succeed if there is no PCI bus
Since 23915:4c4b72c94bac "" it is possible that no bus exists and this is not
an error. Removes the following spurious warning when destroying a PV domain
with no PCI devices:
    libxl: error: libxl.c:759:libxl_domain_destroy: pci shutdown failed
for domid 1005

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
2011-11-02 16:25:18 +00:00