Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1690945ybz; Thu, 16 Apr 2020 13:46:54 -0700 (PDT) X-Google-Smtp-Source: APiQypKVbhfuckeUHaCUnQPSPVGFCjnDq2QXXV0mpaq3UQUdhlVxq6t1U9F4FMJs7sShnckw0BOp X-Received: by 2002:a17:906:5248:: with SMTP id y8mr10577376ejm.129.1587070014453; Thu, 16 Apr 2020 13:46:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587070014; cv=none; d=google.com; s=arc-20160816; b=GPVE3ENros647x0YM++WTYoXlUrd3ip4b0YPw35VKmh5FsZoAGvyxHr5MqlBIk9MQM nPFSoJYztGaFIqT4gA6CYSh4ssVmyZSZl5ym/wssAVy49ve2dljYI78MpcU0mykbu0bN siAiLNjGrx9hndRFstX1Nbw2XM4SYxrqDWoe8S96qurPD33afDbLTPZgiJ/++KVKb/P6 +OLxHDYJf/wSF8371U8bKrZLgrav7w86GDAnUjMrS2xETFeS03cQP545CbBKOroHvm2b NUkLJMYbXo2xIwrOMtGb9T33ur9+Sh/DBOaIKFzX/2A0RwyIdL12AUqNFW2F6wb1N93n NuIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=l+9dQZ3yfyYMRCCQVPUpLVOj7itsBEf6HFtxc+3o5ho=; b=hmuTMmoaBS+I4nJJSEBfghBJzTDDcZJi/DNzlLIy5ypYUBNb/L9I0RGu3XwtbLpuw3 T5NkT5PqeD3YsqQ93khPVWIuh6LEou7oVv0B8JQVGamvJ6u/5fIhHATfXlHgOBWBf4/C 1+YDfDhuxwlxtwZTMTnuLj5aJ+DtpAfULCKtWV9OABAGXa6agIbI669/7atuuxjZELKo aNQEyxTllejSNmlYZa8yp0wv0ymihY7MgvaeVkDalkM6EUb1WO9D8PsUwT1yllaN8sGK ARCSlGejXc4u6VlYph0pI5MfBGKkMiQSiKsTqlgyxEdYhIRT9podinrRI2WkRhXSvjcx Cbhw== 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 c18si12629854ejn.465.2020.04.16.13.46.31; Thu, 16 Apr 2020 13:46:54 -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 S1729194AbgDPUMk (ORCPT + 99 others); Thu, 16 Apr 2020 16:12:40 -0400 Received: from mga02.intel.com ([134.134.136.20]:9825 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726523AbgDPUMj (ORCPT ); Thu, 16 Apr 2020 16:12:39 -0400 IronPort-SDR: 6ZMKpcZC414a1BKAgO2Y1kEStRKkdheTB2pyluIjuy9/Wsq9vIwO4HtZd80EqTDcrcCQbwLyuP 3rotnZAB3NGQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Apr 2020 13:12:39 -0700 IronPort-SDR: r7Og5Oq2XCEbwNdn2DsqVN0NlTMRI+7z5XW0KToc2Tr/tmkoUXOe5tkG+DfeBCdZdzt5gajFsu V5/GechOGFhg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,392,1580803200"; d="scan'208";a="257345226" Received: from unknown (HELO nsgsw-wilsonpoint.lm.intel.com) ([10.232.116.102]) by orsmga006.jf.intel.com with ESMTP; 16 Apr 2020 13:12:38 -0700 From: Jon Derrick To: Bjorn Helgaas Cc: Jon Derrick , Russell Currey , Sam Bobroff , "Oliver O'Halloran" , Bjorn Helgaas , Kuppuswamy Sathyanarayanan , Olof Johansson , Keith Busch , Frederick Lawler , linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] PCI/DPC: Allow Non-ACPI Native ports to use DPC Date: Thu, 16 Apr 2020 13:59:15 -0600 Message-Id: <1587067157-2291-1-git-send-email-jonathan.derrick@intel.com> X-Mailer: git-send-email 1.8.3.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some platforms have a mix of ports whose capabilities can be negotiated by _OSC, and some ports which are not described by ACPI and instead managed by Native drivers. The existing Firmware-First HEST model can incorrectly tag these Native, Non-ACPI ports as Firmware-First capable ports by advertising the HEST Global flag and specifying the type and class (aer_hest_parse). This ultimately can lead to bad situations if the BIOS or port firmware leaves DPC preconfigured and the Linux DPC driver is unable to bind to the port to handle DPC events. This patch adds the check for Native DPC in the port's host bridge in order to allow DPC services to bind to the port. Signed-off-by: Jon Derrick --- drivers/pci/pcie/dpc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index 7621704..a1e355d 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -281,10 +281,12 @@ static int dpc_probe(struct pcie_device *dev) { struct pci_dev *pdev = dev->port; struct device *device = &dev->device; + struct pci_host_bridge *host = pci_find_host_bridge(pdev->bus); int status; u16 ctl, cap; - if (pcie_aer_get_firmware_first(pdev) && !pcie_ports_dpc_native) + if (pcie_aer_get_firmware_first(pdev) && !pcie_ports_dpc_native && + !host->native_dpc) return -ENOTSUPP; status = devm_request_threaded_irq(device, dev->irq, dpc_irq, -- 1.8.3.1