All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robherring2@gmail.com>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Will Deacon <will.deacon@arm.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Grant Likely <grant.likely@linaro.org>,
	Rob Herring <robh+dt@kernel.org>, Alexander Graf <agraf@suse.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v3 1/4] of/pci: Add of_pci_check_probe_only to parse "linux,pci-probe-only"
Date: Thu, 3 Sep 2015 09:01:43 -0500	[thread overview]
Message-ID: <CAL_JsqJo2vH-i229fqa6T2VBdo65tAjo5q3oNijsLvde+M5+HQ@mail.gmail.com> (raw)
In-Reply-To: <1441282576-7304-2-git-send-email-marc.zyngier@arm.com>

On Thu, Sep 3, 2015 at 7:16 AM, Marc Zyngier <marc.zyngier@arm.com> wrote:
> Both pci-host-generic and Pseries parse the "linux,pci-probe-only"
> property to engage the PCI_PROBE_ONLY mode, and both have a subtle
> bug that can be triggered if the property has no parameter.
>
> Provide a generic, safe implementation that can be used by both.

Sorry, but a couple of other minor things I noticed.

>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  drivers/of/of_pci.c    | 31 +++++++++++++++++++++++++++++++
>  include/linux/of_pci.h |  3 +++
>  2 files changed, 34 insertions(+)
>
> diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
> index 5751dc5..7876343 100644
> --- a/drivers/of/of_pci.c
> +++ b/drivers/of/of_pci.c
> @@ -118,6 +118,37 @@ int of_get_pci_domain_nr(struct device_node *node)
>  EXPORT_SYMBOL_GPL(of_get_pci_domain_nr);
>
>  /**
> + * of_pci_check_probe_only - Setup probe only mode if linux,pci-probe-only
> + *                           is present and valid
> + *
> + * @node: device tree node that may contain the property (usually "chosen")
> + *
> + */
> +void of_pci_check_probe_only(struct device_node *node)

This property is only valid in /chosen, so there's no point passing
of_chosen in and you can constrain it to only look in /chosen.

> +{
> +       u32 val;
> +       int ret;
> +
> +       if (!node)
> +               return;

I believe of_property_read_u32 will check this.

> +
> +       ret = of_property_read_u32(node, "linux,pci-probe-only", &val);
> +       if (ret) {
> +               if (ret == -ENODATA || ret == -EOVERFLOW)
> +                       pr_warn("linux,pci-probe-only without valid value, ignoring\n");
> +               return;
> +       }
> +
> +       if (val)
> +               pci_add_flags(PCI_PROBE_ONLY);
> +       else
> +               pci_clear_flags(PCI_PROBE_ONLY);
> +
> +       pr_info("PCI: PROBE_ONLY %sabled\n", val ? "en" : "dis");
> +}
> +EXPORT_SYMBOL_GPL(of_pci_check_probe_only);
> +
> +/**
>   * of_pci_dma_configure - Setup DMA configuration
>   * @dev: ptr to pci_dev struct of the PCI device
>   *
> diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h
> index 29fd3fe..4c0a617 100644
> --- a/include/linux/of_pci.h
> +++ b/include/linux/of_pci.h
> @@ -17,6 +17,7 @@ int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin);
>  int of_pci_parse_bus_range(struct device_node *node, struct resource *res);
>  int of_get_pci_domain_nr(struct device_node *node);
>  void of_pci_dma_configure(struct pci_dev *pci_dev);
> +void of_pci_check_probe_only(struct device_node *node);
>  #else
>  static inline int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq)
>  {
> @@ -53,6 +54,8 @@ of_get_pci_domain_nr(struct device_node *node)
>  }
>
>  static inline void of_pci_dma_configure(struct pci_dev *pci_dev) { }
> +
> +static inline void of_pci_check_probe_only(struct device_node *node) { }
>  #endif
>
>  #if defined(CONFIG_OF_ADDRESS)
> --
> 2.1.4
>

WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robherring2@gmail.com>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Will Deacon <will.deacon@arm.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Grant Likely <grant.likely@linaro.org>,
	Rob Herring <robh+dt@kernel.org>, Alexander Graf <agraf@suse.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v3 1/4] of/pci: Add of_pci_check_probe_only to parse "linux, pci-probe-only"
Date: Thu, 3 Sep 2015 09:01:43 -0500	[thread overview]
Message-ID: <CAL_JsqJo2vH-i229fqa6T2VBdo65tAjo5q3oNijsLvde+M5+HQ@mail.gmail.com> (raw)
In-Reply-To: <1441282576-7304-2-git-send-email-marc.zyngier@arm.com>

On Thu, Sep 3, 2015 at 7:16 AM, Marc Zyngier <marc.zyngier@arm.com> wrote:
> Both pci-host-generic and Pseries parse the "linux,pci-probe-only"
> property to engage the PCI_PROBE_ONLY mode, and both have a subtle
> bug that can be triggered if the property has no parameter.
>
> Provide a generic, safe implementation that can be used by both.

Sorry, but a couple of other minor things I noticed.

>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  drivers/of/of_pci.c    | 31 +++++++++++++++++++++++++++++++
>  include/linux/of_pci.h |  3 +++
>  2 files changed, 34 insertions(+)
>
> diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
> index 5751dc5..7876343 100644
> --- a/drivers/of/of_pci.c
> +++ b/drivers/of/of_pci.c
> @@ -118,6 +118,37 @@ int of_get_pci_domain_nr(struct device_node *node)
>  EXPORT_SYMBOL_GPL(of_get_pci_domain_nr);
>
>  /**
> + * of_pci_check_probe_only - Setup probe only mode if linux,pci-probe-only
> + *                           is present and valid
> + *
> + * @node: device tree node that may contain the property (usually "chosen")
> + *
> + */
> +void of_pci_check_probe_only(struct device_node *node)

