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 535E1A04B7; Tue, 13 Oct 2020 19:05:30 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EB61D1DC8E; Tue, 13 Oct 2020 19:05:27 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 05E1D1DC8D for ; Tue, 13 Oct 2020 19:05:26 +0200 (CEST) IronPort-SDR: op7H9gNpyTa/mieysDOyBa7bnJcsqUgirrFe4NuJgbh1qmjspvFKz4+G9Y1Mex6VfLDRiE99sK rXIQKF3eXtlw== X-IronPort-AV: E=McAfee;i="6000,8403,9773"; a="183434320" X-IronPort-AV: E=Sophos;i="5.77,371,1596524400"; d="scan'208";a="183434320" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2020 10:04:41 -0700 IronPort-SDR: dDpu10JVBemoUED0wPnndxlhUjWL691pv8ugcLzo+vAC+3YB3bJUKcDvCdEVome+b0M5RUUkp9 aFSQw5bVL50A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,371,1596524400"; d="scan'208";a="345334392" Received: from jrharri1-skx.ch.intel.com ([143.182.137.73]) by fmsmga004.fm.intel.com with ESMTP; 13 Oct 2020 10:04:41 -0700 From: Jim Harris To: dev@dpdk.org, thomas@monjalon.net Cc: Jim Harris Date: Tue, 13 Oct 2020 10:03:16 -0700 Message-Id: <20201013170316.37863-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 v5] 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..e51f9d756 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, sizeof(dev2->id))) /* * This should not happens. * But it is still possible if -- 2.20.1