[PATCH] [PATCH] VMX support for MMIO/PIO in VM8086 mode
Memory mapped and port I/O is currently broken under VMX when the
partition is running in VM8086 mode. The reason is that the instruction
decoding support uses 32-bit opcode/address decodes rather 16-bit
decodes. This patch fixes that. In addition, the patch adds support for
the "stos" instruction decoding because this is a frequently used way
to clear MMIO areas such as the screen.
As an aside, vmx_platform.c should really reuse x86_emulate.c as much
as possible.
Signed-off-by: Leendert van Doorn <leendert@watson.ibm.com>
===== tools/ioemu/iodev/cpu.cc 1.7 vs edited =====
[PATCH] [PATCH] tools/libxc/xc_vmx_build.c broken
xc_vmx_build pins the level 2 page table too early so that subsequent maps
(like those in zap_mmio_ranges) fail and consequently xc_vmx_build fails.
To solve this, this patch pins the l2pt at the end of the function when
all memory initializations are finalized.
Signed-off-by: Leendert van Doorn <leendert@watson.ibm.com>
Remove more bogus uses of bd_sem, and unnecessary blkif_check and
blkif_revalidate functions from Linux 2.6.
Signed-off-by: Keir Fraser <keir@xensource.com>
I/O rings may now be dynamically sized: instead of declaring size
at struct definition time, declare it in FRONT/BACK_RING_INIT().
Signed-off-by: Keir Fraser <keir@xensource.com>
Batch cr3 and ldt switches into a single mmuext_op hypercall. This will
also avoid one unnecessary TLB flush per context switch.
Signed-off-by: Keir Fraser <keir@xensource.com>
Fix multi-VCPU TLB shootdown interface -- specify pointer to VCPU
bitmap, so it is read at time of flush and not before (which might be
too early, before all updates are flushed, leading to races). Also
add selective multi-VCPU shootdown capability to update_va_mapping()
and use this to make ptep_set_access_flags() a single hypercall.
Signed-off-by: Keir Fraser <keir@xensource.com>
Batch p.t. pin requests during guest restore (after being suspended, or
after migration). Allow L1 tables to be pinned even after their va
backptr is fixed (no longer mutable).
Signed-off-by: Keir Fraser <keir@xensource.com>
sync_lazy_execstate functions are now all arch-specific. We may want
to finetune their behaviour later.
Signed-off-by: Keir Fraser <keir@xensource.com>
Improved lazy state switching -- flush the state switch through on the
first flush IPI received. This avoids needing to receive any further
ones at little cost (needed to flush TLB anyway). The main extra cost
will be that, when switching back to a guest, we won't save the
ctxt switch. But we may have saved an unbounded number of IPI flushes.
Signed-off-by: Keir Fraser <keir@xensource.com>
Clean up blkback data path -- each scatter-gather request maps to
a contiguous extent of a single disk (we no longer directly create
VBDs out of multiple physical extents but leave that kind of thing to
LVM). Also the 2.6 datapath creates the smallest number of bio's that
it can, to avoid unnecessary remerging in the lower block layers.
Signed-off-by: Keir Fraser <keir@xensource.com>
Merge freefall.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-2.0-testing.bk
into freefall.cl.cam.ac.uk:/auto/groups/xeno/users/iap10/xeno-clone/xen-2.0-testing.bk
Make default CPU placement of domains a bit smarter on systems with
hyperthreading: only dom0 gets to use hyperthreading by default, we
effectively ignore it on all other CPUs by allocating domains to
the same hyperthread. If you don't like this, use 'xm pincpu' to
change it. [note: we probably need to make pincpu more expressive,
providing a list of CPUs that the domain can be scheduled on.]
Signed-off-by: ian@xensource.com
Clean up ctrl msg handling in Linux. Remove VBD_GROW/SHRINK -- a VBD
now maps onto a single complete major/minor that is specified at
VBD_CREATE time. Also improve blkdev request_queue unplugging in the
2.6 backend driver to promote better batching.
Signed-off-by: Keir Fraser <keir@xensource.com>