Re: How should I build u-boot for qemu_arm64_defconfig and run it on arm64 qemu virt machine?
Hi Chan, On Mon, 8 May 2023 at 03:41, Chan Kim wrote: > > Hello experts, > > > > Today I tried this test from scratch. > > In my environment, CROSS_COMPILE=aarch64-none-elf. > > Under u-boot directory, when I do 'make CROSS_COMPILE=aarch64-none-elf- > qemu_arm64_defconfig' and 'make -j28', I see this error at the end. > > > > aarch64-none-elf-ld.bfd: invalid length for memory region .sram > > > > after examining it, I added in include/configs/qemu-arm.h, > > > > #define CONFIG_SPL_MAX_SIZE value to 0x40 > > > > After fixing it, I got another similar error for .sdram and I added in > include/configs/qemu-arm.h, > > > > #define CONFIG_SPL_BSS_START_ADDR 0x4080 > > #define CONFIG_SPL_BSS_MAX_SIZE 0x10 > > > > Now I can do 'make -j28' with no error. > > But I found I have both 'u-boot' and 'spl/u-boot-spl' generated and I > realized for this qemu_arm64_defconfig, CONFIG_SPL=y and I get both u-boot > proper and u-boot spl. (SPL: secondary program loader, proper: main > bootloader. SPL runs first and the proper runs next). > > > > Until now I did objcopy of the u-boot(proper) and then extended it to > 0x40 byte. (the pflash size of the virt machine which starts at address > 0x). > > $ aarch64-none-elf-objcopy -O binary u-boot.v2022.07/u-boot pflashp.img > > $ dd if=/dev/zero of=pflashp.img bs=1c count=1 seek=67108863 > > > > And the qemu command is : > > $ qemu-6.2.0/build/aarch64-softmmu/qemu-system-aarch64 -machine > virt,gic-version=max,secure=on,virtualization=true -cpu max -drive > if=pflash,file=pflashp.img -m 2G -nographic -device > loader,file=linux-5.15.68/arch/arm64/boot/Image,addr=0x8020 > > > > The qemu virt machine has RAM from 0x4000 until 0xbfff. > > And I could see u-boot runs and it waits input for 3 seconds and outputs the > u-boot prompt. > > This is running u-boot (proper) from address 0 but since I have u-boot-spl > too, I should run it from u-boot-spl first, shouldn't I? > > > > How am I supposed to run u-boot-spl and u-boot on this qemu machine? (from > lds files, it looks like they both start at address 0). > > (qemu machine is arm64 virt machine, qemu 6.2.0). Have you tried the docs here? https://u-boot.readthedocs.io/en/latest/board/emulation/qemu-arm.html Why are you trying to run SPL? Regards, Simon
Re: Why ARM CPU hot(un)plug is still unsupported?
On Mon, 8 May 2023 at 14:18, Zongyuan Li wrote: > > I’v noticed that there used to be a patch series working on it: > > https://patchew.org/QEMU/20200613213629.21984-1-salil.me...@huawei.com/ > > It seems to be working, any reason on why it is not merged? Is there any > difficulty > to implement cpu hot(un)plug in qemu-arm(especially for kvm case)? Hope I can > find something I can help. Arm hotplug is unsupported for the usual reason any large feature isn't implemented: there has been nobody who: * cares about the feature * has sufficient time to work on it * has expertise to work on it (which you need from both the person sending the patches and also from people to review it). In this case Salil sent an RFC patchset, with a note that it also depended on some kernel changes. There was some minor discussion about it but as far as I can see Salil didn't move forward with it (and any RFC patchset needs further work before it will go in, that's why it's RFC). -- PMM
Why ARM CPU hot(un)plug is still unsupported?
I’v noticed that there used to be a patch series working on it: https://patchew.org/QEMU/20200613213629.21984-1-salil.me...@huawei.com/ It seems to be working, any reason on why it is not merged? Is there any difficulty to implement cpu hot(un)plug in qemu-arm(especially for kvm case)? Hope I can find something I can help. Regards, Zongyuan
How should I build u-boot for qemu_arm64_defconfig and run it on arm64 qemu virt machine?
Hello experts, Today I tried this test from scratch. In my environment, CROSS_COMPILE=aarch64-none-elf. Under u-boot directory, when I do 'make CROSS_COMPILE=aarch64-none-elf- qemu_arm64_defconfig' and 'make -j28', I see this error at the end. aarch64-none-elf-ld.bfd: invalid length for memory region .sram after examining it, I added in include/configs/qemu-arm.h, #define CONFIG_SPL_MAX_SIZE value to 0x40 After fixing it, I got another similar error for .sdram and I added in include/configs/qemu-arm.h, #define CONFIG_SPL_BSS_START_ADDR 0x4080 #define CONFIG_SPL_BSS_MAX_SIZE 0x10 Now I can do 'make -j28' with no error. But I found I have both 'u-boot' and 'spl/u-boot-spl' generated and I realized for this qemu_arm64_defconfig, CONFIG_SPL=y and I get both u-boot proper and u-boot spl. (SPL: secondary program loader, proper: main bootloader. SPL runs first and the proper runs next). Until now I did objcopy of the u-boot(proper) and then extended it to 0x40 byte. (the pflash size of the virt machine which starts at address 0x). $ aarch64-none-elf-objcopy -O binary u-boot.v2022.07/u-boot pflashp.img $ dd if=/dev/zero of=pflashp.img bs=1c count=1 seek=67108863 And the qemu command is : $ qemu-6.2.0/build/aarch64-softmmu/qemu-system-aarch64 -machine virt,gic-version=max,secure=on,virtualization=true -cpu max -drive if=pflash,file=pflashp.img -m 2G -nographic -device loader,file=linux-5.15.68/arch/arm64/boot/Image,addr=0x8020 The qemu virt machine has RAM from 0x4000 until 0xbfff. And I could see u-boot runs and it waits input for 3 seconds and outputs the u-boot prompt. This is running u-boot (proper) from address 0 but since I have u-boot-spl too, I should run it from u-boot-spl first, shouldn't I? How am I supposed to run u-boot-spl and u-boot on this qemu machine? (from lds files, it looks like they both start at address 0). (qemu machine is arm64 virt machine, qemu 6.2.0). Thank you. Chan Kim