From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: [PATCH] pci-assign: Fix MSI-X MMIO page registration Date: Wed, 12 Oct 2011 19:02:37 +0200 Message-ID: <4E95C82D.3090306@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: kvm , Alex Williamson To: Avi Kivity , Marcelo Tosatti Return-path: Received: from david.siemens.de ([192.35.17.14]:20514 "EHLO david.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753405Ab1JLRCo (ORCPT ); Wed, 12 Oct 2011 13:02:44 -0400 Sender: kvm-owner@vger.kernel.org List-ID: The MSI-X page must start below the address that comes after the end of a region. Otherwise we risk to register it twice. This bug existed since day #1 of the MSI-X support and was now reveal by memory.c:1201: memory_region_add_subregion_common: Assertion `!subregion->parent' failed. Signed-off-by: Jan Kiszka --- hw/device-assignment.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/hw/device-assignment.c b/hw/device-assignment.c index 054b059..11efd16 100644 --- a/hw/device-assignment.c +++ b/hw/device-assignment.c @@ -246,7 +246,7 @@ static void assigned_dev_iomem_setup(PCIDevice *pci_dev, int region_num, /* deal with MSI-X MMIO page */ if (real_region->base_addr <= r_dev->msix_table_addr && - real_region->base_addr + real_region->size >= + real_region->base_addr + real_region->size > r_dev->msix_table_addr) { int offset = r_dev->msix_table_addr - real_region->base_addr; -- 1.7.3.4