linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 1/2] amba: bus: balance firmware node reference counting
@ 2023-10-06 14:57 Andy Shevchenko
  2023-10-06 14:57 ` [PATCH v3 2/2] amba: bus: Enable compile testing Andy Shevchenko
  2023-10-17 18:37 ` [PATCH v3 1/2] amba: bus: balance firmware node reference counting Rob Herring
  0 siblings, 2 replies; 7+ messages in thread
From: Andy Shevchenko @ 2023-10-06 14:57 UTC (permalink / raw)
  To: Andy Shevchenko, Rob Herring, linux-acpi, linux-arm-kernel,
	linux-kernel, devicetree
  Cc: Lorenzo Pieralisi, Hanjun Guo, Sudeep Holla, Rafael J. Wysocki,
	Len Brown, Russell King, Rob Herring, Frank Rowand, Peng Fan

Currently the ACPI code doesn't bump the reference count of
the firmware node, while OF counter part does. Not that it's
a problem right now, since ACPI doesn't really use the reference
counting for firmware nodes, it still makes sense to make code
robust against any changes done there. For this,
 - switch ACPI case to use device_set_node() to be unified with OF
 - move reference counting to amba_device_add()
 - switch to use firmware nodes instead of OF ones

In the result we will have reference counting done in the same module
for all callers independently on the nature of firmware node behind.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---

v3: no changes
v2: fixed compilation error (LKP), all dependencies are in v6.6-rcX (Rob)

 drivers/acpi/arm64/amba.c | 2 +-
 drivers/amba/bus.c        | 5 ++++-
 drivers/of/platform.c     | 2 +-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/arm64/amba.c b/drivers/acpi/arm64/amba.c
