Hollis Blanchard wrote: > On Wed, 2009-04-29 at 12:38 +0200, Jan Kiszka wrote: >> Liu Yu-B13201 wrote: >>>> -----Original Message----- >>>> From: qemu-devel-bounces+yu.liu=freescale.com@xxxxxxxxxx >>>> [mailto:qemu-devel-bounces+yu.liu=freescale.com@xxxxxxxxxx] >>>> On Behalf Of Jan Kiszka >>>> Sent: Sunday, April 12, 2009 1:20 AM >>>> To: qemu-devel@xxxxxxxxxx >>>> Subject: [Qemu-devel] [PATCH 4/7] kvm: Add sanity checks to >>>> slot management >>>> >>>> Fail loudly if we run out of memory slot. >>>> >>>> Make sure that dirty log start/stop works with consistent >>>> memory regions >>>> by reporting invalid parameters. This reveals several >>>> inconsistencies in >>>> the vga code, patch to fix them follows later in this series. >>>> >>>> And, for simplicity reasons, also catch and report unaligned memory >>>> regions passed to kvm_set_phys_mem (KVM works on page basis). >>>> >>> Commit d3f8d37fe2d0c24ec8bac9c94d5b0e2dc09c0d2a hurts kvm/powerpc >>> The alignment check in kvm_set_phys_mem prevents pci controller and mpic initializing mmio regions. >> What is the alignment of those regions then? None? And do regions of >> different types overlap even on the same page? Maybe the check reveals >> some deeper conflict /wrt KVM. Can you point me to the involved code files? > > These PCI controllers make separate calls to > cpu_register_physical_memory() for separate callbacks. Reading > ppce500_pci_init(), for example: > 0xe0008000 -> CFGADDR (4 bytes) > 0xe0008004 -> CFGDATA (4 bytes) > 0xe0008c00 -> other registers > > The loop in cpu_register_physical_memory_offset() handles "subpage" > registration. However, kvm_set_phys_mem() is called outside that loop, > so it gets the non-page-aligned addresses. > Half-blind shot: diff --git a/kvm-all.c b/kvm-all.c index 32cd636..c2c760e 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -583,6 +583,9 @@ void kvm_set_phys_mem(target_phys_addr_t start_addr, int err; if (start_addr & ~TARGET_PAGE_MASK) { + if (flags >= IO_MEM_UNASSIGNED) { + return; + } fprintf(stderr, "Only page-aligned memory slots supported\n"); abort(); } If it works, it likely needs a cleaner approach to handle all cases. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html