Re: [PATCH] scripts/dtc: Update to upstream version v1.6.0-51-g183df9e9c2b9

From: Michal Simek
Date: Mon Feb 15 2021 - 10:25:18 EST


Hi,

On 2/12/21 11:50 PM, Guenter Roeck wrote:
> On Fri, Feb 12, 2021 at 04:34:04PM -0600, Rob Herring wrote:
>> On Fri, Feb 12, 2021 at 3:01 PM Rob Herring <robh@xxxxxxxxxx> wrote:
>>>
>>> On Fri, Feb 12, 2021 at 9:17 AM Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
>>>>
>>>> On Fri, Feb 12, 2021 at 08:16:04AM -0600, Rob Herring wrote:
>>>>> On Thu, Feb 11, 2021 at 9:31 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
>>>>>>
>>>>>> Hi Rob,
>>>>>>
>>>>>> On Wed, Feb 03, 2021 at 03:26:03PM -0600, Rob Herring wrote:
>>>>>>> This adds the following commits from upstream:
>>>>>>>
>>>>>>> 183df9e9c2b9 gitignore: Ignore the swp files
>>>>>>> 0db6d09584e1 gitignore: Add cscope files
>>>>>>> 307afa1a7be8 Update Jon Loeliger's email
>>>>>>> ca16a723fa9d fdtdump: Fix gcc11 warning
>>>>>>> 64990a272e8f srcpos: increase MAX_SRCFILE_DEPTH
>>>>>>> 163f0469bf2e dtc: Allow overlays to have .dtbo extension
>>>>>>> 3b01518e688d Set last_comp_version correctly in new dtb and fix potential version issues in fdt_open_into
>>>>>>> f7e5737f26aa tests: Fix overlay_overlay_nosugar test case
>>>>>>> 7cd5d5fe43d5 libfdt: Tweak description of assume-aligned load helpers
>>>>>>> a7c404099349 libfdt: Internally perform potentially unaligned loads
>>>>>>> bab85e48a6f4 meson: increase default timeout for tests
>>>>>>> f8b46098824d meson: do not assume python is installed, skip tests
>>>>>>> 30a56bce4f0b meson: fix -Wall warning
>>>>>>> 5e735860c478 libfdt: Check for 8-byte address alignment in fdt_ro_probe_()
>>>>>>> 67849a327927 build-sys: add meson build
>>>>>>> 05874d08212d pylibfdt: allow build out of tree
>>>>>>> 3bc3a6b9fe0c dtc: Fix signedness comparisons warnings: Wrap (-1)
>>>>>>> e1147b159e92 dtc: Fix signedness comparisons warnings: change types
>>>>>>> 04cf1fdc0fcf convert-dtsv0: Fix signedness comparisons warning
>>>>>>> b30013edb878 libfdt: Fix kernel-doc comments
>>>>>>>
>>>>>>> Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
>>>>>>
>>>>>> This patch causes my little-endian microblaze qemu emulations to fail
>>>>>> silently (no console output) in next-20210211. Reverting this patch
>>>>>> together with "scripts: dtc: Build fdtoverlay tool" fixes the problem.
>>>>>
>>>>> My guess would be something in libfdt. Maybe 7cd5d5fe43d5 or
>>>>> a7c404099349, though that should return to historical behavior.
>>>>>
>>>>> Can you give me the qemu command line and kernel cfg?
>>>>>
>>>> I copied everything you should need to build a kernel (including toolchain)
>>>> to http://server.roeck-us.net/qemu/microblazeel/
>>>>
>>>> [ wow, I really need to update that compiler ]
>>>
>>> I can't seem to get BE/LE nor reverted or not working. It's always
>>> dying in microblaze_cache_init() based on the last print. It's your
>>> config, but gcc 10.1.0 off of kernel.org.
>>
>> It seems gcc 10.1 does not work. Seems to die before here:
>>
>> pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
>>
>>> There is at least one possible problem here that the FDT may only be 4
>>> byte aligned. The assumption is 8 bytes to not have misaligned
>>> accesses (and only for 64-bit accesses if 4 byte aligned). That's an
>>> issue with the qemu image loading depending on the sizes and
>>> combination of images loaded. That doesn't explain your failure
>>> though. As the initrd is a multiple of 8 bytes, you should be fine.
>>
>> It's the built-in dtb alignment that is the problem. I had noticed
>> this earlier, then discovered I had no built-in DTB and QEMU provides
>> a default. And changing didn't help because on broken gcc-10 it was 8
>> byte aligned. None of that should matter because we're not using the
>> built-in either, right? Wrong! The assembly entry code copies the
>> bootloader dtb into the built-in dtb space. I remember this now from
>> the last time I cleaned up the early DT code. I suppose the reason is
>> the bootloader dtb is not or may not be at an address mapped early.
>

I have tried 9.3 and 10.0 from
https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/
but none of them did boot on real HW.

Xilinx stayed on 9.2 and I have asked team to generate gcc 10/10.1 for
me to be able to try it myself.


> I think the problem is here:
>
> /* initialize device tree for usage in early_printk */
> early_init_devtree(_fdt_start);
>
> That probably also explains why enabling earlycon doesn't help.

Can you please elaborate more on it?
I see earlycon to be enabled quite early.

[ 0.000000] Ramdisk addr 0x00000000,
[ 0.000000] Compiled-in FDT at (ptrval)
[ 0.000000] earlycon: ns16550a0 at MMIO 0x44a01000 (options '115200n8')
[ 0.000000] printk: bootconsole [ns16550a0] enabled
[ 0.000000] cma: Reserved 16 MiB at 0xaec00000


>
>> I'd really like to get rid of that copy. Anyway, the oneliner below
>> fixes it. We need it either way, but I'd like some comments on the
>> copy.
>>
>
> I can not comment on the copy, but the change below does indeed fix
> the problem. Feel free to add
>
> Tested-by: Guenter Roeck <linux@xxxxxxxxxxxx>
>
> to the patch if you send it out.

Please send the patch. Would be the best as early as possible and I will
queue it for 5.12.

Thanks,
Michal