* [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen
@ 2013-09-02 15:16 Anthony PERARD
2013-09-02 15:16 ` [Qemu-devel] [PATCH v2 1/2] pc: Initializing ram_memory " Anthony PERARD
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Anthony PERARD @ 2013-09-02 15:16 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Michael S. Tsirkin, Stefano Stabellini,
Anthony Liguori, Anthony PERARD, Paolo Bonzini,
Andreas Färber
Hi all,
The first patch fix the initialization of ram_memory in pc_init1() in pc_piix.c.
The second call the initialization code of Xen while running with the Q35
chipset even if Q35 still those not work with Xen. There need some work in the
HVM Loader and in libxl at least.
Thanks,
Anthony PERARD (2):
pc: Initializing ram_memory under Xen.
pc_q35: Initialize Xen.
hw/i386/pc_piix.c | 2 +-
hw/i386/pc_q35.c | 5 +++++
include/hw/xen/xen.h | 4 +---
xen-all.c | 7 ++++---
4 files changed, 11 insertions(+), 7 deletions(-)
--
Anthony PERARD
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] pc: Initializing ram_memory under Xen.
2013-09-02 15:16 [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen Anthony PERARD
@ 2013-09-02 15:16 ` Anthony PERARD
2013-09-02 15:16 ` [Qemu-devel] [PATCH v2 2/2] pc_q35: Initialize Xen Anthony PERARD
2013-09-02 15:27 ` [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen Michael S. Tsirkin
2 siblings, 0 replies; 4+ messages in thread
From: Anthony PERARD @ 2013-09-02 15:16 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Michael S. Tsirkin, Stefano Stabellini,
Anthony Liguori, Anthony PERARD, Paolo Bonzini,
Andreas Färber
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
hw/i386/pc_piix.c | 2 +-
include/hw/xen/xen.h | 4 +---
xen-all.c | 7 ++++---
3 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 3c36a2a..a5ea582 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -89,7 +89,7 @@ static void pc_init1(QEMUMachineInitArgs *args,
FWCfgState *fw_cfg = NULL;
PcGuestInfo *guest_info;
- if (xen_enabled() && xen_hvm_init() != 0) {
+ if (xen_enabled() && xen_hvm_init(&ram_memory) != 0) {
fprintf(stderr, "xen hardware virtual machine initialisation failed\n");
exit(1);
}
diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
index 6d42dd1..e1f88bf 100644
--- a/include/hw/xen/xen.h
+++ b/include/hw/xen/xen.h
@@ -37,17 +37,15 @@ void xen_cmos_set_s3_resume(void *opaque, int irq, int level);
qemu_irq *xen_interrupt_controller_init(void);
int xen_init(void);
-int xen_hvm_init(void);
+int xen_hvm_init(MemoryRegion **ram_memory);
void xenstore_store_pv_console_info(int i, struct CharDriverState *chr);
#if defined(NEED_CPU_H) && !defined(CONFIG_USER_ONLY)
-struct MemoryRegion;
void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
struct MemoryRegion *mr);
void xen_modified_memory(ram_addr_t start, ram_addr_t length);
#endif
-struct MemoryRegion;
void xen_register_framebuffer(struct MemoryRegion *mr);
#if defined(CONFIG_XEN) && CONFIG_XEN_CTRL_INTERFACE_VERSION < 400
diff --git a/xen-all.c b/xen-all.c
index eb13111..839f14f 100644
--- a/xen-all.c
+++ b/xen-all.c
@@ -154,7 +154,7 @@ qemu_irq *xen_interrupt_controller_init(void)
/* Memory Ops */
-static void xen_ram_init(ram_addr_t ram_size)
+static void xen_ram_init(ram_addr_t ram_size, MemoryRegion **ram_memory_p)
{
MemoryRegion *sysmem = get_system_memory();
ram_addr_t below_4g_mem_size, above_4g_mem_size = 0;
@@ -168,6 +168,7 @@ static void xen_ram_init(ram_addr_t ram_size)
block_len += HVM_BELOW_4G_MMIO_LENGTH;
}
memory_region_init_ram(&ram_memory, NULL, "xen.ram", block_len);
+ *ram_memory_p = &ram_memory;
vmstate_register_ram_global(&ram_memory);
if (ram_size >= HVM_BELOW_4G_RAM_END) {
@@ -1059,7 +1060,7 @@ static void xen_read_physmap(XenIOState *state)
free(entries);
}
-int xen_hvm_init(void)
+int xen_hvm_init(MemoryRegion **ram_memory)
{
int i, rc;
unsigned long ioreq_pfn;
@@ -1134,7 +1135,7 @@ int xen_hvm_init(void)
/* Init RAM management */
xen_map_cache_init(xen_phys_offset_to_gaddr, state);
- xen_ram_init(ram_size);
+ xen_ram_init(ram_size, ram_memory);
qemu_add_vm_change_state_handler(xen_hvm_change_state_handler, state);
--
Anthony PERARD
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH v2 2/2] pc_q35: Initialize Xen.
2013-09-02 15:16 [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen Anthony PERARD
2013-09-02 15:16 ` [Qemu-devel] [PATCH v2 1/2] pc: Initializing ram_memory " Anthony PERARD
@ 2013-09-02 15:16 ` Anthony PERARD
2013-09-02 15:27 ` [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen Michael S. Tsirkin
2 siblings, 0 replies; 4+ messages in thread
From: Anthony PERARD @ 2013-09-02 15:16 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Michael S. Tsirkin, Stefano Stabellini,
Anthony Liguori, Anthony PERARD, Paolo Bonzini,
Andreas Färber
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
Right now, starting an HVM with Q35 chipset those not works because
HVMLoader (the Xen pre-bios) look for the standard chipset i440FX.
Especialy the PCI/ISA bridge.
Error message from HVMLoader:
assertion '(devfn != PCI_ISA_DEVFN) || ((vendor_id == 0x8086) &&
(device_id == 0x7000))'
with PCI_ISA_DEVFN 0x08 /* dev 1, fn 0 */
---
hw/i386/pc_q35.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 198c785..51b93f0 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -76,6 +76,11 @@ static void pc_q35_init(QEMUMachineInitArgs *args)
DeviceState *icc_bridge;
PcGuestInfo *guest_info;
+ if (xen_enabled() && xen_hvm_init(&ram_memory) != 0) {
+ fprintf(stderr, "xen hardware virtual machine initialisation failed\n");
+ exit(1);
+ }
+
icc_bridge = qdev_create(NULL, TYPE_ICC_BRIDGE);
object_property_add_child(qdev_get_machine(), "icc-bridge",
OBJECT(icc_bridge), NULL);
--
Anthony PERARD
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen
2013-09-02 15:16 [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen Anthony PERARD
2013-09-02 15:16 ` [Qemu-devel] [PATCH v2 1/2] pc: Initializing ram_memory " Anthony PERARD
2013-09-02 15:16 ` [Qemu-devel] [PATCH v2 2/2] pc_q35: Initialize Xen Anthony PERARD
@ 2013-09-02 15:27 ` Michael S. Tsirkin
2 siblings, 0 replies; 4+ messages in thread
From: Michael S. Tsirkin @ 2013-09-02 15:27 UTC (permalink / raw)
To: Anthony PERARD
Cc: Peter Maydell, Stefano Stabellini, qemu-devel, Anthony Liguori,
Paolo Bonzini, Andreas Färber
On Mon, Sep 02, 2013 at 04:16:40PM +0100, Anthony PERARD wrote:
> Hi all,
>
> The first patch fix the initialization of ram_memory in pc_init1() in pc_piix.c.
>
> The second call the initialization code of Xen while running with the Q35
> chipset even if Q35 still those not work with Xen. There need some work in the
> HVM Loader and in libxl at least.
>
> Thanks,
For the series,
Acked-by: Michael S. Tsirkin <mst@redhat.com>
> Anthony PERARD (2):
> pc: Initializing ram_memory under Xen.
> pc_q35: Initialize Xen.
>
> hw/i386/pc_piix.c | 2 +-
> hw/i386/pc_q35.c | 5 +++++
> include/hw/xen/xen.h | 4 +---
> xen-all.c | 7 ++++---
> 4 files changed, 11 insertions(+), 7 deletions(-)
>
> --
> Anthony PERARD
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-09-02 15:26 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-02 15:16 [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen Anthony PERARD
2013-09-02 15:16 ` [Qemu-devel] [PATCH v2 1/2] pc: Initializing ram_memory " Anthony PERARD
2013-09-02 15:16 ` [Qemu-devel] [PATCH v2 2/2] pc_q35: Initialize Xen Anthony PERARD
2013-09-02 15:27 ` [Qemu-devel] [PATCH v2 0/2] Fix ram_memory initialization under Xen Michael S. Tsirkin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).