* [PATCH 0/2] FDT fixes for running on native Open Firmware @ 2017-05-13 10:22 Sascha Silbe 2017-05-13 10:22 ` [PATCH 1/2] fdt: correctly handle uncompressed node names Sascha Silbe 2017-05-13 10:22 ` [PATCH 2/2] of: fdt: fix unflattening of FDTs containing uncompressed paths Sascha Silbe 0 siblings, 2 replies; 6+ messages in thread From: Sascha Silbe @ 2017-05-13 10:22 UTC (permalink / raw) To: Rob Herring, Frank Rowand Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA Two fixes for bugs in the FDT code I discovered while trying to get the mainline kernel to run on OLPC XO-1.75. XOs are running Open Firmware natively, not just passing down some blob. Sascha Silbe (2): fdt: correctly handle uncompressed node names of: fdt: fix unflattening of FDTs containing uncompressed paths drivers/of/fdt.c | 2 ++ scripts/dtc/libfdt/fdt_ro.c | 3 +++ 2 files changed, 5 insertions(+) -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] fdt: correctly handle uncompressed node names 2017-05-13 10:22 [PATCH 0/2] FDT fixes for running on native Open Firmware Sascha Silbe @ 2017-05-13 10:22 ` Sascha Silbe [not found] ` <20170513102229.22579-2-x-linux-XAdK+dDVA0n/cwiKa4OQEw@public.gmane.org> 2017-05-15 15:19 ` Rob Herring 2017-05-13 10:22 ` [PATCH 2/2] of: fdt: fix unflattening of FDTs containing uncompressed paths Sascha Silbe 1 sibling, 2 replies; 6+ messages in thread From: Sascha Silbe @ 2017-05-13 10:22 UTC (permalink / raw) To: Rob Herring, Frank Rowand; +Cc: devicetree, linux-kernel When handling uncompressed node names, we need to compare the last component rather than the entire string. Signed-off-by: Sascha Silbe <x-linux@infra-silbe.de> --- scripts/dtc/libfdt/fdt_ro.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/dtc/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c index 3d00d2eee0e3..ca03ff87429c 100644 --- a/scripts/dtc/libfdt/fdt_ro.c +++ b/scripts/dtc/libfdt/fdt_ro.c @@ -64,6 +64,9 @@ static int _fdt_nodename_eq(const void *fdt, int offset, /* short match */ return 0; + if (*p == '/') + /* Uncompressed node name. Only compare the last part. */ + p = strrchr(p, '/') + 1; if (memcmp(p, s, len) != 0) return 0; -- 2.11.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <20170513102229.22579-2-x-linux-XAdK+dDVA0n/cwiKa4OQEw@public.gmane.org>]
* Re: [PATCH 1/2] fdt: correctly handle uncompressed node names [not found] ` <20170513102229.22579-2-x-linux-XAdK+dDVA0n/cwiKa4OQEw@public.gmane.org> @ 2017-05-13 12:35 ` kbuild test robot 2017-05-13 13:07 ` kbuild test robot 1 sibling, 0 replies; 6+ messages in thread From: kbuild test robot @ 2017-05-13 12:35 UTC (permalink / raw) To: Sascha Silbe Cc: kbuild-all-JC7UmRfGjtg, Rob Herring, Frank Rowand, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 1327 bytes --] Hi Sascha, [auto build test ERROR on robh/for-next] [also build test ERROR on v4.11 next-20170512] [cannot apply to glikely/devicetree/next] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Sascha-Silbe/fdt-correctly-handle-uncompressed-node-names/20170513-184012 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next config: arm64-alldefconfig (attached as .config) compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm64 All errors (new ones prefixed by >>): ./drivers/firmware/efi/libstub/lib.a(lib-fdt_ro.stub.o): In function `__efistub_fdt_subnode_offset_namelen': >> __efistub_fdt_ro.c:(.init.text+0x248): undefined reference to `__efistub_strrchr' __efistub_fdt_ro.c:(.init.text+0x248): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `__efistub_strrchr' --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 8703 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] fdt: correctly handle uncompressed node names [not found] ` <20170513102229.22579-2-x-linux-XAdK+dDVA0n/cwiKa4OQEw@public.gmane.org> 2017-05-13 12:35 ` kbuild test robot @ 2017-05-13 13:07 ` kbuild test robot 1 sibling, 0 replies; 6+ messages in thread From: kbuild test robot @ 2017-05-13 13:07 UTC (permalink / raw) To: Sascha Silbe Cc: kbuild-all-JC7UmRfGjtg, Rob Herring, Frank Rowand, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 1245 bytes --] Hi Sascha, [auto build test ERROR on robh/for-next] [also build test ERROR on v4.11 next-20170512] [cannot apply to glikely/devicetree/next] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Sascha-Silbe/fdt-correctly-handle-uncompressed-node-names/20170513-184012 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next config: arm-omap2plus_defconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm All errors (new ones prefixed by >>): arch/arm/boot/compressed/fdt_ro.o: In function `fdt_subnode_offset_namelen': >> arch/arm/boot/compressed/fdt_ro.c:69: undefined reference to `strrchr' >> arch/arm/boot/compressed/fdt_ro.o:(.debug_addr+0x364): undefined reference to `strrchr' --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 29326 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] fdt: correctly handle uncompressed node names 2017-05-13 10:22 ` [PATCH 1/2] fdt: correctly handle uncompressed node names Sascha Silbe [not found] ` <20170513102229.22579-2-x-linux-XAdK+dDVA0n/cwiKa4OQEw@public.gmane.org> @ 2017-05-15 15:19 ` Rob Herring 1 sibling, 0 replies; 6+ messages in thread From: Rob Herring @ 2017-05-15 15:19 UTC (permalink / raw) To: Sascha Silbe Cc: Frank Rowand, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org On Sat, May 13, 2017 at 5:22 AM, Sascha Silbe <x-linux@infra-silbe.de> wrote: > When handling uncompressed node names, we need to compare the last > component rather than the entire string. > > Signed-off-by: Sascha Silbe <x-linux@infra-silbe.de> > --- > scripts/dtc/libfdt/fdt_ro.c | 3 +++ > 1 file changed, 3 insertions(+) This needs to be a patch against dtc, sent to devicetree-compiler list and accepted there, then I can pick it up. > > diff --git a/scripts/dtc/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c > index 3d00d2eee0e3..ca03ff87429c 100644 > --- a/scripts/dtc/libfdt/fdt_ro.c > +++ b/scripts/dtc/libfdt/fdt_ro.c > @@ -64,6 +64,9 @@ static int _fdt_nodename_eq(const void *fdt, int offset, > /* short match */ > return 0; > > + if (*p == '/') > + /* Uncompressed node name. Only compare the last part. */ > + p = strrchr(p, '/') + 1; However, you are changing behavior here that I'd guess has existed for some time. This makes me suspicious that this is correct especially when it is non-FDT DT you are trying to fix. Given that 0-day reports an error with EFI stub, you also have to consider if u-boot, barebox, grub, and all the other libfdt users provide strrchr. Rob ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] of: fdt: fix unflattening of FDTs containing uncompressed paths 2017-05-13 10:22 [PATCH 0/2] FDT fixes for running on native Open Firmware Sascha Silbe 2017-05-13 10:22 ` [PATCH 1/2] fdt: correctly handle uncompressed node names Sascha Silbe @ 2017-05-13 10:22 ` Sascha Silbe 1 sibling, 0 replies; 6+ messages in thread From: Sascha Silbe @ 2017-05-13 10:22 UTC (permalink / raw) To: Rob Herring, Frank Rowand; +Cc: devicetree, linux-kernel Probably since commit dfbd4c6eff35 ("drivers/of: Split unflatten_dt_node()"), unflattening an FDT containing uncompressed node names (e.g. "/gpio@d4019000/gpio@0") will abort after scanning the root node because fpsize wasn't updated to include the path len. Signed-off-by: Sascha Silbe <x-linux@infra-silbe.de> --- drivers/of/fdt.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index e5ce4b59e162..2d5414e644b3 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -309,6 +309,8 @@ static unsigned int populate_node(const void *blob, fpsize += l; allocl = fpsize; } + } else { + fpsize += allocl; } np = unflatten_dt_alloc(mem, sizeof(struct device_node) + allocl, -- 2.11.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-05-15 15:19 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-13 10:22 [PATCH 0/2] FDT fixes for running on native Open Firmware Sascha Silbe
2017-05-13 10:22 ` [PATCH 1/2] fdt: correctly handle uncompressed node names Sascha Silbe
[not found] ` <20170513102229.22579-2-x-linux-XAdK+dDVA0n/cwiKa4OQEw@public.gmane.org>
2017-05-13 12:35 ` kbuild test robot
2017-05-13 13:07 ` kbuild test robot
2017-05-15 15:19 ` Rob Herring
2017-05-13 10:22 ` [PATCH 2/2] of: fdt: fix unflattening of FDTs containing uncompressed paths Sascha Silbe
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox