Hi all, this patch series backports few fixes from QEMU to qemu-xen 4.3. The second patch avoid calling main_loop_wait with nonblocking set to 1, so that the select timeout is always as high as possible on Xen. The third patch fixes this PCI passthrough bug: http://marc.info/?l=xen-devel&m=136242365010750 Stefano Stabellini (3): xen: simplify xen_enabled main_loop: do not set nonblocking if xen_enabled() xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional) hw/pc.h | 3 +++ hw/pc_piix.c | 6 +++--- hw/xen.h | 4 ---- vl.c | 2 +- xen-all.c | 12 ++++++------ 5 files changed, 13 insertions(+), 14 deletions(-) Cheers, Stefano
Stefano Stabellini
2013-Jun-05 12:07 UTC
[BACKPORT qemu-xen 1/3] xen: simplify xen_enabled
No need for preprocessor conditionals in xen_enabled: xen_allowed is always defined. upstream-commit-id: 49fa9881b2358e390e9e9466ddde74e995927efa Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- hw/xen.h | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-) diff --git a/hw/xen.h b/hw/xen.h index e3cca7f..dd46db9 100644 --- a/hw/xen.h +++ b/hw/xen.h @@ -25,11 +25,7 @@ extern int xen_allowed; static inline int xen_enabled(void) { -#if defined(CONFIG_XEN_BACKEND) && !defined(CONFIG_NO_XEN) return xen_allowed; -#else - return 0; -#endif } int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num); -- 1.7.2.5
Stefano Stabellini
2013-Jun-05 12:07 UTC
[BACKPORT qemu-xen 2/3] main_loop: do not set nonblocking if xen_enabled()
upstream-commit-id: a7d4207d378069a5bb3175a131e8fdedd39ef97d Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- vl.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/vl.c b/vl.c index a3ab384..5314f55 100644 --- a/vl.c +++ b/vl.c @@ -1763,7 +1763,7 @@ static void main_loop(void) int64_t ti; #endif do { - nonblocking = !kvm_enabled() && last_io > 0; + nonblocking = !kvm_enabled() && !xen_enabled() && last_io > 0; #ifdef CONFIG_PROFILER ti = profile_getclock(); #endif -- 1.7.2.5
Stefano Stabellini
2013-Jun-05 12:07 UTC
[BACKPORT qemu-xen 3/3] xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional)
We are currently setting the PCI hole to start at HVM_BELOW_4G_RAM_END, that is 0xf0000000. Start the PCI hole at 0xe0000000 instead, that is the same value used by pc_init1 and qemu-xen-traditional. upstream-commit-id: 9f24a8030a70ea4954b5b8c48f606012f086f65f Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- hw/pc.h | 3 +++ hw/pc_piix.c | 6 +++--- xen-all.c | 12 ++++++------ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/hw/pc.h b/hw/pc.h index 2237e86..30856a2 100644 --- a/hw/pc.h +++ b/hw/pc.h @@ -78,6 +78,9 @@ extern int fd_bootchk; void pc_register_ferr_irq(qemu_irq irq); void pc_acpi_smi_interrupt(void *opaque, int irq, int level); +#define QEMU_BELOW_4G_RAM_END 0xe0000000 +#define QEMU_BELOW_4G_MMIO_LENGTH ((1ULL << 32) - QEMU_BELOW_4G_RAM_END) + void pc_cpus_init(const char *cpu_model); void *pc_memory_init(MemoryRegion *system_memory, const char *kernel_filename, diff --git a/hw/pc_piix.c b/hw/pc_piix.c index aa3e7f4..711a22d 100644 --- a/hw/pc_piix.c +++ b/hw/pc_piix.c @@ -92,9 +92,9 @@ static void pc_init1(MemoryRegion *system_memory, kvmclock_create(); } - if (ram_size >= 0xe0000000 ) { - above_4g_mem_size = ram_size - 0xe0000000; - below_4g_mem_size = 0xe0000000; + if (ram_size >= QEMU_BELOW_4G_RAM_END ) { + above_4g_mem_size = ram_size - QEMU_BELOW_4G_RAM_END; + below_4g_mem_size = QEMU_BELOW_4G_RAM_END; } else { above_4g_mem_size = 0; below_4g_mem_size = ram_size; diff --git a/xen-all.c b/xen-all.c index daf43b9..d5a2edc 100644 --- a/xen-all.c +++ b/xen-all.c @@ -160,18 +160,18 @@ static void xen_ram_init(ram_addr_t ram_size) ram_addr_t block_len; block_len = ram_size; - if (ram_size >= HVM_BELOW_4G_RAM_END) { + if (ram_size >= QEMU_BELOW_4G_RAM_END) { /* Xen does not allocate the memory continuously, and keep a hole at - * HVM_BELOW_4G_MMIO_START of HVM_BELOW_4G_MMIO_LENGTH + * QEMU_BELOW_4G_RAM_END of QEMU_BELOW_4G_MMIO_LENGTH */ - block_len += HVM_BELOW_4G_MMIO_LENGTH; + block_len += QEMU_BELOW_4G_MMIO_LENGTH; } memory_region_init_ram(&ram_memory, "xen.ram", block_len); vmstate_register_ram_global(&ram_memory); - if (ram_size >= HVM_BELOW_4G_RAM_END) { - above_4g_mem_size = ram_size - HVM_BELOW_4G_RAM_END; - below_4g_mem_size = HVM_BELOW_4G_RAM_END; + if (ram_size >= QEMU_BELOW_4G_RAM_END) { + above_4g_mem_size = ram_size - QEMU_BELOW_4G_RAM_END; + below_4g_mem_size = QEMU_BELOW_4G_RAM_END; } else { below_4g_mem_size = ram_size; } -- 1.7.2.5
On 05/06/13 13:07, Stefano Stabellini wrote:> Hi all, > this patch series backports few fixes from QEMU to qemu-xen 4.3. > > > The second patch avoid calling main_loop_wait with nonblocking set to 1, > so that the select timeout is always as high as possible on Xen. > > The third patch fixes this PCI passthrough bug: > http://marc.info/?l=xen-devel&m=136242365010750Re the release: Acked-by: George Dunlap <george.dunlap@eu.citrix.com>