diff mbox series

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

Message ID 20220705191400.41632-10-peter@pjd.dev
State New
Headers show
Series [v2,1/9] hw/i2c/pca954x: Add method to get channels | expand

Commit Message

Peter Delevoryas July 5, 2022, 7:14 p.m. UTC
Signed-off-by: Peter Delevoryas <peter@pjd.dev>
---
 docs/system/arm/aspeed.rst | 48 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

Comments

Cédric Le Goater July 6, 2022, 5:58 a.m. UTC | #1
On 7/5/22 21:14, Peter Delevoryas wrote:
> Signed-off-by: Peter Delevoryas <peter@pjd.dev>

Reviewed-by: Cédric Le Goater <clg@kaod.org>

I fixed inline the URL links and moved the section at the end of the file.

Thanks,

C.


> ---
>   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 \
> +        -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
>   -----------------
>
Peter Delevoryas July 6, 2022, 7:54 a.m. UTC | #2
On Wed, Jul 06, 2022 at 07:58:44AM +0200, Cédric Le Goater wrote:
> On 7/5/22 21:14, Peter Delevoryas wrote:
> > Signed-off-by: Peter Delevoryas <peter@pjd.dev>
> 
> Reviewed-by: Cédric Le Goater <clg@kaod.org>
> 
> I fixed inline the URL links and moved the section at the end of the file.
> 
> Thanks,
> 
> C.

Thanks for that!

> 
> > ---
> >   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 \
> > +        -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
> >   -----------------
>
Joel Stanley July 6, 2022, 8:21 a.m. UTC | #3
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.


> +        -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
>
Peter Delevoryas July 6, 2022, 4:50 p.m. UTC | #4
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
> >
diff mbox series

Patch

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 \
+        -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
 -----------------