From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Gordeev Subject: [kvm-unit-tests PATCH v4 05/12] pci: Factor out pci_bar_get() Date: Mon, 6 Jun 2016 14:46:34 +0200 Message-ID: <93572bd28d8aa21f39b608ff3116aca90a1c3e40.1465214743.git.agordeev@redhat.com> References: Cc: Alexander Gordeev , Thomas Huth , Andrew Jones To: kvm@vger.kernel.org Return-path: Received: from mx1.redhat.com ([209.132.183.28]:47388 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751919AbcFFMqw (ORCPT ); Mon, 6 Jun 2016 08:46:52 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E00B88F4F0 for ; Mon, 6 Jun 2016 12:46:51 +0000 (UTC) In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: Cc: Thomas Huth Cc: Andrew Jones Signed-off-by: Alexander Gordeev --- lib/pci.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/pci.c b/lib/pci.c index 07c911820e20..d092e22b8804 100644 --- a/lib/pci.c +++ b/lib/pci.c @@ -27,14 +27,18 @@ static uint32_t pci_bar_mask(uint32_t bar) PCI_BASE_ADDRESS_IO_MASK : PCI_BASE_ADDRESS_MEM_MASK; } +static uint32_t pci_bar_get(pcidevaddr_t dev, int bar_num) +{ + return pci_config_readl(dev, PCI_BASE_ADDRESS_0 + bar_num * 4); +} + phys_addr_t pci_bar_addr(pcidevaddr_t dev, int bar_num) { - int off = PCI_BASE_ADDRESS_0 + bar_num * 4; - phys_addr_t bar = pci_config_readl(dev, off); + phys_addr_t bar = pci_bar_get(dev, bar_num); phys_addr_t mask = (int32_t)pci_bar_mask(bar); if (pci_bar_is64(dev, bar_num)) - bar |= (phys_addr_t)pci_config_readl(dev, off + 4) << 32; + bar |= (phys_addr_t)pci_bar_get(dev, bar_num + 1) << 32; return pci_translate_addr(dev, bar & mask); } @@ -64,7 +68,7 @@ static uint32_t pci_bar_size32(pcidevaddr_t dev, int bar_num) phys_addr_t pci_bar_size(pcidevaddr_t dev, int bar_num) { - uint32_t bar = pci_config_readl(dev, PCI_BASE_ADDRESS_0 + bar_num * 4); + uint32_t bar = pci_bar_get(dev, bar_num); phys_addr_t size = (int32_t)pci_bar_size32(dev, bar_num); phys_addr_t mask = (int32_t)pci_bar_mask(bar); @@ -78,19 +82,19 @@ phys_addr_t pci_bar_size(pcidevaddr_t dev, int bar_num) bool pci_bar_is_memory(pcidevaddr_t dev, int bar_num) { - uint32_t bar = pci_config_readl(dev, PCI_BASE_ADDRESS_0 + bar_num * 4); + uint32_t bar = pci_bar_get(dev, bar_num); return !(bar & PCI_BASE_ADDRESS_SPACE_IO); } bool pci_bar_is_valid(pcidevaddr_t dev, int bar_num) { - uint32_t bar = pci_config_readl(dev, PCI_BASE_ADDRESS_0 + bar_num * 4); + uint32_t bar = pci_bar_get(dev, bar_num); return bar; } bool pci_bar_is64(pcidevaddr_t dev, int bar_num) { - uint32_t bar = pci_config_readl(dev, PCI_BASE_ADDRESS_0 + bar_num * 4); + uint32_t bar = pci_bar_get(dev, (bar_num)); if (bar & PCI_BASE_ADDRESS_SPACE_IO) return false; -- 1.8.3.1