From: minyard@acm.org
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 00/16] Add an IPMI device to qemu
Date: Fri, 12 Dec 2014 13:15:35 -0600 [thread overview]
Message-ID: <1418411751-3614-1-git-send-email-minyard@acm.org> (raw)
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
next reply other threads:[~2014-12-12 19:16 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-12 19:15 minyard [this message]
2014-12-12 19:15 ` [Qemu-devel] [PATCH 01/16] Add a base IPMI interface minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 02/16] ipmi: Add a PC ISA type structure minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 03/16] ipmi: Add a KCS low-level interface minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 04/16] ipmi: Add a BT " minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 05/16] ipmi: Add a local BMC simulation minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 06/16] ipmi: Add an external connection simulation interface minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 07/16] ipmi: Add tests minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 08/16] ipmi: Add documentation minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 09/16] ipmi: Add migration capability to the IPMI device minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 10/16] pc: Postpone adding ACPI and SMBIOS to fw_cfg minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 11/16] smbios: Add a function to directly add an entry minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 12/16] ipmi: Add SMBIOS table entry minyard
2015-02-19 2:53 ` Benjamin Herrenschmidt
2014-12-12 19:15 ` [Qemu-devel] [PATCH 13/16] acpi: Add a way to extend tables minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 14/16] acpi: Add table construction tools minyard
2014-12-12 19:15 ` [Qemu-devel] [PATCH 15/16] ipmi: Add ACPI table entries for BMCs minyard
2015-02-19 2:54 ` Benjamin Herrenschmidt
2015-02-20 3:16 ` Corey Minyard
2015-02-22 20:48 ` Benjamin Herrenschmidt
2014-12-12 19:15 ` [Qemu-devel] [PATCH 16/16] ipmi: Add a thread to better simulate a BMC minyard
2014-12-15 21:11 ` Paolo Bonzini
2014-12-15 21:33 ` Corey Minyard
2014-12-15 21:21 ` [Qemu-devel] [PATCH 00/16] Add an IPMI device to qemu Paolo Bonzini
-- strict thread matches above, loose matches on Subject: below --
2013-11-12 16:32 [Qemu-devel] [PATCH 00/16] Add an IPMI device to QEMU Corey Minyard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1418411751-3614-1-git-send-email-minyard@acm.org \
--to=minyard@acm.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).