2016-03-08 22:40:57

by Michael Auchter

[permalink] [raw]
Subject: [PATCH] pci: add pci_clear_master() stub for !CONFIG_PCI

Add a stub for pci_clear_master() for when CONFIG_PCI is not set,
similar to what's done for pci_set_master().

Signed-off-by: Michael Auchter <[email protected]>
---
include/linux/pci.h | 1 +
1 file changed, 1 insertion(+)

diff --git a/include/linux/pci.h b/include/linux/pci.h
index 2771625..5f684d0 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1425,6 +1425,7 @@ static inline struct pci_dev *pci_get_class(unsigned int class,
#define pci_dev_put(dev) do { } while (0)

static inline void pci_set_master(struct pci_dev *dev) { }
+static inline void pci_clear_master(struct pci_dev *dev) { }
static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
static inline void pci_disable_device(struct pci_dev *dev) { }
static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
--
2.1.4


2016-03-08 23:10:33

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH] pci: add pci_clear_master() stub for !CONFIG_PCI

Hi Michael,

On Tue, Mar 08, 2016 at 04:34:41PM -0600, Michael Auchter wrote:
> Add a stub for pci_clear_master() for when CONFIG_PCI is not set,
> similar to what's done for pci_set_master().

Does this fix a problem? If so, what is it? Some driver that doesn't
build when CONFIG_PCI is not set?

> Signed-off-by: Michael Auchter <[email protected]>
> ---
> include/linux/pci.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 2771625..5f684d0 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1425,6 +1425,7 @@ static inline struct pci_dev *pci_get_class(unsigned int class,
> #define pci_dev_put(dev) do { } while (0)
>
> static inline void pci_set_master(struct pci_dev *dev) { }
> +static inline void pci_clear_master(struct pci_dev *dev) { }
> static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
> static inline void pci_disable_device(struct pci_dev *dev) { }
> static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
> --
> 2.1.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2016-03-09 02:14:53

by Michael Auchter

[permalink] [raw]
Subject: Re: [PATCH] pci: add pci_clear_master() stub for !CONFIG_PCI

On Tue, Mar 08, 2016 at 05:10:17PM -0600, Bjorn Helgaas wrote:
> Hi Michael,
>
> On Tue, Mar 08, 2016 at 04:34:41PM -0600, Michael Auchter wrote:
> > Add a stub for pci_clear_master() for when CONFIG_PCI is not set,
> > similar to what's done for pci_set_master().
>
> Does this fix a problem? If so, what is it? Some driver that doesn't
> build when CONFIG_PCI is not set?

I ran into a build failure caused by this not being defined while
compile testing an out-of-tree driver with various configs. It seemed to
me that the lack of a stub may have just been an oversight from when
pci_clear_master() was added.

It looks like all in-tree users of pci_clear_master() correctly declare
a dependency on PCI via Kconfig, so this doesn't really fix a problem,
just makes pci_clear_master more symmetric with pci_set_master.

Cheers,
Michael

2016-03-09 16:56:34

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH] pci: add pci_clear_master() stub for !CONFIG_PCI

On Tue, Mar 08, 2016 at 06:39:56PM -0600, Michael Auchter wrote:
> On Tue, Mar 08, 2016 at 05:10:17PM -0600, Bjorn Helgaas wrote:
> > Hi Michael,
> >
> > On Tue, Mar 08, 2016 at 04:34:41PM -0600, Michael Auchter wrote:
> > > Add a stub for pci_clear_master() for when CONFIG_PCI is not set,
> > > similar to what's done for pci_set_master().
> >
> > Does this fix a problem? If so, what is it? Some driver that doesn't
> > build when CONFIG_PCI is not set?
>
> I ran into a build failure caused by this not being defined while
> compile testing an out-of-tree driver with various configs. It seemed to
> me that the lack of a stub may have just been an oversight from when
> pci_clear_master() was added.
>
> It looks like all in-tree users of pci_clear_master() correctly declare
> a dependency on PCI via Kconfig, so this doesn't really fix a problem,
> just makes pci_clear_master more symmetric with pci_set_master.

We define a lot of empty stubs when CONFIG_PCI is not set. I'm not
sure all of them make sense, so I'm a little hesitant to add more.

If I had time, I think it would be really interesting to turn off
CONFIG_PCI, remove some of the existing stubs, and see what breaks.
Then we could look at the actual code and figure out whether the best
solution is to keep the stubs or to add CONFIG_PCI dependencies, add
CONFIG_PCI #ifdefs, etc.

Bjorn