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 D6E0FA04B6; Mon, 24 Aug 2020 23:11:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 35D361BE3D; Mon, 24 Aug 2020 23:11:54 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 94AFA58C4 for ; Mon, 24 Aug 2020 23:11:52 +0200 (CEST) IronPort-SDR: utvC5pxVMrWCPnL8hrAGL7L/nwtbQdIqeLBvNPRzFEds6C69tDnJ7hN3hVVyBNIQfZwNaahH10 Bn8f5iINHIJg== X-IronPort-AV: E=McAfee;i="6000,8403,9723"; a="174030616" X-IronPort-AV: E=Sophos;i="5.76,349,1592895600"; d="scan'208";a="174030616" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Aug 2020 14:11:50 -0700 IronPort-SDR: npmYYxeUakYCL1WLO+1f4xvMn/sQZhtLzF7L9HD9eh8nfmETbMU7b1hRkMpb2ua3By7ls193E/ xALA5GxNLGgw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,349,1592895600"; d="scan'208";a="499616103" Received: from jrharri1-skx.ch.intel.com ([143.182.137.73]) by fmsmga005.fm.intel.com with ESMTP; 24 Aug 2020 14:11:50 -0700 From: Jim Harris To: dev@dpdk.org Cc: Jim Harris Date: Mon, 24 Aug 2020 14:10:38 -0700 Message-Id: <20200824211038.48932-1-james.r.harris@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200821220650.7901-1-james.r.harris@intel.com> References: <20200821220650.7901-1-james.r.harris@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v2] 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..d8fd973b2 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; + memcpy(&dev2->id, &dev->id, sizeof(dev2->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, sizeof(dev2->id))) /* * This should not happens. * But it is still possible if -- 2.20.1