docs/system: Extend PPC section
This moves the current documentation in files specific to each platform family. PowerNV machine is updated, the other machines need to be done. Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20210222133956.156001-1-clg@kaod.org> Reviewed-by: Greg Kurz <groug@kaod.org> [dwg: Trivial capitalization fix] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
a03509cd2b
commit
a4ee352fe0
10
docs/system/ppc/embedded.rst
Normal file
10
docs/system/ppc/embedded.rst
Normal file
@ -0,0 +1,10 @@
|
||||
Embedded family boards
|
||||
======================
|
||||
|
||||
- ``bamboo`` bamboo
|
||||
- ``mpc8544ds`` mpc8544ds
|
||||
- ``ppce500`` generic paravirt e500 platform
|
||||
- ``ref405ep`` ref405ep
|
||||
- ``sam460ex`` aCube Sam460ex
|
||||
- ``taihu`` taihu
|
||||
- ``virtex-ml507`` Xilinx Virtex ML507 reference design
|
34
docs/system/ppc/powermac.rst
Normal file
34
docs/system/ppc/powermac.rst
Normal file
@ -0,0 +1,34 @@
|
||||
PowerMac family boards (``g3beige``, ``mac99``)
|
||||
==================================================================
|
||||
|
||||
Use the executable ``qemu-system-ppc`` to simulate a complete PowerMac
|
||||
PowerPC system.
|
||||
|
||||
- ``g3beige`` Heathrow based PowerMAC
|
||||
- ``mac99`` Mac99 based PowerMAC
|
||||
|
||||
Supported devices
|
||||
-----------------
|
||||
|
||||
QEMU emulates the following PowerMac peripherals:
|
||||
|
||||
* UniNorth or Grackle PCI Bridge
|
||||
* PCI VGA compatible card with VESA Bochs Extensions
|
||||
* 2 PMAC IDE interfaces with hard disk and CD-ROM support
|
||||
* NE2000 PCI adapters
|
||||
* Non Volatile RAM
|
||||
* VIA-CUDA with ADB keyboard and mouse.
|
||||
|
||||
|
||||
Missing devices
|
||||
---------------
|
||||
|
||||
* To be identified
|
||||
|
||||
Firmware
|
||||
--------
|
||||
|
||||
Since version 0.9.1, QEMU uses OpenBIOS https://www.openbios.org/ for
|
||||
the g3beige and mac99 PowerMac and the 40p machines. OpenBIOS is a free
|
||||
(GPL v2) portable firmware implementation. The goal is to implement a
|
||||
100% IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
|
193
docs/system/ppc/powernv.rst
Normal file
193
docs/system/ppc/powernv.rst
Normal file
@ -0,0 +1,193 @@
|
||||
PowerNV family boards (``powernv8``, ``powernv9``)
|
||||
==================================================================
|
||||
|
||||
PowerNV (as Non-Virtualized) is the "baremetal" platform using the
|
||||
OPAL firmware. It runs Linux on IBM and OpenPOWER systems and it can
|
||||
be used as an hypervisor OS, running KVM guests, or simply as a host
|
||||
OS.
|
||||
|
||||
The PowerNV QEMU machine tries to emulate a PowerNV system at the
|
||||
level of the skiboot firmware, which loads the OS and provides some
|
||||
runtime services. Power Systems have a lower firmware (HostBoot) that
|
||||
does low level system initialization, like DRAM training. This is
|
||||
beyond the scope of what QEMU addresses today.
|
||||
|
||||
Supported devices
|
||||
-----------------
|
||||
|
||||
* Multi processor support for POWER8, POWER8NVL and POWER9.
|
||||
* XSCOM, serial communication sideband bus to configure chiplets
|
||||
* Simple LPC Controller
|
||||
* Processor Service Interface (PSI) Controller
|
||||
* Interrupt Controller, XICS (POWER8) and XIVE (POWER9)
|
||||
* POWER8 PHB3 PCIe Host bridge and POWER9 PHB4 PCIe Host bridge
|
||||
* Simple OCC is an on-chip microcontroller used for power management
|
||||
tasks
|
||||
* iBT device to handle BMC communication, with the internal BMC
|
||||
simulator provided by QEMU or an external BMC such as an Aspeed
|
||||
QEMU machine.
|
||||
* PNOR containing the different firmware partitions.
|
||||
|
||||
Missing devices
|
||||
---------------
|
||||
|
||||
A lot is missing, among which :
|
||||
|
||||
* POWER10 processor
|
||||
* XIVE2 (POWER10) interrupt controller
|
||||
* I2C controllers (yet to be merged)
|
||||
* NPU/NPU2/NPU3 controllers
|
||||
* EEH support for PCIe Host bridge controllers
|
||||
* NX controller
|
||||
* VAS controller
|
||||
* chipTOD (Time Of Day)
|
||||
* Self Boot Engine (SBE).
|
||||
* FSI bus
|
||||
|
||||
Firmware
|
||||
--------
|
||||
|
||||
The OPAL firmware (OpenPower Abstraction Layer) for OpenPower systems
|
||||
includes the runtime services `skiboot` and the bootloader kernel and
|
||||
initramfs `skiroot`. Source code can be found on GitHub:
|
||||
|
||||
https://github.com/open-power.
|
||||
|
||||
Prebuilt images of `skiboot` and `skiboot` are made available on the `OpenPOWER <https://openpower.xyz/job/openpower/job/openpower-op-build/>`__ site. To boot a POWER9 machine, use the `witherspoon <https://openpower.xyz/job/openpower/job/openpower-op-build/label=slave,target=witherspoon/lastSuccessfulBuild/>`__ images. For POWER8, use
|
||||
the `palmetto <https://openpower.xyz/job/openpower/job/openpower-op-build/label=slave,target=palmetto/lastSuccessfulBuild/>`__ images.
|
||||
|
||||
QEMU includes a prebuilt image of `skiboot` which is updated when a
|
||||
more recent version is required by the models.
|
||||
|
||||
Boot options
|
||||
------------
|
||||
|
||||
Here is a simple setup with one e1000e NIC :
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ qemu-system-ppc64 -m 2G -machine powernv9 -smp 2,cores=2,threads=1 \
|
||||
-accel tcg,thread=single \
|
||||
-device e1000e,netdev=net0,mac=C0:FF:EE:00:00:02,bus=pcie.0,addr=0x0 \
|
||||
-netdev user,id=net0,hostfwd=::20022-:22,hostname=pnv \
|
||||
-kernel ./zImage.epapr \
|
||||
-initrd ./rootfs.cpio.xz \
|
||||
-nographic
|
||||
|
||||
and a SATA disk :
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-device ich9-ahci,id=sata0,bus=pcie.1,addr=0x0 \
|
||||
-drive file=./ubuntu-ppc64le.qcow2,if=none,id=drive0,format=qcow2,cache=none \
|
||||
-device ide-hd,bus=sata0.0,unit=0,drive=drive0,id=ide,bootindex=1 \
|
||||
|
||||
Complex PCIe configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Six PHBs are defined per chip (POWER9) but no default PCI layout is
|
||||
provided (to be compatible with libvirt). One PCI device can be added
|
||||
on any of the available PCIe slots using command line options such as:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-device e1000e,netdev=net0,mac=C0:FF:EE:00:00:02,bus=pcie.0,addr=0x0
|
||||
-netdev bridge,id=net0,helper=/usr/libexec/qemu-bridge-helper,br=virbr0,id=hostnet0
|
||||
|
||||
-device megasas,id=scsi0,bus=pcie.0,addr=0x0
|
||||
-drive file=./ubuntu-ppc64le.qcow2,if=none,id=drive-scsi0-0-0-0,format=qcow2,cache=none
|
||||
-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=2
|
||||
|
||||
Here is a full example with two different storage controllers on
|
||||
different PHBs, each with a disk, the second PHB is empty :
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ qemu-system-ppc64 -m 2G -machine powernv9 -smp 2,cores=2,threads=1 -accel tcg,thread=single \
|
||||
-kernel ./zImage.epapr -initrd ./rootfs.cpio.xz -bios ./skiboot.lid \
|
||||
\
|
||||
-device megasas,id=scsi0,bus=pcie.0,addr=0x0 \
|
||||
-drive file=./rhel7-ppc64le.qcow2,if=none,id=drive-scsi0-0-0-0,format=qcow2,cache=none \
|
||||
-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=2 \
|
||||
\
|
||||
-device pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0 \
|
||||
\
|
||||
-device ich9-ahci,id=sata0,bus=bridge1,addr=0x1 \
|
||||
-drive file=./ubuntu-ppc64le.qcow2,if=none,id=drive0,format=qcow2,cache=none \
|
||||
-device ide-hd,bus=sata0.0,unit=0,drive=drive0,id=ide,bootindex=1 \
|
||||
-device e1000e,netdev=net0,mac=C0:FF:EE:00:00:02,bus=bridge1,addr=0x2 \
|
||||
-netdev bridge,helper=/usr/libexec/qemu-bridge-helper,br=virbr0,id=net0 \
|
||||
-device nec-usb-xhci,bus=bridge1,addr=0x7 \
|
||||
\
|
||||
-serial mon:stdio -nographic
|
||||
|
||||
You can also use VIRTIO devices :
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-drive file=./fedora-ppc64le.qcow2,if=none,snapshot=on,id=drive0 \
|
||||
-device virtio-blk-pci,drive=drive0,id=blk0,bus=pcie.0 \
|
||||
\
|
||||
-netdev tap,helper=/usr/lib/qemu/qemu-bridge-helper,br=virbr0,id=netdev0 \
|
||||
-device virtio-net-pci,netdev=netdev0,id=net0,bus=pcie.1 \
|
||||
\
|
||||
-fsdev local,id=fsdev0,path=$HOME,security_model=passthrough \
|
||||
-device virtio-9p-pci,fsdev=fsdev0,mount_tag=host,bus=pcie.2
|
||||
|
||||
Multi sockets
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
The number of sockets is deduced from the number of CPUs and the
|
||||
number of cores. ``-smp 2,cores=1`` will define a machine with 2
|
||||
sockets of 1 core, whereas ``-smp 2,cores=2`` will define a machine
|
||||
with 1 socket of 2 cores. ``-smp 8,cores=2``, 4 sockets of 2 cores.
|
||||
|
||||
BMC configuration
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
OpenPOWER systems negotiate the shutdown and reboot with their
|
||||
BMC. The QEMU PowerNV machine embeds an IPMI BMC simulator using the
|
||||
iBT interface and should offer the same power features.
|
||||
|
||||
If you want to define your own BMC, use ``-nodefaults`` and specify
|
||||
one on the command line :
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-device ipmi-bmc-sim,id=bmc0 -device isa-ipmi-bt,bmc=bmc0,irq=10
|
||||
|
||||
The files `palmetto-SDR.bin <http://www.kaod.org/qemu/powernv/palmetto-SDR.bin>`__
|
||||
and `palmetto-FRU.bin <http://www.kaod.org/qemu/powernv/palmetto-FRU.bin>`__
|
||||
define a Sensor Data Record repository and a Field Replaceable Unit
|
||||
inventory for a palmetto BMC. They can be used to extend the QEMU BMC
|
||||
simulator.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-device ipmi-bmc-sim,sdrfile=./palmetto-SDR.bin,fruareasize=256,frudatafile=./palmetto-FRU.bin,id=bmc0 \
|
||||
-device isa-ipmi-bt,bmc=bmc0,irq=10
|
||||
|
||||
The PowerNV machine can also be run with an external IPMI BMC device
|
||||
connected to a remote QEMU machine acting as BMC, using these options
|
||||
:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-chardev socket,id=ipmi0,host=localhost,port=9002,reconnect=10 \
|
||||
-device ipmi-bmc-extern,id=bmc0,chardev=ipmi0 \
|
||||
-device isa-ipmi-bt,bmc=bmc0,irq=10 \
|
||||
-nodefaults
|
||||
|
||||
NVRAM
|
||||
~~~~~
|
||||
|
||||
Use a MTD drive to add a PNOR to the machine, and get a NVRAM :
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-drive file=./witherspoon.pnor,format=raw,if=mtd
|
||||
|
||||
CAVEATS
|
||||
-------
|
||||
|
||||
* No support for multiple HW threads (SMT=1). Same as pseries.
|
||||
* CPU can hang when doing intensive I/Os. Use ``-append powersave=off`` in that case.
|
18
docs/system/ppc/prep.rst
Normal file
18
docs/system/ppc/prep.rst
Normal file
@ -0,0 +1,18 @@
|
||||
Prep machine (``40p``)
|
||||
==================================================================
|
||||
|
||||
Use the executable ``qemu-system-ppc`` to simulate a complete 40P (PREP)
|
||||
|
||||
Supported devices
|
||||
-----------------
|
||||
|
||||
QEMU emulates the following 40P (PREP) peripherals:
|
||||
|
||||
* PCI Bridge
|
||||
* PCI VGA compatible card with VESA Bochs Extensions
|
||||
* 2 IDE interfaces with hard disk and CD-ROM support
|
||||
* Floppy disk
|
||||
* PCnet network adapters
|
||||
* Serial port
|
||||
* PREP Non Volatile RAM
|
||||
* PC compatible keyboard and mouse.
|
12
docs/system/ppc/pseries.rst
Normal file
12
docs/system/ppc/pseries.rst
Normal file
@ -0,0 +1,12 @@
|
||||
pSeries family boards (``pseries``)
|
||||
===================================
|
||||
|
||||
Supported devices
|
||||
-----------------
|
||||
|
||||
Missing devices
|
||||
---------------
|
||||
|
||||
|
||||
Firmware
|
||||
--------
|
@ -3,45 +3,22 @@
|
||||
PowerPC System emulator
|
||||
-----------------------
|
||||
|
||||
Use the executable ``qemu-system-ppc`` to simulate a complete 40P (PREP)
|
||||
or PowerMac PowerPC system.
|
||||
Board-specific documentation
|
||||
============================
|
||||
|
||||
QEMU emulates the following PowerMac peripherals:
|
||||
You can get a complete list by running ``qemu-system-ppc64 --machine
|
||||
help``.
|
||||
|
||||
- UniNorth or Grackle PCI Bridge
|
||||
..
|
||||
This table of contents should be kept sorted alphabetically
|
||||
by the title text of each file, which isn't the same ordering
|
||||
as an alphabetical sort by filename.
|
||||
|
||||
- PCI VGA compatible card with VESA Bochs Extensions
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
- 2 PMAC IDE interfaces with hard disk and CD-ROM support
|
||||
|
||||
- NE2000 PCI adapters
|
||||
|
||||
- Non Volatile RAM
|
||||
|
||||
- VIA-CUDA with ADB keyboard and mouse.
|
||||
|
||||
QEMU emulates the following 40P (PREP) peripherals:
|
||||
|
||||
- PCI Bridge
|
||||
|
||||
- PCI VGA compatible card with VESA Bochs Extensions
|
||||
|
||||
- 2 IDE interfaces with hard disk and CD-ROM support
|
||||
|
||||
- Floppy disk
|
||||
|
||||
- PCnet network adapters
|
||||
|
||||
- Serial port
|
||||
|
||||
- PREP Non Volatile RAM
|
||||
|
||||
- PC compatible keyboard and mouse.
|
||||
|
||||
Since version 0.9.1, QEMU uses OpenBIOS https://www.openbios.org/ for
|
||||
the g3beige and mac99 PowerMac and the 40p machines. OpenBIOS is a free
|
||||
(GPL v2) portable firmware implementation. The goal is to implement a
|
||||
100% IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
|
||||
|
||||
More information is available at
|
||||
http://perso.magic.fr/l_indien/qemu-ppc/.
|
||||
ppc/embedded
|
||||
ppc/powermac
|
||||
ppc/powernv
|
||||
ppc/prep
|
||||
ppc/pseries
|
||||
|
Loading…
Reference in New Issue
Block a user