qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 9/9] docs: aspeed: Add fby35 multi-SoC machine section


From: Peter Delevoryas
Subject: Re: [PATCH v2 9/9] docs: aspeed: Add fby35 multi-SoC machine section
Date: Wed, 6 Jul 2022 09:50:33 -0700

On Wed, Jul 06, 2022 at 08:21:12AM +0000, Joel Stanley wrote:
> On Tue, 5 Jul 2022 at 19:14, Peter Delevoryas <peter@pjd.dev> wrote:
> >
> > Signed-off-by: Peter Delevoryas <peter@pjd.dev>
> 
> Reviewed-by: Joel Stanley <joel@jms.id.au>
> 
> > ---
> >  docs/system/arm/aspeed.rst | 48 ++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 48 insertions(+)
> >
> > diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
> > index 5d0a7865d3..b233191b67 100644
> > --- a/docs/system/arm/aspeed.rst
> > +++ b/docs/system/arm/aspeed.rst
> > @@ -136,6 +136,54 @@ AST1030 SoC based machines :
> >
> >  - ``ast1030-evb``          Aspeed AST1030 Evaluation board (Cortex-M4F)
> >
> > +Facebook Yosemite v3.5 Platform and CraterLake Server (``fby35``)
> > +==================================================================
> > +
> > +Facebook has a series of multi-node compute server designs named
> > +Yosemite. The most recent version released was
> > +`Yosemite v3 
> > <https://www.opencompute.org/documents/ocp-yosemite-v3-platform-design-specification-1v16-pdf>`.
> > +
> > +Yosemite v3.5 is an iteration on this design, and is very similar: there's 
> > a
> > +baseboard with a BMC, and 4 server slots. The new server board design 
> > termed
> > +"CraterLake" includes a Bridge IC (BIC), with room for expansion boards to
> > +include various compute accelerators (video, inferencing, etc). At the 
> > moment,
> > +only the first server slot's BIC is included.
> > +
> > +Yosemite v3.5 is itself a sled which fits into a 40U chassis, and 3 sleds
> > +can be fit into a chassis. See `here 
> > <https://www.opencompute.org/products/423/wiwynn-yosemite-v3-server>`
> > +for an example.
> > +
> > +In this generation, the BMC is an AST2600 and each BIC is an AST1030. The 
> > BMC
> > +runs `OpenBMC <https://github.com/facebook/openbmc>`, and the BIC runs
> > +`OpenBIC <https://github.com/facebook/openbic>`.
> > +
> > +Firmware images can be retrieved from the Github releases or built from the
> > +source code, see the README's for instructions on that. This image uses the
> > +"fby35" machine recipe from OpenBMC, and the "yv35-cl" target from OpenBIC.
> > +Some reference images can also be found here:
> > +
> > +.. code-block:: bash
> > +
> > +    $ wget 
> > https://github.com/facebook/openbmc/releases/download/openbmc-e2294ff5d31d/fby35.mtd
> > +    $ wget 
> > https://github.com/peterdelevoryas/OpenBIC/releases/download/oby35-cl-2022.13.01/Y35BCL.elf
> > +
> > +Since this machine has multiple SoC's, each with their own serial console, 
> > the
> > +recommended way to run it is to allocate a pseudoterminal for each serial
> > +console and let the monitor use stdio. Also, starting in a paused state is
> > +useful because it allows you to attach to the pseudoterminals before the 
> > boot
> > +process starts.
> > +
> > +.. code-block:: bash
> > +
> > +    $ qemu-system-arm -machine fby35 \
> > +        -drive file=fby35.mtd,format=raw,if=mtd \
> > +        -device loader,file=Y35BCL.elf,addr=0,cpu-num=2 \
> 
> I came across a quirk of the qemu commandline when testing.
> 
> -drive knows how to expand ~ in a path, but -device loader does not.
> Something for someone to look into on a rainy day!
> 
> eg:
> 
> $ build/qemu-system-arm -M fby35 -drive
> file=~/tmp/fby35.mtd,format=raw,if=mtd -device
> loader,file=~/tmp/Y35BCL.elf,addr=0,cpu-num=2 -serial pty -serial pty
> -serial mon:stdio -display none -S
> char device redirected to /dev/pts/3 (label serial0)
> char device redirected to /dev/pts/5 (label serial1)
> qemu-system-arm: warning: Aspeed iBT has no chardev backend
> ~/tmp/Y35BCL.elf: No such file or directory
> qemu-system-arm: -device
> loader,file=~/tmp/Y35BCL.elf,addr=0,cpu-num=2: Cannot load specified
> image ~/tmp/Y35BCL.elf
> 
> loader uses open(2) in load_elf_ram_sym.
> 
> The call stack for -drive looks like this (using a bad path to make it
> easier to identify what's going on):
> 
> #0  __libc_open64 (file=file@entry=0xaaaaac009250
> "/home/joel/tmp/fby35.mtda", oflag=oflag@entry=524288) at
> ../sysdeps/unix/sysv/linux/open64.c:37
> #1  0x0000aaaaab3b18bc in open64 (__oflag=524288,
> __path=0xaaaaac009250 "/home/joel/tmp/fby35.mtda") at
> /usr/include/aarch64-linux-gnu/bits/fcntl2.h:59
> #2  qemu_open_cloexec (mode=0, flags=0, name=0xaaaaac009250
> "/home/joel/tmp/fby35.mtda") at ../util/osdep.c:286
> #3  qemu_open_internal (name=name@entry=0xaaaaac009250
> "/home/joel/tmp/fby35.mtda", flags=flags@entry=0, mode=mode@entry=0,
> errp=errp@entry=0xffffffffeb70) at ../util/osdep.c:330
> #4  0x0000aaaaab3b1f30 in qemu_open (name=name@entry=0xaaaaac009250
> "/home/joel/tmp/fby35.mtda", flags=flags@entry=0,
> errp=errp@entry=0xffffffffeb70) at ../util/osdep.c:360
> #5  0x0000aaaaab30d9d8 in raw_open_common (bs=0xaaaaac002c40,
> options=<optimized out>, bdrv_flags=155650, open_flags=<optimized
> out>, device=<optimized out>, errp=0xffffffffeb70)
>     at ../block/file-posix.c:680
> #6  0x0000aaaaab2a53d0 in bdrv_open_driver
> (bs=bs@entry=0xaaaaac002c40, drv=drv@entry=0xaaaaabc13250 <bdrv_file>,
> node_name=<optimized out>, options=options@entry=0xaaaaac008230,
>     open_flags=open_flags@entry=155650,
> errp=errp@entry=0xffffffffec18) at ../block.c:1625
> #7  0x0000aaaaab2a9454 in bdrv_open_common (errp=0xffffffffec18,
> options=0xaaaaac008230, file=0x0, bs=0xaaaaac002c40) at
> ../block.c:1922
> #8  bdrv_open_inherit (filename=<optimized out>,
> filename@entry=0xaaaaabff9cd0 "/home/joel/tmp/fby35.mtda",
> reference=reference@entry=0x0, options=0xaaaaac008230,
> flags=<optimized out>,
>     flags@entry=0, parent=parent@entry=0xaaaaabffb580,
> child_class=child_class@entry=0xaaaaab864498 <child_of_bds>,
> child_role=child_role@entry=19, errp=errp@entry=0xffffffffed48)
>     at ../block.c:3991
> #9  0x0000aaaaab2aa35c in bdrv_open_child_bs
> (filename=filename@entry=0xaaaaabff9cd0 "/home/joel/tmp/fby35.mtda",
> options=options@entry=0xaaaaac000a50,
>     bdref_key=bdref_key@entry=0xaaaaab573010 "file",
> parent=parent@entry=0xaaaaabffb580,
> child_class=child_class@entry=0xaaaaab864498 <child_of_bds>,
> child_role=child_role@entry=19,
>     allow_none=allow_none@entry=true, errp=errp@entry=0xffffffffed48)
> at ../block.c:3624
> #10 0x0000aaaaab2a98e4 in bdrv_open_inherit
> (filename=filename@entry=0xaaaaabff9cd0 "/home/joel/tmp/fby35.mtda",
> reference=reference@entry=0x0, options=0xaaaaac000a50,
>     options@entry=0xaaaaabff8b70, flags=<optimized out>,
> parent=parent@entry=0x0, child_class=child_class@entry=0x0,
> child_role=child_role@entry=0,
>     errp=errp@entry=0xaaaaabc62368 <error_fatal>) at ../block.c:3938
> #11 0x0000aaaaab2aa758 in bdrv_open
> (filename=filename@entry=0xaaaaabff9cd0 "/home/joel/tmp/fby35.mtda",
> reference=reference@entry=0x0, options=options@entry=0xaaaaabff8b70,
>     flags=<optimized out>, errp=errp@entry=0xaaaaabc62368
> <error_fatal>) at ../block.c:4086
> #12 0x0000aaaaab2c59c8 in blk_new_open
> (filename=filename@entry=0xaaaaabff9cd0 "/home/joel/tmp/fby35.mtda",
> reference=reference@entry=0x0, options=options@entry=0xaaaaabff8b70,
>     flags=<optimized out>, errp=errp@entry=0xaaaaabc62368
> <error_fatal>) at ../block/block-backend.c:454
> #13 0x0000aaaaab2956c8 in blockdev_init
> (file=file@entry=0xaaaaabff9cd0 "/home/joel/tmp/fby35.mtda",
> bs_opts=bs_opts@entry=0xaaaaabff8b70, errp=errp@entry=0xaaaaabc62368
> <error_fatal>)
>     at ../blockdev.c:592
> #14 0x0000aaaaab296884 in drive_new (all_opts=0xaaaaabd1a3b0,
> block_default_type=<optimized out>, errp=0xaaaaabc62368 <error_fatal>)
> at ../blockdev.c:981
> #15 0x0000aaaaaafea1e8 in drive_init_func (opaque=<optimized out>,
> opts=<optimized out>, errp=<optimized out>) at ../softmmu/vl.c:648
> #16 0x0000aaaaab3c0a74 in qemu_opts_foreach (list=<optimized out>,
> func=func@entry=0xaaaaaafea1d0 <drive_init_func>,
> opaque=opaque@entry=0xaaaaabf3eb58,
>     errp=errp@entry=0xaaaaabc62368 <error_fatal>) at 
> ../util/qemu-option.c:1135
> #17 0x0000aaaaaafee9d8 in configure_blockdev (bdo_queue=0xaaaaabb866c0
> <bdo_queue>, snapshot=0, machine_class=0xaaaaabf3eab0) at
> ../softmmu/vl.c:707
> #18 qemu_create_early_backends () at ../softmmu/vl.c:1882
> #19 qemu_init (argc=<optimized out>, argv=0xfffffffff358,
> envp=envp@entry=0x0) at ../softmmu/vl.c:3502
> #20 0x0000aaaaaadb4300 in qemu_main (envp=0x0, argv=<optimized out>,
> argc=<optimized out>) at ../softmmu/main.c:35
> #21 main (argc=<optimized out>, argv=<optimized out>) at ../softmmu/main.c:45
> 
> and that was where I lost interest.

Oh that's odd. I can go look into this, I'd be curious to find out what's
happening.

Thanks for reviewing everything and trying it out!
Peter

> 
> 
> > +        -serial pty -serial pty -serial mon:stdio \
> > +        -display none -S
> > +    $ screen /dev/tty0 # In a separate TMUX pane, terminal window, etc.
> > +    $ screen /dev/tty1
> > +    $ (qemu) c            # Start the boot process once screen is setup.
> > +
> >  Supported devices
> >  -----------------
> >
> > --
> > 2.37.0
> >



reply via email to

[Prev in Thread] Current Thread [Next in Thread]