Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp332935ybh; Wed, 22 Jul 2020 01:39:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwXfBkTtxgyoLONzKWduUAOczwmo3ezm766JTUAZLdL1fqZbWTXkXqkmt/0gxygeLIJnvi5 X-Received: by 2002:aa7:c24d:: with SMTP id y13mr30885755edo.123.1595407141262; Wed, 22 Jul 2020 01:39:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595407141; cv=none; d=google.com; s=arc-20160816; b=aElBR/OGlNSocuXlWnOPa/BHHSDxUbs+dXLI9PQhsxiU79ceemYTkjoHkCy941PW6M dJpO6huGBUPijKuUjvbAb/6p5COIbzvjqXK7KcfWyWZ/wLfuqAUoSTVNNI/o0PP32DvA 2ic6Av7pdze4wFUV/R7QVEO+xsgQ9xTNGUSJj1Merk5K96+UD9TKJ/icLI8lTFogzrm9 XgppMlpCkh0NbkcdWvAGyxH10QuRyrgVEX9H+DQiw5xp0TL48sZblyxMo5v3P42P5+BJ 195jYddGfK1nl17R8cWab1m2eW+xWc0HY7XNVHTcmGcWJM9UmE8FUeA6blPt+kWNrDnc AFqA== 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 :dkim-signature; bh=9HO2KdHTG8CWRvUWixHHguAvRh8U1JUtcNnQoDE9NJ0=; b=BC+D5+rY4uP/o1kBjw+JrLWW8mV5Ldln32mdX/d0wspoF8aIoOLu/Z0oGU+O+HM3iz aIBZd0cnEcExJ0hDJv4ca20KHj+5egWPJA57kVy4RPABvaiyfxlxpU/zowWBETTl4CSL Kh+t+O9wPeplh/euxY37k9jNsJ5v6wZw/31rMwRMCKhB+BkXg4l6+z+4SyAmcBwq4myY BPrYfK80ZX2GNn1KGKiUUiArrtIzdLZXpgxca3Xr/H1snAz5lqOLrNTN9fgVQEY4H7Ut kOpN5j+rBuaGCE2g6wmk6ijm2iefuEiAo3HWYOKI24TQkWdOjY/2qwDvktVcoY9RbA0U a/Cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=B5mjbVyJ; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u23si13878265eds.479.2020.07.22.01.38.38; Wed, 22 Jul 2020 01:39:01 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=B5mjbVyJ; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730422AbgGVIfV (ORCPT + 99 others); Wed, 22 Jul 2020 04:35:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726157AbgGVIfU (ORCPT ); Wed, 22 Jul 2020 04:35:20 -0400 Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE9BAC0619DC; Wed, 22 Jul 2020 01:35:20 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id 1so801615pfn.9; Wed, 22 Jul 2020 01:35:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9HO2KdHTG8CWRvUWixHHguAvRh8U1JUtcNnQoDE9NJ0=; b=B5mjbVyJZ28XLKNNuTPsCQ2bHZiK3f7R81S9TV/ugmZxnh3o0zlKPuacx5FU+trUnb AcdY3P0T2l/jeHkfkGAngdXYHBrjLDyafgM3ktkEoGbqnI4YUqHr1WB2at1x0tcvWATx SQxzG9FlSh0oW2Q4wZIzEsJRXW4WaqRLs7ip5O+qnqA/fc68BtE0XL5tdc64WYBsiLoh qErNJHJuVRC1va4D0SMTSQIduCSWdWop7Z4H9WRoNvWFqKBLZXhxCMTl4G8PmMKbdGZF nrg7PtG1/xXE1n6nPnSsVEPg9SmvmXtWCprIRiANxke/oU8QZ5DA673Pcvkq/MawEE+W ykyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9HO2KdHTG8CWRvUWixHHguAvRh8U1JUtcNnQoDE9NJ0=; b=FMmENo3Lr8M6qInoJLbrPKRj36RRThqE+uW9Pu9lyFiLg5lujjOw3W/NH+2rU1IR2+ vI7HfiHLC4vwua8KhL/EeBaxXaEZ6Ipqo11ukKLX/H9KnDPyHrpJOAsxnCF3VifWBxCf 4aTq4/GS6QY9/buAF1kEtg4k3cRRMAUzSlqHqvUxs05WTdKm7wq1HSqzpazeY1ISljb7 IEohqW0aQIcQMMqA7MkF6OvTpSidJeBs8pTAPQG98zbWzYRQ/yS8FGaaohOIcfbVImlF DB7yzHIxsUTNQgY9ftphpBW9TgjMdvpak2aZmINLTByQCM1VxHKFFRgH+GHgNDdFlGiH QnKA== X-Gm-Message-State: AOAM531BrknNeB9/lnVCCxl7yp0HJjtuG/wLX0MqIK6+e1Fgn0F+rnfI ekxRD7ETczrJ1xFEXmo6GCk= X-Received: by 2002:a62:8342:: with SMTP id h63mr26886028pfe.183.1595406920209; Wed, 22 Jul 2020 01:35:20 -0700 (PDT) Received: from varodek.iballbatonwifi.com ([103.105.153.67]) by smtp.gmail.com with ESMTPSA id g13sm5777319pje.29.2020.07.22.01.35.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2020 01:35:19 -0700 (PDT) From: Vaibhav Gupta To: Bjorn Helgaas , Bjorn Helgaas , Bjorn Helgaas , Vaibhav Gupta , Jens Axboe , Joshua Morris , Philip Kelleher , Damien Le Moal Cc: Vaibhav Gupta , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kernel-mentees@lists.linuxfoundation.org, Shuah Khan Subject: [PATCH v3 3/3] skd: use generic power management Date: Wed, 22 Jul 2020 14:03:35 +0530 Message-Id: <20200722083335.50068-4-vaibhavgupta40@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200722083335.50068-1-vaibhavgupta40@gmail.com> References: <20200722083335.50068-1-vaibhavgupta40@gmail.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 Drivers using legacy power management .suspen()/.resume() callbacks have to manage PCI states and device's PM states themselves. They also need to take care of standard configuration registers. Switch to generic power management framework using a single "struct dev_pm_ops" variable to take the unnecessary load from the driver. This also avoids the need for the driver to directly call most of the PCI helper functions and device power state control functions, as through the generic framework PCI Core takes care of the necessary operations, and drivers are required to do only device-specific jobs. Signed-off-by: Vaibhav Gupta --- drivers/block/skd_main.c | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/drivers/block/skd_main.c b/drivers/block/skd_main.c index 51569c199a6c..7f2d42900b38 100644 --- a/drivers/block/skd_main.c +++ b/drivers/block/skd_main.c @@ -3315,10 +3315,11 @@ static void skd_pci_remove(struct pci_dev *pdev) return; } -static int skd_pci_suspend(struct pci_dev *pdev, pm_message_t state) +static int __maybe_unused skd_pci_suspend(struct device *dev) { int i; struct skd_device *skdev; + struct pci_dev *pdev = to_pci_dev(dev); skdev = pci_get_drvdata(pdev); if (!skdev) { @@ -3337,18 +3338,15 @@ static int skd_pci_suspend(struct pci_dev *pdev, pm_message_t state) if (skdev->pcie_error_reporting_is_enabled) pci_disable_pcie_error_reporting(pdev); - pci_release_regions(pdev); - pci_save_state(pdev); - pci_disable_device(pdev); - pci_set_power_state(pdev, pci_choose_state(pdev, state)); return 0; } -static int skd_pci_resume(struct pci_dev *pdev) +static int __maybe_unused skd_pci_resume(struct device *dev) { int i; int rc = 0; struct skd_device *skdev; + struct pci_dev *pdev = to_pci_dev(dev); skdev = pci_get_drvdata(pdev); if (!skdev) { @@ -3356,16 +3354,8 @@ static int skd_pci_resume(struct pci_dev *pdev) return -1; } - pci_set_power_state(pdev, PCI_D0); - pci_enable_wake(pdev, PCI_D0, 0); - pci_restore_state(pdev); + device_wakeup_disable(dev); - rc = pci_enable_device(pdev); - if (rc) - return rc; - rc = pci_request_regions(pdev, DRV_NAME); - if (rc) - goto err_out; rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); if (rc) rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); @@ -3374,7 +3364,6 @@ static int skd_pci_resume(struct pci_dev *pdev) goto err_out_regions; } - pci_set_master(pdev); rc = pci_enable_pcie_error_reporting(pdev); if (rc) { dev_err(&pdev->dev, @@ -3427,10 +3416,6 @@ static int skd_pci_resume(struct pci_dev *pdev) pci_disable_pcie_error_reporting(pdev); err_out_regions: - pci_release_regions(pdev); - -err_out: - pci_disable_device(pdev); return rc; } @@ -3450,13 +3435,14 @@ static void skd_pci_shutdown(struct pci_dev *pdev) skd_stop_device(skdev); } +static SIMPLE_DEV_PM_OPS(skd_pci_pm_ops, skd_pci_suspend, skd_pci_resume); + static struct pci_driver skd_driver = { .name = DRV_NAME, .id_table = skd_pci_tbl, .probe = skd_pci_probe, .remove = skd_pci_remove, - .suspend = skd_pci_suspend, - .resume = skd_pci_resume, + .driver.pm = &skd_pci_pm_ops, .shutdown = skd_pci_shutdown, }; -- 2.27.0