Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp206666pxb; Thu, 14 Jan 2021 04:00:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJxsCzAvlQSvGfic3XcyyypfobHtPHeqMMT7MU3z3f3PfhrzV6qpYFa7djC7f4xHxAuS+er9 X-Received: by 2002:a17:906:a20e:: with SMTP id r14mr2333532ejy.404.1610625625490; Thu, 14 Jan 2021 04:00:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610625625; cv=none; d=google.com; s=arc-20160816; b=WzVQDzduatfTgsFpINUdQZevhMLYnoiX2vezsVVTy7+4VOAQeGXIkWmHhtumpN/rhY KE40egfNZL1Um4aXM4DCvj1jmAT3IoSPl+62f6oeHQD3H76198UGUxt+Eq/LxAnU5sQw IINb1XAPhvCYYwV369vsScLbXv8XUCyYu7uDpHdpMZWa+V2xNIG1YFhwGt4VPgnKJyuq /oAHBNmq0CjpXIAIfL2qTPl8oOg0H5mx5OwYJvlO7kRKxuHqMx6Z3KT+9sMNP0Z6WMNu pdvyocd1C/w/eNiI/1GuBilSHF/y7I68AmosFCnH6/hEo6BcK/mEAwouLnHeYHpqj8ls QgWw== 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=6pH8Qxja5JY4RQXz/fkwX0dken3Vg7X5Veu7c4FYNmA=; b=y1CvTID/3rW8EzJOwXdRjHQ5X2BITJMAmM2cxN4+hhhsmXV2T5UKowhVw30FshDNo8 VrCHlwZ7kW+tEyFsGKGjxBW9y/eCi6Fbb2zrNzo2ps/2bXoUKLFKWTR+BAio72lv+g7D FqG60xUicf4+xb4hJluJaiDoCJ/xg4S1IHak3LXonjMyVlF1QJuuipPqMf3l9DJqzrI9 0/s2avNtO4JySK6SXyR6976UqCXrWqeYXZM3HasGNZeNaNrGpQFpJjYqK/OL1drupD1d qGS4i95L5+Ccmc39JNV1TpzNE5PDZm02+Mb0RzbXOxb46ig39HH9zEBms6aBAYZ5+Ruy nDkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UKi4NOss; 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 e5si2566237edr.30.2021.01.14.04.00.00; Thu, 14 Jan 2021 04:00:25 -0800 (PST) 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=UKi4NOss; 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 S1728727AbhANL60 (ORCPT + 99 others); Thu, 14 Jan 2021 06:58:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60510 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727210AbhANL6W (ORCPT ); Thu, 14 Jan 2021 06:58:22 -0500 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1AC55C061574; Thu, 14 Jan 2021 03:57:36 -0800 (PST) Received: by mail-pj1-x1033.google.com with SMTP id cq1so2952983pjb.4; Thu, 14 Jan 2021 03:57:36 -0800 (PST) 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=6pH8Qxja5JY4RQXz/fkwX0dken3Vg7X5Veu7c4FYNmA=; b=UKi4NOssNVNwkZ0FzElGxaGgRmlq5ovk60o5FGxtMhkP40IbkQYMtIdQPpWoeitkXl OD8v7lok8Xi/o7Lo6tfB1D0AjTC+h3XEbGt/8Ij7nPMJ9Z7bEz8Vg2VOa/W1m+PK0bPp xY/39qd3kn+xZf3u1jy5aHYr7KgBZmThDXXKry5aFQYmn0ycEkaWksqjYRjU20JliWPP V5StqLPPIZz1d1Yo72yQntlHRcgHfrarDHDrTEBOwNbXOq1DoLHz4QENX0s544i1LKTj garTsBcn9nn+/cSGd9hPSSs5IYI9p3haj+BjUs3f86ycFawK3r8VRXCFH1VpLRxJlqj8 RFXg== 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=6pH8Qxja5JY4RQXz/fkwX0dken3Vg7X5Veu7c4FYNmA=; b=K+yV6AixTKRESp4N/ch9UcbXIMWeuAISMC2sNxmmRcPGIVRW92QkCYfRXpGBn5zuAx brm96WTYG8BpQ64DB22fZxPJd1pAMHmdvyYObu/aT3M1alRG1nWYP+Sr9RhBLf1djdDp YiApz0Pou+6YHs+K6Ube7se48+meNoD11oUw8veFTjqp+mGSiF8WHMe6FtP/gwxEaaer 476OxQ5i1CkwInFKlGu5F92cuFvYVXxsujvYvomkkTiMR17cL41IyJd/YaAJKsWQ2ihv ptXjVhYlwk1wc5YJjVPlDxdbtDJb6ar5fbEpKGd5SFAomHhGUbd21r+P2WFHjuqaE0tt yDAw== X-Gm-Message-State: AOAM533fzPBBXWiquB5FWAxGdyUHxsCAotqbRmMOUssU6dSF7c1Q1aUY KBeOmoYy6z0mziLi4dDmt3mn581aYqZqWw== X-Received: by 2002:a17:90b:94b:: with SMTP id dw11mr4670586pjb.12.1610625455705; Thu, 14 Jan 2021 03:57:35 -0800 (PST) Received: from varodek.localdomain ([223.190.37.127]) by smtp.gmail.com with ESMTPSA id t4sm5107914pfe.212.2021.01.14.03.57.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Jan 2021 03:57:35 -0800 (PST) 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 v4 1/3] mtip32xx: use generic power management Date: Thu, 14 Jan 2021 17:24:21 +0530 Message-Id: <20210114115423.52414-2-vaibhavgupta40@gmail.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210114115423.52414-1-vaibhavgupta40@gmail.com> References: <20200722083335.50068-1-vaibhavgupta40@gmail.com> <20210114115423.52414-1-vaibhavgupta40@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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/mtip32xx/mtip32xx.c | 54 +++++++------------------------ 1 file changed, 12 insertions(+), 42 deletions(-) diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c index 53ac59d19ae5..de1ac3366b97 100644 --- a/drivers/block/mtip32xx/mtip32xx.c +++ b/drivers/block/mtip32xx/mtip32xx.c @@ -4232,14 +4232,13 @@ static void mtip_pci_remove(struct pci_dev *pdev) * 0 Success * <0 Error */ -static int mtip_pci_suspend(struct pci_dev *pdev, pm_message_t mesg) +static int __maybe_unused mtip_pci_suspend(struct device *dev) { int rv = 0; - struct driver_data *dd = pci_get_drvdata(pdev); + struct driver_data *dd = dev_get_drvdata(dev); if (!dd) { - dev_err(&pdev->dev, - "Driver private datastructure is NULL\n"); + dev_err(dev, "Driver private datastructure is NULL\n"); return -EFAULT; } @@ -4247,21 +4246,8 @@ static int mtip_pci_suspend(struct pci_dev *pdev, pm_message_t mesg) /* Disable ports & interrupts then send standby immediate */ rv = mtip_block_suspend(dd); - if (rv < 0) { - dev_err(&pdev->dev, - "Failed to suspend controller\n"); - return rv; - } - - /* - * Save the pci config space to pdev structure & - * disable the device - */ - pci_save_state(pdev); - pci_disable_device(pdev); - - /* Move to Low power state*/ - pci_set_power_state(pdev, PCI_D3hot); + if (rv < 0) + dev_err(dev, "Failed to suspend controller\n"); return rv; } @@ -4273,42 +4259,25 @@ static int mtip_pci_suspend(struct pci_dev *pdev, pm_message_t mesg) * 0 Success * <0 Error */ -static int mtip_pci_resume(struct pci_dev *pdev) +static int __maybe_unused mtip_pci_resume(struct device *dev) { int rv = 0; struct driver_data *dd; - dd = pci_get_drvdata(pdev); + dd = dev_get_drvdata(dev); if (!dd) { - dev_err(&pdev->dev, - "Driver private datastructure is NULL\n"); + dev_err(dev, "Driver private datastructure is NULL\n"); return -EFAULT; } - /* Move the device to active State */ - pci_set_power_state(pdev, PCI_D0); - - /* Restore PCI configuration space */ - pci_restore_state(pdev); - - /* Enable the PCI device*/ - rv = pcim_enable_device(pdev); - if (rv < 0) { - dev_err(&pdev->dev, - "Failed to enable card during resume\n"); - goto err; - } - pci_set_master(pdev); - /* * Calls hbaReset, initPort, & startPort function * then enables interrupts */ rv = mtip_block_resume(dd); if (rv < 0) - dev_err(&pdev->dev, "Unable to resume\n"); + dev_err(dev, "Unable to resume\n"); -err: clear_bit(MTIP_DDF_RESUME_BIT, &dd->dd_flag); return rv; @@ -4339,14 +4308,15 @@ static const struct pci_device_id mtip_pci_tbl[] = { { 0 } }; +static SIMPLE_DEV_PM_OPS(mtip_pci_pm_ops, mtip_pci_suspend, mtip_pci_resume); + /* Structure that describes the PCI driver functions. */ static struct pci_driver mtip_pci_driver = { .name = MTIP_DRV_NAME, .id_table = mtip_pci_tbl, .probe = mtip_pci_probe, .remove = mtip_pci_remove, - .suspend = mtip_pci_suspend, - .resume = mtip_pci_resume, + .driver.pm = &mtip_pci_pm_ops, .shutdown = mtip_pci_shutdown, }; -- 2.30.0