Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp2346366ybh; Fri, 24 Jul 2020 10:26:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwk1j3iGTQDIhGDYXyNt81VcVKXLB2hwE3wachXBUIKj+cGD8kX8HMI/GELuSVzm182aOAA X-Received: by 2002:a17:906:b0d3:: with SMTP id bk19mr10630921ejb.167.1595611596802; Fri, 24 Jul 2020 10:26:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595611596; cv=none; d=google.com; s=arc-20160816; b=FsIvUDZGBuZK6fkzuhvEAnRR8WCTKotfXu4SDPVqp7soBoVJo4UAVC6Ipp+VlugWP6 5559Y6X55DEA/l59nUVdDfqpsLq+92HVwnZEXWZuPJs91HKj1Lo29V+jvReYSE7fb+Ht VLmcsLPPp0knEgZ0if/kxbcYk4j1KBF2She1VXZXNeQMlM4GToTdrGk6O4wWNl8tR40h S5eQgbkQ+v8RKngEDtU5/sYkqRg5ApLy/gna/Hf89LtznIP0kVYzNOV5LT3Cpouf0x5C XUDRcha0AxDtvGO97xMWljnVCLspwrAn3BI6ZHsA3FXPZeT9qOHxfATCYuNsB6gKlzmM LXmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=H1RIUBLbUcuD462TPrvj1B8+hbo498ueSP8RxM78g/g=; b=jKpisLg0n0PeFwGXb8/42DDHde7kYdynei5wnSNfgRwPstYtt5e56Huh1QDSvoKv22 SevjZdJzPj/djHLF2grilbj3zGwfLtFVlS5su9af/D9yNHAXodfRNwEmfFfxZslw6OU/ hCi1VmV90blzbbUhSz2dWA4eJ+x9Dn+U28Shp8TQvxdc/j48ubXcGAxgB63Gum6Vrren Kg2uCKjNKKmqWpd3W5cKjwOGYNGapYRs3WjU/IM6wjqkhhrOHbI2Bz4XxM/kkHndFKrw 8j/kbpc1Gd96pu6PKckPdGNRtVxIbTCjY8/iyyWU0XIE5j3ExOqU1P4afs7YLbeDDzF1 DYFA== 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 z11si1077471ejm.102.2020.07.24.10.26.14; Fri, 24 Jul 2020 10:26:36 -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 S1727823AbgGXRXB (ORCPT + 99 others); Fri, 24 Jul 2020 13:23:01 -0400 Received: from mga17.intel.com ([192.55.52.151]:2758 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727091AbgGXRWp (ORCPT ); Fri, 24 Jul 2020 13:22:45 -0400 IronPort-SDR: eJJN1yZ/fL+cnOHDf9n8dPWgpCN+Qa0wPgn9tawGVfMgKk5Hx5wUsxIlpgFpxbyrT/EhAJl+bF cMu6LOGqqRgg== X-IronPort-AV: E=McAfee;i="6000,8403,9692"; a="130823285" X-IronPort-AV: E=Sophos;i="5.75,391,1589266800"; d="scan'208";a="130823285" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jul 2020 10:22:44 -0700 IronPort-SDR: bqpea7Atuo6iNBMQ51ETHMhlOUiEtRbg4SWdBK2OIdkGQ2d0h2IssVs/BK6bF7tlVimvKqljIc 4GfeoA1wWI/A== X-IronPort-AV: E=Sophos;i="5.75,391,1589266800"; d="scan'208";a="302730338" Received: from seokjaeb-mobl1.amr.corp.intel.com (HELO arch-ashland-svkelley.intel.com) ([10.254.24.239]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jul 2020 10:22:43 -0700 From: Sean V Kelley To: bhelgaas@google.com, Jonathan.Cameron@huawei.com, rjw@rjwysocki.net, ashok.raj@kernel.org, tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Sean V Kelley , Qiuxu Zhuo Subject: [RFC PATCH 8/9] PCI/PME: Add RCEC PME handling Date: Fri, 24 Jul 2020 10:22:22 -0700 Message-Id: <20200724172223.145608-9-sean.v.kelley@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200724172223.145608-1-sean.v.kelley@intel.com> References: <20200724172223.145608-1-sean.v.kelley@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Root Complex Event Collectors(RCEC) appear as peers of Root Ports and also have the PME capability. So add RCEC support to the current PME service driver and attach the PME service driver to the RCEC device. Co-developed-by: Qiuxu Zhuo Signed-off-by: Sean V Kelley Signed-off-by: Qiuxu Zhuo --- drivers/pci/pcie/pme.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c index 6a32970bb731..87799166c96a 100644 --- a/drivers/pci/pcie/pme.c +++ b/drivers/pci/pcie/pme.c @@ -310,7 +310,10 @@ static int pcie_pme_can_wakeup(struct pci_dev *dev, void *ign) static void pcie_pme_mark_devices(struct pci_dev *port) { pcie_pme_can_wakeup(port, NULL); - if (port->subordinate) + + if (pci_pcie_type(port) == PCI_EXP_TYPE_RC_EC) + pcie_walk_rcec(port, pcie_pme_can_wakeup, NULL); + else if (port->subordinate) pci_walk_bus(port->subordinate, pcie_pme_can_wakeup, NULL); } @@ -320,10 +323,15 @@ static void pcie_pme_mark_devices(struct pci_dev *port) */ static int pcie_pme_probe(struct pcie_device *srv) { - struct pci_dev *port; + struct pci_dev *port = srv->port; struct pcie_pme_service_data *data; int ret; + /* Limit to Root Ports or Root Complex Event Collectors */ + if ((pci_pcie_type(port) != PCI_EXP_TYPE_RC_EC) && + (pci_pcie_type(port) != PCI_EXP_TYPE_ROOT_PORT)) + return -ENODEV; + data = kzalloc(sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; @@ -333,7 +341,6 @@ static int pcie_pme_probe(struct pcie_device *srv) data->srv = srv; set_service_data(srv, data); - port = srv->port; pcie_pme_interrupt_enable(port, false); pcie_clear_root_pme_status(port); @@ -445,7 +452,7 @@ static void pcie_pme_remove(struct pcie_device *srv) static struct pcie_port_service_driver pcie_pme_driver = { .name = "pcie_pme", - .port_type = PCI_EXP_TYPE_ROOT_PORT, + .port_type = PCIE_ANY_PORT, .service = PCIE_PORT_SERVICE_PME, .probe = pcie_pme_probe, -- 2.27.0