[PATCH v2 3/4] board: Add QEMU m68k virt board support

Kuan-Wei Chiu visitorckw at gmail.com
Sun Dec 28 20:13:27 CET 2025


Hi Daniel,

On Sun, Dec 28, 2025 at 10:16:01AM +0900, Daniel Palmer wrote:
> Hi Kuan-Wei,
> 
> On Sat, 27 Dec 2025 at 02:54, Kuan-Wei Chiu <visitorckw at gmail.com> wrote:
> > diff --git a/board/emulation/qemu-m68k/qemu-m68k.c b/board/emulation/qemu-m68k/qemu-m68k.c
> 
> > +int dram_init(void)
> > +{
> 
> > +       /* QEMU places bootinfo after _end, aligned to 2 bytes */
> > +       addr = (ulong)&_end;
> > +       if (addr & 1)
> > +               addr++;
> 
> Maybe ALIGN() or round_up() could be used here instead of manually coding it?

Ack. Using ALIGN() is indeed cleaner.
I will update this in the next version.

> 
> > +       record = (struct bi_record *)addr;
> > +
> > +       if (record->tag != BI_MACHTYPE)
> > +               return 0;
> > +
> > +       while (record->tag != BI_LAST) {
> > +               if (record->tag == BI_MEMCHUNK) {
> > +                       gd->ram_size = record->data[1];
> > +                       break;
> > +               }
> > +               record = (struct bi_record *)((ulong)record + record->size);
> > +       }
> 
> One thing I found when I did the bootinfo parsing in my version is if
> I corrupted (during relocation etc) the bootinfo this type of loop
> would often get stuck forever.
> I'm not sure what the technical limit of the number of bootinfo
> entries is but bounding this to something reasonable feels like a good
> idea.

In that scenario, I assume the correct error handling would be to add a
loop limit and trigger a panic() if exceeded?

Regards,
Kuan-Wei



More information about the U-Boot mailing list