Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3666780pxf; Mon, 22 Mar 2021 11:55:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxBoj7P+faPctJYrLMRwvVAsj+iwqElqZ65vJpBkEGKwYpDapFGFvbxQXVImKBjHIJRr/8R X-Received: by 2002:aa7:cf90:: with SMTP id z16mr1013426edx.273.1616439327353; Mon, 22 Mar 2021 11:55:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616439327; cv=none; d=google.com; s=arc-20160816; b=j2U4Z2eG/R9HOcGs1yqxB1sGtdBgQDTy3Z6yBOmZXMav8Mw4OZnwWhk61szj4AANSK SPBz1Irb2HPE+lhHw/E7niDavnjBeSQWyfy/uxM8JhX/Pjb2O//EKaRZCpdk4Mo4ueXw ZrnCX4dRb/LufQ3HG4KR+bwqRpn8McEQ2QmG0JqkKB86q+bvEC3a/W4hoMJkPSemrSjv h0Jl8wZjVAWCEqMlHuRlJIj84Zg5EMjI9GYkHEHdsix9qFR8TNErmKo94VOnciGTcpl9 JAkvqxx3CLmDL8UQJVdf+l+gGnjY69q6eD2BlSkkX7VWJ1dlco0mjDrJi0kWx+s2Nj7g x1Ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=HXJ4s13Tsp/MjYpM+I7B4UlXWFyG+YTtLAssaWqnYd8=; b=A1ebsv3kdodiOacmS966Ldq3gjVZDEDns1u+CjDEXeHgluBjSVbTsV41w/TrD6vGfc tgGhNupzfO3A0wbzZOr0Awx6iEFCg7i6IhRGcqa7ReRdmW/W8qYu9HE5eb4ycr8zdShy ZpfHLbXAxyQJGK8LbMGLn+3tKQygs9TE7Dvcwh/iOaJ70nVm4ls8BKJSJWu24r9YP4Nn 0QjiVHoiT/9eM4b00XYV3gx7ZNNoEqZiiB9M20sokV7V4t2n3EUq2Q4LHMnQTG8oh62D O/06HvRkz5zOQ7yDhIHiUca0Ddja+1DAEl7DfmsDSfGMoHmtxuP98iyxsFL/LOqd0zzj qT9g== 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n20si11920075ejx.104.2021.03.22.11.55.04; Mon, 22 Mar 2021 11:55: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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232263AbhCVSyL (ORCPT + 99 others); Mon, 22 Mar 2021 14:54:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:37372 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231661AbhCVSxk (ORCPT ); Mon, 22 Mar 2021 14:53:40 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id EDCCF619A0; Mon, 22 Mar 2021 18:53:39 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1lOPZT-0038p5-4e; Mon, 22 Mar 2021 18:46:35 +0000 From: Marc Zyngier To: Lorenzo Pieralisi , Bjorn Helgaas Cc: Frank Wunderlich , Thierry Reding , Thomas Gleixner , Rob Herring , Will Deacon , "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , Michael Kelley , Wei Liu , Thierry Reding , Jonathan Hunter , Ryder Lee , Marek Vasut , Yoshihiro Shimoda , Michal Simek , Paul Walmsley , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-hyperv@vger.kernel.org, linux-tegra@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-renesas-soc@vger.kernel.org, kernel-team@android.com Subject: [PATCH v2 12/15] PCI/MSI: Let PCI host bridges declare their reliance on MSI domains Date: Mon, 22 Mar 2021 18:46:11 +0000 Message-Id: <20210322184614.802565-13-maz@kernel.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210322184614.802565-1-maz@kernel.org> References: <20210322184614.802565-1-maz@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: lorenzo.pieralisi@arm.com, bhelgaas@google.com, frank-w@public-files.de, treding@nvidia.com, tglx@linutronix.de, robh@kernel.org, will@kernel.org, kys@microsoft.com, haiyangz@microsoft.com, sthemmin@microsoft.com, mikelley@microsoft.com, wei.liu@kernel.org, thierry.reding@gmail.com, jonathanh@nvidia.com, ryder.lee@mediatek.com, marek.vasut+renesas@gmail.com, yoshihiro.shimoda.uh@renesas.com, michal.simek@xilinx.com, paul.walmsley@sifive.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-hyperv@vger.kernel.org, linux-tegra@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-renesas-soc@vger.kernel.org, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The new 'no_msi' attribute solves the problem of advertising the lack of MSI capability for host bridges that know for sure that there will be no MSI for their end-points. However, there is a whole class of host bridges that cannot know whether MSIs will be provided or not, as they rely on other blocks to provide the MSI functionnality, using MSI domains. This is the case for example on systems that use the ARM GIC architecture. Introduce a new attribute ('msi_domain') indicating that implicit dependency, and use this property to set the NO_MSI flag when no MSI domain is found at probe time. Acked-by: Bjorn Helgaas Signed-off-by: Marc Zyngier --- drivers/pci/probe.c | 2 +- include/linux/pci.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 146bd85c037e..bac9f69a06a8 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -925,7 +925,7 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge) device_enable_async_suspend(bus->bridge); pci_set_bus_of_node(bus); pci_set_bus_msi_domain(bus); - if (bridge->no_msi) + if (bridge->no_msi || (bridge->msi_domain && !bus->dev.msi_domain)) bus->bus_flags |= PCI_BUS_FLAGS_NO_MSI; if (!parent) diff --git a/include/linux/pci.h b/include/linux/pci.h index 48605cca82ae..d322d00db432 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -551,6 +551,7 @@ struct pci_host_bridge { unsigned int preserve_config:1; /* Preserve FW resource setup */ unsigned int size_windows:1; /* Enable root bus sizing */ unsigned int no_msi:1; /* Bridge has no MSI support */ + unsigned int msi_domain:1; /* Bridge wants MSI domain */ /* Resource alignment requirements */ resource_size_t (*align_resource)(struct pci_dev *dev, -- 2.29.2