-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'pull-aspeed-20240201' of https://github.com/legoater/qemu …
…into staging aspeed queue: * Update of buildroot images to 2023.11 (6.6.3 kernel) * Check of the valid CPU type supported by aspeed machines * Simplified models for the IBM's FSI bus and the Aspeed controller bridge # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmW7Sa8ACgkQUaNDx8/7 # 7KG7mw/8DbMJY6aqgq5YANszzem1ktJphPCNxq081cbczCOUpCNX4aL+0/ANvxxD # lbJQB+SZeIRmuFbxYPhq68rtzB4vG7tsQpns4H33EPKT4vuzF70lq4fgptMiun3q # 1ZJ2LF3jonvQWdhbC17wzAQz0FFb4F7XOxz++UL4okPsgzsYItnd+TWs8q7+erRb # 84UwN+eBTBAl/FiNk679/tBTqAfCVGgQ7dzotr4f3tg5POvrGOrlEjAn0O+dGGDj # wgILmpEBsTsilRB1tz8Kw0j/v/VkHz1DJu45lRAV9CIrN22iKcjMilNGgNDT8kcI # yAlxAw3iN+hVFqDov8wFPjDYd/Qw2oRAPy2Kd14hW9xL8zBOTms1JK5L0PS2+Feo # ZjMJ2cOJq3t4Wt1ZXRhgHfF4ANwP0OZ/y9bHCy3CkBljEeiTQbikHP9gVV4qHXZH # 4Q0HnDZQwAgobw3CmZ8jVx1dQueqy3ycuvkhCyv3S0l/tdbtXDtr5pNNu3dAP/PJ # 3nifLdRImhDvxxO9GKaCdUVLzELzMJl0GrgAsVJPKVnKHA4IiVKmB+XcW9IUbfy/ # 3zA2wHJLrEF+MF6MsuNcEYCCqUvyNLm7rUrXk1wNLXpCJ35bbW5IYy7Ty/8E2GHb # D5Cv/EPNhMBiNA4+HqQlMOTC13Ozv2qwCuWYCh2Ik8mnzaEiyTo= # =0C5S # -----END PGP SIGNATURE----- # gpg: Signature made Thu 01 Feb 2024 07:35:11 GMT # gpg: using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1 # gpg: Good signature from "Cédric Le Goater <clg@kaod.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: A0F6 6548 F048 95EB FE6B 0B60 51A3 43C7 CFFB ECA1 * tag 'pull-aspeed-20240201' of https://github.com/legoater/qemu: hw/fsi: Update MAINTAINER list hw/fsi: Added FSI documentation hw/fsi: Added qtest hw/arm: Hook up FSI module in AST2600 hw/fsi: Aspeed APB2OPB & On-chip peripheral bus hw/fsi: Introduce IBM's FSI master hw/fsi: Introduce IBM's cfam hw/fsi: Introduce IBM's fsi-slave model hw/fsi: Introduce IBM's FSI Bus hw/fsi: Introduce IBM's scratchpad device hw/fsi: Introduce IBM's Local bus hw/arm/aspeed: Check for CPU types in machine_run_board_init() hw/arm/aspeed: Introduce aspeed_soc_cpu_type() helper hw/arm/aspeed: Init CPU defaults in a common helper hw/arm/aspeed: Set default CPU count using aspeed_soc_num_cpus() hw/arm/aspeed: Remove dead code tests/avocado/machine_aspeed.py: Update buildroot images to 2023.11 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
- Loading branch information
Showing
30 changed files
with
1,578 additions
and
58 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
====================================== | ||
IBM's Flexible Service Interface (FSI) | ||
====================================== | ||
|
||
The QEMU FSI emulation implements hardware interfaces between ASPEED SOC, FSI | ||
master/slave and the end engine. | ||
|
||
FSI is a point-to-point two wire interface which is capable of supporting | ||
distances of up to 4 meters. FSI interfaces have been used successfully for | ||
many years in IBM servers to attach IBM Flexible Support Processors(FSP) to | ||
CPUs and IBM ASICs. | ||
|
||
FSI allows a service processor access to the internal buses of a host POWER | ||
processor to perform configuration or debugging. FSI has long existed in POWER | ||
processes and so comes with some baggage, including how it has been integrated | ||
into the ASPEED SoC. | ||
|
||
Working backwards from the POWER processor, the fundamental pieces of interest | ||
for the implementation are: (see the `FSI specification`_ for more details) | ||
|
||
1. The Common FRU Access Macro (CFAM), an address space containing various | ||
"engines" that drive accesses on buses internal and external to the POWER | ||
chip. Examples include the SBEFIFO and I2C masters. The engines hang off of | ||
an internal Local Bus (LBUS) which is described by the CFAM configuration | ||
block. | ||
|
||
2. The FSI slave: The slave is the terminal point of the FSI bus for FSI | ||
symbols addressed to it. Slaves can be cascaded off of one another. The | ||
slave's configuration registers appear in address space of the CFAM to | ||
which it is attached. | ||
|
||
3. The FSI master: A controller in the platform service processor (e.g. BMC) | ||
driving CFAM engine accesses into the POWER chip. At the hardware level | ||
FSI is a bit-based protocol supporting synchronous and DMA-driven accesses | ||
of engines in a CFAM. | ||
|
||
4. The On-Chip Peripheral Bus (OPB): A low-speed bus typically found in POWER | ||
processors. This now makes an appearance in the ASPEED SoC due to tight | ||
integration of the FSI master IP with the OPB, mainly the existence of an | ||
MMIO-mapping of the CFAM address straight onto a sub-region of the OPB | ||
address space. | ||
|
||
5. An APB-to-OPB bridge enabling access to the OPB from the ARM core in the | ||
AST2600. Hardware limitations prevent the OPB from being directly mapped | ||
into APB, so all accesses are indirect through the bridge. | ||
|
||
The LBUS is modelled to maintain the qdev bus hierarchy and to take advantages | ||
of the object model to automatically generate the CFAM configuration block. | ||
The configuration block presents engines in the order they are attached to the | ||
CFAM's LBUS. Engine implementations should subclass the LBusDevice and set the | ||
'config' member of LBusDeviceClass to match the engine's type. | ||
|
||
CFAM designs offer a lot of flexibility, for instance it is possible for a | ||
CFAM to be simultaneously driven from multiple FSI links. The modeling is not | ||
so complete; it's assumed that each CFAM is attached to a single FSI slave (as | ||
a consequence the CFAM subclasses the FSI slave). | ||
|
||
As for FSI, its symbols and wire-protocol are not modelled at all. This is not | ||
necessary to get FSI off the ground thanks to the mapping of the CFAM address | ||
space onto the OPB address space - the models follow this directly and map the | ||
CFAM memory region into the OPB's memory region. | ||
|
||
The following commands start the ``rainier-bmc`` machine with built-in FSI | ||
model. There are no model specific arguments. Please check this document to | ||
learn more about Aspeed ``rainier-bmc`` machine: (:doc:`../../system/arm/aspeed`) | ||
|
||
.. code-block:: console | ||
qemu-system-arm -M rainier-bmc -nographic \ | ||
-kernel fitImage-linux.bin \ | ||
-dtb aspeed-bmc-ibm-rainier.dtb \ | ||
-initrd obmc-phosphor-initramfs.rootfs.cpio.xz \ | ||
-drive file=obmc-phosphor-image.rootfs.wic.qcow2,if=sd,index=2 \ | ||
-append "rootwait console=ttyS4,115200n8 root=PARTLABEL=rofs-a" | ||
The implementation appears as following in the qemu device tree: | ||
|
||
.. code-block:: console | ||
(qemu) info qtree | ||
bus: main-system-bus | ||
type System | ||
... | ||
dev: aspeed.apb2opb, id "" | ||
gpio-out "sysbus-irq" 1 | ||
mmio 000000001e79b000/0000000000001000 | ||
bus: opb.1 | ||
type opb | ||
dev: fsi.master, id "" | ||
bus: fsi.bus.1 | ||
type fsi.bus | ||
dev: cfam.config, id "" | ||
dev: cfam, id "" | ||
bus: lbus.1 | ||
type lbus | ||
dev: scratchpad, id "" | ||
address = 0 (0x0) | ||
bus: opb.0 | ||
type opb | ||
dev: fsi.master, id "" | ||
bus: fsi.bus.0 | ||
type fsi.bus | ||
dev: cfam.config, id "" | ||
dev: cfam, id "" | ||
bus: lbus.0 | ||
type lbus | ||
dev: scratchpad, id "" | ||
address = 0 (0x0) | ||
pdbg is a simple application to allow debugging of the host POWER processors | ||
from the BMC. (see the `pdbg source repository`_ for more details) | ||
|
||
.. code-block:: console | ||
root@p10bmc:~# pdbg -a getcfam 0x0 | ||
p0: 0x0 = 0xc0022d15 | ||
.. _FSI specification: | ||
https://openpowerfoundation.org/specifications/fsi/ | ||
|
||
.. _pdbg source repository: | ||
https://github.com/open-power/pdbg |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.