Hi, I'm implementing support for some modular Linux based systems using device tree overlays. The code is working but it seems a little more fiddly that than it should be so I'm wondering if I'm doing it right. An example of what I'm doing is arch/arm/boot/dts/Makefile: DTC_FLAGS_myboard += -@ drivers/foo/Makefile: obj-y += myplugin.dtb.o obj-y += mydriver.o drivers/foo/myplugin.dts: /dts-v1/; /plugin/; /{ fragment@0 { target = <&i2c0>; __overlay__ { gpio@74 { compatible = "nxp,pca9539"; reg = <0x74> }; }; }; }; drivers/foo/mydriver.c: extern uint8_t __dtb_myplugin_begin[]; extern uint8_t __dtb_myplugin_end[]; int mydriver_probe(struct platform_device *pdev) { u32 size = __dtb_myplugin_end - __dtb_myplugin_begin; int overlay_id; int ret; ret = of_overlay_fdt_apply(__dtb_myplugin_begin, size, &overlay_id); return ret; } The first issue is that I need to add -@ to the DTC_FLAGS for my board dtb. I kind of understand that I only need -@ if my overlay targets something symbolic so I might not need it but I was surprised that there wasn't a Kconfig option that makes this happen automatically. externing things in C files makes checkpatch.pl complain. I see the of/unittests.c and rcar_du_of.c hide this with a macro. I was again surprised that there wasn't a common macro to declare these.