Re: How should I build u-boot for qemu_arm64_defconfig and run it on arm64 qemu virt machine?

2023-05-08 Thread Simon Glass
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?

2023-05-08 Thread Peter Maydell
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?

2023-05-08 Thread Zongyuan Li
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?

2023-05-08 Thread Chan Kim
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