Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp5165403rwr; Sun, 23 Apr 2023 23:05:13 -0700 (PDT) X-Google-Smtp-Source: AKy350a5YY6xQKi8oPkfGUbNCJnNE/YvdgW7qvG91cEYOtcMpgudx51o57HtJHIK/Z6yB1JRGqhE X-Received: by 2002:a17:903:2287:b0:1a6:a405:f714 with SMTP id b7-20020a170903228700b001a6a405f714mr12525657plh.63.1682316313498; Sun, 23 Apr 2023 23:05:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682316313; cv=none; d=google.com; s=arc-20160816; b=pUCL1ZwMMngmtSlb4Gs3ejmdiOpmehs/PamRNFPy6EovwAbTI/1n2A5PsQQu8GPutQ RAew/Ud58UODFG36MQrcP+pqXH7llckQdFL36805S3tR6lLTtCTF+JArH8NzzDstNbp8 IqszRriwXxS4eDwx5cHz6L72r/FZ79Z5Fmrh15dqTrQKfD42QXwAFheTnW7PCnhNJFMg r+DVH4bisCoxeAKLTp5yaVZtBBi9Ev14TIc9HNOH/xfz1zEMgev3OeyD/aBCpV5n/h/Z 2r6qQG/jBGDlNoN9zZ45FwdS2Mmif9AoEf5nlBrJz5YChEaUa2wRdd3H9q2ETKGAIDaU /x+A== 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 :dkim-signature; bh=2qEQYP13tZpyCbi7WXRIl7qfv2OsZb3GIRlLQR7V/1A=; b=mcyqNhz8+USMbd6gi4aowL+/n94jQK7nRICgIcBPLV2venOdsChikgp8b3gDrZRuOT rCQ5b3I1z+1YNly7zMB6OajZlgIzsphqg9PY2vBY6kQM9CafWucb2cpcXb4+FzBqarPv gnNF8jHnlcHpCgNbfZK0stpp3sZ2Iq9f7UreuaNFk6FLL5y8IAduKr2s5HOZOs2LKOxh W2Emeze1rIpeM4I0a3iH3joG4/Y3u3MGqbkWxJSqipMh9OjjB2r1uDff+32xvPThWXVv V4nwk8IYjTpkA0mxKFLPlzRE4yv2Pn9h64VICPdow3OA6RPgYmL6IM7Ui/Whf7JGOcUX 1FzQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=TJXWyX9M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g10-20020a170902d1ca00b0019ce4e2be99si8365402plb.193.2023.04.23.23.05.02; Sun, 23 Apr 2023 23:05:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=TJXWyX9M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231236AbjDXGBc (ORCPT + 99 others); Mon, 24 Apr 2023 02:01:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59554 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231710AbjDXGAv (ORCPT ); Mon, 24 Apr 2023 02:00:51 -0400 Received: from smtp-relay-canonical-1.canonical.com (smtp-relay-canonical-1.canonical.com [185.125.188.121]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 67CB74480; Sun, 23 Apr 2023 23:00:10 -0700 (PDT) Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id BD4B0418E2; Mon, 24 Apr 2023 05:53:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1682315622; bh=2qEQYP13tZpyCbi7WXRIl7qfv2OsZb3GIRlLQR7V/1A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TJXWyX9MpRB/r7vI9lauGYVMyWm4pp09Iewm/hvOAHbGLd3Cj5G6+OqLGfQf+YKjs E0gBDs+WqtiNqrl2sRVYPpUSTHJ0uitmsYgAzvO0X863z6Hg+NTKTlH4YlJ6234wZ+ 1o0j/mO4NxvBU/wbgckmMK+x0S+eg+iMGfVwBKSulElv98+hneZHZ0mkgfSaCLZzfF V7UXx8jcUHfTD0+z6MfT3Fk2bTZNpKCoodHVhQB4nnmT8ExPB5NsznYndTpGHhtZT0 hI44RR7Jvgi4zTIdPtJ3r9Mv7llif12o85JOm4vmDMGjW8v50a6Ba/Wf3IUxP8QCqz EshUGWLyoEKIg== From: Kai-Heng Feng To: bhelgaas@google.com Cc: mika.westerberg@linux.intel.com, koba.ko@canonical.com, sathyanarayanan.kuppuswamy@linux.intel.com, Kai-Heng Feng , Mahesh J Salgaonkar , "Oliver O'Halloran" , linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/3] PCI/AER: Disable AER interrupt on suspend Date: Mon, 24 Apr 2023 13:52:48 +0800 Message-Id: <20230424055249.460381-2-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230424055249.460381-1-kai.heng.feng@canonical.com> References: <20230424055249.460381-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PCIe service that shares IRQ with PME may cause spurious wakeup on system suspend. PCIe Base Spec 5.0, section 5.2 "Link State Power Management" states that TLP and DLLP transmission is disabled for a Link in L2/L3 Ready (D3hot), L2 (D3cold with aux power) and L3 (D3cold), so we don't lose much here to disable AER during system suspend. This is very similar to previous attempts to suspend AER and DPC [1], but with a different reason. [1] https://lore.kernel.org/linux-pci/20220408153159.106741-1-kai.heng.feng@canonical.com/ Link: https://bugzilla.kernel.org/show_bug.cgi?id=216295 Reviewed-by: Mika Westerberg Signed-off-by: Kai-Heng Feng --- drivers/pci/pcie/aer.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 1420e1f27105..9c07fdbeb52d 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -1356,6 +1356,26 @@ static int aer_probe(struct pcie_device *dev) return 0; } +static int aer_suspend(struct pcie_device *dev) +{ + struct aer_rpc *rpc = get_service_data(dev); + struct pci_dev *pdev = rpc->rpd; + + aer_disable_irq(pdev); + + return 0; +} + +static int aer_resume(struct pcie_device *dev) +{ + struct aer_rpc *rpc = get_service_data(dev); + struct pci_dev *pdev = rpc->rpd; + + aer_enable_irq(pdev); + + return 0; +} + /** * aer_root_reset - reset Root Port hierarchy, RCEC, or RCiEP * @dev: pointer to Root Port, RCEC, or RCiEP @@ -1420,6 +1440,8 @@ static struct pcie_port_service_driver aerdriver = { .service = PCIE_PORT_SERVICE_AER, .probe = aer_probe, + .suspend = aer_suspend, + .resume = aer_resume, .remove = aer_remove, }; -- 2.34.1