2023-12-07 01:58:12

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the devicetree tree

Hi all,

After merging the devicetree tree, today's linux-next build (x86_64
allmodconfig) failed like this:

drivers/auxdisplay/img-ascii-lcd.c: In function 'img_ascii_lcd_probe':
drivers/auxdisplay/img-ascii-lcd.c:234:17: error: implicit declaration of function 'of_match_device'; did you mean 'of_match_node'? [-Werror=implicit-function-declaration]
234 | match = of_match_device(img_ascii_lcd_matches, dev);
| ^~~~~~~~~~~~~~~
| of_match_node
drivers/auxdisplay/img-ascii-lcd.c:234:15: warning: assignment to 'const struct of_device_id *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
234 | match = of_match_device(img_ascii_lcd_matches, dev);
| ^
drivers/firmware/microchip/mpfs-auto-update.c:439:42: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
439 | static int mpfs_auto_update_probe(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c: In function 'mpfs_auto_update_probe':
drivers/firmware/microchip/mpfs-auto-update.c:441:35: error: invalid use of undefined type 'struct platform_device'
441 | struct device *dev = &pdev->dev;
| ^~
drivers/firmware/microchip/mpfs-auto-update.c:456:9: error: implicit declaration of function 'platform_set_drvdata' [-Werror=implicit-function-declaration]
456 | platform_set_drvdata(pdev, priv);
| ^~~~~~~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c: At top level:
drivers/firmware/microchip/mpfs-auto-update.c:476:44: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
476 | static void mpfs_auto_update_remove(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c: In function 'mpfs_auto_update_remove':
drivers/firmware/microchip/mpfs-auto-update.c:478:46: error: implicit declaration of function 'platform_get_drvdata' [-Werror=implicit-function-declaration]
478 | struct mpfs_auto_update_priv *priv = platform_get_drvdata(pdev);
| ^~~~~~~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c:478:46: warning: initialization of 'struct mpfs_auto_update_priv *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
drivers/firmware/microchip/mpfs-auto-update.c: At top level:
drivers/firmware/microchip/mpfs-auto-update.c:483:15: error: variable 'mpfs_auto_update_driver' has initializer but incomplete type
483 | static struct platform_driver mpfs_auto_update_driver = {
| ^~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c:484:10: error: 'struct platform_driver' has no member named 'driver'
484 | .driver = {
| ^~~~~~
drivers/firmware/microchip/mpfs-auto-update.c:484:19: error: extra brace group at end of initializer
484 | .driver = {
| ^
drivers/firmware/microchip/mpfs-auto-update.c:484:19: note: (near initialization for 'mpfs_auto_update_driver')
drivers/firmware/microchip/mpfs-auto-update.c:484:19: warning: excess elements in struct initializer
drivers/firmware/microchip/mpfs-auto-update.c:484:19: note: (near initialization for 'mpfs_auto_update_driver')
drivers/firmware/microchip/mpfs-auto-update.c:487:10: error: 'struct platform_driver' has no member named 'probe'
487 | .probe = mpfs_auto_update_probe,
| ^~~~~
drivers/firmware/microchip/mpfs-auto-update.c:487:18: warning: excess elements in struct initializer
487 | .probe = mpfs_auto_update_probe,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c:487:18: note: (near initialization for 'mpfs_auto_update_driver')
drivers/firmware/microchip/mpfs-auto-update.c:488:10: error: 'struct platform_driver' has no member named 'remove_new'
488 | .remove_new = mpfs_auto_update_remove,
| ^~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c:488:23: warning: excess elements in struct initializer
488 | .remove_new = mpfs_auto_update_remove,
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c:488:23: note: (near initialization for 'mpfs_auto_update_driver')
drivers/firmware/microchip/mpfs-auto-update.c:490:1: warning: data definition has no type or storage class
490 | module_platform_driver(mpfs_auto_update_driver);
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c:490:1: error: type defaults to 'int' in declaration of 'module_platform_driver' [-Werror=implicit-int]
drivers/firmware/microchip/mpfs-auto-update.c:490:1: warning: parameter names (without types) in function declaration
drivers/firmware/microchip/mpfs-auto-update.c:483:31: error: storage size of 'mpfs_auto_update_driver' isn't known
483 | static struct platform_driver mpfs_auto_update_driver = {
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/firmware/microchip/mpfs-auto-update.c:483:31: warning: 'mpfs_auto_update_driver' defined but not used [-Wunused-variable]
drivers/gpu/drm/bridge/aux-hpd-bridge.c: In function 'drm_aux_hpd_bridge_release':
drivers/gpu/drm/bridge/aux-hpd-bridge.c:27:9: error: implicit declaration of function 'of_node_put' [-Werror=implicit-function-declaration]
27 | of_node_put(adev->dev.platform_data);
| ^~~~~~~~~~~
drivers/tty/serial/esp32_acm.c:367:37: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
367 | static int esp32s3_acm_probe(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c: In function 'esp32s3_acm_probe':
drivers/tty/serial/esp32_acm.c:369:38: error: invalid use of undefined type 'struct platform_device'
369 | struct device_node *np = pdev->dev.of_node;
| ^~
drivers/tty/serial/esp32_acm.c:374:34: error: invalid use of undefined type 'struct platform_device'
374 | port = devm_kzalloc(&pdev->dev, sizeof(*port), GFP_KERNEL);
| ^~
In file included from include/linux/device.h:15,
from include/linux/cdev.h:8,
from include/linux/tty_driver.h:9,
from include/linux/tty.h:10,
from include/linux/serial_core.h:17,
from drivers/tty/serial/esp32_acm.c:12:
drivers/tty/serial/esp32_acm.c:380:30: error: invalid use of undefined type 'struct platform_device'
380 | dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
| ^~
include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/tty/serial/esp32_acm.c:380:17: note: in expansion of macro 'dev_err'
380 | dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
| ^~~~~~~
drivers/tty/serial/esp32_acm.c:384:30: error: invalid use of undefined type 'struct platform_device'
384 | dev_err(&pdev->dev, "driver limited to %d serial ports\n",
| ^~
include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/tty/serial/esp32_acm.c:384:17: note: in expansion of macro 'dev_err'
384 | dev_err(&pdev->dev, "driver limited to %d serial ports\n",
| ^~~~~~~
drivers/tty/serial/esp32_acm.c:391:15: error: implicit declaration of function 'platform_get_resource' [-Werror=implicit-function-declaration]
391 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
| ^~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c:391:13: warning: assignment to 'struct resource *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
391 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
| ^
drivers/tty/serial/esp32_acm.c:396:52: error: invalid use of undefined type 'struct platform_device'
396 | port->membase = devm_ioremap_resource(&pdev->dev, res);
| ^~
drivers/tty/serial/esp32_acm.c:400:26: error: invalid use of undefined type 'struct platform_device'
400 | port->dev = &pdev->dev;
| ^~
drivers/tty/serial/esp32_acm.c:403:21: error: implicit declaration of function 'platform_get_irq'; did you mean 'platform_notify'? [-Werror=implicit-function-declaration]
403 | port->irq = platform_get_irq(pdev, 0);
| ^~~~~~~~~~~~~~~~
| platform_notify
drivers/tty/serial/esp32_acm.c:411:9: error: implicit declaration of function 'platform_set_drvdata' [-Werror=implicit-function-declaration]
411 | platform_set_drvdata(pdev, port);
| ^~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c: At top level:
drivers/tty/serial/esp32_acm.c:416:38: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
416 | static int esp32s3_acm_remove(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c: In function 'esp32s3_acm_remove':
drivers/tty/serial/esp32_acm.c:418:34: error: implicit declaration of function 'platform_get_drvdata' [-Werror=implicit-function-declaration]
418 | struct uart_port *port = platform_get_drvdata(pdev);
| ^~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c:418:34: warning: initialization of 'struct uart_port *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
drivers/tty/serial/esp32_acm.c: At top level:
drivers/tty/serial/esp32_acm.c:425:15: error: variable 'esp32s3_acm_driver' has initializer but incomplete type
425 | static struct platform_driver esp32s3_acm_driver = {
| ^~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c:426:10: error: 'struct platform_driver' has no member named 'probe'
426 | .probe = esp32s3_acm_probe,
| ^~~~~
drivers/tty/serial/esp32_acm.c:426:27: warning: excess elements in struct initializer
426 | .probe = esp32s3_acm_probe,
| ^~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c:426:27: note: (near initialization for 'esp32s3_acm_driver')
drivers/tty/serial/esp32_acm.c:427:10: error: 'struct platform_driver' has no member named 'remove'
427 | .remove = esp32s3_acm_remove,
| ^~~~~~
drivers/tty/serial/esp32_acm.c:427:27: warning: excess elements in struct initializer
427 | .remove = esp32s3_acm_remove,
| ^~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c:427:27: note: (near initialization for 'esp32s3_acm_driver')
drivers/tty/serial/esp32_acm.c:428:10: error: 'struct platform_driver' has no member named 'driver'
428 | .driver = {
| ^~~~~~
drivers/tty/serial/esp32_acm.c:428:27: error: extra brace group at end of initializer
428 | .driver = {
| ^
drivers/tty/serial/esp32_acm.c:428:27: note: (near initialization for 'esp32s3_acm_driver')
drivers/tty/serial/esp32_acm.c:428:27: warning: excess elements in struct initializer
drivers/tty/serial/esp32_acm.c:428:27: note: (near initialization for 'esp32s3_acm_driver')
drivers/tty/serial/esp32_acm.c: In function 'esp32s3_acm_init':
drivers/tty/serial/esp32_acm.c:442:15: error: implicit declaration of function 'platform_driver_register' [-Werror=implicit-function-declaration]
442 | ret = platform_driver_register(&esp32s3_acm_driver);
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_acm.c: In function 'esp32s3_acm_exit':
drivers/tty/serial/esp32_acm.c:451:9: error: implicit declaration of function 'platform_driver_unregister'; did you mean 'driver_unregister'? [-Werror=implicit-function-declaration]
451 | platform_driver_unregister(&esp32s3_acm_driver);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| driver_unregister
drivers/tty/serial/esp32_acm.c: At top level:
drivers/tty/serial/esp32_acm.c:425:31: error: storage size of 'esp32s3_acm_driver' isn't known
425 | static struct platform_driver esp32s3_acm_driver = {
| ^~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c:678:36: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
678 | static int esp32_uart_probe(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c: In function 'esp32_uart_probe':
drivers/tty/serial/esp32_uart.c:680:38: error: invalid use of undefined type 'struct platform_device'
680 | struct device_node *np = pdev->dev.of_node;
| ^~
drivers/tty/serial/esp32_uart.c:687:57: error: invalid use of undefined type 'struct platform_device'
687 | match = of_match_device(esp32_uart_dt_ids, &pdev->dev);
| ^~
drivers/tty/serial/esp32_uart.c:691:35: error: invalid use of undefined type 'struct platform_device'
691 | sport = devm_kzalloc(&pdev->dev, sizeof(*sport), GFP_KERNEL);
| ^~
In file included from include/linux/device.h:15,
from include/linux/cdev.h:8,
from include/linux/tty_driver.h:9,
from include/linux/tty.h:10,
from include/linux/serial_core.h:17,
from drivers/tty/serial/esp32_uart.c:13:
drivers/tty/serial/esp32_uart.c:699:30: error: invalid use of undefined type 'struct platform_device'
699 | dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
| ^~
include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/tty/serial/esp32_uart.c:699:17: note: in expansion of macro 'dev_err'
699 | dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
| ^~~~~~~
drivers/tty/serial/esp32_uart.c:703:30: error: invalid use of undefined type 'struct platform_device'
703 | dev_err(&pdev->dev, "driver limited to %d serial ports\n", UART_NR);
| ^~
include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/tty/serial/esp32_uart.c:703:17: note: in expansion of macro 'dev_err'
703 | dev_err(&pdev->dev, "driver limited to %d serial ports\n", UART_NR);
| ^~~~~~~
drivers/tty/serial/esp32_uart.c:709:15: error: implicit declaration of function 'platform_get_resource' [-Werror=implicit-function-declaration]
709 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
| ^~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c:709:13: warning: assignment to 'struct resource *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
709 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
| ^
drivers/tty/serial/esp32_uart.c:714:52: error: invalid use of undefined type 'struct platform_device'
714 | port->membase = devm_ioremap_resource(&pdev->dev, res);
| ^~
drivers/tty/serial/esp32_uart.c:718:40: error: invalid use of undefined type 'struct platform_device'
718 | sport->clk = devm_clk_get(&pdev->dev, NULL);
| ^~
drivers/tty/serial/esp32_uart.c:723:26: error: invalid use of undefined type 'struct platform_device'
723 | port->dev = &pdev->dev;
| ^~
drivers/tty/serial/esp32_uart.c:726:21: error: implicit declaration of function 'platform_get_irq'; did you mean 'platform_notify'? [-Werror=implicit-function-declaration]
726 | port->irq = platform_get_irq(pdev, 0);
| ^~~~~~~~~~~~~~~~
| platform_notify
drivers/tty/serial/esp32_uart.c:735:9: error: implicit declaration of function 'platform_set_drvdata' [-Werror=implicit-function-declaration]
735 | platform_set_drvdata(pdev, port);
| ^~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c: At top level:
drivers/tty/serial/esp32_uart.c:740:37: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
740 | static int esp32_uart_remove(struct platform_device *pdev)
| ^~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c: In function 'esp32_uart_remove':
drivers/tty/serial/esp32_uart.c:742:34: error: implicit declaration of function 'platform_get_drvdata' [-Werror=implicit-function-declaration]
742 | struct uart_port *port = platform_get_drvdata(pdev);
| ^~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c:742:34: warning: initialization of 'struct uart_port *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
drivers/tty/serial/esp32_uart.c: At top level:
drivers/tty/serial/esp32_uart.c:750:15: error: variable 'esp32_uart_driver' has initializer but incomplete type
750 | static struct platform_driver esp32_uart_driver = {
| ^~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c:751:10: error: 'struct platform_driver' has no member named 'probe'
751 | .probe = esp32_uart_probe,
| ^~~~~
drivers/tty/serial/esp32_uart.c:751:27: warning: excess elements in struct initializer
751 | .probe = esp32_uart_probe,
| ^~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c:751:27: note: (near initialization for 'esp32_uart_driver')
drivers/tty/serial/esp32_uart.c:752:10: error: 'struct platform_driver' has no member named 'remove'
752 | .remove = esp32_uart_remove,
| ^~~~~~
drivers/tty/serial/esp32_uart.c:752:27: warning: excess elements in struct initializer
752 | .remove = esp32_uart_remove,
| ^~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c:752:27: note: (near initialization for 'esp32_uart_driver')
drivers/tty/serial/esp32_uart.c:753:10: error: 'struct platform_driver' has no member named 'driver'
753 | .driver = {
| ^~~~~~
drivers/tty/serial/esp32_uart.c:753:27: error: extra brace group at end of initializer
753 | .driver = {
| ^
drivers/tty/serial/esp32_uart.c:753:27: note: (near initialization for 'esp32_uart_driver')
drivers/tty/serial/esp32_uart.c:753:27: warning: excess elements in struct initializer
drivers/tty/serial/esp32_uart.c:753:27: note: (near initialization for 'esp32_uart_driver')
drivers/tty/serial/esp32_uart.c: In function 'esp32_uart_init':
drivers/tty/serial/esp32_uart.c:767:15: error: implicit declaration of function 'platform_driver_register' [-Werror=implicit-function-declaration]
767 | ret = platform_driver_register(&esp32_uart_driver);
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/esp32_uart.c: In function 'esp32_uart_exit':
drivers/tty/serial/esp32_uart.c:776:9: error: implicit declaration of function 'platform_driver_unregister'; did you mean 'driver_unregister'? [-Werror=implicit-function-declaration]
776 | platform_driver_unregister(&esp32_uart_driver);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| driver_unregister
drivers/tty/serial/esp32_uart.c: At top level:
drivers/tty/serial/esp32_uart.c:750:31: error: storage size of 'esp32_uart_driver' isn't known
750 | static struct platform_driver esp32_uart_driver = {
| ^~~~~~~~~~~~~~~~~

Presumably caused by commit

f793fea7761d ("of: Stop circularly including of_device.h and of_platform.h")

I have used the devicetree tree from next-20231206 for today.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2023-12-07 15:11:55

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the devicetree tree

On Wed, Dec 6, 2023 at 7:57 PM Stephen Rothwell <[email protected]> wrote:
>
> Hi all,
>
> After merging the devicetree tree, today's linux-next build (x86_64
> allmodconfig) failed like this:

Not too surprised...

> drivers/auxdisplay/img-ascii-lcd.c: In function 'img_ascii_lcd_probe':

This is fixed in the auxdisplay tree. There are other trees with
dependencies as well, so I guess they happen to get merged before the
DT tree?

> drivers/firmware/microchip/mpfs-auto-update.c:439:42: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
> drivers/gpu/drm/bridge/aux-hpd-bridge.c:27:9: error: implicit declaration of function 'of_node_put' [-Werror=implicit-function-declaration]

These look like new drivers since I last tested.

> drivers/tty/serial/esp32_acm.c:367:37: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
> drivers/tty/serial/esp32_uart.c:678:36: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration

This one I just missed...

I'm sending out fixes for all these. I want to get the final patch
("of: Stop circularly including of_device.h and of_platform.h") for
all this in next to get some better build coverage and catch any new
drivers added. But if it is dropped for every new driver that breaks,
I'll never get it in. Can you fix these up or just leave them broken?
I can keep the fixes in my tree until they get applied by the
corresponding subsystem.

Rob

2023-12-07 20:59:06

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the devicetree tree

Hi Rob,

On Thu, 7 Dec 2023 09:11:22 -0600 Rob Herring <[email protected]> wrote:
>
> I'm sending out fixes for all these. I want to get the final patch
> ("of: Stop circularly including of_device.h and of_platform.h") for
> all this in next to get some better build coverage and catch any new
> drivers added. But if it is dropped for every new driver that breaks,
> I'll never get it in. Can you fix these up or just leave them broken?
> I can keep the fixes in my tree until they get applied by the
> corresponding subsystem.

These dependencies between trees are impossible to handle. Please if
you really need the final patch in, then you must put all the necessary
fixes in the same branch. There is no telling what order Linus (or I)
will merge the interdependent branches.

The alternative is to spray the needed fixes out to the other
subsystems and then put the final patch in after the merge window
closes or the next release.

I cannot "just leave them broken" because that will interfere with
other's trying to get their work done. I will try fix up the newly
added drivers if they are obvious, but in the case of these include file
cleanups, that can be quite difficult sometimes.
--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2023-12-07 22:06:14

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the devicetree tree

On Thu, Dec 7, 2023 at 2:58 PM Stephen Rothwell <[email protected]> wrote:
>
> Hi Rob,
>
> On Thu, 7 Dec 2023 09:11:22 -0600 Rob Herring <[email protected]> wrote:
> >
> > I'm sending out fixes for all these. I want to get the final patch
> > ("of: Stop circularly including of_device.h and of_platform.h") for
> > all this in next to get some better build coverage and catch any new
> > drivers added. But if it is dropped for every new driver that breaks,
> > I'll never get it in. Can you fix these up or just leave them broken?
> > I can keep the fixes in my tree until they get applied by the
> > corresponding subsystem.
>
> These dependencies between trees are impossible to handle. Please if
> you really need the final patch in, then you must put all the necessary
> fixes in the same branch. There is no telling what order Linus (or I)
> will merge the interdependent branches.
>
> The alternative is to spray the needed fixes out to the other
> subsystems and then put the final patch in after the merge window
> closes or the next release.

Yes, that's what I've been doing since July and plan to do for the
final patch. The final patch can't wait a cycle because then we'll
just have more moles to wack. There's a couple of dependencies that
still haven't been picked up (seems Sparc is unmaintained), so I'm
going to send those along. I'll carry any further fixes until they I
see they are applied.

> I cannot "just leave them broken" because that will interfere with
> other's trying to get their work done. I will try fix up the newly
> added drivers if they are obvious, but in the case of these include file
> cleanups, that can be quite difficult sometimes.

The simple (but not completely correct) fix is usually just add of.h
and platform_device.h. There could be a case of needing of_platform.h
instead of of_device.h or vice-versa, but those should all be fixed
and rare in new code.

Thanks,
Rob

2023-12-08 03:12:27

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the devicetree tree

Hi Rob,

On Thu, 7 Dec 2023 16:05:27 -0600 Rob Herring <[email protected]> wrote:
>
> On Thu, Dec 7, 2023 at 2:58 PM Stephen Rothwell <[email protected]> wrote:
> >
> > On Thu, 7 Dec 2023 09:11:22 -0600 Rob Herring <[email protected]> wrote:
> > >
> > > I'm sending out fixes for all these. I want to get the final patch
> > > ("of: Stop circularly including of_device.h and of_platform.h") for
> > > all this in next to get some better build coverage and catch any new
> > > drivers added. But if it is dropped for every new driver that breaks,
> > > I'll never get it in. Can you fix these up or just leave them broken?
> > > I can keep the fixes in my tree until they get applied by the
> > > corresponding subsystem.
> >
> > These dependencies between trees are impossible to handle. Please if
> > you really need the final patch in, then you must put all the necessary
> > fixes in the same branch. There is no telling what order Linus (or I)
> > will merge the interdependent branches.
> >
> > The alternative is to spray the needed fixes out to the other
> > subsystems and then put the final patch in after the merge window
> > closes or the next release.
>
> Yes, that's what I've been doing since July and plan to do for the
> final patch. The final patch can't wait a cycle because then we'll
> just have more moles to wack. There's a couple of dependencies that
> still haven't been picked up (seems Sparc is unmaintained), so I'm
> going to send those along. I'll carry any further fixes until they I
> see they are applied.

OK, so I have moved your tree to be merged last and I fixed up the new
driver, so hopefully we are good, now.
--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature