qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 00/16] Add an IPMI device to qemu


From: minyard
Subject: [Qemu-devel] [PATCH 00/16] Add an IPMI device to qemu
Date: Fri, 12 Dec 2014 13:15:35 -0600

This set of patches adds an IPMI device to qemu.  This is good for
systems that require an IPMI device to work correctly, for simulating
scenarios that require IPMI and testing software that uses IPMI, and
of course, for the Linux IPMI driver maintainer to use to reproduce
issues that could not be easily reproduced otherwise :).

For those that don't know, IPMI is a standard for doing sensor
monitoring and basic machine maintenance.  It has local interfaces
on the host system (four different types, SMIC, KCS, BT, and SSIF)
that can be in I/O space, memory space, and PCI space, and in the
case of SSIF, is on an I2C bus.  It can also have network interfaces
for out of band maintenance, though that's not directly relevant
here.  It is a message-based interface; all IPMI operations are
done by sending command messages, results come back as response
messages.

The maintenance actions are done by a small controller on the system
called a Baseboard Management Controller (BMC).  These devices are
always on when the system is plugged in, even if the system is off.

The first 9 patches add the device itself on an ISA interface.  This
adds a KCS device and a BT device (two of the four standard IPMI
interfaces).  It also adds software to have a small BMC simulated
inside of QEMU, and a way to connected to an external BMC (like
openipmi library's lanserv) over the network.  Those patches should
be pretty straightforward, though I'm still not 100% sure about
migration.

Patch 10 postpones sending the SMBIOS and ACPI tables to the firmware
until after the devices have initialized.  This lets the IPMI driver
add entries to those tables when it starts.  It might be possible to
pre-parse the IPMI parameters very early, but that seems like a lot
more work, and there's no harm in sending the tables to the firmware
later, as far as I can tell.

Patches 11 and 12 add an SMBIOS entry for the IPMI device.

Patches 13-15 are about adding ACPI tables for the IPMI device.
This adds code that can dynamically create ACPI tables, then
uses that to generate an SSDT for an IPMI device in the ISA bus
space.  I opted for this over a hard coded table because I would
need several different tables depending on configuration (I/O or
memory space, interrupt or none, PCI space, I2C space if that
gets added, IPMI device type).  Generating them on the fly is
fairly simple.

Patch 16 moves running the local BMC simulation to it's own
thread.  I'm not really sure of the value, besides a more accurate
simulation, but perhaps there is to offload the main execution of
qemu.

-corey




reply via email to

[Prev in Thread] Current Thread [Next in Thread]