From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 39392A04B7; Tue, 13 Oct 2020 16:08:26 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 19D9E1BA9A; Tue, 13 Oct 2020 16:08:25 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 956081BA5D for ; Tue, 13 Oct 2020 16:08:22 +0200 (CEST) IronPort-SDR: XIHnnNLo2kzMmhidG52K42T4pf6BcV5zUAcZvs8+Q3nTNp2Q4WOBkfO24GeFkMfRnYZExDgUjF m/N3TFbABDFQ== X-IronPort-AV: E=McAfee;i="6000,8403,9772"; a="230092252" X-IronPort-AV: E=Sophos;i="5.77,371,1596524400"; d="scan'208";a="230092252" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2020 07:08:20 -0700 IronPort-SDR: nuCbdDKQBstuxquq87FIa5KibQCNKei3iBl19x/emfT5KJB309/SThz02zAWXRkwgVpROz/+i3 fTIIgqtjuorA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,371,1596524400"; d="scan'208";a="345276577" Received: from jrharri1-skx.ch.intel.com ([143.182.137.73]) by fmsmga004.fm.intel.com with ESMTP; 13 Oct 2020 07:08:19 -0700 From: Jim Harris To: dev@dpdk.org, thomas@monjalon.net Cc: Jim Harris Date: Tue, 13 Oct 2020 07:06:54 -0700 Message-Id: <20201013140654.37415-1-james.r.harris@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201012220136.6618-1-james.r.harris@intel.com> References: <20201012220136.6618-1-james.r.harris@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v4] pci/linux: copy new id for inserted device X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" When a device is inserted into an existing BDF slot that has not been probed, we must overwrite the old PCI ID with the ID of the new function. Otherwise we may not probe the function with the correct driver, if at all. Signed-off-by: Jim Harris --- drivers/bus/pci/linux/pci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c index a2198abf4..86e920d1c 100644 --- a/drivers/bus/pci/linux/pci.c +++ b/drivers/bus/pci/linux/pci.c @@ -352,6 +352,7 @@ pci_scan_one(const char *dirname, const struct rte_pci_addr *addr) if (!rte_dev_is_probed(&dev2->device)) { dev2->kdrv = dev->kdrv; dev2->max_vfs = dev->max_vfs; + dev2->id = dev->id; pci_name_set(dev2); memmove(dev2->mem_resource, dev->mem_resource, @@ -365,7 +366,8 @@ pci_scan_one(const char *dirname, const struct rte_pci_addr *addr) * need to do anything here unless... **/ if (dev2->kdrv != dev->kdrv || - dev2->max_vfs != dev->max_vfs) + dev2->max_vfs != dev->max_vfs || + memcmp(&dev2->id, &dev->id)) /* * This should not happens. * But it is still possible if -- 2.20.1