From mboxrd@z Thu Jan 1 00:00:00 1970 From: Glauber Costa Subject: [PATCH 1/9] Don't separate registrations with IO_MEM_ROM set Date: Fri, 12 Sep 2008 12:10:42 -0300 Message-ID: <1221232250-9653-2-git-send-email-glommer@redhat.com> References: <1221232250-9653-1-git-send-email-glommer@redhat.com> Cc: jes@sgi.com, avi@qumranet.com, aliguori@us.ibm.com To: kvm@vger.kernel.org Return-path: Received: from mx2.redhat.com ([66.187.237.31]:51480 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754068AbYILPWY (ORCPT ); Fri, 12 Sep 2008 11:22:24 -0400 In-Reply-To: <1221232250-9653-1-git-send-email-glommer@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Actually, all registrations are the same. If IO_MEM_ROM is set, we only need to take care of not passing its value as the phys_offset. Signed-off-by: Glauber Costa --- qemu/qemu-kvm.c | 31 +++++++++++-------------------- 1 files changed, 11 insertions(+), 20 deletions(-) diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c index c522a28..58a6d4a 100644 --- a/qemu/qemu-kvm.c +++ b/qemu/qemu-kvm.c @@ -776,26 +776,17 @@ void kvm_cpu_register_physical_memory(target_phys_addr_t start_addr, unsigned long phys_offset) { int r = 0; - if (!(phys_offset & ~TARGET_PAGE_MASK)) { - r = kvm_is_allocated_mem(kvm_context, start_addr, size); - if (r) - return; - r = kvm_is_intersecting_mem(kvm_context, start_addr); - if (r) - kvm_create_mem_hole(kvm_context, start_addr, size); - r = kvm_register_phys_mem(kvm_context, start_addr, - phys_ram_base + phys_offset, - size, 0); - } - if (phys_offset & IO_MEM_ROM) { - phys_offset &= ~IO_MEM_ROM; - r = kvm_is_intersecting_mem(kvm_context, start_addr); - if (r) - kvm_create_mem_hole(kvm_context, start_addr, size); - r = kvm_register_phys_mem(kvm_context, start_addr, - phys_ram_base + phys_offset, - size, 0); - } + + phys_offset &= ~IO_MEM_ROM; + r = kvm_is_allocated_mem(kvm_context, start_addr, size); + if (r) + return; + r = kvm_is_intersecting_mem(kvm_context, start_addr); + if (r) + kvm_create_mem_hole(kvm_context, start_addr, size); + r = kvm_register_phys_mem(kvm_context, start_addr, + phys_ram_base + phys_offset, + size, 0); if (r < 0) { printf("kvm_cpu_register_physical_memory: failed\n"); exit(1); -- 1.5.5.1