All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: Manikanta Maddireddy <mmaddireddy@nvidia.com>
Cc: bhelgaas@google.com, lorenzo.pieralisi@arm.com, cyndis@kapsi.fi,
	jonathanh@nvidia.com, linux-pci@vger.kernel.org,
	linux-tegra@vger.kernel.org, vidyas@nvidia.com,
	kthota@nvidia.com
Subject: Re: [PATCH V7  2/4] PCI: tegra: Add loadable kernel module support
Date: Tue, 13 Feb 2018 12:39:53 +0100	[thread overview]
Message-ID: <20180213113953.GD6764@ulmo> (raw)
In-Reply-To: <1517289851-14111-3-git-send-email-mmaddireddy@nvidia.com>

[-- Attachment #1: Type: text/plain, Size: 3969 bytes --]

On Tue, Jan 30, 2018 at 10:54:09AM +0530, Manikanta Maddireddy wrote:
> Implement remove callback function for Tegra PCIe driver to add
> loadable kernel module support. Change PCI_TEGRA config to tristate to
> allow pci-tegra driver to be build as a module.
> 
> Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
> Acked-by: Thierry Reding <treding@nvidia.com>
> ---
> V2:
> * no change in this patch
> V3:
> * use tegra_pcie_debugfs_exit() helper function in tegra_pcie_debugfs_init()
> V4:
> * no change in this patch
> V5:
> * Decoupled from https://patchwork.ozlabs.org/patch/832053/ and
> rebased on linux-next
> V6:
> * no change in this patch
> V7:
> * no change in this patch
> 
>  drivers/pci/host/Kconfig     |  2 +-
>  drivers/pci/host/pci-tegra.c | 34 +++++++++++++++++++++++++++++++---
>  2 files changed, 32 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
> index 38d12980db0f..6fd2a5937804 100644
> --- a/drivers/pci/host/Kconfig
> +++ b/drivers/pci/host/Kconfig
> @@ -34,7 +34,7 @@ config PCI_FTPCI100
>  	default ARCH_GEMINI
>  
>  config PCI_TEGRA
> -	bool "NVIDIA Tegra PCIe controller"
> +	tristate "NVIDIA Tegra PCIe controller"
>  	depends on ARCH_TEGRA
>  	help
>  	  Say Y here if you want support for the PCIe host controller found
> diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
> index e68507f658d8..981f126b14d6 100644
> --- a/drivers/pci/host/pci-tegra.c
> +++ b/drivers/pci/host/pci-tegra.c
> @@ -35,6 +35,7 @@
>  #include <linux/irqdomain.h>
>  #include <linux/kernel.h>
>  #include <linux/init.h>
> +#include <linux/module.h>
>  #include <linux/msi.h>
>  #include <linux/of_address.h>
>  #include <linux/of_pci.h>
> @@ -2276,6 +2277,12 @@ static const struct file_operations tegra_pcie_ports_ops = {
>  	.release = seq_release,
>  };
>  
> +static void tegra_pcie_debugfs_exit(struct tegra_pcie *pcie)
> +{
> +	debugfs_remove_recursive(pcie->debugfs);
> +	pcie->debugfs = NULL;
> +}
> +
>  static int tegra_pcie_debugfs_init(struct tegra_pcie *pcie)
>  {
>  	struct dentry *file;
> @@ -2292,8 +2299,7 @@ static int tegra_pcie_debugfs_init(struct tegra_pcie *pcie)
>  	return 0;
>  
>  remove:
> -	debugfs_remove_recursive(pcie->debugfs);
> -	pcie->debugfs = NULL;
> +	tegra_pcie_debugfs_exit(pcie);
>  	return -ENOMEM;
>  }
>  
> @@ -2311,6 +2317,7 @@ static int tegra_pcie_probe(struct platform_device *pdev)
>  
>  	pcie = pci_host_bridge_priv(host);
>  	host->sysdata = pcie;
> +	platform_set_drvdata(pdev, pcie);
>  
>  	pcie->soc = of_device_get_match_data(dev);
>  	INIT_LIST_HEAD(&pcie->ports);
> @@ -2388,6 +2395,25 @@ static int tegra_pcie_probe(struct platform_device *pdev)
>  	return err;
>  }
>  
> +static int tegra_pcie_remove(struct platform_device *pdev)
> +{
> +	struct tegra_pcie *pcie = platform_get_drvdata(pdev);
> +	struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
> +
> +	if (IS_ENABLED(CONFIG_DEBUG_FS))
> +		tegra_pcie_debugfs_exit(pcie);
> +	pci_stop_root_bus(host->bus);
> +	pci_remove_root_bus(host->bus);
> +	tegra_pcie_disable_ports(pcie);
> +	if (IS_ENABLED(CONFIG_PCI_MSI))
> +		tegra_pcie_disable_msi(pcie);
> +	tegra_pcie_free_resources(pcie);
> +	tegra_pcie_disable_controller(pcie);
> +	tegra_pcie_put_resources(pcie);

I prefer blank lines around conditional blocks for readability, so the
above would be:

	if (IS_ENABLED(CONFIG_DEBUG_FS))
		tegra_pcie_debugfs_exit(pcie);

	pci_stop_root_bus(host->bus);
	pci_remove_root_bus(host->bus);
	tegra_pcie_disable_ports(pcie);

	if (IS_ENABLED(CONFIG_PCI_MSI))
		tegra_pcie_disable_msi(pcie);

	tegra_pcie_free_resources(pcie);
	tegra_pcie_disable_controller(pcie);
	tegra_pcie_put_resources(pcie);

Not sure if Lorenzo or Bjorn have any specific preferences, though. My
Acked-by remains valid, though, since this is nitpicky.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Manikanta Maddireddy
	<mmaddireddy-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
	lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org,
	cyndis-/1wQRMveznE@public.gmane.org,
	jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org,
	linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	vidyas-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org,
	kthota-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH V7  2/4] PCI: tegra: Add loadable kernel module support
