Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp3735602pxb; Mon, 30 Aug 2021 09:25:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxCMizc5G6HKHsl+gBCCZj1O7wuZ1pNqI8/INuFmIcVRvIMcP/+iiYXSLkrrNuHRmmnFXlA X-Received: by 2002:a50:eb95:: with SMTP id y21mr13225688edr.139.1630340755891; Mon, 30 Aug 2021 09:25:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630340755; cv=none; d=google.com; s=arc-20160816; b=wg2si2w9ESOUyQNGgfyGf2Nb6ljjN5D6oLGwF6cx0q/CJn7Jld0z42fUcP/m8sk+zI ZJrF8j6Yzyhf3MGQ1wFJ2WxeQq/xhuC6ItRfGSQKDlxK3C/KskFQfBePsdFB97S70jeF uSzlQTnYY8X5nsMUpYVSwL75k9MxTZeMGmN0DS5GLYkGWrn/hwAAZOTV5lr022vjNSJV bXdRRYqOkhrkX5Wpk+v+jvYtTqNxHY7IwC/TjyY1KQvk5KqsvSFQoRajG7Urnyda28DX oVXQGsFMlbdrYArhnjb5cimZgxoVzWQt26ZaPESs2s9sCoyFuSmDrOomPTgYkUO+OmEO DJhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=5FPRTpYOPeJ+ckBdyIZ+5l2nbkSDmswAnDJWkUvM8HE=; b=NYVLfjnYBvhFCcOYRXCubEhWDivuzebD7PI1RXpyUh0U5Ay1/2LszVwVBJKTk6/E7g idQlpHiaBmlqkj7ztkgHiCqQCibYjm9YtvKEX+vRJ6dWi9fZ+/KVX8hywh3es5kuxrDC RnFSqr4e+PZlo4MCw+T8wUKkgf0jEU0zLa469TJpgt4fkcgwNm5TnnRxXrceExfG5peN r+HY6VxDpBTBz1DVM2RuzZyKHmpv3EjEAnV/6ZW4kPx6OJmZlXvIzAIgwF1OyCKNFBBD R8mGAy7olXOZTARFjNfaLPNAezZ2kC3TGvcnhG2eFOp2xVibkrj3CO53mVyTBKAGrYB+ 9jUA== 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=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j5si14493863ejm.413.2021.08.30.09.25.29; Mon, 30 Aug 2021 09:25:55 -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=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237621AbhH3QYZ (ORCPT + 99 others); Mon, 30 Aug 2021 12:24:25 -0400 Received: from foss.arm.com ([217.140.110.172]:44160 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232785AbhH3QYX (ORCPT ); Mon, 30 Aug 2021 12:24:23 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 480F91FB; Mon, 30 Aug 2021 09:23:29 -0700 (PDT) Received: from [192.168.122.166] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 46A0E3F766; Mon, 30 Aug 2021 09:23:28 -0700 (PDT) Subject: Re: [PATCH v3 2/4] PCI: brcmstb: Add ACPI config space quirk To: nicolas saenz julienne , linux-pci@vger.kernel.org Cc: lorenzo.pieralisi@arm.com, bhelgaas@google.com, rjw@rjwysocki.net, lenb@kernel.org, robh@kernel.org, kw@linux.com, f.fainelli@gmail.com, bcm-kernel-feedback-list@broadcom.com, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rpi-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20210826071557.29239-1-jeremy.linton@arm.com> <20210826071557.29239-3-jeremy.linton@arm.com> <44ad79081412af289c68e74cdecb6a2baa2e873c.camel@kernel.org> From: Jeremy Linton Message-ID: <5c39cf29-a08f-48d1-b873-ce0fda763d66@arm.com> Date: Mon, 30 Aug 2021 11:23:27 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <44ad79081412af289c68e74cdecb6a2baa2e873c.camel@kernel.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 8/30/21 3:36 AM, nicolas saenz julienne wrote: > Hi Jeremy, > sorry for the late reply, I've been on vacation. > > On Thu, 2021-08-26 at 02:15 -0500, Jeremy Linton wrote: > > [...] > >> +static void __iomem *brcm_pcie_map_conf2(struct pci_bus *bus, >> + unsigned int devfn, int where) >> +{ >> + struct pci_config_window *cfg = bus->sysdata; >> + void __iomem *base = cfg->win; >> + int idx; >> + u32 up; >> + >> + /* Accesses to the RC go right to the RC registers if slot==0 */ >> + if (pci_is_root_bus(bus)) >> + return PCI_SLOT(devfn) ? NULL : base + where; >> + >> + /* >> + * Assure the link is up before sending requests downstream. This is done >> + * to avoid sending transactions to EPs that don't exist. Link flap >> + * conditions/etc make this race more probable. The resulting unrecoverable >> + * SERRORs will result in the machine crashing. >> + */ >> + up = readl(base + PCIE_MISC_PCIE_STATUS); >> + if (!(up & PCIE_MISC_PCIE_STATUS_PCIE_DL_ACTIVE_MASK)) >> + return NULL; >> + >> + if (!(up & PCIE_MISC_PCIE_STATUS_PCIE_PHYLINKUP_MASK)) >> + return NULL; > > Couldn't this be integrated in the original brcm_pcie_map_conf()? IIUC there is > nothing ACPI specific about it. It'd also make for less code duplication. That is where I started with this, but it wasn't the linkup check/etc which caused me to hoist it but the fact that if ACPI quirks are enabled they end up statically built into the kernel. While if this host bridge is enabled, it can end up being a module, and the resulting mess I created trying to satisfy the CONFIG variations. I'm not much of a fan of copy/paste programming, but that IMHO ended up being the cleanest here.