* [PATCH 0/2] FDT fixes for running on native Open Firmware
@ 2017-05-13 10:22 ` Sascha Silbe
0 siblings, 0 replies; 9+ messages in thread
From: Sascha Silbe @ 2017-05-13 10:22 UTC (permalink / raw)
To: Rob Herring, Frank Rowand; +Cc: devicetree, linux-kernel
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
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 0/2] FDT fixes for running on native Open Firmware
@ 2017-05-13 10:22 ` Sascha Silbe
0 siblings, 0 replies; 9+ 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] 9+ messages in thread
* [PATCH 1/2] fdt: correctly handle uncompressed node names
2017-05-13 10:22 ` Sascha Silbe
(?)
@ 2017-05-13 10:22 ` Sascha Silbe
2017-05-13 12:35 ` kbuild test robot
` (2 more replies)
-1 siblings, 3 replies; 9+ 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] 9+ messages in thread
* [PATCH 2/2] of: fdt: fix unflattening of FDTs containing uncompressed paths
2017-05-13 10:22 ` Sascha Silbe
(?)
(?)
@ 2017-05-13 10:22 ` Sascha Silbe
-1 siblings, 0 replies; 9+ 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] 9+ messages in thread
* Re: [PATCH 1/2] fdt: correctly handle uncompressed node names
@ 2017-05-13 12:35 ` kbuild test robot
0 siblings, 0 replies; 9+ messages in thread
From: kbuild test robot @ 2017-05-13 12:35 UTC (permalink / raw)
To: Sascha Silbe
Cc: kbuild-all, Rob Herring, Frank Rowand, devicetree, linux-kernel
[-- 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] 9+ messages in thread
* Re: [PATCH 1/2] fdt: correctly handle uncompressed node names
@ 2017-05-13 12:35 ` kbuild test robot
0 siblings, 0 replies; 9+ 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] 9+ messages in thread
* Re: [PATCH 1/2] fdt: correctly handle uncompressed node names
@ 2017-05-13 13:07 ` kbuild test robot
0 siblings, 0 replies; 9+ messages in thread
From: kbuild test robot @ 2017-05-13 13:07 UTC (permalink / raw)
To: Sascha Silbe
Cc: kbuild-all, Rob Herring, Frank Rowand, devicetree, linux-kernel
[-- 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] 9+ messages in thread
* Re: [PATCH 1/2] fdt: correctly handle uncompressed node names
@ 2017-05-13 13:07 ` kbuild test robot
0 siblings, 0 replies; 9+ 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] 9+ 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
2017-05-13 12:35 ` kbuild test robot
2017-05-13 13:07 ` kbuild test robot
@ 2017-05-15 15:19 ` Rob Herring
2 siblings, 0 replies; 9+ messages in thread
From: Rob Herring @ 2017-05-15 15:19 UTC (permalink / raw)
To: Sascha Silbe; +Cc: Frank Rowand, devicetree, linux-kernel
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] 9+ messages in thread
end of thread, other threads:[~2017-05-15 15:23 UTC | newest]
Thread overview: 9+ 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 ` Sascha Silbe
2017-05-13 10:22 ` [PATCH 1/2] fdt: correctly handle uncompressed node names Sascha Silbe
2017-05-13 12:35 ` kbuild test robot
2017-05-13 12:35 ` kbuild test robot
2017-05-13 13:07 ` 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.