QEMU and CI
Bills, Jason M
jason.m.bills at linux.intel.com
Wed Apr 10 09:51:31 AEST 2019
>> You can boot your wolf pass image in the current qemu. To demonstrate
>> I grabbed a tiogapass flash image from CI and booted it:
>>
>> $ arm-softmmu/qemu-system-arm -M ast2500-evb -drive
>> file=flash-tiogapass,format=raw,if=mtd -serial mon:stdio -nographic
>> ...
>> root at tiogapass:~# cat /etc/os-release
>> ID="openbmc-phosphor"
>> NAME="Phosphor OpenBMC (Phosphor OpenBMC Project Reference Distro)"
>> VERSION="2.7.0-dev"
>> VERSION_ID="2.7.0-dev-347-gd631110d4"
>> PRETTY_NAME="Phosphor OpenBMC (Phosphor OpenBMC Project Reference
>> Distro) 2.7.0-dev"
>> BUILD_ID="2.7.0-dev"
>> OPENBMC_TARGET_MACHINE="tiogapass"
>>
>> As Andrew said, your next step would be to add a wolfpass machine type
>> to upstream qemu. Take a look at the aspeed_boards array in
>> hw/arm/aspeed.c.
>
> Yes. it should be relatively easy to add the machine.
Thanks! I was able to get an initial s2600wf machine booted from one of
my own builds.
One issue I have on my machine, that I don't see with witherspoon-bmc,
is something in U-Boot that is preventing it from booting automatically.
When I start my image, it stops at the U-Boot prompt below where I can
just run 'boot' and it will boot normally. Is this something you have
seen before?
qemu-system-arm: Aspeed iBT has no chardev backend
U-Boot 2016.07 (Apr 04 2019 - 23:46:17 +0000)
SOC : AST2500-A1
RST : 0x01
PLL : 24 MHz
CPU : 792 MHz
MEM : 2.240 MHz, EEC: Disable, Cache: Disable
VGA : 16 MiB
DRAM : init by SOC
Watchdog enabled
DRAM: 240 MiB
kcs_init Channel: 3
Flash: 64 MiB
In: serial
Out: serial
Err: serial
Net: MAC0 : RMII/NCSI
MAC1 : RGMII
FTGMAC100#0
Error: FTGMAC100#0 address not set.
, FTGMAC100#1
Error: FTGMAC100#1 address not set.
ast#
>
>> From there the next step is to add the peripherals that your machine
>> has. This will involve writing models for the i2c devices you have
>> attached, and perhaps emulators for host connected devices (PECI?).
>> This could be more involved so please use the list to discuss your
>> plans.
>
> Yes please. It would be nice to have better support for I2C devices
> and work on a simple interface (QMP based) to interact with them, so
> that we can exercise the monitoring done by OpenBMC. PSU devices are
> a good topic for that.
I added some i2c temp sensor devices from the existing models. They were
detected and loaded properly by entity-manager, but the readings were
all zeroes. This is all new for me, so I assume I'm missing something.
I still need to go through the existing QEMU tests on OpenBMC and see
what is done there.
>
>> There are also a large number of peripherals inside the ASPEED SoC
>> that lack models. Let us know on the list if you think you will start
>> working on one so we don't duplicate efforts.
>>
>> Submit your patches against the upstream qemu tree. Andrew, Cedric and
>> I are the upstream maintainers so we will be on cc there.
>
> We are keeping the models in development under in this tree :
>
> https://github.com/openbmc/qemu
>
> Some have been there a bit too long because we lacked time to make
> them ready but please prefer mainline. We rebase quite often anyhow.
> I should push today a new version on 4.0-rc3.
>
> Check out this page before sending :
>
> https://wiki.qemu.org/Contribute/SubmitAPatch
>
Thanks for the help! Here is what I have for my s2600wf machine so far:
Subject: [PATCH] Add an s2600wf machine type
Include the HW strap setting and some I2C temperature sensors.
Signed-off-by: Jason M. Bills <jason.m.bills at linux.intel.com>
---
hw/arm/aspeed.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index 465e65f323..c9d9c23995 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -60,6 +60,21 @@ struct AspeedBoardState {
SCU_HW_STRAP_MAC0_RGMII) & \
~SCU_HW_STRAP_2ND_BOOT_WDT)
+/* S2600WF hardware value: 0xF3CCC286 */
+#define S2600WF_BMC_HW_STRAP1 (( \
+ AST2500_HW_STRAP1_DEFAULTS | \
+ SCU_AST2500_HW_STRAP_SPI_AUTOFETCH_ENABLE | \
+ SCU_AST2500_HW_STRAP_GPIO_STRAP_ENABLE | \
+ SCU_AST2500_HW_STRAP_UART_DEBUG | \
+ SCU_AST2500_HW_STRAP_ESPI_ENABLE | \
+ SCU_AST2500_HW_STRAP_DDR4_ENABLE | \
+ SCU_HW_STRAP_GPIOE_PT_EN | \
+ SCU_AST2400_HW_STRAP_ACPI_DIS | \
+ SCU_HW_STRAP_CLK_48M_IN | \
+ SCU_HW_STRAP_VGA_CLASS_CODE | \
+ SCU_HW_STRAP_MAC1_RGMII) & \
+ ~SCU_HW_STRAP_2ND_BOOT_WDT)
+
/* Romulus hardware value: 0xF10AD206 */
#define ROMULUS_BMC_HW_STRAP1 ( \
AST2500_HW_STRAP1_DEFAULTS | \
@@ -281,6 +296,18 @@ static void ast2500_evb_i2c_init(AspeedBoardState *bmc)
i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 11),
"ds1338", 0x32);
}
+static void s2600wf_bmc_i2c_init(AspeedBoardState *bmc)
+{
+ AspeedSoCState *soc = &bmc->soc;
+
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6),
"tmp421", 0x4d);
+ /* The s2600wf expects a TMP75 but a TMP105 is compatible */
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6),
"tmp105", 0x48);
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6),
"tmp105", 0x49);
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6),
"tmp105", 0x4a);
+ i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6),
"tmp105", 0x4b);
+}
+
static void romulus_bmc_i2c_init(AspeedBoardState *bmc)
{
AspeedSoCState *soc = &bmc->soc;
@@ -390,6 +417,15 @@ static const AspeedBoardConfig aspeed_boards[] = {
.spi_model = "mx25l25635e",
.num_cs = 1,
.i2c_init = ast2500_evb_i2c_init,
+ }, {
+ .name = MACHINE_TYPE_NAME("s2600wf-bmc"),
+ .desc = "Intel S2600WF BMC (ARM1176)",
+ .soc_name = "ast2500-a1",
+ .hw_strap1 = S2600WF_BMC_HW_STRAP1,
+ .fmc_model = "n25q512a",
+ .spi_model = "n25q512a",
+ .num_cs = 1,
+ .i2c_init = s2600wf_bmc_i2c_init,
}, {
.name = MACHINE_TYPE_NAME("romulus-bmc"),
.desc = "OpenPOWER Romulus BMC (ARM1176)",
--
2.17.1
-Jason
More information about the openbmc
mailing list