index 60be8ee1dbdc..171b5c2c7edd 100644
--- a/drivers/acpi/arm64/amba.c
+++ b/drivers/acpi/arm64/amba.c
@@ -101,7 +101,7 @@ static int amba_handler_attach(struct acpi_device *adev,
 	if (parent)
 		dev->dev.parent = acpi_get_first_physical_node(parent);
 
-	ACPI_COMPANION_SET(&dev->dev, adev);
+	device_set_node(&dev->dev, acpi_fwnode_handle(adev));
 
 	ret = amba_device_add(dev, &iomem_resource);
 	if (ret) {
diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
index 09e72967b8ab..a24c152bfaac 100644
--- a/drivers/amba/bus.c
+++ b/drivers/amba/bus.c
@@ -18,6 +18,7 @@
 #include <linux/limits.h>
 #include <linux/clk/clk-conf.h>
 #include <linux/platform_device.h>
+#include <linux/property.h>
 #include <linux/reset.h>
 #include <linux/of_irq.h>
 #include <linux/of_device.h>
@@ -528,7 +529,7 @@ static void amba_device_release(struct device *dev)
 {
 	struct amba_device *d = to_amba_device(dev);
 
-	of_node_put(d->dev.of_node);
+	fwnode_handle_put(dev_fwnode(&d->dev));
 	if (d->res.parent)
 		release_resource(&d->res);
 	mutex_destroy(&d->periphid_lock);
@@ -548,6 +549,8 @@ int amba_device_add(struct amba_device *dev, struct resource *parent)
 {
 	int ret;
 
+	fwnode_handle_get(dev_fwnode(&dev->dev));
+
 	ret = request_resource(parent, &dev->res);
 	if (ret)
 		return ret;
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index f235ab55b91e..126d265aa7d8 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -273,7 +273,7 @@ static struct amba_device *of_amba_device_create(struct device_node *node,
 	dev->dev.dma_mask = &dev->dev.coherent_dma_mask;
 
 	/* setup generic device info */
-	device_set_node(&dev->dev, of_fwnode_handle(of_node_get(node)));
+	device_set_node(&dev->dev, of_fwnode_handle(node));
 	dev->dev.parent = parent ? : &platform_bus;
 	dev->dev.platform_data = platform_data;
 	if (bus_id)
-- 
2.40.0.1.gaa8946217a0b


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v3 2/2] amba: bus: Enable compile testing
  2023-10-06 14:57 [PATCH v3 1/2] amba: bus: balance firmware node reference counting Andy Shevchenko
@ 2023-10-06 14:57 ` Andy Shevchenko
  2023-10-12  1:38   ` kernel test robot
  2023-10-17 18:37 ` [PATCH v3 1/2] amba: bus: balance firmware node reference counting Rob Herring
  1 sibling, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2023-10-06 14:57 UTC (permalink / raw)
  To: Andy Shevchenko, Rob Herring, linux-acpi, linux-arm-kernel,
	linux-kernel, devicetree
  Cc: Lorenzo Pieralisi, Hanjun Guo, Sudeep Holla, Rafael J. Wysocki,
	Len Brown, Russell King, Rob Herring, Frank Rowand, Peng Fan

There is no architecture specific code in the implementation of
AMBA bus, let's enable compile testing for it.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---

v3: fixed compilation error (LKP, Rob), amended summary (Rob)
v2: new patch to make it easier to compile test on non-ARM

 drivers/amba/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/amba/Kconfig b/drivers/amba/Kconfig
index fb6c7e0b4cce..21fa17697b48 100644
--- a/drivers/amba/Kconfig
+++ b/drivers/amba/Kconfig
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 config ARM_AMBA
-	bool
+	bool "Arm (AMBA) Primecell Device bus" if COMPILE_TEST
 
 if ARM_AMBA
 
-- 
2.40.0.1.gaa8946217a0b


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 2/2] amba: bus: Enable compile testing
  2023-10-06 14:57 ` [PATCH v3 2/2] amba: bus: Enable compile testing Andy Shevchenko
@ 2023-10-12  1:38   ` kernel test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2023-10-12  1:38 UTC (permalink / raw)
  To: Andy Shevchenko, Rob Herring, linux-acpi, linux-arm-kernel,
	linux-kernel, devicetree
  Cc: oe-kbuild-all, Lorenzo Pieralisi, Hanjun Guo, Sudeep Holla,
	Rafael J. Wysocki, Len Brown, Russell King, Frank Rowand,
	Peng Fan

Hi Andy,

kernel test robot noticed the following build errors:

[auto build test ERROR on rafael-pm/linux-next]
[also build test ERROR on robh/for-next soc/for-next linus/master v6.6-rc5 next-20231011]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/amba-bus-Enable-compile-testing/20231006-225814
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
patch link:    https://lore.kernel.org/r/20231006145732.3419115-2-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v3 2/2] amba: bus: Enable compile testing
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20231012/202310120929.APpnCpDs-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231012/202310120929.APpnCpDs-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310120929.APpnCpDs-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/tty/serial/amba-pl011.c: In function 'pl011_sgbuf_init':
>> drivers/tty/serial/amba-pl011.c:380:30: error: implicit declaration of function 'phys_to_page'; did you mean 'pfn_to_page'? [-Werror=implicit-function-declaration]
     380 |         sg_set_page(&sg->sg, phys_to_page(dma_addr),
         |                              ^~~~~~~~~~~~
         |                              pfn_to_page
   drivers/tty/serial/amba-pl011.c:380:30: warning: passing argument 2 of 'sg_set_page' makes pointer from integer without a cast [-Wint-conversion]
     380 |         sg_set_page(&sg->sg, phys_to_page(dma_addr),
         |                              ^~~~~~~~~~~~~~~~~~~~~~
         |                              |
         |                              int
   In file included from include/linux/kfifo.h:42,
                    from include/linux/tty_port.h:5,
                    from include/linux/tty.h:12,
                    from drivers/tty/serial/amba-pl011.c:26:
   include/linux/scatterlist.h:136:69: note: expected 'struct page *' but argument is of type 'int'
     136 | static inline void sg_set_page(struct scatterlist *sg, struct page *page,
         |                                                        ~~~~~~~~~~~~~^~~~
   cc1: some warnings being treated as errors


vim +380 drivers/tty/serial/amba-pl011.c

68b65f7305e54b drivers/serial/amba-pl011.c     Russell King   2010-12-22  368  
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  369  static int pl011_sgbuf_init(struct dma_chan *chan, struct pl011_sgbuf *sg,
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  370  	enum dma_data_direction dir)
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  371  {
cb06ff102e2d79 drivers/tty/serial/amba-pl011.c Chanho Min     2013-03-27  372  	dma_addr_t dma_addr;
cb06ff102e2d79 drivers/tty/serial/amba-pl011.c Chanho Min     2013-03-27  373  
cb06ff102e2d79 drivers/tty/serial/amba-pl011.c Chanho Min     2013-03-27  374  	sg->buf = dma_alloc_coherent(chan->device->dev,
cb06ff102e2d79 drivers/tty/serial/amba-pl011.c Chanho Min     2013-03-27  375  		PL011_DMA_BUFFER_SIZE, &dma_addr, GFP_KERNEL);
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  376  	if (!sg->buf)
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  377  		return -ENOMEM;
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  378  
cb06ff102e2d79 drivers/tty/serial/amba-pl011.c Chanho Min     2013-03-27  379  	sg_init_table(&sg->sg, 1);
cb06ff102e2d79 drivers/tty/serial/amba-pl011.c Chanho Min     2013-03-27 @380  	sg_set_page(&sg->sg, phys_to_page(dma_addr),
cb06ff102e2d79 drivers/tty/serial/amba-pl011.c Chanho Min     2013-03-27  381  		PL011_DMA_BUFFER_SIZE, offset_in_page(dma_addr));
cb06ff102e2d79 drivers/tty/serial/amba-pl011.c Chanho Min     2013-03-27  382  	sg_dma_address(&sg->sg) = dma_addr;
c64be9231e0893 drivers/tty/serial/amba-pl011.c Andrew Jackson 2014-11-07  383  	sg_dma_len(&sg->sg) = PL011_DMA_BUFFER_SIZE;
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  384  
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  385  	return 0;
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  386  }
ead76f329f777c drivers/tty/serial/amba-pl011.c Linus Walleij  2011-02-24  387  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 1/2] amba: bus: balance firmware node reference counting
  2023-10-06 14:57 [PATCH v3 1/2] amba: bus: balance firmware node reference counting Andy Shevchenko
  2023-10-06 14:57 ` [PATCH v3 2/2] amba: bus: Enable compile testing Andy Shevchenko
@ 2023-10-17 18:37 ` Rob Herring
  2023-10-17 18:42   ` Andy Shevchenko
  1 sibling, 1 reply; 7+ messages in thread
From: Rob Herring @ 2023-10-17 18:37 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Rob Herring, linux-acpi, linux-kernel, Hanjun Guo,
	linux-arm-kernel, Lorenzo Pieralisi, Sudeep Holla, Peng Fan,
	Rafael J. Wysocki, Russell King, Len Brown, devicetree,
	Frank Rowand


On Fri, 06 Oct 2023 17:57:31 +0300, Andy Shevchenko wrote:
> Currently the ACPI code doesn't bump the reference count of
> the firmware node, while OF counter part does. Not that it's
> a problem right now, since ACPI doesn't really use the reference
> counting for firmware nodes, it still makes sense to make code
> robust against any changes done there. For this,
>  - switch ACPI case to use device_set_node() to be unified with OF
>  - move reference counting to amba_device_add()
>  - switch to use firmware nodes instead of OF ones
> 
> In the result we will have reference counting done in the same module
> for all callers independently on the nature of firmware node behind.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> 
> v3: no changes
> v2: fixed compilation error (LKP), all dependencies are in v6.6-rcX (Rob)
> 
>  drivers/acpi/arm64/amba.c | 2 +-
>  drivers/amba/bus.c        | 5 ++++-
>  drivers/of/platform.c     | 2 +-
>  3 files changed, 6 insertions(+), 3 deletions(-)
> 

Applied, thanks!


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 1/2] amba: bus: balance firmware node reference counting
  2023-10-17 18:37 ` [PATCH v3 1/2] amba: bus: balance firmware node reference counting Rob Herring
@ 2023-10-17 18:42   ` Andy Shevchenko
  2023-10-19 19:15     ` Rob Herring
  0 siblings, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2023-10-17 18:42 UTC (permalink / raw)
  To: Rob Herring
  Cc: Rob Herring, linux-acpi, linux-kernel, Hanjun Guo,
	linux-arm-kernel, Lorenzo Pieralisi, Sudeep Holla, Peng Fan,
	Rafael J. Wysocki, Russell King, Len Brown, devicetree,
	Frank Rowand

On Tue, Oct 17, 2023 at 01:37:43PM -0500, Rob Herring wrote:
> On Fri, 06 Oct 2023 17:57:31 +0300, Andy Shevchenko wrote:

...

> Applied, thanks!

Thanks, I hope w.o. patch 2 as it seems it can't be enabled on non-ARM
platforms due to some strange MM APIs.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 1/2] amba: bus: balance firmware node reference counting
  2023-10-17 18:42   ` Andy Shevchenko
@ 2023-10-19 19:15     ` Rob Herring
  2023-10-20 10:15       ` Andy Shevchenko
  0 siblings, 1 reply; 7+ messages in thread
From: Rob Herring @ 2023-10-19 19:15 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-acpi, linux-kernel, Hanjun Guo, linux-arm-kernel,
	Lorenzo Pieralisi, Sudeep Holla, Peng Fan, Rafael J. Wysocki,
	Russell King, Len Brown, devicetree, Frank Rowand

On Tue, Oct 17, 2023 at 1:43 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> On Tue, Oct 17, 2023 at 01:37:43PM -0500, Rob Herring wrote:
> > On Fri, 06 Oct 2023 17:57:31 +0300, Andy Shevchenko wrote:
>
> ...
>
> > Applied, thanks!
>
> Thanks, I hope w.o. patch 2 as it seems it can't be enabled on non-ARM
> platforms due to some strange MM APIs.

Yes, just patch 1. Isn't it just the driver with the error that can't
be enabled, not all ARM_AMBA. I suspect there's a more portable
variant of what was causing the error, but didn't investigate more.

Rob

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 1/2] amba: bus: balance firmware node reference counting
  2023-10-19 19:15     ` Rob Herring
@ 2023-10-20 10:15       ` Andy Shevchenko
  0 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2023-10-20 10:15 UTC (permalink / raw)
  To: Rob Herring
  Cc: linux-acpi, linux-kernel, Hanjun Guo, linux-arm-kernel,
	Lorenzo Pieralisi, Sudeep Holla, Peng Fan, Rafael J. Wysocki,
	Russell King, Len Brown, devicetree, Frank Rowand

On Thu, Oct 19, 2023 at 02:15:43PM -0500, Rob Herring wrote:
> On Tue, Oct 17, 2023 at 1:43 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> > On Tue, Oct 17, 2023 at 01:37:43PM -0500, Rob Herring wrote:
> > > On Fri, 06 Oct 2023 17:57:31 +0300, Andy Shevchenko wrote:

...

> > > Applied, thanks!
> >
> > Thanks, I hope w.o. patch 2 as it seems it can't be enabled on non-ARM
> > platforms due to some strange MM APIs.
> 
> Yes, just patch 1. Isn't it just the driver with the error that can't
> be enabled, not all ARM_AMBA. I suspect there's a more portable
> variant of what was causing the error, but didn't investigate more.

Yeah, I think so but it's not the first time I saw such non-portable APIs in
the drivers as they were (mistakenly?) designed as ARM-only.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-10-20 10:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-06 14:57 [PATCH v3 1/2] amba: bus: balance firmware node reference counting Andy Shevchenko
2023-10-06 14:57 ` [PATCH v3 2/2] amba: bus: Enable compile testing Andy Shevchenko
2023-10-12  1:38   ` kernel test robot
2023-10-17 18:37 ` [PATCH v3 1/2] amba: bus: balance firmware node reference counting Rob Herring
2023-10-17 18:42   ` Andy Shevchenko
2023-10-19 19:15     ` Rob Herring
2023-10-20 10:15       ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).