* [PATCH 1/4] hw/arm: Remove sonorapass-bmc machine
2026-05-10 16:57 [PATCH 0/4] hw/arm: Remove deprecated Aspeed machines Cédric Le Goater
@ 2026-05-10 16:57 ` 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
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Cédric Le Goater @ 2026-05-10 16:57 UTC (permalink / raw)
To: qemu-devel, qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley, Cédric Le Goater
The sonorapass-bmc machine was deprecated in QEMU 10.2 and is now
removed in QEMU 11.1.
This OCP SonoraPass BMC lab server never entered production and can be
replaced by the ast2500-evb machine with appropriate fmc-model and I2C
device configuration via command line.
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
docs/about/deprecated.rst | 9 ---
docs/about/removed-features.rst | 10 ++-
docs/system/arm/aspeed.rst | 5 +-
hw/arm/aspeed_ast2500_sonorapass.c | 102 -----------------------------
hw/arm/meson.build | 1 -
5 files changed, 11 insertions(+), 116 deletions(-)
delete mode 100644 hw/arm/aspeed_ast2500_sonorapass.c
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 5551bd12ad83..cc75afe55d95 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -250,15 +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 ``sonorapass-bmc`` machine (since 10.2)
-'''''''''''''''''''''''''''''''''''''''''''
-
-The ``sonorapass-bmc`` machine represents a lab server that never
-entered production. Since it does not rely on any specific device
-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 ``qcom-dc-scm-v1-bmc`` and ``qcom-firework-bmc`` machine (since 10.2)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index 626162022a8c..02e3c06b2988 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -1112,7 +1112,7 @@ This machine was removed because it was unused. Alternative AST2500 based
OpenPOWER machines are ``witherspoon-bmc`` and ``romulus-bmc``.
ppc ``taihu`` machine (removed in 7.2)
-'''''''''''''''''''''''''''''''''''''''''''''
+''''''''''''''''''''''''''''''''''''''
This machine was removed because it was partially emulated and 405
machines are very similar. Use the ``ref405ep`` machine instead.
@@ -1186,6 +1186,14 @@ Arm ``highbank`` and ``midway`` machines (removed in 11.0)
There were no known users left for these machines. If you just want to
boot a Cortex-A15 or Cortex-A9 Linux, use the ``virt`` machine instead.
+Arm ``sonorapass-bmc`` machine (removed in 11.1)
+''''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``sonorapass-bmc`` machine represents a lab server that never
+entered production. 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.
linux-user mode CPUs
--------------------
diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
index d0054a7dbb88..1871f31713d4 100644
--- a/docs/system/arm/aspeed.rst
+++ b/docs/system/arm/aspeed.rst
@@ -1,5 +1,5 @@
-Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``bletchley-bmc``, ``fuji-bmc``, ``gb200nvl-bmc``, ``fby35-bmc``, ``fp5280g2-bmc``, ``g220a-bmc``, ``palmetto-bmc``, ``qcom-dc-scm-v1-bmc``, ``qcom-firework-bmc``, ``quanta-q71l-bmc``, ``rainier-bmc``, ``romulus-bmc``, ``sonorapass-bmc``, ``supermicrox11-bmc``, ``supermicrox11spi-bmc``, ``tiogapass-bmc``, ``witherspoon-bmc``, ``yosemitev2-bmc``)
-===================================================================================================================================================================================================================================================================================================================================================================================================================
+Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``bletchley-bmc``, ``fuji-bmc``, ``gb200nvl-bmc``, ``fby35-bmc``, ``fp5280g2-bmc``, ``g220a-bmc``, ``palmetto-bmc``, ``qcom-dc-scm-v1-bmc``, ``qcom-firework-bmc``, ``quanta-q71l-bmc``, ``rainier-bmc``, ``romulus-bmc``, ``supermicrox11-bmc``, ``supermicrox11spi-bmc``, ``tiogapass-bmc``, ``witherspoon-bmc``, ``yosemitev2-bmc``)
+===============================================================================================================================================================================================================================================================================================================================================================================================
The QEMU Aspeed machines model BMCs of various OpenPOWER systems and
Aspeed evaluation boards. They are based on different releases of the
@@ -22,7 +22,6 @@ AST2500 SoC based machines :
- ``ast2500-evb`` Aspeed AST2500 Evaluation board
- ``romulus-bmc`` OpenPOWER Romulus POWER9 BMC
- ``witherspoon-bmc`` OpenPOWER Witherspoon POWER9 BMC
-- ``sonorapass-bmc`` OCP SonoraPass BMC
- ``fp5280g2-bmc`` Inspur FP5280G2 BMC
- ``g220a-bmc`` Bytedance G220A BMC
- ``yosemitev2-bmc`` Facebook YosemiteV2 BMC
diff --git a/hw/arm/aspeed_ast2500_sonorapass.c b/hw/arm/aspeed_ast2500_sonorapass.c
deleted file mode 100644
index 84de4f56b376..000000000000
--- a/hw/arm/aspeed_ast2500_sonorapass.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * OCP SonoraPass
- *
- * Copyright 2016 IBM Corp.
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "qemu/osdep.h"
-#include "qapi/error.h"
-#include "hw/arm/machines-qom.h"
-#include "hw/arm/aspeed.h"
-#include "hw/arm/aspeed_soc.h"
-#include "hw/i2c/smbus_eeprom.h"
-
-/* Sonorapass hardware value: 0xF100D216 */
-#define SONORAPASS_BMC_HW_STRAP1 ( \
- SCU_AST2500_HW_STRAP_SPI_AUTOFETCH_ENABLE | \
- SCU_AST2500_HW_STRAP_GPIO_STRAP_ENABLE | \
- SCU_AST2500_HW_STRAP_UART_DEBUG | \
- SCU_AST2500_HW_STRAP_RESERVED28 | \
- SCU_AST2500_HW_STRAP_DDR4_ENABLE | \
- SCU_HW_STRAP_VGA_CLASS_CODE | \
- SCU_HW_STRAP_LPC_RESET_PIN | \
- SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_MASTER) | \
- SCU_AST2500_HW_STRAP_SET_AXI_AHB_RATIO(AXI_AHB_RATIO_2_1) | \
- SCU_HW_STRAP_VGA_BIOS_ROM | \
- SCU_HW_STRAP_VGA_SIZE_SET(VGA_16M_DRAM) | \
- SCU_AST2500_HW_STRAP_RESERVED1)
-
-static void sonorapass_bmc_i2c_init(AspeedMachineState *bmc)
-{
- AspeedSoCState *soc = bmc->soc;
-
- /* bus 2 : */
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2), "tmp105", 0x48);
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2), "tmp105", 0x49);
- /* bus 2 : pca9546 @ 0x73 */
-
- /* bus 3 : pca9548 @ 0x70 */
-
- /* bus 4 : */
- uint8_t *eeprom4_54 = g_malloc0(8 * 1024);
- smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 4), 0x54,
- eeprom4_54);
- /* PCA9539 @ 0x76, but PCA9552 is compatible */
- aspeed_create_pca9552(soc, 4, 0x76);
- /* PCA9539 @ 0x77, but PCA9552 is compatible */
- aspeed_create_pca9552(soc, 4, 0x77);
-
- /* bus 6 : */
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp105", 0x48);
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 6), "tmp105", 0x49);
- /* bus 6 : pca9546 @ 0x73 */
-
- /* bus 8 : */
- uint8_t *eeprom8_56 = g_malloc0(8 * 1024);
- smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 8), 0x56,
- eeprom8_56);
- aspeed_create_pca9552(soc, 8, 0x60);
- aspeed_create_pca9552(soc, 8, 0x61);
- /* bus 8 : adc128d818 @ 0x1d */
- /* bus 8 : adc128d818 @ 0x1f */
-
- /*
- * bus 13 : pca9548 @ 0x71
- * - channel 3:
- * - tmm421 @ 0x4c
- * - tmp421 @ 0x4e
- * - tmp421 @ 0x4f
- */
-
-}
-
-static void aspeed_machine_sonorapass_class_init(ObjectClass *oc,
- const void *data)
-{
- MachineClass *mc = MACHINE_CLASS(oc);
- AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
-
- mc->desc = "OCP SonoraPass BMC (ARM1176)";
- mc->deprecation_reason = "use 'ast2500-evb' instead";
- amc->soc_name = "ast2500-a1";
- amc->hw_strap1 = SONORAPASS_BMC_HW_STRAP1;
- amc->fmc_model = "mx66l1g45g";
- amc->spi_model = "mx66l1g45g";
- amc->num_cs = 2;
- amc->i2c_init = sonorapass_bmc_i2c_init;
- mc->default_ram_size = 512 * MiB;
- aspeed_machine_class_init_cpus_defaults(mc);
-};
-
-static const TypeInfo aspeed_ast2500_sonorapass_types[] = {
- {
- .name = MACHINE_TYPE_NAME("sonorapass-bmc"),
- .parent = TYPE_ASPEED_MACHINE,
- .class_init = aspeed_machine_sonorapass_class_init,
- .interfaces = arm_machine_interfaces,
- }
-};
-
-DEFINE_TYPES(aspeed_ast2500_sonorapass_types)
diff --git a/hw/arm/meson.build b/hw/arm/meson.build
index 84b8ec5fb5ab..098015357ddc 100644
--- a/hw/arm/meson.build
+++ b/hw/arm/meson.build
@@ -50,7 +50,6 @@ arm_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files(
'aspeed_ast2500_fp5280g2.c',
'aspeed_ast2500_g220a.c',
'aspeed_ast2500_romulus.c',
- 'aspeed_ast2500_sonorapass.c',
'aspeed_ast2500_supermicro-x11spi.c',
'aspeed_ast2500_tiogapass.c',
'aspeed_ast2500_witherspoon.c',
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 1/4] hw/arm: Remove sonorapass-bmc machine
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é
0 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-05-11 9:57 UTC (permalink / raw)
To: Cédric Le Goater, qemu-devel, qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley
On 10/5/26 18:57, Cédric Le Goater wrote:
> The sonorapass-bmc machine was deprecated in QEMU 10.2 and is now
> removed in QEMU 11.1.
>
> This OCP SonoraPass BMC lab server never entered production and can be
> replaced by the ast2500-evb machine with appropriate fmc-model and I2C
> device configuration via command line.
>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
> docs/about/deprecated.rst | 9 ---
> docs/about/removed-features.rst | 10 ++-
> docs/system/arm/aspeed.rst | 5 +-
> hw/arm/aspeed_ast2500_sonorapass.c | 102 -----------------------------
> hw/arm/meson.build | 1 -
> 5 files changed, 11 insertions(+), 116 deletions(-)
> delete mode 100644 hw/arm/aspeed_ast2500_sonorapass.c
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/4] hw/arm: Remove qcom-dc-scm-v1-bmc and qcom-firework-bmc machines
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-10 16:57 ` 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-10 16:57 ` [PATCH 4/4] hw/arm: Remove fby35 machine Cédric Le Goater
3 siblings, 1 reply; 10+ messages in thread
From: Cédric Le Goater @ 2026-05-10 16:57 UTC (permalink / raw)
To: qemu-devel, qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley, Cédric Le Goater
The qcom-dc-scm-v1-bmc and qcom-firework-bmc machines were deprecated
in QEMU 10.2 and are now removed in QEMU 11.1.
These Qualcomm lab servers never entered production and do not rely on
specific device models. They can be replaced by the ast2600-evb
machine with appropriate fmc-model and I2C device configuration via
command line.
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
docs/about/deprecated.rst | 10 ---
docs/about/removed-features.rst | 10 +++
docs/system/arm/aspeed.rst | 6 +-
hw/arm/aspeed_ast2600_qcom-dc-scm-v1.c | 55 ----------------
hw/arm/aspeed_ast2600_qcom-firework.c | 91 --------------------------
hw/arm/meson.build | 2 -
6 files changed, 12 insertions(+), 162 deletions(-)
delete mode 100644 hw/arm/aspeed_ast2600_qcom-dc-scm-v1.c
delete mode 100644 hw/arm/aspeed_ast2600_qcom-firework.c
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index cc75afe55d95..bbb4a9886fbc 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 ``qcom-dc-scm-v1-bmc`` and ``qcom-firework-bmc`` machine (since 10.2)
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
-The ``qcom-dc-scm-v1-bmc`` and ``qcom-firework-bmc`` represent lab
-servers that never entered production. Since they do not rely on any
-specific device models, they can be replaced by the ``ast2600-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 ``fp5280g2-bmc`` machine (since 10.2)
'''''''''''''''''''''''''''''''''''''''''
diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index 02e3c06b2988..b9e9d43dada3 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -1195,6 +1195,16 @@ 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 ``qcom-dc-scm-v1-bmc`` and ``qcom-firework-bmc`` machine (removed in 11.1)
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``qcom-dc-scm-v1-bmc`` and ``qcom-firework-bmc`` represent lab
+servers that never entered production. Since they do not rely on any
+specific device models, they can be replaced by the ``ast2600-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.
+
linux-user mode CPUs
--------------------
diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
index 1871f31713d4..cbaab5edd65c 100644
--- a/docs/system/arm/aspeed.rst
+++ b/docs/system/arm/aspeed.rst
@@ -1,5 +1,5 @@
-Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``bletchley-bmc``, ``fuji-bmc``, ``gb200nvl-bmc``, ``fby35-bmc``, ``fp5280g2-bmc``, ``g220a-bmc``, ``palmetto-bmc``, ``qcom-dc-scm-v1-bmc``, ``qcom-firework-bmc``, ``quanta-q71l-bmc``, ``rainier-bmc``, ``romulus-bmc``, ``supermicrox11-bmc``, ``supermicrox11spi-bmc``, ``tiogapass-bmc``, ``witherspoon-bmc``, ``yosemitev2-bmc``)
-===============================================================================================================================================================================================================================================================================================================================================================================================
+Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``bletchley-bmc``, ``fuji-bmc``, ``gb200nvl-bmc``, ``fby35-bmc``, ``fp5280g2-bmc``, ``g220a-bmc``, ``palmetto-bmc``, ``quanta-q71l-bmc``, ``rainier-bmc``, ``romulus-bmc``, ``supermicrox11-bmc``, ``supermicrox11spi-bmc``, ``tiogapass-bmc``, ``witherspoon-bmc``, ``yosemitev2-bmc``)
+================================================================================================================================================================================================================================================================================================================================================
The QEMU Aspeed machines model BMCs of various OpenPOWER systems and
Aspeed evaluation boards. They are based on different releases of the
@@ -35,8 +35,6 @@ AST2600 SoC based machines :
- ``bletchley-bmc`` Facebook Bletchley BMC
- ``fby35-bmc`` Facebook fby35 BMC
- ``gb200nvl-bmc`` Nvidia GB200nvl BMC
-- ``qcom-dc-scm-v1-bmc`` Qualcomm DC-SCM V1 BMC
-- ``qcom-firework-bmc`` Qualcomm Firework BMC
Supported devices
-----------------
diff --git a/hw/arm/aspeed_ast2600_qcom-dc-scm-v1.c b/hw/arm/aspeed_ast2600_qcom-dc-scm-v1.c
deleted file mode 100644
index bbdeb6023686..000000000000
--- a/hw/arm/aspeed_ast2600_qcom-dc-scm-v1.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Qualcomm DC-SCM V1
- *
- * Copyright 2016 IBM Corp.
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "qemu/osdep.h"
-#include "qapi/error.h"
-#include "hw/arm/machines-qom.h"
-#include "hw/arm/aspeed.h"
-#include "hw/arm/aspeed_soc.h"
-
-/* Qualcomm DC-SCM hardware value */
-#define QCOM_DC_SCM_V1_BMC_HW_STRAP1 0x00000000
-#define QCOM_DC_SCM_V1_BMC_HW_STRAP2 0x00000041
-
-static void qcom_dc_scm_bmc_i2c_init(AspeedMachineState *bmc)
-{
- AspeedSoCState *soc = bmc->soc;
-
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 15), "tmp105", 0x4d);
-}
-
-static void aspeed_machine_qcom_dc_scm_v1_class_init(ObjectClass *oc,
- const void *data)
-{
- MachineClass *mc = MACHINE_CLASS(oc);
- AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
-
- mc->desc = "Qualcomm DC-SCM V1 BMC (Cortex A7)";
- mc->deprecation_reason = "use 'ast2600-evb' instead";
- amc->soc_name = "ast2600-a3";
- amc->hw_strap1 = QCOM_DC_SCM_V1_BMC_HW_STRAP1;
- amc->hw_strap2 = QCOM_DC_SCM_V1_BMC_HW_STRAP2;
- amc->fmc_model = "n25q512a";
- amc->spi_model = "n25q512a";
- amc->num_cs = 2;
- amc->macs_mask = ASPEED_MAC2_ON | ASPEED_MAC3_ON;
- amc->i2c_init = qcom_dc_scm_bmc_i2c_init;
- mc->default_ram_size = 1 * GiB;
- aspeed_machine_class_init_cpus_defaults(mc);
-};
-
-static const TypeInfo aspeed_ast2600_qcom_dc_scm_v1_types[] = {
- {
- .name = MACHINE_TYPE_NAME("qcom-dc-scm-v1-bmc"),
- .parent = TYPE_ASPEED_MACHINE,
- .class_init = aspeed_machine_qcom_dc_scm_v1_class_init,
- .interfaces = arm_machine_interfaces,
- }
-};
-
-DEFINE_TYPES(aspeed_ast2600_qcom_dc_scm_v1_types)
diff --git a/hw/arm/aspeed_ast2600_qcom-firework.c b/hw/arm/aspeed_ast2600_qcom-firework.c
deleted file mode 100644
index a4dbe6eea8ab..000000000000
--- a/hw/arm/aspeed_ast2600_qcom-firework.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Qualcomm DC-SCM V1/Firework
- *
- * Copyright 2016 IBM Corp.
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "qemu/osdep.h"
-#include "qapi/error.h"
-#include "hw/arm/machines-qom.h"
-#include "hw/arm/aspeed.h"
-#include "hw/arm/aspeed_soc.h"
-#include "hw/i2c/i2c_mux_pca954x.h"
-#include "hw/sensor/tmp105.h"
-
-/* Qualcomm DC-SCM Firework hardware value */
-#define QCOM_DC_SCM_FIREWORK_BMC_HW_STRAP1 0x00000000
-#define QCOM_DC_SCM_FIREWORK_BMC_HW_STRAP2 0x00000041
-
-#define TYPE_LM75 TYPE_TMP105
-
-static void qcom_dc_scm_bmc_i2c_init(AspeedMachineState *bmc)
-{
- AspeedSoCState *soc = bmc->soc;
-
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 15), "tmp105", 0x4d);
-}
-
-static void qcom_dc_scm_firework_i2c_init(AspeedMachineState *bmc)
-{
- AspeedSoCState *soc = bmc->soc;
- I2CSlave *therm_mux, *cpuvr_mux;
-
- /* Create the generic DC-SCM hardware */
- qcom_dc_scm_bmc_i2c_init(bmc);
-
- /* Now create the Firework specific hardware */
-
- /* I2C7 CPUVR MUX */
- cpuvr_mux = i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7),
- "pca9546", 0x70);
- i2c_slave_create_simple(pca954x_i2c_get_bus(cpuvr_mux, 0), "pca9548", 0x72);
- i2c_slave_create_simple(pca954x_i2c_get_bus(cpuvr_mux, 1), "pca9548", 0x72);
- i2c_slave_create_simple(pca954x_i2c_get_bus(cpuvr_mux, 2), "pca9548", 0x72);
- i2c_slave_create_simple(pca954x_i2c_get_bus(cpuvr_mux, 3), "pca9548", 0x72);
-
- /* I2C8 Thermal Diodes*/
- therm_mux = i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 8),
- "pca9548", 0x70);
- i2c_slave_create_simple(pca954x_i2c_get_bus(therm_mux, 0), TYPE_LM75, 0x4C);
- i2c_slave_create_simple(pca954x_i2c_get_bus(therm_mux, 1), TYPE_LM75, 0x4C);
- i2c_slave_create_simple(pca954x_i2c_get_bus(therm_mux, 2), TYPE_LM75, 0x48);
- i2c_slave_create_simple(pca954x_i2c_get_bus(therm_mux, 3), TYPE_LM75, 0x48);
- i2c_slave_create_simple(pca954x_i2c_get_bus(therm_mux, 4), TYPE_LM75, 0x48);
-
- /* I2C9 Fan Controller (MAX31785) */
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), "max31785", 0x52);
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 9), "max31785", 0x54);
-}
-
-static void aspeed_machine_qcom_firework_class_init(ObjectClass *oc,
- const void *data)
-{
- MachineClass *mc = MACHINE_CLASS(oc);
- AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
-
- mc->desc = "Qualcomm DC-SCM V1/Firework BMC (Cortex A7)";
- mc->deprecation_reason = "use 'ast2600-evb' instead";
- amc->soc_name = "ast2600-a3";
- amc->hw_strap1 = QCOM_DC_SCM_FIREWORK_BMC_HW_STRAP1;
- amc->hw_strap2 = QCOM_DC_SCM_FIREWORK_BMC_HW_STRAP2;
- amc->fmc_model = "n25q512a";
- amc->spi_model = "n25q512a";
- amc->num_cs = 2;
- amc->macs_mask = ASPEED_MAC2_ON | ASPEED_MAC3_ON;
- amc->i2c_init = qcom_dc_scm_firework_i2c_init;
- mc->default_ram_size = 1 * GiB;
- aspeed_machine_class_init_cpus_defaults(mc);
-};
-
-static const TypeInfo aspeed_ast2600_qcom_firework_types[] = {
- {
- .name = MACHINE_TYPE_NAME("qcom-firework-bmc"),
- .parent = TYPE_ASPEED_MACHINE,
- .class_init = aspeed_machine_qcom_firework_class_init,
- .interfaces = arm_machine_interfaces,
- }
-};
-
-DEFINE_TYPES(aspeed_ast2600_qcom_firework_types)
diff --git a/hw/arm/meson.build b/hw/arm/meson.build
index 098015357ddc..2be74b575efc 100644
--- a/hw/arm/meson.build
+++ b/hw/arm/meson.build
@@ -61,8 +61,6 @@ arm_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files(
'aspeed_ast2600_fby35.c',
'aspeed_ast2600_fuji.c',
'aspeed_ast2600_gb200nvl.c',
- 'aspeed_ast2600_qcom-dc-scm-v1.c',
- 'aspeed_ast2600_qcom-firework.c',
'aspeed_ast2600_rainier.c',
'aspeed_ast10x0.c',
'aspeed_ast10x0_evb.c',
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 2/4] hw/arm: Remove qcom-dc-scm-v1-bmc and qcom-firework-bmc machines
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é
0 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-05-11 10:11 UTC (permalink / raw)
To: Cédric Le Goater, qemu-devel, qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley
On 10/5/26 18:57, Cédric Le Goater wrote:
> The qcom-dc-scm-v1-bmc and qcom-firework-bmc machines were deprecated
> in QEMU 10.2 and are now removed in QEMU 11.1.
>
> These Qualcomm lab servers never entered production and do not rely on
> specific device models. They can be replaced by the ast2600-evb
> machine with appropriate fmc-model and I2C device configuration via
> command line.
>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
> docs/about/deprecated.rst | 10 ---
> docs/about/removed-features.rst | 10 +++
> docs/system/arm/aspeed.rst | 6 +-
> hw/arm/aspeed_ast2600_qcom-dc-scm-v1.c | 55 ----------------
> hw/arm/aspeed_ast2600_qcom-firework.c | 91 --------------------------
> hw/arm/meson.build | 2 -
> 6 files changed, 12 insertions(+), 162 deletions(-)
> delete mode 100644 hw/arm/aspeed_ast2600_qcom-dc-scm-v1.c
> delete mode 100644 hw/arm/aspeed_ast2600_qcom-firework.c
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/4] hw/arm: Remove fp5280g2-bmc machine
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-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-10 16:57 ` 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
3 siblings, 1 reply; 10+ messages in thread
From: Cédric Le Goater @ 2026-05-10 16:57 UTC (permalink / raw)
To: qemu-devel, qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley, Cédric Le Goater
The fp5280g2-bmc machine was deprecated in QEMU 10.2 and is now
removed in QEMU 11.1.
This Inspur FP5280G2 BMC board does not rely on specific device models
and can be replaced by the ast2500-evb machine with appropriate
fmc-model and I2C device configuration via command line.
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
docs/about/deprecated.rst | 8 ---
docs/about/removed-features.rst | 8 +++
docs/system/arm/aspeed.rst | 5 +-
hw/arm/aspeed_ast2500_fp5280g2.c | 88 --------------------------------
hw/arm/meson.build | 1 -
5 files changed, 10 insertions(+), 100 deletions(-)
delete mode 100644 hw/arm/aspeed_ast2500_fp5280g2.c
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index bbb4a9886fbc..e416f3d8a74b 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -250,14 +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 ``fp5280g2-bmc`` machine (since 10.2)
-'''''''''''''''''''''''''''''''''''''''''
-
-The ``fp5280g2-bmc`` machine does not rely on any specific device
-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 (since 10.2)
''''''''''''''''''''''''''''''''''
diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index b9e9d43dada3..2da8283d0e1e 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -1205,6 +1205,14 @@ 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 ``fp5280g2-bmc`` machine (removed in 11.1)
+''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``fp5280g2-bmc`` machine does not rely on any specific device
+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.
+
linux-user mode CPUs
--------------------
diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
index cbaab5edd65c..df2f539b0257 100644
--- a/docs/system/arm/aspeed.rst
+++ b/docs/system/arm/aspeed.rst
@@ -1,5 +1,5 @@
-Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``bletchley-bmc``, ``fuji-bmc``, ``gb200nvl-bmc``, ``fby35-bmc``, ``fp5280g2-bmc``, ``g220a-bmc``, ``palmetto-bmc``, ``quanta-q71l-bmc``, ``rainier-bmc``, ``romulus-bmc``, ``supermicrox11-bmc``, ``supermicrox11spi-bmc``, ``tiogapass-bmc``, ``witherspoon-bmc``, ``yosemitev2-bmc``)
-================================================================================================================================================================================================================================================================================================================================================
+Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``bletchley-bmc``, ``fuji-bmc``, ``gb200nvl-bmc``, ``fby35-bmc``, ``g220a-bmc``, ``palmetto-bmc``, ``quanta-q71l-bmc``, ``rainier-bmc``, ``romulus-bmc``, ``supermicrox11-bmc``, ``supermicrox11spi-bmc``, ``tiogapass-bmc``, ``witherspoon-bmc``, ``yosemitev2-bmc``)
+==============================================================================================================================================================================================================================================================================================================================
The QEMU Aspeed machines model BMCs of various OpenPOWER systems and
Aspeed evaluation boards. They are based on different releases of the
@@ -22,7 +22,6 @@ AST2500 SoC based machines :
- ``ast2500-evb`` Aspeed AST2500 Evaluation board
- ``romulus-bmc`` OpenPOWER Romulus POWER9 BMC
- ``witherspoon-bmc`` OpenPOWER Witherspoon POWER9 BMC
-- ``fp5280g2-bmc`` Inspur FP5280G2 BMC
- ``g220a-bmc`` Bytedance G220A BMC
- ``yosemitev2-bmc`` Facebook YosemiteV2 BMC
- ``tiogapass-bmc`` Facebook Tiogapass BMC
diff --git a/hw/arm/aspeed_ast2500_fp5280g2.c b/hw/arm/aspeed_ast2500_fp5280g2.c
deleted file mode 100644
index 858e0388714b..000000000000
--- a/hw/arm/aspeed_ast2500_fp5280g2.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Inspur FP5280G2
- *
- * Copyright 2016 IBM Corp.
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "qemu/osdep.h"
-#include "qapi/error.h"
-#include "hw/arm/machines-qom.h"
-#include "hw/arm/aspeed.h"
-#include "hw/arm/aspeed_soc.h"
-#include "hw/nvram/eeprom_at24c.h"
-#include "hw/i2c/i2c_mux_pca954x.h"
-#include "hw/sensor/tmp105.h"
-
-/* FP5280G2 hardware value: 0XF100D286 */
-#define FP5280G2_BMC_HW_STRAP1 ( \
- SCU_AST2500_HW_STRAP_SPI_AUTOFETCH_ENABLE | \
- SCU_AST2500_HW_STRAP_GPIO_STRAP_ENABLE | \
- SCU_AST2500_HW_STRAP_UART_DEBUG | \
- SCU_AST2500_HW_STRAP_RESERVED28 | \
- SCU_AST2500_HW_STRAP_DDR4_ENABLE | \
- SCU_HW_STRAP_VGA_CLASS_CODE | \
- SCU_HW_STRAP_LPC_RESET_PIN | \
- SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_MASTER) | \
- SCU_AST2500_HW_STRAP_SET_AXI_AHB_RATIO(AXI_AHB_RATIO_2_1) | \
- SCU_HW_STRAP_MAC1_RGMII | \
- SCU_HW_STRAP_VGA_SIZE_SET(VGA_16M_DRAM) | \
- SCU_AST2500_HW_STRAP_RESERVED1)
-
-static void fp5280g2_bmc_i2c_init(AspeedMachineState *bmc)
-{
- AspeedSoCState *soc = bmc->soc;
- I2CSlave *i2c_mux;
-
- /* The at24c256 */
- at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 1), 0x50, 32768);
-
- /* The fp5280g2 expects a TMP112 but a TMP105 is compatible */
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2), TYPE_TMP105,
- 0x48);
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2), TYPE_TMP105,
- 0x49);
-
- i2c_mux = i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2),
- "pca9546", 0x70);
- /* It expects a TMP112 but a TMP105 is compatible */
- i2c_slave_create_simple(pca954x_i2c_get_bus(i2c_mux, 0), TYPE_TMP105,
- 0x4a);
-
- /* It expects a ds3232 but a ds1338 is good enough */
- i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), "ds1338", 0x68);
-
- /* It expects a pca9555 but a pca9552 is compatible */
- aspeed_create_pca9552(soc, 8, 0x30);
-}
-
-static void aspeed_machine_fp5280g2_class_init(ObjectClass *oc,
- const void *data)
-{
- MachineClass *mc = MACHINE_CLASS(oc);
- AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
-
- mc->desc = "Inspur FP5280G2 BMC (ARM1176)";
- mc->deprecation_reason = "use 'ast2500-evb' instead";
- amc->soc_name = "ast2500-a1";
- amc->hw_strap1 = FP5280G2_BMC_HW_STRAP1;
- amc->fmc_model = "n25q512a";
- amc->spi_model = "mx25l25635e";
- amc->num_cs = 2;
- amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON;
- amc->i2c_init = fp5280g2_bmc_i2c_init;
- mc->default_ram_size = 512 * MiB;
- aspeed_machine_class_init_cpus_defaults(mc);
-};
-
-static const TypeInfo aspeed_ast2500_fp5280g2_types[] = {
- {
- .name = MACHINE_TYPE_NAME("fp5280g2-bmc"),
- .parent = TYPE_ASPEED_MACHINE,
- .class_init = aspeed_machine_fp5280g2_class_init,
- .interfaces = arm_machine_interfaces,
- }
-};
-
-DEFINE_TYPES(aspeed_ast2500_fp5280g2_types)
diff --git a/hw/arm/meson.build b/hw/arm/meson.build
index 2be74b575efc..063abf2cf654 100644
--- a/hw/arm/meson.build
+++ b/hw/arm/meson.build
@@ -47,7 +47,6 @@ arm_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files(
'aspeed_ast2400_quanta-q71l.c',
'aspeed_ast2400_supermicrox11.c',
'aspeed_ast2500_evb.c',
- 'aspeed_ast2500_fp5280g2.c',
'aspeed_ast2500_g220a.c',
'aspeed_ast2500_romulus.c',
'aspeed_ast2500_supermicro-x11spi.c',
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 3/4] hw/arm: Remove fp5280g2-bmc machine
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é
0 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-05-11 10:11 UTC (permalink / raw)
To: Cédric Le Goater, qemu-devel, qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley
On 10/5/26 18:57, Cédric Le Goater wrote:
> The fp5280g2-bmc machine was deprecated in QEMU 10.2 and is now
> removed in QEMU 11.1.
>
> This Inspur FP5280G2 BMC board does not rely on specific device models
> and can be replaced by the ast2500-evb machine with appropriate
> fmc-model and I2C device configuration via command line.
>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
> docs/about/deprecated.rst | 8 ---
> docs/about/removed-features.rst | 8 +++
> docs/system/arm/aspeed.rst | 5 +-
> hw/arm/aspeed_ast2500_fp5280g2.c | 88 --------------------------------
> hw/arm/meson.build | 1 -
> 5 files changed, 10 insertions(+), 100 deletions(-)
> delete mode 100644 hw/arm/aspeed_ast2500_fp5280g2.c
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/4] hw/arm: Remove fby35 machine
2026-05-10 16:57 [PATCH 0/4] hw/arm: Remove deprecated Aspeed machines Cédric Le Goater
` (2 preceding siblings ...)
2026-05-10 16:57 ` [PATCH 3/4] hw/arm: Remove fp5280g2-bmc machine Cédric Le Goater
@ 2026-05-10 16:57 ` Cédric Le Goater
2026-05-12 9:39 ` Cédric Le Goater
3 siblings, 1 reply; 10+ messages in thread
From: Cédric Le Goater @ 2026-05-10 16:57 UTC (permalink / raw)
To: qemu-devel, qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley, Cédric Le Goater
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',
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 4/4] hw/arm: Remove fby35 machine
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
2026-05-12 16:08 ` Peter Delevoryas
0 siblings, 1 reply; 10+ messages in thread
From: Cédric Le Goater @ 2026-05-12 9:39 UTC (permalink / raw)
To: Cédric Le Goater, qemu-devel, qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley, Peter Delevoryas
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',
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH 4/4] hw/arm: Remove fby35 machine
2026-05-12 9:39 ` Cédric Le Goater
@ 2026-05-12 16:08 ` Peter Delevoryas
0 siblings, 0 replies; 10+ messages in thread
From: Peter Delevoryas @ 2026-05-12 16:08 UTC (permalink / raw)
To: Cédric Le Goater, Cédric Le Goater, qemu-devel,
qemu-arm, pierrick.bouvier
Cc: Peter Maydell, Steven Lee, Troy Lee, Jamin Lin, kane_chen,
Andrew Jeffery, Joel Stanley
[-- Attachment #1: Type: text/plain, Size: 16006 bytes --]
Oh sure, yeah sounds good to me!
Acked-by: Peter Delevoryas <peter@pjd.dev>
On Tue, May 12, 2026, at 2:39 AM, Cédric Le Goater wrote:
> 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',
>
>
[-- Attachment #2: Type: text/html, Size: 27257 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread