Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp45413pxy; Wed, 21 Apr 2021 18:02:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwBVKtkmne72tqYReVcqX/Qdy565ZFMcgyX1W7Ax7Uwfw9taKtLe3cH0QYYQzVvTKzJLjU1 X-Received: by 2002:a17:90a:8809:: with SMTP id s9mr14930505pjn.174.1619053347796; Wed, 21 Apr 2021 18:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619053347; cv=none; d=google.com; s=arc-20160816; b=lpryWfnn3XetbTRigrDwKLcIJcaonGau0Ru3oxp7oeJBV438J+NgyvQ2TC8tvumHjA WTxLaJwbwmhrHypMoOkntQLavklWr6JFjhHJbPsTsXzxSO5IOf5SHjS+HgLfJPRCMw0H 6TaoWfbos2ZB3D7JBe7BzlKWwp+WV+BVUMZdGvHXQSEYnUSUTnClwGRd2TpFUv9OEF28 pEZAdP3fVg0cVBm/EL+lkeXo4UV/d+0yGfV0JTls/ZpTKeKBTcwfi72z3+LjsSRdObUb 7OuK2yIpb1hH5D5mzCTM46winxsYjYGQzdOiTL67M8qQzlxSKzaZVA1/JiGBK6V1bw88 uexA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:references:message-id :in-reply-to:subject:cc:to:from:date:ironport-sdr:ironport-sdr; bh=0iAVKoWeS15w+Tk4uGaEHuoSV+UGdLCtei/CV5ALdzA=; b=TsOkKAaHEX0pDYF+8AHl1aJUORVkwkCo7hG76IeLbEDc7MazXjdCPD+812l8oOyERL vBBmgoB9GqWVLTZap5earwQ6EoHWUuNTbcneH+zh7F3grs/bAhr1mUzumbbsXAWHvrQP 3TfF6j5o7aSeo7BB8mXTYMDyt8SpC/zwicrIVb4cNZPajDgA8OdTAPXvckGFKkU1A4aA tPKR1+jAK8AUIEk8joKy1x4gJMr8syD/SezQ6ZenAxYFSCaJiHPv7W9CODaPCbE2Xn+r PqdiC2vBGZCyuaWyWK92OEzu9K4CpemXodT949J7aihkah6d0IXpjlqYFfw04EN6Bg2Q ns/g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r2si1360176pgp.70.2021.04.21.18.02.10; Wed, 21 Apr 2021 18:02:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244429AbhDURFx (ORCPT + 99 others); Wed, 21 Apr 2021 13:05:53 -0400 Received: from mga01.intel.com ([192.55.52.88]:16579 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234291AbhDURFw (ORCPT ); Wed, 21 Apr 2021 13:05:52 -0400 IronPort-SDR: Ptxp6wEJA8RHS3LmpK31EePmhjRfrpfzmK5AVcdJQDlSF47Tsc+accAmb64KjZKvh33XHiYbz5 U+rVQshttRWw== X-IronPort-AV: E=McAfee;i="6200,9189,9961"; a="216380809" X-IronPort-AV: E=Sophos;i="5.82,240,1613462400"; d="scan'208";a="216380809" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2021 10:05:18 -0700 IronPort-SDR: 0ue8o3OdCuajNt7TOqgoVSoYxeX9eDPWZ9WcF3WyKlp0d1Wtnkr8OgYGefbshEwYRKC41Vzr4m 61dRN+4yraJQ== X-IronPort-AV: E=Sophos;i="5.82,240,1613462400"; d="scan'208";a="602954126" Received: from rhweight-wrk1.ra.intel.com ([137.102.106.42]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2021 10:05:18 -0700 Date: Wed, 21 Apr 2021 10:06:45 -0700 (PDT) From: matthew.gerlach@linux.intel.com X-X-Sender: mgerlach@rhweight-WRK1 To: "Wu, Hao" cc: "trix@redhat.com" , "linux-fpga@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Xu, Yilun" , "Weight, Russell H" , "mdf@kernel.org" Subject: RE: [PATCH] fpga: dfl: pci: gracefully handle misconfigured port entries In-Reply-To: Message-ID: References: <20210420172740.707259-1-matthew.gerlach@linux.intel.com> User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 21 Apr 2021, Wu, Hao wrote: >> Subject: [PATCH] fpga: dfl: pci: gracefully handle misconfigured port entries >> >> From: Matthew Gerlach >> >> Gracefully ignore misconfigured port entries encountered in >> incorrect FPGA images. >> >> Signed-off-by: Matthew Gerlach >> --- >> drivers/fpga/dfl-pci.c | 16 +++++++++++++++- >> 1 file changed, 15 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/fpga/dfl-pci.c b/drivers/fpga/dfl-pci.c >> index b44523e..660d3b6 100644 >> --- a/drivers/fpga/dfl-pci.c >> +++ b/drivers/fpga/dfl-pci.c >> @@ -212,6 +212,7 @@ static int find_dfls_by_default(struct pci_dev *pcidev, >> int port_num, bar, i, ret = 0; >> resource_size_t start, len; >> void __iomem *base; >> + int bars = 0; >> u32 offset; >> u64 v; >> >> @@ -228,6 +229,7 @@ static int find_dfls_by_default(struct pci_dev *pcidev, >> if (dfl_feature_is_fme(base)) { >> start = pci_resource_start(pcidev, 0); >> len = pci_resource_len(pcidev, 0); >> + bars |= BIT(0); >> >> dfl_fpga_enum_info_add_dfl(info, start, len); >> >> @@ -253,9 +255,21 @@ static int find_dfls_by_default(struct pci_dev *pcidev, >> */ >> bar = FIELD_GET(FME_PORT_OFST_BAR_ID, v); >> offset = FIELD_GET(FME_PORT_OFST_DFH_OFST, v); >> + if (bars & BIT(bar)) { >> + dev_warn(&pcidev->dev, "skipping bad port >> BAR %d\n", bar); >> + continue; >> + } > > Will it be a real problem that multiple ports are inside one BAR but different offsets? > > Hao I don't think multiple ports within a single BAR is something that has been supported in the past. The genesis for this patch was a misconfigured port entry pointing to BAR0. BAR0 had already been mapped for the FME and remapping BAR0 failed resulting in enumeration failure. Matthew > >> + >> start = pci_resource_start(pcidev, bar) + offset; >> - len = pci_resource_len(pcidev, bar) - offset; >> + len = pci_resource_len(pcidev, bar); >> + if (offset >= len) { >> + dev_warn(&pcidev->dev, "bad port >> offset %u >= %pa\n", >> + offset, &len); >> + continue; >> + } >> >> + len -= offset; >> + bars |= BIT(bar); >> dfl_fpga_enum_info_add_dfl(info, start, len); >> } >> } else if (dfl_feature_is_port(base)) { >> -- >> 1.8.3.1 > >