From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 546F9A0548; Fri, 23 Apr 2021 12:44:07 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B2707410D8; Fri, 23 Apr 2021 12:44:06 +0200 (CEST) Received: from mail-108-mta249.mxroute.com (mail-108-mta249.mxroute.com [136.175.108.249]) by mails.dpdk.org (Postfix) with ESMTP id 4061E4014F for ; Fri, 23 Apr 2021 12:44:04 +0200 (CEST) Received: from filter004.mxroute.com ([149.28.56.236] filter004.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta249.mxroute.com (ZoneMTA) with ESMTPSA id 178fe544f1d0004964.001 for (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256); Fri, 23 Apr 2021 10:44:01 +0000 X-Zone-Loop: 0604ee0cc92f5f051fd64c9c482d894e1e0418d2ace2 X-Originating-IP: [149.28.56.236] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ashroe.eu; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:From:References:Cc:To:Subject:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=UJIgASfZgq9ekxPuqqruP4I2tJYanrCK2UidF3YgOu8=; b=lb642W5768I6wWag3LLLWACLl/ afsGO+krIjpQaa2h+H3WfBzqkVUfLNHxmmJOrHscr5QTzacp9F3lSDdhtvNA9/3Z26tQ1CzwuLLAq 6mzpP7CMzS/XEH0EJFmR4rps0A61agDJKlD7ujo7acTeRKSNnzdloC2H/bEqH5c/7yUk4moJONGuz x6ydZVx+EjGGevlc0qBDbQE4Y4gMdycordYPmQd9MjxssIUctXHQ+n/tQI/haqbmGL2rf/s5KJEoL Jz1i1T0bK/vRXljZMGUP7bxJMxt7oqu4OhqDcQaI55+JNeuDDQkYcARxxhWnw7gxcHayQJSdzggo9 tJTbmJ6Q==; To: Haiyue Wang , dev@dpdk.org Cc: qi.z.zhang@intel.com, liang-min.wang@intel.com, Neil Horman , Gaetan Rivet References: <20210421050243.130585-1-haiyue.wang@intel.com> <20210422011830.54199-1-haiyue.wang@intel.com> <20210422011830.54199-2-haiyue.wang@intel.com> From: "Kinsella, Ray" Message-ID: <1c9d285c-81c6-a977-682a-473e691abda0@ashroe.eu> Date: Fri, 23 Apr 2021 11:43:58 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.9.1 MIME-Version: 1.0 In-Reply-To: <20210422011830.54199-2-haiyue.wang@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-AuthUser: mdr@ashroe.eu Subject: Re: [dpdk-dev] [PATCH v2 1/3] bus/pci: enable PCI master in command register X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 22/04/2021 02:18, Haiyue Wang wrote: > This adds the support to set 'Bus Master Enable' bit in the PCI command > register. > > Signed-off-by: Haiyue Wang > Tested-by: Qi Zhang > --- > drivers/bus/pci/pci_common.c | 20 ++++++++++++++++++++ > drivers/bus/pci/rte_bus_pci.h | 12 ++++++++++++ > drivers/bus/pci/version.map | 1 + > lib/pci/rte_pci.h | 4 ++++ > 4 files changed, 37 insertions(+) > > diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c > index ee7f96635..b631cb9c7 100644 > --- a/drivers/bus/pci/pci_common.c > +++ b/drivers/bus/pci/pci_common.c > @@ -746,6 +746,26 @@ rte_pci_find_ext_capability(struct rte_pci_device *dev, uint32_t cap) > return 0; > } > > +int > +rte_pci_enable_bus_master(struct rte_pci_device *dev) > +{ > + uint16_t cmd; > + > + if (rte_pci_read_config(dev, &cmd, sizeof(cmd), RTE_PCI_COMMAND) < 0) { > + RTE_LOG(ERR, EAL, "error in reading PCI command register\n"); > + return -1; > + } > + > + cmd |= RTE_PCI_COMMAND_MASTER; > + > + if (rte_pci_write_config(dev, &cmd, sizeof(cmd), RTE_PCI_COMMAND) < 0) { > + RTE_LOG(ERR, EAL, "error in writing PCI command register\n"); > + return -1; > + } > + > + return 0; > +} > + > struct rte_pci_bus rte_pci_bus = { > .bus = { > .scan = rte_pci_scan, > diff --git a/drivers/bus/pci/rte_bus_pci.h b/drivers/bus/pci/rte_bus_pci.h > index 64886b473..83caf477b 100644 > --- a/drivers/bus/pci/rte_bus_pci.h > +++ b/drivers/bus/pci/rte_bus_pci.h > @@ -249,6 +249,18 @@ void rte_pci_dump(FILE *f); > __rte_experimental > off_t rte_pci_find_ext_capability(struct rte_pci_device *dev, uint32_t cap); > > +/** > + * Enables Bus Master for device's PCI command register. > + * > + * @param dev > + * A pointer to rte_pci_device structure. > + * > + * @return > + * 0 on success, -1 on error in PCI config space read/write. > + */ > +__rte_experimental > +int rte_pci_enable_bus_master(struct rte_pci_device *dev); > + > /** > * Register a PCI driver. > * > diff --git a/drivers/bus/pci/version.map b/drivers/bus/pci/version.map > index f33ed0abd..b271e48a8 100644 > --- a/drivers/bus/pci/version.map > +++ b/drivers/bus/pci/version.map > @@ -20,5 +20,6 @@ DPDK_21 { > EXPERIMENTAL { > global: > Please annotate when the symbol was added. > + rte_pci_enable_bus_master; > rte_pci_find_ext_capability; > }; > diff --git a/lib/pci/rte_pci.h b/lib/pci/rte_pci.h > index a8f8e404a..1f33d687f 100644 > --- a/lib/pci/rte_pci.h > +++ b/lib/pci/rte_pci.h > @@ -32,6 +32,10 @@ extern "C" { > > #define RTE_PCI_VENDOR_ID 0x00 /* 16 bits */ > #define RTE_PCI_DEVICE_ID 0x02 /* 16 bits */ > +#define RTE_PCI_COMMAND 0x04 /* 16 bits */ > + > +/* PCI Command Register */ > +#define RTE_PCI_COMMAND_MASTER 0x4 /* Bus Master Enable */ > > /* PCI Express capability registers */ > #define RTE_PCI_EXP_DEVCTL 8 /* Device Control */ >