From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751772AbcFEOse (ORCPT ); Sun, 5 Jun 2016 10:48:34 -0400 Received: from mga01.intel.com ([192.55.52.88]:3869 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750954AbcFEOsd (ORCPT ); Sun, 5 Jun 2016 10:48:33 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,422,1459839600"; d="scan'208";a="714228243" Message-ID: <1465138184.1767.80.camel@linux.intel.com> Subject: Re: [PATCH v1 1/1] mei: me: use managed functions pcim_* and devm_* From: Andy Shevchenko To: Tomas Winkler , linux-kernel@vger.kernel.org Date: Sun, 05 Jun 2016 17:49:44 +0300 In-Reply-To: <1454335233-122281-1-git-send-email-andriy.shevchenko@linux.intel.com> References: <1454335233-122281-1-git-send-email-andriy.shevchenko@linux.intel.com> Organization: Intel Finland Oy Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.20.2-2 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2016-02-01 at 16:00 +0200, Andy Shevchenko wrote: > This makes the error handling much more simpler than open-coding > everything and > in addition makes the probe function smaller an tidier. > It's already one release cycle passed. What is the destiny of this change? > Signed-off-by: Andy Shevchenko > --- >  drivers/misc/mei/hw-me.c  |  4 ++-- >  drivers/misc/mei/pci-me.c | 40 ++++++++---------------------------- > ---- >  2 files changed, 10 insertions(+), 34 deletions(-) > > diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c > index 25b1997..e26c4f4 100644 > --- a/drivers/misc/mei/hw-me.c > +++ b/drivers/misc/mei/hw-me.c > @@ -1336,8 +1336,8 @@ struct mei_device *mei_me_dev_init(struct > pci_dev *pdev, >   struct mei_device *dev; >   struct mei_me_hw *hw; >   > - dev = kzalloc(sizeof(struct mei_device) + > -  sizeof(struct mei_me_hw), GFP_KERNEL); > + dev = devm_kzalloc(&pdev->dev, sizeof(struct mei_device) + > +        sizeof(struct mei_me_hw), > GFP_KERNEL); >   if (!dev) >   return NULL; >   hw = to_me_hw(dev); > diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c > index 75fc9c6..3c07a02 100644 > --- a/drivers/misc/mei/pci-me.c > +++ b/drivers/misc/mei/pci-me.c > @@ -142,7 +142,7 @@ static int mei_me_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) >   return -ENODEV; >   >   /* enable pci dev */ > - err = pci_enable_device(pdev); > + err = pcim_enable_device(pdev); >   if (err) { >   dev_err(&pdev->dev, "failed to enable pci > device.\n"); >   goto end; > @@ -153,7 +153,7 @@ static int mei_me_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) >   err = pci_request_regions(pdev, KBUILD_MODNAME); >   if (err) { >   dev_err(&pdev->dev, "failed to get pci regions.\n"); > - goto disable_device; > + goto end; >   } >   >   if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) || > @@ -166,23 +166,22 @@ static int mei_me_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) >   } >   if (err) { >   dev_err(&pdev->dev, "No usable DMA configuration, > aborting\n"); > - goto release_regions; > + goto end; >   } >   > - >   /* allocates and initializes the mei dev structure */ >   dev = mei_me_dev_init(pdev, cfg); >   if (!dev) { >   err = -ENOMEM; > - goto release_regions; > + goto end; >   } >   hw = to_me_hw(dev); >   /* mapping  IO device memory */ > - hw->mem_addr = pci_iomap(pdev, 0, 0); > + hw->mem_addr = pcim_iomap(pdev, 0, 0); >   if (!hw->mem_addr) { >   dev_err(&pdev->dev, "mapping I/O device memory > failure.\n"); >   err = -ENOMEM; > - goto free_device; > + goto end; >   } >   pci_enable_msi(pdev); >   > @@ -196,7 +195,7 @@ static int mei_me_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) >   if (err) { >   dev_err(&pdev->dev, "request_threaded_irq failure. > irq = %d\n", >          pdev->irq); > - goto disable_msi; > + goto end; >   } >   >   if (mei_start(dev)) { > @@ -235,15 +234,6 @@ release_irq: >   mei_cancel_work(dev); >   mei_disable_interrupts(dev); >   free_irq(pdev->irq, dev); > -disable_msi: > - pci_disable_msi(pdev); > - pci_iounmap(pdev, hw->mem_addr); > -free_device: > - kfree(dev); > -release_regions: > - pci_release_regions(pdev); > -disable_device: > - pci_disable_device(pdev); >  end: >   dev_err(&pdev->dev, "initialization failed.\n"); >   return err; > @@ -260,7 +250,6 @@ end: >  static void mei_me_remove(struct pci_dev *pdev) >  { >   struct mei_device *dev; > - struct mei_me_hw *hw; >   >   dev = pci_get_drvdata(pdev); >   if (!dev) > @@ -269,9 +258,6 @@ static void mei_me_remove(struct pci_dev *pdev) >   if (mei_pg_is_enabled(dev)) >   pm_runtime_get_noresume(&pdev->dev); >   > - hw = to_me_hw(dev); > - > - >   dev_dbg(&pdev->dev, "stop\n"); >   mei_stop(dev); >   > @@ -282,20 +268,10 @@ static void mei_me_remove(struct pci_dev *pdev) >   mei_disable_interrupts(dev); >   >   free_irq(pdev->irq, dev); > - pci_disable_msi(pdev); > - > - if (hw->mem_addr) > - pci_iounmap(pdev, hw->mem_addr); >   >   mei_deregister(dev); > - > - kfree(dev); > - > - pci_release_regions(pdev); > - pci_disable_device(pdev); > - > - >  } > + >  #ifdef CONFIG_PM_SLEEP >  static int mei_me_pci_suspend(struct device *device) >  { -- Andy Shevchenko Intel Finland Oy