Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp49874pxy; Tue, 20 Apr 2021 12:19:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzSTxoXd+5RtPvplu9woLk269UxhxW8O1P9lWUrWowfr3tw5bSP7Liy7rtzOCj47iZrgg1m X-Received: by 2002:a17:90a:650c:: with SMTP id i12mr6780679pjj.204.1618946347686; Tue, 20 Apr 2021 12:19:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618946347; cv=none; d=google.com; s=arc-20160816; b=FKtNxV2rAl6KMyKM7PNtmwmWd4X4GhsMl0NrLn/Bl5wCrT3EkCz8hVRi2su322OpdA cqniR4K0VmtBwEq0PWA3DXEc9/TDn/gLBaGqNpo9r+tcSs7V370u49/AfqoqMxyUeX/4 BJjMkSjniZZpzP+dc6sC6tjW8OWXrQbvdCp6UzFYT9n7Y9JDgaLXN9FI0Dfo62o3dAm0 7KGBLoyQkm/kCOycS7HLJdTbUwoU5uqxumIsJAMTLad8G2zlSV99uWHpMIHTFfhjkvlH mEpps0RGtjkyErFtDJGUduxZzXjydA1AEbt/KYjKVAczVUEDA/hxcEqhTZTHGw4unQ+q 3wTQ== 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=aI2wDXiCpL/BA/iZs7XobiM5YxoT1F9OpPDpKRgb30Q=; b=vGo8z15ve6PjOz6vrMhAVD0N3aQ64kDnghKiKr46FlGZ5j+y4oO9ZYU127NHLAgYyQ kYqw1vVEimDjNjFzFabWmZ2DhXb9DcLvIZp+CwbmvTYeM/Q/rINlDp7bc0i/N0dfD4zm PXhtw4Pfv6oWaCHq6D+uTiYPJ1IqltHOUF+nFhJZTXKN3z0uZ/UmyhPZP8HRpZr6Gp/o yw3pfCQApp8/y1FkcHsaJVBggJrUO7yEKxX8Ftbs07eqpbDTFwDeceENfpJxxdST85mT iy+hChYYDkI+PAdQ7uSozx1kPoEZfI+78Y/3wlpt6nAh4RRQDFbjG+d8kdecJ+JvLbv2 +a8g== 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 j29si12697470pgi.384.2021.04.20.12.18.55; Tue, 20 Apr 2021 12:19:07 -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 S233691AbhDTTSs (ORCPT + 99 others); Tue, 20 Apr 2021 15:18:48 -0400 Received: from mga14.intel.com ([192.55.52.115]:16620 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233518AbhDTTSs (ORCPT ); Tue, 20 Apr 2021 15:18:48 -0400 IronPort-SDR: bvAkeAD4JFJZmbkGBpFeW82jHuTGe4AYXFOaoCgbEtCnNFx/9y8XeCF1bpdObEVdWCUTnM9/Jp lwbXqXfKKLhg== X-IronPort-AV: E=McAfee;i="6200,9189,9960"; a="195129066" X-IronPort-AV: E=Sophos;i="5.82,237,1613462400"; d="scan'208";a="195129066" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Apr 2021 12:18:15 -0700 IronPort-SDR: drlGLZFrdoEFIevNgmLTxduNwhniuyJrRq8375QPKIWws0FRmd6Q9Djx1V+cNoqmCD2Xv99KA1 Jda7mnIJaQ1g== X-IronPort-AV: E=Sophos;i="5.82,237,1613462400"; d="scan'208";a="427114352" Received: from rhweight-wrk1.ra.intel.com ([137.102.106.42]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Apr 2021 12:18:15 -0700 Date: Tue, 20 Apr 2021 12:19:42 -0700 (PDT) From: matthew.gerlach@linux.intel.com X-X-Sender: mgerlach@rhweight-WRK1 To: Tom Rix cc: hao.wu@intel.com, linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org, yilun.xu@intel.com, russell.h.weight@intel.com, mdf@kernel.org Subject: Re: [PATCH] fpga: dfl: pci: gracefully handle misconfigured port entries In-Reply-To: <3f6f683d-8bd2-6394-e9ae-7cb0d1cd7bdd@redhat.com> Message-ID: References: <20210420172740.707259-1-matthew.gerlach@linux.intel.com> <3f6f683d-8bd2-6394-e9ae-7cb0d1cd7bdd@redhat.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 Tue, 20 Apr 2021, Tom Rix wrote: > > On 4/20/21 10:27 AM, matthew.gerlach@linux.intel.com wrote: >> 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, > Does something similar need to be added to find_dfls_by_vsec ? >> 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; >> + } >> + >> 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); > > why %pa,&len for instead of %u,len ? > > Tom Hi Tom, The variable len is of type resource_size_t, and I am following what it says to do in Documentation/core-api/printk-formats.rst: Physical address types phys_addr_t ---------------------------------- :: %pa[p] 0x01234567 or 0x0123456789abcdef For printing a phys_addr_t type (and its derivatives, such as resource_size_t) which can vary based on build options, regardless of the width of the CPU data path. Passed by reference. Matthew > >> + continue; >> + } >> + len -= offset; >> + bars |= BIT(bar); >> dfl_fpga_enum_info_add_dfl(info, start, len); >> } >> } else if (dfl_feature_is_port(base)) { > >