Date: Tue, 13 Feb 2018 12:39:53 +0100	[thread overview]
Message-ID: <20180213113953.GD6764@ulmo> (raw)
In-Reply-To: <1517289851-14111-3-git-send-email-mmaddireddy-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 4027 bytes --]

On Tue, Jan 30, 2018 at 10:54:09AM +0530, Manikanta Maddireddy wrote:
> Implement remove callback function for Tegra PCIe driver to add
> loadable kernel module support. Change PCI_TEGRA config to tristate to
> allow pci-tegra driver to be build as a module.
> 
> Signed-off-by: Manikanta Maddireddy <mmaddireddy-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> Acked-by: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> ---
> V2:
> * no change in this patch
> V3:
> * use tegra_pcie_debugfs_exit() helper function in tegra_pcie_debugfs_init()
> V4:
> * no change in this patch
> V5:
> * Decoupled from https://patchwork.ozlabs.org/patch/832053/ and
> rebased on linux-next
> V6:
> * no change in this patch
> V7:
> * no change in this patch
> 
>  drivers/pci/host/Kconfig     |  2 +-
>  drivers/pci/host/pci-tegra.c | 34 +++++++++++++++++++++++++++++++---
>  2 files changed, 32 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
> index 38d12980db0f..6fd2a5937804 100644
> --- a/drivers/pci/host/Kconfig
> +++ b/drivers/pci/host/Kconfig
> @@ -34,7 +34,7 @@ config PCI_FTPCI100
>  	default ARCH_GEMINI
>  
>  config PCI_TEGRA
> -	bool "NVIDIA Tegra PCIe controller"
> +	tristate "NVIDIA Tegra PCIe controller"
>  	depends on ARCH_TEGRA
>  	help
>  	  Say Y here if you want support for the PCIe host controller found
> diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
> index e68507f658d8..981f126b14d6 100644
> --- a/drivers/pci/host/pci-tegra.c
> +++ b/drivers/pci/host/pci-tegra.c
> @@ -35,6 +35,7 @@
>  #include <linux/irqdomain.h>
>  #include <linux/kernel.h>
>  #include <linux/init.h>
> +#include <linux/module.h>
>  #include <linux/msi.h>
>  #include <linux/of_address.h>
>  #include <linux/of_pci.h>
> @@ -2276,6 +2277,12 @@ static const struct file_operations tegra_pcie_ports_ops = {
>  	.release = seq_release,
>  };
>  
> +static void tegra_pcie_debugfs_exit(struct tegra_pcie *pcie)
> +{
> +	debugfs_remove_recursive(pcie->debugfs);
> +	pcie->debugfs = NULL;
> +}
> +
>  static int tegra_pcie_debugfs_init(struct tegra_pcie *pcie)
>  {
>  	struct dentry *file;
> @@ -2292,8 +2299,7 @@ static int tegra_pcie_debugfs_init(struct tegra_pcie *pcie)
>  	return 0;
>  
>  remove:
> -	debugfs_remove_recursive(pcie->debugfs);
> -	pcie->debugfs = NULL;
> +	tegra_pcie_debugfs_exit(pcie);
>  	return -ENOMEM;
>  }
>  
> @@ -2311,6 +2317,7 @@ static int tegra_pcie_probe(struct platform_device *pdev)
>  
>  	pcie = pci_host_bridge_priv(host);
>  	host->sysdata = pcie;
> +	platform_set_drvdata(pdev, pcie);
>  
>  	pcie->soc = of_device_get_match_data(dev);
>  	INIT_LIST_HEAD(&pcie->ports);
> @@ -2388,6 +2395,25 @@ static int tegra_pcie_probe(struct platform_device *pdev)
>  	return err;
>  }
>  
> +static int tegra_pcie_remove(struct platform_device *pdev)
> +{
> +	struct tegra_pcie *pcie = platform_get_drvdata(pdev);
> +	struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
> +
> +	if (IS_ENABLED(CONFIG_DEBUG_FS))
> +		tegra_pcie_debugfs_exit(pcie);
> +	pci_stop_root_bus(host->bus);
> +	pci_remove_root_bus(host->bus);
> +	tegra_pcie_disable_ports(pcie);
> +	if (IS_ENABLED(CONFIG_PCI_MSI))
> +		tegra_pcie_disable_msi(pcie);
> +	tegra_pcie_free_resources(pcie);
> +	tegra_pcie_disable_controller(pcie);
> +	tegra_pcie_put_resources(pcie);

I prefer blank lines around conditional blocks for readability, so the
above would be:

	if (IS_ENABLED(CONFIG_DEBUG_FS))
		tegra_pcie_debugfs_exit(pcie);

	pci_stop_root_bus(host->bus);
	pci_remove_root_bus(host->bus);
	tegra_pcie_disable_ports(pcie);

	if (IS_ENABLED(CONFIG_PCI_MSI))
		tegra_pcie_disable_msi(pcie);

	tegra_pcie_free_resources(pcie);
	tegra_pcie_disable_controller(pcie);
	tegra_pcie_put_resources(pcie);

Not sure if Lorenzo or Bjorn have any specific preferences, though. My
Acked-by remains valid, though, since this is nitpicky.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2018-02-13 11:40 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-30  5:24 [PATCH V7 0/4] Add loadable kernel module and power management support Manikanta Maddireddy
2018-01-30  5:24 ` Manikanta Maddireddy
2018-01-30  5:24 ` [PATCH V7 1/4] PCI: tegra: Free resources on probe failure Manikanta Maddireddy
2018-01-30  5:24   ` Manikanta Maddireddy
2018-01-30  5:24 ` [PATCH V7 2/4] PCI: tegra: Add loadable kernel module support Manikanta Maddireddy
2018-01-30  5:24   ` Manikanta Maddireddy
2018-02-13 11:39   ` Thierry Reding [this message]
2018-02-13 11:39     ` Thierry Reding
2018-02-13 13:07   ` Thierry Reding
2018-02-13 13:18     ` Manikanta Maddireddy
2018-02-13 13:18       ` Manikanta Maddireddy
2018-02-13 13:51       ` Thierry Reding
2018-02-13 13:51         ` Thierry Reding
2018-02-13 15:26         ` Manikanta Maddireddy
2018-02-13 15:26           ` Manikanta Maddireddy
2018-02-13 15:30         ` Manikanta Maddireddy
2018-02-13 15:30           ` Manikanta Maddireddy
2018-01-30  5:24 ` [PATCH V7 3/4] PCI: tegra: Broadcast PME_Turn_Off message before link goes to L2 Manikanta Maddireddy
2018-01-30  5:24   ` Manikanta Maddireddy
2018-02-13 11:30   ` Thierry Reding
2018-02-13 11:30     ` Thierry Reding
2018-01-30  5:24 ` [PATCH V7 4/4] PCI: tegra: Add power management support Manikanta Maddireddy
2018-01-30  5:24   ` Manikanta Maddireddy
2018-02-13 13:07   ` Thierry Reding
2018-02-13 13:07     ` Thierry Reding
2018-02-13 13:08 ` [PATCH V7 0/4] Add loadable kernel module and " Thierry Reding
2018-02-13 13:08   ` Thierry Reding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180213113953.GD6764@ulmo \
    --to=thierry.reding@gmail.com \
    --cc=bhelgaas@google.com \
    --cc=cyndis@kapsi.fi \
    --cc=jonathanh@nvidia.com \
    --cc=kthota@nvidia.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mmaddireddy@nvidia.com \
    --cc=vidyas@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.