All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@kaod.org>
To: "Cédric Le Goater" <clg@redhat.com>,
	qemu-devel@nongnu.org, qemu-arm@nongnu.org,
	pierrick.bouvier@oss.qualcomm.com
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Steven Lee <steven_lee@aspeedtech.com>,
	Troy Lee <leetroy@gmail.com>,
	Jamin Lin <jamin_lin@aspeedtech.com>,
	kane_chen@aspeedtech.com,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>, Peter Delevoryas <me@pjd.dev>
Subject: Re: [PATCH 4/4] hw/arm: Remove fby35 machine
Date: Tue, 12 May 2026 11:39:22 +0200	[thread overview]
Message-ID: <089c31b4-d592-495c-90dd-ced4ce363423@kaod.org> (raw)
In-Reply-To: <20260510165704.2935316-5-clg@redhat.com>

Hi,

+ Peter for awareness. Forgot to add you, sorry about that.

It would be nice to have an Ack for this removal.

Thanks,

C.

On 5/10/26 18:57, Cédric Le Goater wrote:
> The fby35 machine was deprecated in QEMU 10.2 and is now removed in
> QEMU 11.1.
> 
> This multi-SoC machine was added as an example of heterogeneous
> systems, but the models never evolved and no public firmware is
> available to boot it. Users needing multi-SoC emulation should use the
> ast2700fc machine instead, which is based on newer AST2700 SoCs with
> better support.
> 
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
>   MAINTAINERS                     |   2 -
>   docs/about/deprecated.rst       |  10 --
>   docs/about/removed-features.rst |  10 ++
>   docs/system/arm/fby35.rst       |  52 --------
>   docs/system/target-arm.rst      |   1 -
>   hw/arm/fby35.c                  | 203 --------------------------------
>   hw/arm/meson.build              |   3 +-
>   7 files changed, 11 insertions(+), 270 deletions(-)
>   delete mode 100644 docs/system/arm/fby35.rst
>   delete mode 100644 hw/arm/fby35.c
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 9d3d64595370..14c8fe0da402 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1276,12 +1276,10 @@ F: include/hw/*/*aspeed*
>   F: hw/net/ftgmac100.c
>   F: include/hw/net/ftgmac100.h
>   F: docs/system/arm/aspeed.rst
> -F: docs/system/arm/fby35.rst
>   F: docs/specs/aspeed*
>   F: tests/functional/*/*aspeed*
>   F: tests/*/*aspeed*
>   F: tests/*/*ast2700*
> -F: hw/arm/fby35.c
>   F: pc-bios/ast27x0_bootrom.bin
>   F: roms/vbootrom
>   
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index e416f3d8a74b..bf6182d61c6e 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -250,16 +250,6 @@ deprecated; use the new name ``dtb-randomness`` instead. The new name
>   better reflects the way this property affects all random data within
>   the device tree blob, not just the ``kaslr-seed`` node.
>   
> -Arm ``fby35`` machine (since 10.2)
> -''''''''''''''''''''''''''''''''''
> -
> -The ``fby35`` machine was originally added as an example of a
> -multi-SoC system, with the expectation the models would evolve over
> -time in an heterogeneous system. This hasn't happened and no public
> -firmware is available to boot it. It can be replaced by the
> -``ast2700fc``, another multi-SoC machine based on the newer AST2700
> -SoCs which are excepted to receive better support in the future.
> -
>   
>   RISC-V default machine option (since 10.0)
>   ''''''''''''''''''''''''''''''''''''''''''
> diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
> index 2da8283d0e1e..9bd83b183f46 100644
> --- a/docs/about/removed-features.rst
> +++ b/docs/about/removed-features.rst
> @@ -1213,6 +1213,16 @@ models, it can be replaced by the ``ast2500-evb`` machine using the
>   ``fmc-model`` option to specify the flash type. The I2C devices
>   connected to the board can be defined via the QEMU command line.
>   
> +Arm ``fby35`` machine (removed in 11.1)
> +'''''''''''''''''''''''''''''''''''''''
> +
> +The ``fby35`` machine was originally added as an example of a
> +multi-SoC system, with the expectation the models would evolve over
> +time in an heterogeneous system. This hasn't happened and no public
> +firmware is available to boot it. It can be replaced by the
> +``ast2700fc``, another multi-SoC machine based on the newer AST2700
> +SoCs which are excepted to receive better support in the future.
> +
>   linux-user mode CPUs
>   --------------------
>   
> diff --git a/docs/system/arm/fby35.rst b/docs/system/arm/fby35.rst
> deleted file mode 100644
> index e19274e75c81..000000000000
> --- a/docs/system/arm/fby35.rst
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -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-chiplets/237/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.
> -
> -This machine model supports emulation of the boot from the CE0 flash device by
> -setting option ``execute-in-place``. When using this option, the CPU fetches
> -instructions to execute by reading CE0 and not from a preloaded ROM
> -initialized at machine init time. As a result, execution will be slower.
> diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst
> index c57102a4149f..e34492402f0a 100644
> --- a/docs/system/target-arm.rst
> +++ b/docs/system/target-arm.rst
> @@ -87,7 +87,6 @@ Board-specific documentation
>      arm/cubieboard
>      arm/emcraft-sf2
>      arm/exynos
> -   arm/fby35
>      arm/musicpal
>      arm/kzm
>      arm/nrf
> diff --git a/hw/arm/fby35.c b/hw/arm/fby35.c
> deleted file mode 100644
> index d3bfd2c7d26a..000000000000
> --- a/hw/arm/fby35.c
> +++ /dev/null
> @@ -1,203 +0,0 @@
> -/*
> - * Copyright (c) Meta Platforms, Inc. and affiliates. (http://www.meta.com)
> - *
> - * This code is licensed under the GPL version 2 or later. See the COPYING
> - * file in the top-level directory.
> - */
> -
> -#include "qemu/osdep.h"
> -#include "qemu/units.h"
> -#include "qapi/error.h"
> -#include "system/system.h"
> -#include "system/block-backend.h"
> -#include "hw/core/boards.h"
> -#include "hw/core/qdev-clock.h"
> -#include "hw/arm/aspeed_soc.h"
> -#include "hw/arm/boot.h"
> -#include "hw/arm/machines-qom.h"
> -
> -#define TYPE_FBY35 MACHINE_TYPE_NAME("fby35")
> -OBJECT_DECLARE_SIMPLE_TYPE(Fby35State, FBY35);
> -
> -struct Fby35State {
> -    MachineState parent_obj;
> -
> -    MemoryRegion bmc_memory;
> -    MemoryRegion bmc_dram;
> -    MemoryRegion bmc_boot_rom;
> -    MemoryRegion bic_memory;
> -    Clock *bic_sysclk;
> -
> -    Aspeed2600SoCState bmc;
> -    Aspeed10x0SoCState bic;
> -
> -    bool mmio_exec;
> -};
> -
> -#define FBY35_BMC_RAM_SIZE (2 * GiB)
> -#define FBY35_BMC_FIRMWARE_ADDR 0x0
> -
> -static void fby35_bmc_write_boot_rom(DriveInfo *dinfo, MemoryRegion *mr,
> -                                     hwaddr offset, size_t rom_size,
> -                                     Error **errp)
> -{
> -    BlockBackend *blk = blk_by_legacy_dinfo(dinfo);
> -    g_autofree void *storage = NULL;
> -    int64_t size;
> -
> -    /*
> -     * The block backend size should have already been 'validated' by
> -     * the creation of the m25p80 object.
> -     */
> -    size = blk_getlength(blk);
> -    if (size <= 0) {
> -        error_setg(errp, "failed to get flash size");
> -        return;
> -    }
> -
> -    if (rom_size > size) {
> -        rom_size = size;
> -    }
> -
> -    storage = g_malloc0(rom_size);
> -    if (blk_pread(blk, 0, rom_size, storage, 0) < 0) {
> -        error_setg(errp, "failed to read the initial flash content");
> -        return;
> -    }
> -
> -    /* TODO: find a better way to install the ROM */
> -    memcpy(memory_region_get_ram_ptr(mr) + offset, storage, rom_size);
> -}
> -
> -static void fby35_bmc_init(Fby35State *s)
> -{
> -    AspeedSoCState *soc;
> -    AspeedSoCClass *sc;
> -
> -    object_initialize_child(OBJECT(s), "bmc", &s->bmc, "ast2600-a3");
> -    soc = ASPEED_SOC(&s->bmc);
> -    sc = ASPEED_SOC_GET_CLASS(soc);
> -
> -    memory_region_init(&s->bmc_memory, OBJECT(&s->bmc), "bmc-memory",
> -                       UINT64_MAX);
> -    memory_region_add_subregion(get_system_memory(), 0, &s->bmc_memory);
> -    memory_region_init_ram(&s->bmc_dram, OBJECT(&s->bmc), "bmc-dram",
> -                           FBY35_BMC_RAM_SIZE, &error_abort);
> -
> -    object_property_set_int(OBJECT(&s->bmc), "ram-size", FBY35_BMC_RAM_SIZE,
> -                            &error_abort);
> -    object_property_set_link(OBJECT(&s->bmc), "memory", OBJECT(&s->bmc_memory),
> -                             &error_abort);
> -    object_property_set_link(OBJECT(&s->bmc), "dram", OBJECT(&s->bmc_dram),
> -                             &error_abort);
> -    object_property_set_int(OBJECT(&s->bmc), "hw-strap1", 0x000000C0,
> -                            &error_abort);
> -    object_property_set_int(OBJECT(&s->bmc), "hw-strap2", 0x00000003,
> -                            &error_abort);
> -    aspeed_soc_uart_set_chr(soc->uart, ASPEED_DEV_UART5, sc->uarts_base,
> -                            sc->uarts_num, serial_hd(0));
> -    qdev_realize(DEVICE(&s->bmc), NULL, &error_abort);
> -
> -    aspeed_board_init_flashes(&soc->fmc, "n25q00", 2, 0);
> -
> -    /* Install first FMC flash content as a boot rom. */
> -    if (!s->mmio_exec) {
> -        DriveInfo *mtd0 = drive_get(IF_MTD, 0, 0);
> -
> -        if (mtd0) {
> -            uint64_t rom_size = memory_region_size(&soc->spi_boot);
> -
> -            memory_region_init_rom(&s->bmc_boot_rom, NULL, "aspeed.boot_rom",
> -                                   rom_size, &error_abort);
> -            memory_region_add_subregion_overlap(&soc->spi_boot_container, 0,
> -                                                &s->bmc_boot_rom, 1);
> -
> -            fby35_bmc_write_boot_rom(mtd0, &s->bmc_boot_rom,
> -                                     FBY35_BMC_FIRMWARE_ADDR,
> -                                     rom_size, &error_abort);
> -        }
> -    }
> -}
> -
> -static void fby35_bic_init(Fby35State *s)
> -{
> -    AspeedSoCState *soc;
> -    AspeedSoCClass *sc;
> -
> -    s->bic_sysclk = clock_new(OBJECT(s), "SYSCLK");
> -    clock_set_hz(s->bic_sysclk, 200000000ULL);
> -
> -    object_initialize_child(OBJECT(s), "bic", &s->bic, "ast1030-a1");
> -    soc = ASPEED_SOC(&s->bic);
> -    sc = ASPEED_SOC_GET_CLASS(soc);
> -
> -    memory_region_init(&s->bic_memory, OBJECT(&s->bic), "bic-memory",
> -                       UINT64_MAX);
> -
> -    qdev_connect_clock_in(DEVICE(&s->bic), "sysclk", s->bic_sysclk);
> -    object_property_set_link(OBJECT(&s->bic), "memory", OBJECT(&s->bic_memory),
> -                             &error_abort);
> -    aspeed_soc_uart_set_chr(soc->uart, ASPEED_DEV_UART5, sc->uarts_base,
> -                            sc->uarts_num, serial_hd(1));
> -    qdev_realize(DEVICE(&s->bic), NULL, &error_abort);
> -
> -    aspeed_board_init_flashes(&soc->fmc, "sst25vf032b", 2, 2);
> -    aspeed_board_init_flashes(&soc->spi[0], "sst25vf032b", 2, 4);
> -    aspeed_board_init_flashes(&soc->spi[1], "sst25vf032b", 2, 6);
> -}
> -
> -static void fby35_init(MachineState *machine)
> -{
> -    Fby35State *s = FBY35(machine);
> -
> -    fby35_bmc_init(s);
> -    fby35_bic_init(s);
> -}
> -
> -
> -static bool fby35_get_mmio_exec(Object *obj, Error **errp)
> -{
> -    return FBY35(obj)->mmio_exec;
> -}
> -
> -static void fby35_set_mmio_exec(Object *obj, bool value, Error **errp)
> -{
> -    FBY35(obj)->mmio_exec = value;
> -}
> -
> -static void fby35_instance_init(Object *obj)
> -{
> -    FBY35(obj)->mmio_exec = false;
> -}
> -
> -static void fby35_class_init(ObjectClass *oc, const void *data)
> -{
> -    MachineClass *mc = MACHINE_CLASS(oc);
> -
> -    mc->desc = "Meta Platforms fby35";
> -    mc->deprecation_reason = "For a multi-soc machine, use 'ast2700fc' instead";
> -    mc->init = fby35_init;
> -    mc->no_floppy = 1;
> -    mc->no_cdrom = 1;
> -    mc->auto_create_sdcard = true;
> -    mc->min_cpus = mc->max_cpus = mc->default_cpus = 3;
> -
> -    object_class_property_add_bool(oc, "execute-in-place",
> -                                   fby35_get_mmio_exec,
> -                                   fby35_set_mmio_exec);
> -    object_class_property_set_description(oc, "execute-in-place",
> -                           "boot directly from CE0 flash device");
> -}
> -
> -static const TypeInfo fby35_types[] = {
> -    {
> -        .name = MACHINE_TYPE_NAME("fby35"),
> -        .parent = TYPE_MACHINE,
> -        .class_init = fby35_class_init,
> -        .instance_size = sizeof(Fby35State),
> -        .instance_init = fby35_instance_init,
> -        .interfaces = arm_machine_interfaces,
> -    },
> -};
> -
> -DEFINE_TYPES(fby35_types);
> diff --git a/hw/arm/meson.build b/hw/arm/meson.build
> index 063abf2cf654..80068f70bb9c 100644
> --- a/hw/arm/meson.build
> +++ b/hw/arm/meson.build
> @@ -62,8 +62,7 @@ arm_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files(
>     'aspeed_ast2600_gb200nvl.c',
>     'aspeed_ast2600_rainier.c',
>     'aspeed_ast10x0.c',
> -  'aspeed_ast10x0_evb.c',
> -  'fby35.c'))
> +  'aspeed_ast10x0_evb.c'))
>   arm_common_ss.add(when: ['CONFIG_ASPEED_SOC', 'TARGET_AARCH64'], if_true: files(
>     'aspeed_ast1700.c',
>     'aspeed_ast27x0.c',



  reply	other threads:[~2026-05-12  9:40 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-10 16:57 [PATCH 0/4] hw/arm: Remove deprecated Aspeed machines Cédric Le Goater
2026-05-10 16:57 ` [PATCH 1/4] hw/arm: Remove sonorapass-bmc machine Cédric Le Goater
2026-05-11  9:57   ` Philippe Mathieu-Daudé
2026-05-10 16:57 ` [PATCH 2/4] hw/arm: Remove qcom-dc-scm-v1-bmc and qcom-firework-bmc machines Cédric Le Goater
2026-05-11 10:11   ` Philippe Mathieu-Daudé
2026-05-10 16:57 ` [PATCH 3/4] hw/arm: Remove fp5280g2-bmc machine Cédric Le Goater
2026-05-11 10:11   ` Philippe Mathieu-Daudé
2026-05-10 16:57 ` [PATCH 4/4] hw/arm: Remove fby35 machine Cédric Le Goater
2026-05-12  9:39   ` Cédric Le Goater [this message]
2026-05-12 16:08     ` Peter Delevoryas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=089c31b4-d592-495c-90dd-ced4ce363423@kaod.org \
    --to=clg@kaod.org \
    --cc=andrew@codeconstruct.com.au \
    --cc=clg@redhat.com \
    --cc=jamin_lin@aspeedtech.com \
    --cc=joel@jms.id.au \
    --cc=kane_chen@aspeedtech.com \
    --cc=leetroy@gmail.com \
    --cc=me@pjd.dev \
    --cc=peter.maydell@linaro.org \
    --cc=pierrick.bouvier@oss.qualcomm.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=steven_lee@aspeedtech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.