diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2012-02-12 14:12:21 +0200 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2012-03-16 00:41:15 +0200 |
commit | 1dc324d20f7404fd6a416f16c2cb9a4ec50a4dd7 (patch) | |
tree | 0b9d9ae9c1786fe53041c4035167556546ad4def /hw/pci.h | |
parent | 8a3d80faf7794820da5e9666e4adf6a7d4f80f7b (diff) | |
download | qemu-1dc324d20f7404fd6a416f16c2cb9a4ec50a4dd7.tar.gz qemu-1dc324d20f7404fd6a416f16c2cb9a4ec50a4dd7.tar.bz2 qemu-1dc324d20f7404fd6a416f16c2cb9a4ec50a4dd7.zip |
shpc: standard hot plug controller
This adds support for SHPC interface, as defined by PCI Standard
Hot-Plug Controller and Subsystem Specification, Rev 1.0
http://www.pcisig.com/specifications/conventional/pci_hot_plug/SHPC_10
Only SHPC intergrated with a PCI-to-PCI bridge is supported,
SHPC integrated with a host bridge would need more work.
All main SHPC features are supported:
- MRL sensor
- Attention button
- Attention indicator
- Power indicator
Wake on hotplug and serr generation are stubbed out but unused
as we don't have interfaces to generate these events ATM.
One issue that isn't completely resolved is that qemu currently
expects an "eject" interface, which SHPC does not provide: it merely
removes the power to device and it's up to the user to remove the device
from slot. This patch works around that by ejecting the device
when power is removed and power LED goes off.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/pci.h')
-rw-r--r-- | hw/pci.h | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -126,6 +126,9 @@ enum { /* command register SERR bit enabled */ #define QEMU_PCI_CAP_SERR_BITNR 4 QEMU_PCI_CAP_SERR = (1 << QEMU_PCI_CAP_SERR_BITNR), + /* Standard hot plug controller. */ +#define QEMU_PCI_SHPC_BITNR 5 + QEMU_PCI_CAP_SHPC = (1 << QEMU_PCI_SHPC_BITNR), }; #define TYPE_PCI_DEVICE "pci-device" @@ -230,6 +233,9 @@ struct PCIDevice { /* PCI Express */ PCIExpressDevice exp; + /* SHPC */ + SHPCDevice *shpc; + /* Location of option rom */ char *romfile; bool has_rom; |