This property is only valid in /chosen, so there's no point passing
of_chosen in and you can constrain it to only look in /chosen.

> +{
> +       u32 val;
> +       int ret;
> +
> +       if (!node)
> +               return;

I believe of_property_read_u32 will check this.

> +
> +       ret = of_property_read_u32(node, "linux,pci-probe-only", &val);
> +       if (ret) {
> +               if (ret == -ENODATA || ret == -EOVERFLOW)
> +                       pr_warn("linux,pci-probe-only without valid value, ignoring\n");
> +               return;
> +       }
> +
> +       if (val)
> +               pci_add_flags(PCI_PROBE_ONLY);
> +       else
> +               pci_clear_flags(PCI_PROBE_ONLY);
> +
> +       pr_info("PCI: PROBE_ONLY %sabled\n", val ? "en" : "dis");
> +}
> +EXPORT_SYMBOL_GPL(of_pci_check_probe_only);
> +
> +/**
>   * of_pci_dma_configure - Setup DMA configuration
>   * @dev: ptr to pci_dev struct of the PCI device
>   *
> diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h
> index 29fd3fe..4c0a617 100644
> --- a/include/linux/of_pci.h
> +++ b/include/linux/of_pci.h
> @@ -17,6 +17,7 @@ int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin);
>  int of_pci_parse_bus_range(struct device_node *node, struct resource *res);
>  int of_get_pci_domain_nr(struct device_node *node);
>  void of_pci_dma_configure(struct pci_dev *pci_dev);
> +void of_pci_check_probe_only(struct device_node *node);
>  #else
>  static inline int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq)
>  {
> @@ -53,6 +54,8 @@ of_get_pci_domain_nr(struct device_node *node)
>  }
>
>  static inline void of_pci_dma_configure(struct pci_dev *pci_dev) { }
> +
> +static inline void of_pci_check_probe_only(struct device_node *node) { }
>  #endif
>
>  #if defined(CONFIG_OF_ADDRESS)
> --
> 2.1.4
>

WARNING: multiple messages have this Message-ID (diff)
From: robherring2@gmail.com (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/4] of/pci: Add of_pci_check_probe_only to parse "linux, pci-probe-only"
Date: Thu, 3 Sep 2015 09:01:43 -0500	[thread overview]
Message-ID: <CAL_JsqJo2vH-i229fqa6T2VBdo65tAjo5q3oNijsLvde+M5+HQ@mail.gmail.com> (raw)
In-Reply-To: <1441282576-7304-2-git-send-email-marc.zyngier@arm.com>

On Thu, Sep 3, 2015 at 7:16 AM, Marc Zyngier <marc.zyngier@arm.com> wrote:
> Both pci-host-generic and Pseries parse the "linux,pci-probe-only"
> property to engage the PCI_PROBE_ONLY mode, and both have a subtle
> bug that can be triggered if the property has no parameter.
>
> Provide a generic, safe implementation that can be used by both.

Sorry, but a couple of other minor things I noticed.

>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  drivers/of/of_pci.c    | 31 +++++++++++++++++++++++++++++++
>  include/linux/of_pci.h |  3 +++
>  2 files changed, 34 insertions(+)
>
> diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
> index 5751dc5..7876343 100644
> --- a/drivers/of/of_pci.c
> +++ b/drivers/of/of_pci.c
> @@ -118,6 +118,37 @@ int of_get_pci_domain_nr(struct device_node *node)
>  EXPORT_SYMBOL_GPL(of_get_pci_domain_nr);
>
>  /**
> + * of_pci_check_probe_only - Setup probe only mode if linux,pci-probe-only
> + *                           is present and valid
> + *
> + * @node: device tree node that may contain the property (usually "chosen")
> + *
> + */
> +void of_pci_check_probe_only(struct device_node *node)

This property is only valid in /chosen, so there's no point passing
of_chosen in and you can constrain it to only look in /chosen.

