* [PATCH 0/4] Add support for gb200-bmc machine
@ 2025-07-01 20:33 Ed Tanous
2025-07-01 20:33 ` [PATCH 1/4] hw/arm: Add PCA9554 to ARM target Ed Tanous
` (4 more replies)
0 siblings, 5 replies; 20+ messages in thread
From: Ed Tanous @ 2025-07-01 20:33 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Cédric Le Goater,
Troy Lee, Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm,
Ed Tanous
This patch series adds support for gb200-bmc, a baseboard management controller
module based on an Aspeed 2600 SOC.
Ed Tanous (4):
hw/arm: Add PCA9554 to ARM target
hw/arm/aspeed: Add second SPI chip to Aspeed model
docs: add support for gb200-bmc
hw/arm/aspeed: Add GB200 BMC target
docs/system/arm/aspeed.rst | 4 +-
hw/arm/Kconfig | 1 +
hw/arm/aspeed.c | 81 ++++++++++++++++++++++++++++++++++++++
hw/arm/aspeed_eeprom.c | 21 ++++++++++
hw/arm/aspeed_eeprom.h | 3 ++
include/hw/arm/aspeed.h | 2 +
6 files changed, 110 insertions(+), 2 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 1/4] hw/arm: Add PCA9554 to ARM target
2025-07-01 20:33 [PATCH 0/4] Add support for gb200-bmc machine Ed Tanous
@ 2025-07-01 20:33 ` Ed Tanous
2025-07-02 6:47 ` Cédric Le Goater
2025-07-01 20:33 ` [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model Ed Tanous
` (3 subsequent siblings)
4 siblings, 1 reply; 20+ messages in thread
From: Ed Tanous @ 2025-07-01 20:33 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Cédric Le Goater,
Troy Lee, Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm,
Ed Tanous, Ed Tanous
From: Ed Tanous <ed@tanous.net>
There are arm targets that are connected to this io expander,
specifically some varieties of Aspeed 2600 BMCs. Add it to Kconfig to
allow use.
Signed-off-by: Ed Tanous <etanous@nvidia.com>
---
hw/arm/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
index f543d944c3..6ea86534d5 100644
--- a/hw/arm/Kconfig
+++ b/hw/arm/Kconfig
@@ -532,6 +532,7 @@ config ASPEED_SOC
select I2C
select DPS310
select PCA9552
+ select PCA9554
select SERIAL_MM
select SMBUS_EEPROM
select PCA954X
--
2.43.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model
2025-07-01 20:33 [PATCH 0/4] Add support for gb200-bmc machine Ed Tanous
2025-07-01 20:33 ` [PATCH 1/4] hw/arm: Add PCA9554 to ARM target Ed Tanous
@ 2025-07-01 20:33 ` Ed Tanous
2025-07-02 7:00 ` Cédric Le Goater
2025-07-02 21:32 ` Cédric Le Goater
2025-07-01 20:33 ` [PATCH 3/4] docs: add support for gb200-bmc Ed Tanous
` (2 subsequent siblings)
4 siblings, 2 replies; 20+ messages in thread
From: Ed Tanous @ 2025-07-01 20:33 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Cédric Le Goater,
Troy Lee, Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm,
Ed Tanous
Aspeed2600 has two spi lanes; Add a new struct that can mount the
second SPI.
Signed-off-by: Ed Tanous <etanous@nvidia.com>
---
hw/arm/aspeed.c | 2 ++
include/hw/arm/aspeed.h | 2 ++
2 files changed, 4 insertions(+)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index d0b333646e..3ef7f6c5b2 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -465,6 +465,8 @@ static void aspeed_machine_init(MachineState *machine)
aspeed_board_init_flashes(&bmc->soc->spi[0],
bmc->spi_model ? bmc->spi_model : amc->spi_model,
1, amc->num_cs);
+ aspeed_board_init_flashes(&bmc->soc->spi[1],
+ amc->spi2_model, 1, amc->num_cs2);
}
if (machine->kernel_filename && sc->num_cpus > 1) {
diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
index 973277bea6..6c36455656 100644
--- a/include/hw/arm/aspeed.h
+++ b/include/hw/arm/aspeed.h
@@ -35,7 +35,9 @@ struct AspeedMachineClass {
uint32_t hw_strap2;
const char *fmc_model;
const char *spi_model;
+ const char *spi2_model;
uint32_t num_cs;
+ uint32_t num_cs2;
uint32_t macs_mask;
void (*i2c_init)(AspeedMachineState *bmc);
uint32_t uart_default;
--
2.43.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 3/4] docs: add support for gb200-bmc
2025-07-01 20:33 [PATCH 0/4] Add support for gb200-bmc machine Ed Tanous
2025-07-01 20:33 ` [PATCH 1/4] hw/arm: Add PCA9554 to ARM target Ed Tanous
2025-07-01 20:33 ` [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model Ed Tanous
@ 2025-07-01 20:33 ` Ed Tanous
2025-07-02 6:49 ` Cédric Le Goater
2025-07-01 20:34 ` [PATCH 4/4] hw/arm/aspeed: Add GB200 BMC target Ed Tanous
2025-07-02 7:00 ` [PATCH 0/4] Add support for gb200-bmc machine Cédric Le Goater
4 siblings, 1 reply; 20+ messages in thread
From: Ed Tanous @ 2025-07-01 20:33 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Cédric Le Goater,
Troy Lee, Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm,
Ed Tanous
This patch updates the docs for support of gb200-bmc.
Signed-off-by: Ed Tanous <etanous@nvidia.com>
---
docs/system/arm/aspeed.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
index 43d27d83cb..bec0a1dfa8 100644
--- a/docs/system/arm/aspeed.rst
+++ b/docs/system/arm/aspeed.rst
@@ -1,5 +1,4 @@
-Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``ast2700-evb``, ``bletchley-bmc``, ``fuji-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``, ``ast2700-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``)
The QEMU Aspeed machines model BMCs of various OpenPOWER systems and
Aspeed evaluation boards. They are based on different releases of the
@@ -35,6 +34,7 @@ AST2600 SoC based machines :
- ``fuji-bmc`` Facebook Fuji BMC
- ``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
--
2.43.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 4/4] hw/arm/aspeed: Add GB200 BMC target
2025-07-01 20:33 [PATCH 0/4] Add support for gb200-bmc machine Ed Tanous
` (2 preceding siblings ...)
2025-07-01 20:33 ` [PATCH 3/4] docs: add support for gb200-bmc Ed Tanous
@ 2025-07-01 20:34 ` Ed Tanous
2025-07-02 21:38 ` Cédric Le Goater
2025-07-02 7:00 ` [PATCH 0/4] Add support for gb200-bmc machine Cédric Le Goater
4 siblings, 1 reply; 20+ messages in thread
From: Ed Tanous @ 2025-07-01 20:34 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Cédric Le Goater,
Troy Lee, Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm,
Ed Tanous
GB200nvl72 is a system for for accelerated compute. This is a model for
the BMC target within the system.
Signed-off-by: Ed Tanous <etanous@nvidia.com>
---
hw/arm/aspeed.c | 79 ++++++++++++++++++++++++++++++++++++++++++
hw/arm/aspeed_eeprom.c | 21 +++++++++++
hw/arm/aspeed_eeprom.h | 3 ++
3 files changed, 103 insertions(+)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index 3ef7f6c5b2..98144ced86 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -19,6 +19,7 @@
#include "hw/i2c/i2c_mux_pca954x.h"
#include "hw/i2c/smbus_eeprom.h"
#include "hw/gpio/pca9552.h"
+#include "hw/gpio/pca9554.h"
#include "hw/nvram/eeprom_at24c.h"
#include "hw/sensor/tmp105.h"
#include "hw/misc/led.h"
@@ -201,6 +202,10 @@ struct AspeedMachineState {
#define BLETCHLEY_BMC_HW_STRAP1 AST2600_EVB_HW_STRAP1
#define BLETCHLEY_BMC_HW_STRAP2 AST2600_EVB_HW_STRAP2
+/* GB200NVL hardware value */
+#define GB200NVL_BMC_HW_STRAP1 AST2600_EVB_HW_STRAP1
+#define GB200NVL_BMC_HW_STRAP2 AST2600_EVB_HW_STRAP2
+
/* Qualcomm DC-SCM hardware value */
#define QCOM_DC_SCM_V1_BMC_HW_STRAP1 0x00000000
#define QCOM_DC_SCM_V1_BMC_HW_STRAP2 0x00000041
@@ -647,6 +652,12 @@ static void create_pca9552(AspeedSoCState *soc, int bus_id, int addr)
TYPE_PCA9552, addr);
}
+static I2CSlave *create_pca9554(AspeedSoCState *soc, int bus_id, int addr)
+{
+ return i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, bus_id),
+ TYPE_PCA9554, addr);
+}
+
static void sonorapass_bmc_i2c_init(AspeedMachineState *bmc)
{
AspeedSoCState *soc = bmc->soc;
@@ -1052,6 +1063,45 @@ static void bletchley_bmc_i2c_init(AspeedMachineState *bmc)
i2c_slave_create_simple(i2c[12], TYPE_PCA9552, 0x67);
}
+
+static void gb200nvl_bmc_i2c_init(AspeedMachineState *bmc)
+{
+ AspeedSoCState *soc = bmc->soc;
+ I2CBus *i2c[15] = {};
+ DeviceState *dev;
+ for (int i = 0; i < sizeof(i2c) / sizeof(i2c[0]); i++) {
+ if ((i == 11) || (i == 12) || (i == 13)) {
+ continue;
+ }
+ i2c[i] = aspeed_i2c_get_bus(&soc->i2c, i);
+ }
+
+ /* Bus 5 Expander */
+ create_pca9554(soc, 4, 0x21);
+
+ /* Mux I2c Expanders */
+ i2c_slave_create_simple(i2c[5], "pca9546", 0x71);
+ i2c_slave_create_simple(i2c[5], "pca9546", 0x72);
+ i2c_slave_create_simple(i2c[5], "pca9546", 0x73);
+ i2c_slave_create_simple(i2c[5], "pca9546", 0x75);
+ i2c_slave_create_simple(i2c[5], "pca9546", 0x76);
+ i2c_slave_create_simple(i2c[5], "pca9546", 0x77);
+
+ /* Bus 10 */
+ dev = DEVICE(create_pca9554(soc, 9, 0x20));
+
+ /* Set FPGA_READY */
+ object_property_set_str(OBJECT(dev), "pin1", "high", &error_fatal);
+
+ create_pca9554(soc, 9, 0x21);
+ at24c_eeprom_init(i2c[9], 0x50, 64 * KiB);
+ at24c_eeprom_init(i2c[9], 0x51, 64 * KiB);
+
+ /* Bus 11 */
+ at24c_eeprom_init_rom(i2c[10], 0x50, 256, gb200nvl_bmc_fruid,
+ gb200nvl_bmc_fruid_len);
+}
+
static void fby35_i2c_init(AspeedMachineState *bmc)
{
AspeedSoCState *soc = bmc->soc;
@@ -1587,6 +1637,31 @@ static void aspeed_machine_bletchley_class_init(ObjectClass *oc,
aspeed_machine_class_init_cpus_defaults(mc);
}
+#define GB200NVL_BMC_RAM_SIZE ASPEED_RAM_SIZE(1 * GiB)
+
+static void aspeed_machine_gb200nvl_class_init(ObjectClass *oc,
+ const void *data)
+{
+ MachineClass *mc = MACHINE_CLASS(oc);
+ AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
+
+ mc->desc = "Nvidia GB200NVL BMC (Cortex-A7)";
+ amc->soc_name = "ast2600-a3";
+ amc->hw_strap1 = GB200NVL_BMC_HW_STRAP1;
+ amc->hw_strap2 = GB200NVL_BMC_HW_STRAP2;
+ amc->fmc_model = "mx66u51235f";
+ amc->spi_model = "mx66u51235f";
+ amc->num_cs = 2;
+
+ amc->spi2_model = "mx66u51235f";
+ amc->num_cs2 = 1;
+ amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON;
+ amc->i2c_init = gb200nvl_bmc_i2c_init;
+ mc->default_ram_size = GB200NVL_BMC_RAM_SIZE;
+ aspeed_machine_class_init_cpus_defaults(mc);
+ aspeed_machine_ast2600_class_emmc_init(oc);
+}
+
static void fby35_reset(MachineState *state, ResetType type)
{
AspeedMachineState *bmc = ASPEED_MACHINE(state);
@@ -1879,6 +1954,10 @@ static const TypeInfo aspeed_machine_types[] = {
.name = MACHINE_TYPE_NAME("bletchley-bmc"),
.parent = TYPE_ASPEED_MACHINE,
.class_init = aspeed_machine_bletchley_class_init,
+ }, {
+ .name = MACHINE_TYPE_NAME("gb200nvl-bmc"),
+ .parent = TYPE_ASPEED_MACHINE,
+ .class_init = aspeed_machine_gb200nvl_class_init,
}, {
.name = MACHINE_TYPE_NAME("fby35-bmc"),
.parent = MACHINE_TYPE_NAME("ast2600-evb"),
diff --git a/hw/arm/aspeed_eeprom.c b/hw/arm/aspeed_eeprom.c
index daa3d329d1..8bbbdec834 100644
--- a/hw/arm/aspeed_eeprom.c
+++ b/hw/arm/aspeed_eeprom.c
@@ -162,6 +162,25 @@ const uint8_t rainier_bmc_fruid[] = {
0x31, 0x50, 0x46, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
};
+const uint8_t gb200nvl_bmc_fruid[] = {
+ 0x01, 0x00, 0x00, 0x01, 0x0b, 0x00, 0x00, 0xf3, 0x01, 0x0a, 0x19, 0x1f,
+ 0x0f, 0xe6, 0xc6, 0x4e, 0x56, 0x49, 0x44, 0x49, 0x41, 0xc5, 0x50, 0x33,
+ 0x38, 0x30, 0x39, 0xcd, 0x31, 0x35, 0x38, 0x33, 0x33, 0x32, 0x34, 0x38,
+ 0x30, 0x30, 0x31, 0x35, 0x30, 0xd2, 0x36, 0x39, 0x39, 0x2d, 0x31, 0x33,
+ 0x38, 0x30, 0x39, 0x2d, 0x30, 0x34, 0x30, 0x34, 0x2d, 0x36, 0x30, 0x30,
+ 0xc0, 0x01, 0x01, 0xd6, 0x4d, 0x41, 0x43, 0x3a, 0x20, 0x33, 0x43, 0x3a,
+ 0x36, 0x44, 0x3a, 0x36, 0x36, 0x3a, 0x31, 0x34, 0x3a, 0x43, 0x38, 0x3a,
+ 0x37, 0x41, 0xc1, 0x3b, 0x01, 0x09, 0x19, 0xc6, 0x4e, 0x56, 0x49, 0x44,
+ 0x49, 0x41, 0xc9, 0x50, 0x33, 0x38, 0x30, 0x39, 0x2d, 0x42, 0x4d, 0x43,
+ 0xd2, 0x36, 0x39, 0x39, 0x2d, 0x31, 0x33, 0x38, 0x30, 0x39, 0x2d, 0x30,
+ 0x34, 0x30, 0x34, 0x2d, 0x36, 0x30, 0x30, 0xc4, 0x41, 0x45, 0x2e, 0x31,
+ 0xcd, 0x31, 0x35, 0x38, 0x33, 0x33, 0x32, 0x34, 0x38, 0x30, 0x30, 0x31,
+ 0x35, 0x30, 0xc0, 0xc4, 0x76, 0x30, 0x2e, 0x31, 0xc1, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+};
+
const size_t tiogapass_bmc_fruid_len = sizeof(tiogapass_bmc_fruid);
const size_t fby35_nic_fruid_len = sizeof(fby35_nic_fruid);
const size_t fby35_bb_fruid_len = sizeof(fby35_bb_fruid);
@@ -169,3 +188,5 @@ const size_t fby35_bmc_fruid_len = sizeof(fby35_bmc_fruid);
const size_t yosemitev2_bmc_fruid_len = sizeof(yosemitev2_bmc_fruid);
const size_t rainier_bb_fruid_len = sizeof(rainier_bb_fruid);
const size_t rainier_bmc_fruid_len = sizeof(rainier_bmc_fruid);
+const size_t gb200nvl_bmc_fruid_len = sizeof(gb200nvl_bmc_fruid);
+
diff --git a/hw/arm/aspeed_eeprom.h b/hw/arm/aspeed_eeprom.h
index f08c16ef50..3ed9bc1d9a 100644
--- a/hw/arm/aspeed_eeprom.h
+++ b/hw/arm/aspeed_eeprom.h
@@ -26,4 +26,7 @@ extern const size_t rainier_bb_fruid_len;
extern const uint8_t rainier_bmc_fruid[];
extern const size_t rainier_bmc_fruid_len;
+extern const uint8_t gb200nvl_bmc_fruid[];
+extern const size_t gb200nvl_bmc_fruid_len;
+
#endif
--
2.43.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 1/4] hw/arm: Add PCA9554 to ARM target
2025-07-01 20:33 ` [PATCH 1/4] hw/arm: Add PCA9554 to ARM target Ed Tanous
@ 2025-07-02 6:47 ` Cédric Le Goater
2025-07-02 7:04 ` Philippe Mathieu-Daudé
2025-07-02 19:18 ` etanous via
0 siblings, 2 replies; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 6:47 UTC (permalink / raw)
To: Ed Tanous, qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Troy Lee, Paolo Bonzini,
Andrew Jeffery, Jamin Lin, qemu-arm, Ed Tanous
Hello Ed,
On 7/1/25 22:33, Ed Tanous wrote:
> From: Ed Tanous <ed@tanous.net>
>
> There are arm targets that are connected to this io expander,
> specifically some varieties of Aspeed 2600 BMCs. Add it to Kconfig to
> allow use.
>
> Signed-off-by: Ed Tanous <etanous@nvidia.com>
> ---
> hw/arm/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
> index f543d944c3..6ea86534d5 100644
> --- a/hw/arm/Kconfig
> +++ b/hw/arm/Kconfig
> @@ -532,6 +532,7 @@ config ASPEED_SOC
> select I2C
> select DPS310
> select PCA9552
> + select PCA9554
> select SERIAL_MM
> select SMBUS_EEPROM
> select PCA954X
This was already added by Patrick in patch :
https://lore.kernel.org/qemu-devel/20250619151458.2831859-1-patrick@stwcx.xyz/
which should be pushed by the end the week.
Thanks,
C.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/4] docs: add support for gb200-bmc
2025-07-01 20:33 ` [PATCH 3/4] docs: add support for gb200-bmc Ed Tanous
@ 2025-07-02 6:49 ` Cédric Le Goater
0 siblings, 0 replies; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 6:49 UTC (permalink / raw)
To: Ed Tanous, qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Troy Lee, Paolo Bonzini,
Andrew Jeffery, Jamin Lin, qemu-arm
On 7/1/25 22:33, Ed Tanous wrote:
> This patch updates the docs for support of gb200-bmc.
>
> Signed-off-by: Ed Tanous <etanous@nvidia.com>
> ---
> docs/system/arm/aspeed.rst | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
> index 43d27d83cb..bec0a1dfa8 100644
> --- a/docs/system/arm/aspeed.rst
> +++ b/docs/system/arm/aspeed.rst
> @@ -1,5 +1,4 @@
> -Aspeed family boards (``ast2500-evb``, ``ast2600-evb``, ``ast2700-evb``, ``bletchley-bmc``, ``fuji-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``, ``ast2700-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``)
>
> The QEMU Aspeed machines model BMCs of various OpenPOWER systems and
> Aspeed evaluation boards. They are based on different releases of the
> @@ -35,6 +34,7 @@ AST2600 SoC based machines :
> - ``fuji-bmc`` Facebook Fuji BMC
> - ``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
>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Thanks,
C.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model
2025-07-01 20:33 ` [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model Ed Tanous
@ 2025-07-02 7:00 ` Cédric Le Goater
2025-07-02 19:27 ` etanous via
2025-07-02 21:32 ` Cédric Le Goater
1 sibling, 1 reply; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 7:00 UTC (permalink / raw)
To: Ed Tanous, qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Troy Lee, Paolo Bonzini,
Andrew Jeffery, Jamin Lin, qemu-arm
On 7/1/25 22:33, Ed Tanous wrote:
> Aspeed2600 has two spi lanes; Add a new struct that can mount the
> second SPI.
>
> Signed-off-by: Ed Tanous <etanous@nvidia.com>
> ---
> hw/arm/aspeed.c | 2 ++
> include/hw/arm/aspeed.h | 2 ++
> 2 files changed, 4 insertions(+)
>
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index d0b333646e..3ef7f6c5b2 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -465,6 +465,8 @@ static void aspeed_machine_init(MachineState *machine)
> aspeed_board_init_flashes(&bmc->soc->spi[0],
> bmc->spi_model ? bmc->spi_model : amc->spi_model,
> 1, amc->num_cs);
> + aspeed_board_init_flashes(&bmc->soc->spi[1],
> + amc->spi2_model, 1, amc->num_cs2);
> }
>
> if (machine->kernel_filename && sc->num_cpus > 1) {
> diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
> index 973277bea6..6c36455656 100644
> --- a/include/hw/arm/aspeed.h
> +++ b/include/hw/arm/aspeed.h
> @@ -35,7 +35,9 @@ struct AspeedMachineClass {
> uint32_t hw_strap2;
> const char *fmc_model;
> const char *spi_model;
> + const char *spi2_model;
> uint32_t num_cs;
> + uint32_t num_cs2;
> uint32_t macs_mask;
> void (*i2c_init)(AspeedMachineState *bmc);
> uint32_t uart_default;
Another way specifying backends for all SPI devices is to use -blockdev :
$ qemu-system-arm -M ast2600-evb \
-blockdev node-name=fmc0,driver=file,filename=/path/to/fmc0.img \
-device mx66u51235f,bus=ssi.0,cs=0x0,drive=fmc0 \
-blockdev node-name=fmc1,driver=file,filename=/path/to/fmc1.img \
-device mx66u51235f,bus=ssi.0,cs=0x1,drive=fmc1 \
-blockdev node-name=spi1,driver=file,filename=/path/to/spi1.img \
-device mx66u51235f,cs=0x0,bus=ssi.1,drive=spi1 \
-nographic -nodefaults
See https://www.qemu.org/docs/master/system/arm/aspeed.html.
Have you tried it ?
Thanks,
C.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/4] Add support for gb200-bmc machine
2025-07-01 20:33 [PATCH 0/4] Add support for gb200-bmc machine Ed Tanous
` (3 preceding siblings ...)
2025-07-01 20:34 ` [PATCH 4/4] hw/arm/aspeed: Add GB200 BMC target Ed Tanous
@ 2025-07-02 7:00 ` Cédric Le Goater
2025-07-02 19:31 ` etanous via
4 siblings, 1 reply; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 7:00 UTC (permalink / raw)
To: Ed Tanous, qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Troy Lee, Paolo Bonzini,
Andrew Jeffery, Jamin Lin, qemu-arm
On 7/1/25 22:33, Ed Tanous wrote:
> This patch series adds support for gb200-bmc, a baseboard management controller
> module based on an Aspeed 2600 SOC.
>
> Ed Tanous (4):
> hw/arm: Add PCA9554 to ARM target
> hw/arm/aspeed: Add second SPI chip to Aspeed model
> docs: add support for gb200-bmc
> hw/arm/aspeed: Add GB200 BMC target
>
> docs/system/arm/aspeed.rst | 4 +-
> hw/arm/Kconfig | 1 +
> hw/arm/aspeed.c | 81 ++++++++++++++++++++++++++++++++++++++
> hw/arm/aspeed_eeprom.c | 21 ++++++++++
> hw/arm/aspeed_eeprom.h | 3 ++
> include/hw/arm/aspeed.h | 2 +
> 6 files changed, 110 insertions(+), 2 deletions(-)
>
Could you provide a functional test for the gb200nvl-bmc machine too ?
See tests/functional/test_*aspeed* files.
Thanks,
C.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/4] hw/arm: Add PCA9554 to ARM target
2025-07-02 6:47 ` Cédric Le Goater
@ 2025-07-02 7:04 ` Philippe Mathieu-Daudé
2025-07-02 19:20 ` etanous via
2025-07-02 19:18 ` etanous via
1 sibling, 1 reply; 20+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-07-02 7:04 UTC (permalink / raw)
To: Cédric Le Goater, Ed Tanous, qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Troy Lee, Paolo Bonzini,
Andrew Jeffery, Jamin Lin, qemu-arm, Ed Tanous, Patrick Williams,
Steven Lee
Hi,
On 2/7/25 08:47, Cédric Le Goater wrote:
> Hello Ed,
>
> On 7/1/25 22:33, Ed Tanous wrote:
>> From: Ed Tanous <ed@tanous.net>
>>
>> There are arm targets that are connected to this io expander,
>> specifically some varieties of Aspeed 2600 BMCs. Add it to Kconfig to
>> allow use.
>>
>> Signed-off-by: Ed Tanous <etanous@nvidia.com>
>> ---
>> hw/arm/Kconfig | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
>> index f543d944c3..6ea86534d5 100644
>> --- a/hw/arm/Kconfig
>> +++ b/hw/arm/Kconfig
>> @@ -532,6 +532,7 @@ config ASPEED_SOC
>> select I2C
>> select DPS310
>> select PCA9552
>> + select PCA9554
Note, these i2c devices 1/ aren't part of the SoC, but boards/machines,
2/ nor are they required to have a functional machine (i.e. a i2c link
could get cut or an i2c device ending dead).
I'd prefer 1/ add a ASPEED_MACHINE layer selecting ASPEED_SOC and the
external devices, and 2/ use "imply" statement instead of "select" for
devices, as per docs/devel/kconfig.rst:
Boards specify their constituent devices using ``imply`` and
``select`` directives. A device should be listed under ``select``
if the board cannot be started at all without it. It should be
listed under ``imply`` if (depending on the QEMU command line)
the board may or may not be started without it. Boards default to
true, but also have a ``depends on`` clause to limit them to the
appropriate targets.
For some targets, not all boards may be supported by hardware
virtualization, in which case they also depend on the ``TCG``
symbol, other symbols that are commonly used as dependencies for
boards include libraries (such as ``FDT``) or ``TARGET_BIG_ENDIAN``
(possibly negated).
My 2 cents.
Regards,
Phil.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/4] hw/arm: Add PCA9554 to ARM target
2025-07-02 6:47 ` Cédric Le Goater
2025-07-02 7:04 ` Philippe Mathieu-Daudé
@ 2025-07-02 19:18 ` etanous via
1 sibling, 0 replies; 20+ messages in thread
From: etanous via @ 2025-07-02 19:18 UTC (permalink / raw)
To: Cédric Le Goater
Cc: qemu-devel, Peter Maydell, Steven Lee, Joel Stanley, Troy Lee,
Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm, Ed Tanous
On Wed, Jul 02, 2025 at 08:47:48AM +0200, Cédric Le Goater wrote:
>
>
>
>
> This was already added by Patrick in patch :
>
ACK. Will remove this patch in next series.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/4] hw/arm: Add PCA9554 to ARM target
2025-07-02 7:04 ` Philippe Mathieu-Daudé
@ 2025-07-02 19:20 ` etanous via
2025-07-02 21:21 ` Cédric Le Goater
0 siblings, 1 reply; 20+ messages in thread
From: etanous via @ 2025-07-02 19:20 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Cédric Le Goater, qemu-devel, Peter Maydell, Steven Lee,
Joel Stanley, Troy Lee, Paolo Bonzini, Andrew Jeffery, Jamin Lin,
qemu-arm, Ed Tanous, Patrick Williams
On Wed, Jul 02, 2025 at 09:04:25AM +0200, Philippe Mathieu-Daudé wrote:
>
> Hi,
>
> On 2/7/25 08:47, Cédric Le Goater wrote:
> > Hello Ed,
> >
> > On 7/1/25 22:33, Ed Tanous wrote:
> > > From: Ed Tanous <ed@tanous.net>
> > >
> > > There are arm targets that are connected to this io expander,
> > > specifically some varieties of Aspeed 2600 BMCs. Add it to Kconfig to
> > > allow use.
> > >
> > > Signed-off-by: Ed Tanous <etanous@nvidia.com>
> > > ---
> > > hw/arm/Kconfig | 1 +
> > > 1 file changed, 1 insertion(+)
> > >
> > > diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
> > > index f543d944c3..6ea86534d5 100644
> > > --- a/hw/arm/Kconfig
> > > +++ b/hw/arm/Kconfig
> > > @@ -532,6 +532,7 @@ config ASPEED_SOC
> > > select I2C
> > > select DPS310
> > > select PCA9552
> > > + select PCA9554
>
> Note, these i2c devices 1/ aren't part of the SoC, but boards/machines,
> 2/ nor are they required to have a functional machine (i.e. a i2c link
> could get cut or an i2c device ending dead).
>
> I'd prefer 1/ add a ASPEED_MACHINE layer selecting ASPEED_SOC and the
> external devices, and 2/ use "imply" statement instead of "select" for
> devices, as per docs/devel/kconfig.rst:
>
> Boards specify their constituent devices using ``imply`` and
> ``select`` directives. A device should be listed under ``select``
> if the board cannot be started at all without it. It should be
> listed under ``imply`` if (depending on the QEMU command line)
> the board may or may not be started without it. Boards default to
> true, but also have a ``depends on`` clause to limit them to the
> appropriate targets.
> For some targets, not all boards may be supported by hardware
> virtualization, in which case they also depend on the ``TCG``
> symbol, other symbols that are commonly used as dependencies for
> boards include libraries (such as ``FDT``) or ``TARGET_BIG_ENDIAN``
> (possibly negated).
>
ACK, seems reasonable. I tried to follow the pattern that was there,
but agreed, it was odd that "board" level things were added at the ARM
layer.
> My 2 cents.
>
> Regards,
>
> Phil.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model
2025-07-02 7:00 ` Cédric Le Goater
@ 2025-07-02 19:27 ` etanous via
2025-07-02 21:23 ` Cédric Le Goater
0 siblings, 1 reply; 20+ messages in thread
From: etanous via @ 2025-07-02 19:27 UTC (permalink / raw)
To: Cédric Le Goater
Cc: qemu-devel, Peter Maydell, Steven Lee, Joel Stanley, Troy Lee,
Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm
On Wed, Jul 02, 2025 at 09:00:20AM +0200, Cédric Le Goater wrote:
> External email: Use caution opening links or attachments
>
>
> On 7/1/25 22:33, Ed Tanous wrote:
> > Aspeed2600 has two spi lanes; Add a new struct that can mount the
> > second SPI.
> >
> > Signed-off-by: Ed Tanous <etanous@nvidia.com>
> > ---
> > hw/arm/aspeed.c | 2 ++
> > include/hw/arm/aspeed.h | 2 ++
> > 2 files changed, 4 insertions(+)
> >
> > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> > index d0b333646e..3ef7f6c5b2 100644
> > --- a/hw/arm/aspeed.c
> > +++ b/hw/arm/aspeed.c
> > @@ -465,6 +465,8 @@ static void aspeed_machine_init(MachineState *machine)
> > aspeed_board_init_flashes(&bmc->soc->spi[0],
> > bmc->spi_model ? bmc->spi_model : amc->spi_model,
> > 1, amc->num_cs);
> > + aspeed_board_init_flashes(&bmc->soc->spi[1],
> > + amc->spi2_model, 1, amc->num_cs2);
> > }
> >
> > if (machine->kernel_filename && sc->num_cpus > 1) {
> > diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
> > index 973277bea6..6c36455656 100644
> > --- a/include/hw/arm/aspeed.h
> > +++ b/include/hw/arm/aspeed.h
> > @@ -35,7 +35,9 @@ struct AspeedMachineClass {
> > uint32_t hw_strap2;
> > const char *fmc_model;
> > const char *spi_model;
> > + const char *spi2_model;
> > uint32_t num_cs;
> > + uint32_t num_cs2;
> > uint32_t macs_mask;
> > void (*i2c_init)(AspeedMachineState *bmc);
> > uint32_t uart_default;
>
> Another way specifying backends for all SPI devices is to use -blockdev :
>
> $ qemu-system-arm -M ast2600-evb \
> -blockdev node-name=fmc0,driver=file,filename=/path/to/fmc0.img \
> -device mx66u51235f,bus=ssi.0,cs=0x0,drive=fmc0 \
> -blockdev node-name=fmc1,driver=file,filename=/path/to/fmc1.img \
> -device mx66u51235f,bus=ssi.0,cs=0x1,drive=fmc1 \
> -blockdev node-name=spi1,driver=file,filename=/path/to/spi1.img \
> -device mx66u51235f,cs=0x0,bus=ssi.1,drive=spi1 \
> -nographic -nodefaults
>
I had attempted that at one point. The second SPI flash is expected to
be empty on first boot, so building up an empty file with dd seemed like
a waste, and pushed more details on the user calling the machine to
know the machine configuration. FWIW, yoctos 'runqemu' helper script is
also very useful, but getting it to spit out non-standard args and files
isn't the easiest. If what's in this patch is ok, I'd like to stick
with it. If not, I can dig deeper into trying to do this on command
line.
> See <LINK SCRUBBED>
>
> Have you tried it ?
>
>
> Thanks,
>
> C.
>
>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/4] Add support for gb200-bmc machine
2025-07-02 7:00 ` [PATCH 0/4] Add support for gb200-bmc machine Cédric Le Goater
@ 2025-07-02 19:31 ` etanous via
2025-07-02 21:25 ` Cédric Le Goater
0 siblings, 1 reply; 20+ messages in thread
From: etanous via @ 2025-07-02 19:31 UTC (permalink / raw)
To: Cédric Le Goater
Cc: qemu-devel, Peter Maydell, Steven Lee, Joel Stanley, Troy Lee,
Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm
On Wed, Jul 02, 2025 at 09:00:53AM +0200, Cédric Le Goater wrote:
> External email: Use caution opening links or attachments
>
>
> On 7/1/25 22:33, Ed Tanous wrote:
> > This patch series adds support for gb200-bmc, a baseboard management controller
> > module based on an Aspeed 2600 SOC.
> >
> > Ed Tanous (4):
> > hw/arm: Add PCA9554 to ARM target
> > hw/arm/aspeed: Add second SPI chip to Aspeed model
> > docs: add support for gb200-bmc
> > hw/arm/aspeed: Add GB200 BMC target
> >
> > docs/system/arm/aspeed.rst | 4 +-
> > hw/arm/Kconfig | 1 +
> > hw/arm/aspeed.c | 81 ++++++++++++++++++++++++++++++++++++++
> > hw/arm/aspeed_eeprom.c | 21 ++++++++++
> > hw/arm/aspeed_eeprom.h | 3 ++
> > include/hw/arm/aspeed.h | 2 +
> > 6 files changed, 110 insertions(+), 2 deletions(-)
> >
>
> Could you provide a functional test for the gb200nvl-bmc machine too ?
> See tests/functional/test_*aspeed* files.
>
Can do. It looks like images are pushed to
https://github.com/legoater/qemu-aspeed-boot and accepted via Github PR?
Will open PR shortly.
> Thanks,
>
> C.
>
>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/4] hw/arm: Add PCA9554 to ARM target
2025-07-02 19:20 ` etanous via
@ 2025-07-02 21:21 ` Cédric Le Goater
0 siblings, 0 replies; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 21:21 UTC (permalink / raw)
To: etanous, Philippe Mathieu-Daudé
Cc: qemu-devel, Peter Maydell, Steven Lee, Joel Stanley, Troy Lee,
Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm, Ed Tanous,
Patrick Williams
On 7/2/25 21:20, etanous wrote:
> On Wed, Jul 02, 2025 at 09:04:25AM +0200, Philippe Mathieu-Daudé wrote:
>>
>> Hi,
>>
>> On 2/7/25 08:47, Cédric Le Goater wrote:
>>> Hello Ed,
>>>
>>> On 7/1/25 22:33, Ed Tanous wrote:
>>>> From: Ed Tanous <ed@tanous.net>
>>>>
>>>> There are arm targets that are connected to this io expander,
>>>> specifically some varieties of Aspeed 2600 BMCs. Add it to Kconfig to
>>>> allow use.
>>>>
>>>> Signed-off-by: Ed Tanous <etanous@nvidia.com>
>>>> ---
>>>> hw/arm/Kconfig | 1 +
>>>> 1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
>>>> index f543d944c3..6ea86534d5 100644
>>>> --- a/hw/arm/Kconfig
>>>> +++ b/hw/arm/Kconfig
>>>> @@ -532,6 +532,7 @@ config ASPEED_SOC
>>>> select I2C
>>>> select DPS310
>>>> select PCA9552
>>>> + select PCA9554
>>
>> Note, these i2c devices 1/ aren't part of the SoC, but boards/machines,
>> 2/ nor are they required to have a functional machine (i.e. a i2c link
>> could get cut or an i2c device ending dead).
>>
>> I'd prefer 1/ add a ASPEED_MACHINE layer selecting ASPEED_SOC and the
>> external devices, and 2/ use "imply" statement instead of "select" for
>> devices, as per docs/devel/kconfig.rst:
>>
>> Boards specify their constituent devices using ``imply`` and
>> ``select`` directives. A device should be listed under ``select``
>> if the board cannot be started at all without it. It should be
>> listed under ``imply`` if (depending on the QEMU command line)
>> the board may or may not be started without it. Boards default to
>> true, but also have a ``depends on`` clause to limit them to the
>> appropriate targets.
>> For some targets, not all boards may be supported by hardware
>> virtualization, in which case they also depend on the ``TCG``
>> symbol, other symbols that are commonly used as dependencies for
>> boards include libraries (such as ``FDT``) or ``TARGET_BIG_ENDIAN``
>> (possibly negated).
>>
>
> ACK, seems reasonable. I tried to follow the pattern that was there,
> but agreed, it was odd that "board" level things were added at the ARM
> layer.
ASPEED_SOC has been there since the beginning; when the timer
model was first introduced. Kconfig was introduced, then meson.
We simply kept using it.
ASPEED_MACHINE would be nice. We would still have to "select"
all I2C devices because the devices are always created at init
time even with -nodefaults. These device are soldered on the
board and it doesn't make sense to make them optional. IIRC,
we have flexibility to choose the SPI flash devices though,
this is because real systems have sockets to replace them.
Anyhow, if you want to tackle this, you are welcome.
Thanks,
C.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model
2025-07-02 19:27 ` etanous via
@ 2025-07-02 21:23 ` Cédric Le Goater
0 siblings, 0 replies; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 21:23 UTC (permalink / raw)
To: etanous
Cc: qemu-devel, Peter Maydell, Steven Lee, Joel Stanley, Troy Lee,
Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm
On 7/2/25 21:27, etanous wrote:
> On Wed, Jul 02, 2025 at 09:00:20AM +0200, Cédric Le Goater wrote:
>> External email: Use caution opening links or attachments
>>
>>
>> On 7/1/25 22:33, Ed Tanous wrote:
>>> Aspeed2600 has two spi lanes; Add a new struct that can mount the
>>> second SPI.
>>>
>>> Signed-off-by: Ed Tanous <etanous@nvidia.com>
>>> ---
>>> hw/arm/aspeed.c | 2 ++
>>> include/hw/arm/aspeed.h | 2 ++
>>> 2 files changed, 4 insertions(+)
>>>
>>> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
>>> index d0b333646e..3ef7f6c5b2 100644
>>> --- a/hw/arm/aspeed.c
>>> +++ b/hw/arm/aspeed.c
>>> @@ -465,6 +465,8 @@ static void aspeed_machine_init(MachineState *machine)
>>> aspeed_board_init_flashes(&bmc->soc->spi[0],
>>> bmc->spi_model ? bmc->spi_model : amc->spi_model,
>>> 1, amc->num_cs);
>>> + aspeed_board_init_flashes(&bmc->soc->spi[1],
>>> + amc->spi2_model, 1, amc->num_cs2);
>>> }
>>>
>>> if (machine->kernel_filename && sc->num_cpus > 1) {
>>> diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
>>> index 973277bea6..6c36455656 100644
>>> --- a/include/hw/arm/aspeed.h
>>> +++ b/include/hw/arm/aspeed.h
>>> @@ -35,7 +35,9 @@ struct AspeedMachineClass {
>>> uint32_t hw_strap2;
>>> const char *fmc_model;
>>> const char *spi_model;
>>> + const char *spi2_model;
>>> uint32_t num_cs;
>>> + uint32_t num_cs2;
>>> uint32_t macs_mask;
>>> void (*i2c_init)(AspeedMachineState *bmc);
>>> uint32_t uart_default;
>>
>> Another way specifying backends for all SPI devices is to use -blockdev :
>>
>> $ qemu-system-arm -M ast2600-evb \
>> -blockdev node-name=fmc0,driver=file,filename=/path/to/fmc0.img \
>> -device mx66u51235f,bus=ssi.0,cs=0x0,drive=fmc0 \
>> -blockdev node-name=fmc1,driver=file,filename=/path/to/fmc1.img \
>> -device mx66u51235f,bus=ssi.0,cs=0x1,drive=fmc1 \
>> -blockdev node-name=spi1,driver=file,filename=/path/to/spi1.img \
>> -device mx66u51235f,cs=0x0,bus=ssi.1,drive=spi1 \
>> -nographic -nodefaults
>>
>
> I had attempted that at one point. The second SPI flash is expected to
> be empty on first boot, so building up an empty file with dd seemed like
> a waste, and pushed more details on the user calling the machine to
> know the machine configuration. FWIW, yoctos 'runqemu' helper script is
> also very useful, but getting it to spit out non-standard args and files
> isn't the easiest. If what's in this patch is ok, I'd like to stick
> with it. If not, I can dig deeper into trying to do this on command
> line.
It's fine. we will merge it. I am trying to promote the -blockdev interface
to get rid of -drive but this seems to be wishful thinking.
Thanks,
C.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/4] Add support for gb200-bmc machine
2025-07-02 19:31 ` etanous via
@ 2025-07-02 21:25 ` Cédric Le Goater
0 siblings, 0 replies; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 21:25 UTC (permalink / raw)
To: etanous
Cc: qemu-devel, Peter Maydell, Steven Lee, Joel Stanley, Troy Lee,
Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm
On 7/2/25 21:31, etanous wrote:
> On Wed, Jul 02, 2025 at 09:00:53AM +0200, Cédric Le Goater wrote:
>> External email: Use caution opening links or attachments
>>
>>
>> On 7/1/25 22:33, Ed Tanous wrote:
>>> This patch series adds support for gb200-bmc, a baseboard management controller
>>> module based on an Aspeed 2600 SOC.
>>>
>>> Ed Tanous (4):
>>> hw/arm: Add PCA9554 to ARM target
>>> hw/arm/aspeed: Add second SPI chip to Aspeed model
>>> docs: add support for gb200-bmc
>>> hw/arm/aspeed: Add GB200 BMC target
>>>
>>> docs/system/arm/aspeed.rst | 4 +-
>>> hw/arm/Kconfig | 1 +
>>> hw/arm/aspeed.c | 81 ++++++++++++++++++++++++++++++++++++++
>>> hw/arm/aspeed_eeprom.c | 21 ++++++++++
>>> hw/arm/aspeed_eeprom.h | 3 ++
>>> include/hw/arm/aspeed.h | 2 +
>>> 6 files changed, 110 insertions(+), 2 deletions(-)
>>>
>>
>> Could you provide a functional test for the gb200nvl-bmc machine too ?
>> See tests/functional/test_*aspeed* files.
>>
>
> Can do. It looks like images are pushed to
> https://github.com/legoater/qemu-aspeed-boot and accepted via Github PR?
Yes. please do that. It seems the easiest way to collect FW images.
Please provide some info on how it was built, openbmc version, repo, etc.
Thanks,
C.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model
2025-07-01 20:33 ` [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model Ed Tanous
2025-07-02 7:00 ` Cédric Le Goater
@ 2025-07-02 21:32 ` Cédric Le Goater
1 sibling, 0 replies; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 21:32 UTC (permalink / raw)
To: Ed Tanous, qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Troy Lee, Paolo Bonzini,
Andrew Jeffery, Jamin Lin, qemu-arm
On 7/1/25 22:33, Ed Tanous wrote:
> Aspeed2600 has two spi lanes; Add a new struct that can mount the
> second SPI.
>
> Signed-off-by: Ed Tanous <etanous@nvidia.com>
> ---
> hw/arm/aspeed.c | 2 ++
> include/hw/arm/aspeed.h | 2 ++
> 2 files changed, 4 insertions(+)
>
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index d0b333646e..3ef7f6c5b2 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -465,6 +465,8 @@ static void aspeed_machine_init(MachineState *machine)
> aspeed_board_init_flashes(&bmc->soc->spi[0],
> bmc->spi_model ? bmc->spi_model : amc->spi_model,
> 1, amc->num_cs);
> + aspeed_board_init_flashes(&bmc->soc->spi[1],
> + amc->spi2_model, 1, amc->num_cs2);
> }
>
> if (machine->kernel_filename && sc->num_cpus > 1) {
> diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
> index 973277bea6..6c36455656 100644
> --- a/include/hw/arm/aspeed.h
> +++ b/include/hw/arm/aspeed.h
> @@ -35,7 +35,9 @@ struct AspeedMachineClass {
> uint32_t hw_strap2;
> const char *fmc_model;
> const char *spi_model;
> + const char *spi2_model;
> uint32_t num_cs;
> + uint32_t num_cs2;
> uint32_t macs_mask;
> void (*i2c_init)(AspeedMachineState *bmc);
> uint32_t uart_default;
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Thanks,
C.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/4] hw/arm/aspeed: Add GB200 BMC target
2025-07-01 20:34 ` [PATCH 4/4] hw/arm/aspeed: Add GB200 BMC target Ed Tanous
@ 2025-07-02 21:38 ` Cédric Le Goater
2025-07-02 22:04 ` Ed Tanous via
0 siblings, 1 reply; 20+ messages in thread
From: Cédric Le Goater @ 2025-07-02 21:38 UTC (permalink / raw)
To: Ed Tanous, qemu-devel
Cc: Peter Maydell, Steven Lee, Joel Stanley, Troy Lee, Paolo Bonzini,
Andrew Jeffery, Jamin Lin, qemu-arm
On 7/1/25 22:34, Ed Tanous wrote:
> GB200nvl72 is a system for for accelerated compute. This is a model for
> the BMC target within the system.
Could you please add a comment saying it is based on DT :
aspeed-bmc-nvidia-gb200nvl-bmc.dts
from
https://github.com/openbmc/linux/blob/dev-6.6/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-gb200nvl-bmc.dts
> Signed-off-by: Ed Tanous <etanous@nvidia.com>
> ---
> hw/arm/aspeed.c | 79 ++++++++++++++++++++++++++++++++++++++++++
> hw/arm/aspeed_eeprom.c | 21 +++++++++++
> hw/arm/aspeed_eeprom.h | 3 ++
> 3 files changed, 103 insertions(+)
>
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index 3ef7f6c5b2..98144ced86 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -19,6 +19,7 @@
> #include "hw/i2c/i2c_mux_pca954x.h"
> #include "hw/i2c/smbus_eeprom.h"
> #include "hw/gpio/pca9552.h"
> +#include "hw/gpio/pca9554.h"
> #include "hw/nvram/eeprom_at24c.h"
> #include "hw/sensor/tmp105.h"
> #include "hw/misc/led.h"
> @@ -201,6 +202,10 @@ struct AspeedMachineState {
> #define BLETCHLEY_BMC_HW_STRAP1 AST2600_EVB_HW_STRAP1
> #define BLETCHLEY_BMC_HW_STRAP2 AST2600_EVB_HW_STRAP2
>
> +/* GB200NVL hardware value */
> +#define GB200NVL_BMC_HW_STRAP1 AST2600_EVB_HW_STRAP1
> +#define GB200NVL_BMC_HW_STRAP2 AST2600_EVB_HW_STRAP2
> +
> /* Qualcomm DC-SCM hardware value */
> #define QCOM_DC_SCM_V1_BMC_HW_STRAP1 0x00000000
> #define QCOM_DC_SCM_V1_BMC_HW_STRAP2 0x00000041
> @@ -647,6 +652,12 @@ static void create_pca9552(AspeedSoCState *soc, int bus_id, int addr)
> TYPE_PCA9552, addr);
> }
>
> +static I2CSlave *create_pca9554(AspeedSoCState *soc, int bus_id, int addr)
> +{
> + return i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, bus_id),
> + TYPE_PCA9554, addr);
> +}
> +
> static void sonorapass_bmc_i2c_init(AspeedMachineState *bmc)
> {
> AspeedSoCState *soc = bmc->soc;
> @@ -1052,6 +1063,45 @@ static void bletchley_bmc_i2c_init(AspeedMachineState *bmc)
> i2c_slave_create_simple(i2c[12], TYPE_PCA9552, 0x67);
> }
>
> +> +static void gb200nvl_bmc_i2c_init(AspeedMachineState *bmc)
> +{
> + AspeedSoCState *soc = bmc->soc;
> + I2CBus *i2c[15] = {};
> + DeviceState *dev;
> + for (int i = 0; i < sizeof(i2c) / sizeof(i2c[0]); i++) {
> + if ((i == 11) || (i == 12) || (i == 13)) {
> + continue;
> + }
> + i2c[i] = aspeed_i2c_get_bus(&soc->i2c, i);
> + }
> +
> + /* Bus 5 Expander */
> + create_pca9554(soc, 4, 0x21);
> +
> + /* Mux I2c Expanders */
> + i2c_slave_create_simple(i2c[5], "pca9546", 0x71);
> + i2c_slave_create_simple(i2c[5], "pca9546", 0x72);
> + i2c_slave_create_simple(i2c[5], "pca9546", 0x73);
> + i2c_slave_create_simple(i2c[5], "pca9546", 0x75);
> + i2c_slave_create_simple(i2c[5], "pca9546", 0x76);
> + i2c_slave_create_simple(i2c[5], "pca9546", 0x77);
> +
> + /* Bus 10 */
> + dev = DEVICE(create_pca9554(soc, 9, 0x20));
> +
> + /* Set FPGA_READY */
> + object_property_set_str(OBJECT(dev), "pin1", "high", &error_fatal);
> +
> + create_pca9554(soc, 9, 0x21);
> + at24c_eeprom_init(i2c[9], 0x50, 64 * KiB);
> + at24c_eeprom_init(i2c[9], 0x51, 64 * KiB);
> +
> + /* Bus 11 */
> + at24c_eeprom_init_rom(i2c[10], 0x50, 256, gb200nvl_bmc_fruid,
> + gb200nvl_bmc_fruid_len);
> +}
> +
> static void fby35_i2c_init(AspeedMachineState *bmc)
> {
> AspeedSoCState *soc = bmc->soc;
> @@ -1587,6 +1637,31 @@ static void aspeed_machine_bletchley_class_init(ObjectClass *oc,
> aspeed_machine_class_init_cpus_defaults(mc);
> }
>
> +#define GB200NVL_BMC_RAM_SIZE ASPEED_RAM_SIZE(1 * GiB)
> +
> +static void aspeed_machine_gb200nvl_class_init(ObjectClass *oc,
> + const void *data)
> +{
> + MachineClass *mc = MACHINE_CLASS(oc);
> + AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
> +
> + mc->desc = "Nvidia GB200NVL BMC (Cortex-A7)";
> + amc->soc_name = "ast2600-a3";
> + amc->hw_strap1 = GB200NVL_BMC_HW_STRAP1;
> + amc->hw_strap2 = GB200NVL_BMC_HW_STRAP2;
> + amc->fmc_model = "mx66u51235f";
> + amc->spi_model = "mx66u51235f";
> + amc->num_cs = 2;
> +
> + amc->spi2_model = "mx66u51235f";
> + amc->num_cs2 = 1;
> + amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON;
> + amc->i2c_init = gb200nvl_bmc_i2c_init;
> + mc->default_ram_size = GB200NVL_BMC_RAM_SIZE;
> + aspeed_machine_class_init_cpus_defaults(mc);
> + aspeed_machine_ast2600_class_emmc_init(oc);
> +}
> +
> static void fby35_reset(MachineState *state, ResetType type)
> {
> AspeedMachineState *bmc = ASPEED_MACHINE(state);
> @@ -1879,6 +1954,10 @@ static const TypeInfo aspeed_machine_types[] = {
> .name = MACHINE_TYPE_NAME("bletchley-bmc"),
> .parent = TYPE_ASPEED_MACHINE,
> .class_init = aspeed_machine_bletchley_class_init,
> + }, {
> + .name = MACHINE_TYPE_NAME("gb200nvl-bmc"),
> + .parent = TYPE_ASPEED_MACHINE,
> + .class_init = aspeed_machine_gb200nvl_class_init,
> }, {
> .name = MACHINE_TYPE_NAME("fby35-bmc"),
> .parent = MACHINE_TYPE_NAME("ast2600-evb"),
> diff --git a/hw/arm/aspeed_eeprom.c b/hw/arm/aspeed_eeprom.c
> index daa3d329d1..8bbbdec834 100644
> --- a/hw/arm/aspeed_eeprom.c
> +++ b/hw/arm/aspeed_eeprom.c
> @@ -162,6 +162,25 @@ const uint8_t rainier_bmc_fruid[] = {
> 0x31, 0x50, 0x46, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
> };
>
> +const uint8_t gb200nvl_bmc_fruid[] = {
> + 0x01, 0x00, 0x00, 0x01, 0x0b, 0x00, 0x00, 0xf3, 0x01, 0x0a, 0x19, 0x1f,
> + 0x0f, 0xe6, 0xc6, 0x4e, 0x56, 0x49, 0x44, 0x49, 0x41, 0xc5, 0x50, 0x33,
> + 0x38, 0x30, 0x39, 0xcd, 0x31, 0x35, 0x38, 0x33, 0x33, 0x32, 0x34, 0x38,
> + 0x30, 0x30, 0x31, 0x35, 0x30, 0xd2, 0x36, 0x39, 0x39, 0x2d, 0x31, 0x33,
> + 0x38, 0x30, 0x39, 0x2d, 0x30, 0x34, 0x30, 0x34, 0x2d, 0x36, 0x30, 0x30,
> + 0xc0, 0x01, 0x01, 0xd6, 0x4d, 0x41, 0x43, 0x3a, 0x20, 0x33, 0x43, 0x3a,
> + 0x36, 0x44, 0x3a, 0x36, 0x36, 0x3a, 0x31, 0x34, 0x3a, 0x43, 0x38, 0x3a,
> + 0x37, 0x41, 0xc1, 0x3b, 0x01, 0x09, 0x19, 0xc6, 0x4e, 0x56, 0x49, 0x44,
> + 0x49, 0x41, 0xc9, 0x50, 0x33, 0x38, 0x30, 0x39, 0x2d, 0x42, 0x4d, 0x43,
> + 0xd2, 0x36, 0x39, 0x39, 0x2d, 0x31, 0x33, 0x38, 0x30, 0x39, 0x2d, 0x30,
> + 0x34, 0x30, 0x34, 0x2d, 0x36, 0x30, 0x30, 0xc4, 0x41, 0x45, 0x2e, 0x31,
> + 0xcd, 0x31, 0x35, 0x38, 0x33, 0x33, 0x32, 0x34, 0x38, 0x30, 0x30, 0x31,
> + 0x35, 0x30, 0xc0, 0xc4, 0x76, 0x30, 0x2e, 0x31, 0xc1, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
> +
> +};
> +
> const size_t tiogapass_bmc_fruid_len = sizeof(tiogapass_bmc_fruid);
> const size_t fby35_nic_fruid_len = sizeof(fby35_nic_fruid);
> const size_t fby35_bb_fruid_len = sizeof(fby35_bb_fruid);
> @@ -169,3 +188,5 @@ const size_t fby35_bmc_fruid_len = sizeof(fby35_bmc_fruid);
> const size_t yosemitev2_bmc_fruid_len = sizeof(yosemitev2_bmc_fruid);
> const size_t rainier_bb_fruid_len = sizeof(rainier_bb_fruid);
> const size_t rainier_bmc_fruid_len = sizeof(rainier_bmc_fruid);
> +const size_t gb200nvl_bmc_fruid_len = sizeof(gb200nvl_bmc_fruid);
> +
> diff --git a/hw/arm/aspeed_eeprom.h b/hw/arm/aspeed_eeprom.h
> index f08c16ef50..3ed9bc1d9a 100644
> --- a/hw/arm/aspeed_eeprom.h
> +++ b/hw/arm/aspeed_eeprom.h
> @@ -26,4 +26,7 @@ extern const size_t rainier_bb_fruid_len;
> extern const uint8_t rainier_bmc_fruid[];
> extern const size_t rainier_bmc_fruid_len;
>
> +extern const uint8_t gb200nvl_bmc_fruid[];
> +extern const size_t gb200nvl_bmc_fruid_len;
> +
> #endif
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/4] hw/arm/aspeed: Add GB200 BMC target
2025-07-02 21:38 ` Cédric Le Goater
@ 2025-07-02 22:04 ` Ed Tanous via
0 siblings, 0 replies; 20+ messages in thread
From: Ed Tanous via @ 2025-07-02 22:04 UTC (permalink / raw)
To: Cédric Le Goater
Cc: qemu-devel, Peter Maydell, Steven Lee, Joel Stanley, Troy Lee,
Paolo Bonzini, Andrew Jeffery, Jamin Lin, qemu-arm
On Wed, Jul 02, 2025 at 11:38:53PM +0200, Cédric Le Goater wrote:
> On 7/1/25 22:34, Ed Tanous wrote:
> > GB200nvl72 is a system for for accelerated compute. This is a model for
> > the BMC target within the system.
>
> Could you please add a comment saying it is based on DT :
>
> aspeed-bmc-nvidia-gb200nvl-bmc.dts
>
> from
>
> https://github.com/openbmc/linux/blob/dev-6.6/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-gb200nvl-bmc.dts
>
ACK. Will add to the commit message in v2.
>
> > Signed-off-by: Ed Tanous <etanous@nvidia.com>
> > ---
> > hw/arm/aspeed.c | 79 ++++++++++++++++++++++++++++++++++++++++++
> > hw/arm/aspeed_eeprom.c | 21 +++++++++++
> > hw/arm/aspeed_eeprom.h | 3 ++
> > 3 files changed, 103 insertions(+)
> >
> > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> > index 3ef7f6c5b2..98144ced86 100644
> > --- a/hw/arm/aspeed.c
> > +++ b/hw/arm/aspeed.c
> > @@ -19,6 +19,7 @@
> > #include "hw/i2c/i2c_mux_pca954x.h"
> > #include "hw/i2c/smbus_eeprom.h"
> > #include "hw/gpio/pca9552.h"
> > +#include "hw/gpio/pca9554.h"
> > #include "hw/nvram/eeprom_at24c.h"
> > #include "hw/sensor/tmp105.h"
> > #include "hw/misc/led.h"
> > @@ -201,6 +202,10 @@ struct AspeedMachineState {
> > #define BLETCHLEY_BMC_HW_STRAP1 AST2600_EVB_HW_STRAP1
> > #define BLETCHLEY_BMC_HW_STRAP2 AST2600_EVB_HW_STRAP2
> > +/* GB200NVL hardware value */
> > +#define GB200NVL_BMC_HW_STRAP1 AST2600_EVB_HW_STRAP1
> > +#define GB200NVL_BMC_HW_STRAP2 AST2600_EVB_HW_STRAP2
> > +
> > /* Qualcomm DC-SCM hardware value */
> > #define QCOM_DC_SCM_V1_BMC_HW_STRAP1 0x00000000
> > #define QCOM_DC_SCM_V1_BMC_HW_STRAP2 0x00000041
> > @@ -647,6 +652,12 @@ static void create_pca9552(AspeedSoCState *soc, int bus_id, int addr)
> > TYPE_PCA9552, addr);
> > }
> > +static I2CSlave *create_pca9554(AspeedSoCState *soc, int bus_id, int addr)
> > +{
> > + return i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, bus_id),
> > + TYPE_PCA9554, addr);
> > +}
> > +
> > static void sonorapass_bmc_i2c_init(AspeedMachineState *bmc)
> > {
> > AspeedSoCState *soc = bmc->soc;
> > @@ -1052,6 +1063,45 @@ static void bletchley_bmc_i2c_init(AspeedMachineState *bmc)
> > i2c_slave_create_simple(i2c[12], TYPE_PCA9552, 0x67);
> > }
> > +> +static void gb200nvl_bmc_i2c_init(AspeedMachineState *bmc)
> > +{
> > + AspeedSoCState *soc = bmc->soc;
> > + I2CBus *i2c[15] = {};
> > + DeviceState *dev;
> > + for (int i = 0; i < sizeof(i2c) / sizeof(i2c[0]); i++) {
> > + if ((i == 11) || (i == 12) || (i == 13)) {
> > + continue;
> > + }
> > + i2c[i] = aspeed_i2c_get_bus(&soc->i2c, i);
> > + }
> > +
> > + /* Bus 5 Expander */
> > + create_pca9554(soc, 4, 0x21);
> > +
> > + /* Mux I2c Expanders */
> > + i2c_slave_create_simple(i2c[5], "pca9546", 0x71);
> > + i2c_slave_create_simple(i2c[5], "pca9546", 0x72);
> > + i2c_slave_create_simple(i2c[5], "pca9546", 0x73);
> > + i2c_slave_create_simple(i2c[5], "pca9546", 0x75);
> > + i2c_slave_create_simple(i2c[5], "pca9546", 0x76);
> > + i2c_slave_create_simple(i2c[5], "pca9546", 0x77);
> > +
> > + /* Bus 10 */
> > + dev = DEVICE(create_pca9554(soc, 9, 0x20));
> > +
> > + /* Set FPGA_READY */
> > + object_property_set_str(OBJECT(dev), "pin1", "high", &error_fatal);
> > +
> > + create_pca9554(soc, 9, 0x21);
> > + at24c_eeprom_init(i2c[9], 0x50, 64 * KiB);
> > + at24c_eeprom_init(i2c[9], 0x51, 64 * KiB);
> > +
> > + /* Bus 11 */
> > + at24c_eeprom_init_rom(i2c[10], 0x50, 256, gb200nvl_bmc_fruid,
> > + gb200nvl_bmc_fruid_len);
> > +}
> > +
> > static void fby35_i2c_init(AspeedMachineState *bmc)
> > {
> > AspeedSoCState *soc = bmc->soc;
> > @@ -1587,6 +1637,31 @@ static void aspeed_machine_bletchley_class_init(ObjectClass *oc,
> > aspeed_machine_class_init_cpus_defaults(mc);
> > }
> > +#define GB200NVL_BMC_RAM_SIZE ASPEED_RAM_SIZE(1 * GiB)
> > +
> > +static void aspeed_machine_gb200nvl_class_init(ObjectClass *oc,
> > + const void *data)
> > +{
> > + MachineClass *mc = MACHINE_CLASS(oc);
> > + AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
> > +
> > + mc->desc = "Nvidia GB200NVL BMC (Cortex-A7)";
> > + amc->soc_name = "ast2600-a3";
> > + amc->hw_strap1 = GB200NVL_BMC_HW_STRAP1;
> > + amc->hw_strap2 = GB200NVL_BMC_HW_STRAP2;
> > + amc->fmc_model = "mx66u51235f";
> > + amc->spi_model = "mx66u51235f";
> > + amc->num_cs = 2;
> > +
> > + amc->spi2_model = "mx66u51235f";
> > + amc->num_cs2 = 1;
> > + amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON;
> > + amc->i2c_init = gb200nvl_bmc_i2c_init;
> > + mc->default_ram_size = GB200NVL_BMC_RAM_SIZE;
> > + aspeed_machine_class_init_cpus_defaults(mc);
> > + aspeed_machine_ast2600_class_emmc_init(oc);
> > +}
> > +
> > static void fby35_reset(MachineState *state, ResetType type)
> > {
> > AspeedMachineState *bmc = ASPEED_MACHINE(state);
> > @@ -1879,6 +1954,10 @@ static const TypeInfo aspeed_machine_types[] = {
> > .name = MACHINE_TYPE_NAME("bletchley-bmc"),
> > .parent = TYPE_ASPEED_MACHINE,
> > .class_init = aspeed_machine_bletchley_class_init,
> > + }, {
> > + .name = MACHINE_TYPE_NAME("gb200nvl-bmc"),
> > + .parent = TYPE_ASPEED_MACHINE,
> > + .class_init = aspeed_machine_gb200nvl_class_init,
> > }, {
> > .name = MACHINE_TYPE_NAME("fby35-bmc"),
> > .parent = MACHINE_TYPE_NAME("ast2600-evb"),
> > diff --git a/hw/arm/aspeed_eeprom.c b/hw/arm/aspeed_eeprom.c
> > index daa3d329d1..8bbbdec834 100644
> > --- a/hw/arm/aspeed_eeprom.c
> > +++ b/hw/arm/aspeed_eeprom.c
> > @@ -162,6 +162,25 @@ const uint8_t rainier_bmc_fruid[] = {
> > 0x31, 0x50, 0x46, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
> > };
> > +const uint8_t gb200nvl_bmc_fruid[] = {
> > + 0x01, 0x00, 0x00, 0x01, 0x0b, 0x00, 0x00, 0xf3, 0x01, 0x0a, 0x19, 0x1f,
> > + 0x0f, 0xe6, 0xc6, 0x4e, 0x56, 0x49, 0x44, 0x49, 0x41, 0xc5, 0x50, 0x33,
> > + 0x38, 0x30, 0x39, 0xcd, 0x31, 0x35, 0x38, 0x33, 0x33, 0x32, 0x34, 0x38,
> > + 0x30, 0x30, 0x31, 0x35, 0x30, 0xd2, 0x36, 0x39, 0x39, 0x2d, 0x31, 0x33,
> > + 0x38, 0x30, 0x39, 0x2d, 0x30, 0x34, 0x30, 0x34, 0x2d, 0x36, 0x30, 0x30,
> > + 0xc0, 0x01, 0x01, 0xd6, 0x4d, 0x41, 0x43, 0x3a, 0x20, 0x33, 0x43, 0x3a,
> > + 0x36, 0x44, 0x3a, 0x36, 0x36, 0x3a, 0x31, 0x34, 0x3a, 0x43, 0x38, 0x3a,
> > + 0x37, 0x41, 0xc1, 0x3b, 0x01, 0x09, 0x19, 0xc6, 0x4e, 0x56, 0x49, 0x44,
> > + 0x49, 0x41, 0xc9, 0x50, 0x33, 0x38, 0x30, 0x39, 0x2d, 0x42, 0x4d, 0x43,
> > + 0xd2, 0x36, 0x39, 0x39, 0x2d, 0x31, 0x33, 0x38, 0x30, 0x39, 0x2d, 0x30,
> > + 0x34, 0x30, 0x34, 0x2d, 0x36, 0x30, 0x30, 0xc4, 0x41, 0x45, 0x2e, 0x31,
> > + 0xcd, 0x31, 0x35, 0x38, 0x33, 0x33, 0x32, 0x34, 0x38, 0x30, 0x30, 0x31,
> > + 0x35, 0x30, 0xc0, 0xc4, 0x76, 0x30, 0x2e, 0x31, 0xc1, 0x00, 0x00, 0x00,
> > + 0x00, 0x00, 0x00, 0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
> > + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
> > +
> > +};
> > +
> > const size_t tiogapass_bmc_fruid_len = sizeof(tiogapass_bmc_fruid);
> > const size_t fby35_nic_fruid_len = sizeof(fby35_nic_fruid);
> > const size_t fby35_bb_fruid_len = sizeof(fby35_bb_fruid);
> > @@ -169,3 +188,5 @@ const size_t fby35_bmc_fruid_len = sizeof(fby35_bmc_fruid);
> > const size_t yosemitev2_bmc_fruid_len = sizeof(yosemitev2_bmc_fruid);
> > const size_t rainier_bb_fruid_len = sizeof(rainier_bb_fruid);
> > const size_t rainier_bmc_fruid_len = sizeof(rainier_bmc_fruid);
> > +const size_t gb200nvl_bmc_fruid_len = sizeof(gb200nvl_bmc_fruid);
> > +
> > diff --git a/hw/arm/aspeed_eeprom.h b/hw/arm/aspeed_eeprom.h
> > index f08c16ef50..3ed9bc1d9a 100644
> > --- a/hw/arm/aspeed_eeprom.h
> > +++ b/hw/arm/aspeed_eeprom.h
> > @@ -26,4 +26,7 @@ extern const size_t rainier_bb_fruid_len;
> > extern const uint8_t rainier_bmc_fruid[];
> > extern const size_t rainier_bmc_fruid_len;
> > +extern const uint8_t gb200nvl_bmc_fruid[];
> > +extern const size_t gb200nvl_bmc_fruid_len;
> > +
> > #endif
>
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2025-07-02 22:05 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-01 20:33 [PATCH 0/4] Add support for gb200-bmc machine Ed Tanous
2025-07-01 20:33 ` [PATCH 1/4] hw/arm: Add PCA9554 to ARM target Ed Tanous
2025-07-02 6:47 ` Cédric Le Goater
2025-07-02 7:04 ` Philippe Mathieu-Daudé
2025-07-02 19:20 ` etanous via
2025-07-02 21:21 ` Cédric Le Goater
2025-07-02 19:18 ` etanous via
2025-07-01 20:33 ` [PATCH 2/4] hw/arm/aspeed: Add second SPI chip to Aspeed model Ed Tanous
2025-07-02 7:00 ` Cédric Le Goater
2025-07-02 19:27 ` etanous via
2025-07-02 21:23 ` Cédric Le Goater
2025-07-02 21:32 ` Cédric Le Goater
2025-07-01 20:33 ` [PATCH 3/4] docs: add support for gb200-bmc Ed Tanous
2025-07-02 6:49 ` Cédric Le Goater
2025-07-01 20:34 ` [PATCH 4/4] hw/arm/aspeed: Add GB200 BMC target Ed Tanous
2025-07-02 21:38 ` Cédric Le Goater
2025-07-02 22:04 ` Ed Tanous via
2025-07-02 7:00 ` [PATCH 0/4] Add support for gb200-bmc machine Cédric Le Goater
2025-07-02 19:31 ` etanous via
2025-07-02 21:25 ` Cédric Le Goater
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).