From patchwork Fri Jan 22 22:04:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: sostalle X-Patchwork-Id: 8093711 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: X-Original-To: patchwork-linux-pci@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 2670EBEEE5 for ; Fri, 22 Jan 2016 22:09:02 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4A46A205C4 for ; Fri, 22 Jan 2016 22:09:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id ADDF7205C1 for ; Fri, 22 Jan 2016 22:08:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755038AbcAVWIu (ORCPT ); Fri, 22 Jan 2016 17:08:50 -0500 Received: from mga11.intel.com ([192.55.52.93]:43526 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755015AbcAVWIf (ORCPT ); Fri, 22 Jan 2016 17:08:35 -0500 Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP; 22 Jan 2016 14:08:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,333,1449561600"; d="scan'208";a="34461313" Received: from dev.jf.intel.com ([134.134.147.75]) by fmsmga004.fm.intel.com with ESMTP; 22 Jan 2016 14:08:35 -0800 From: "Sean O. Stalley" To: linux-pci@vger.kernel.org, mj@ucw.cz, bhelgaas@google.com, alex.williamson@redhat.com Cc: sean.stalley@intel.com, david.daney@cavium.com Subject: [PATCH 1/2] pci: Identify Enhanced Allocation (EA) BAR Equivalent resources Date: Fri, 22 Jan 2016 14:04:53 -0800 Message-Id: <1453500294-3140-2-git-send-email-sean.stalley@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1453500294-3140-1-git-send-email-sean.stalley@intel.com> References: <1453500294-3140-1-git-send-email-sean.stalley@intel.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Alex Williamson We've done a pretty good job of abstracting EA from drivers, but there are some cases where flaging resources as EA would be useful. Specifically, EA is flexabable when it comes to resource alignment & sizing. This can create issues when existing software makes assumptions about the PCI resources. For example, lspci assumes any PCI resource exposed by the kernel that isn't visible in standard configspace comes from a VF BAR. vfio makes assumptions about alignment and sizing, and runs into problems when attempting to emulate a BAR Equivalent EA resource. To facilitate that, a flag indicating whether a PCI resource is a traditional BAR or BAR equivalent seems much nicer than attempting to deduce where the resource came from from the size & address fields (which is impossible if a EA resource happens naturally aligned). Signed-off-by: Alex Williamson Signed-off-by: Sean O. Stalley --- drivers/pci/pci.c | 2 +- include/linux/ioport.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index d1a7105..8ff678c 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2229,7 +2229,7 @@ void pci_pm_init(struct pci_dev *dev) static unsigned long pci_ea_flags(struct pci_dev *dev, u8 prop) { - unsigned long flags = IORESOURCE_PCI_FIXED; + unsigned long flags = IORESOURCE_PCI_FIXED | IORESOURCE_PCI_EA_BEI; switch (prop) { case PCI_EA_P_MEM: diff --git a/include/linux/ioport.h b/include/linux/ioport.h index 24bea08..5acc194 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -105,6 +105,8 @@ struct resource { /* PCI control bits. Shares IORESOURCE_BITS with above PCI ROM. */ #define IORESOURCE_PCI_FIXED (1<<4) /* Do not move resource */ +/* PCI Enhanced Allocation defined BAR equivalent resource */ +#define IORESOURCE_PCI_EA_BEI (1<<5) /* helpers to define resources */ #define DEFINE_RES_NAMED(_start, _size, _name, _flags) \