> +{
> +       u32 val;
> +       int ret;
> +
> +       if (!node)
> +               return;

I believe of_property_read_u32 will check this.

> +
> +       ret = of_property_read_u32(node, "linux,pci-probe-only", &val);
> +       if (ret) {
> +               if (ret == -ENODATA || ret == -EOVERFLOW)
> +                       pr_warn("linux,pci-probe-only without valid value, ignoring\n");
> +               return;
> +       }
> +
> +       if (val)
> +               pci_add_flags(PCI_PROBE_ONLY);
> +       else
> +               pci_clear_flags(PCI_PROBE_ONLY);
> +
> +       pr_info("PCI: PROBE_ONLY %sabled\n", val ? "en" : "dis");
> +}
> +EXPORT_SYMBOL_GPL(of_pci_check_probe_only);
> +
> +/**
>   * of_pci_dma_configure - Setup DMA configuration
>   * @dev: ptr to pci_dev struct of the PCI device
>   *
> diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h
> index 29fd3fe..4c0a617 100644
> --- a/include/linux/of_pci.h
> +++ b/include/linux/of_pci.h
> @@ -17,6 +17,7 @@ int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin);
>  int of_pci_parse_bus_range(struct device_node *node, struct resource *res);
>  int of_get_pci_domain_nr(struct device_node *node);
>  void of_pci_dma_configure(struct pci_dev *pci_dev);
> +void of_pci_check_probe_only(struct device_node *node);
>  #else
>  static inline int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq)
>  {
> @@ -53,6 +54,8 @@ of_get_pci_domain_nr(struct device_node *node)
>  }
>
>  static inline void of_pci_dma_configure(struct pci_dev *pci_dev) { }
> +
> +static inline void of_pci_check_probe_only(struct device_node *node) { }
>  #endif
>
>  #if defined(CONFIG_OF_ADDRESS)
> --
> 2.1.4
>

  reply	other threads:[~2015-09-03 14:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-03 12:16 [PATCH v3 0/4] PCI: arm64/powerpc: Fix parsing of linux,pci-probe-only Marc Zyngier
2015-09-03 12:16 ` [PATCH v3 0/4] PCI: arm64/powerpc: Fix parsing of linux, pci-probe-only Marc Zyngier
2015-09-03 12:16 ` Marc Zyngier
2015-09-03 12:16 ` [PATCH v3 0/4] PCI: arm64/powerpc: Fix parsing of linux,pci-probe-only Marc Zyngier
2015-09-03 12:16 ` [PATCH v3 1/4] of/pci: Add of_pci_check_probe_only to parse "linux,pci-probe-only" Marc Zyngier
2015-09-03 12:16   ` [PATCH v3 1/4] of/pci: Add of_pci_check_probe_only to parse "linux, pci-probe-only" Marc Zyngier
2015-09-03 12:16   ` Marc Zyngier
2015-09-03 14:01   ` Rob Herring [this message]
2015-09-03 14:01     ` Rob Herring
2015-09-03 14:01     ` Rob Herring
2015-09-03 14:01     ` [PATCH v3 1/4] of/pci: Add of_pci_check_probe_only to parse "linux,pci-probe-only" Rob Herring
2015-09-03 12:16 ` [PATCH v3 2/4] PCI: pci-host-generic: Fix lookup of linux,pci-probe-only property Marc Zyngier
2015-09-03 12:16   ` [PATCH v3 2/4] PCI: pci-host-generic: Fix lookup of linux, pci-probe-only property Marc Zyngier
2015-09-03 12:16   ` Marc Zyngier
2015-09-03 12:16   ` Marc Zyngier
2015-09-03 12:16 ` [PATCH v3 3/4] powerpc: PCI: Fix lookup of linux,pci-probe-only property Marc Zyngier
2015-09-03 12:16   ` [PATCH v3 3/4] powerpc: PCI: Fix lookup of linux, pci-probe-only property Marc Zyngier
2015-09-03 12:16   ` Marc Zyngier
2015-09-03 12:16 ` [PATCH v3 4/4] arm64: dts: Drop linux,pci-probe-only from the Seattle DTS Marc Zyngier
2015-09-03 12:16   ` [PATCH v3 4/4] arm64: dts: Drop linux, pci-probe-only " Marc Zyngier
2015-09-03 12:16   ` Marc Zyngier
2015-09-03 12:16   ` Marc Zyngier
2015-09-03 14:19   ` [PATCH v3 4/4] arm64: dts: Drop linux,pci-probe-only " Suthikulpanit, Suravee
2015-09-03 14:19     ` Suthikulpanit, Suravee
2015-09-03 14:19     ` Suthikulpanit, Suravee

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=CAL_JsqJo2vH-i229fqa6T2VBdo65tAjo5q3oNijsLvde+M5+HQ@mail.gmail.com \
    --to=robherring2@gmail.com \
    --cc=Suravee.Suthikulpanit@amd.com \
    --cc=agraf@suse.de \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=grant.likely@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=marc.zyngier@arm.com \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=robh+dt@kernel.org \
    --cc=will.deacon@arm.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.