add pci-bridge-seat
Simplifies multiseat configuration, see docs/multiseat.txt update for details. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
72d97b3a54
commit
eb6c6a6048
|
@ -106,6 +106,25 @@ the devices attached to the seat.
|
||||||
Background info is here:
|
Background info is here:
|
||||||
http://www.freedesktop.org/wiki/Software/systemd/multiseat/
|
http://www.freedesktop.org/wiki/Software/systemd/multiseat/
|
||||||
|
|
||||||
|
|
||||||
|
guest side with pci-bridge-seat
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Qemu version FIXME and newer has a new pci-bridge-seat device which
|
||||||
|
can be used instead of pci-bridge. Just swap the device name in the
|
||||||
|
qemu command line above. The only difference between the two devices
|
||||||
|
is the pci id. We can match the pci id instead of the device path
|
||||||
|
with a nice generic rule now, which simplifies the guest
|
||||||
|
configuration:
|
||||||
|
|
||||||
|
[root@fedora ~]# cat /etc/udev/rules.d/70-qemu-pci-bridge-seat.rules
|
||||||
|
SUBSYSTEM=="pci", ATTR{vendor}=="0x1b36", ATTR{device}=="0x000a", \
|
||||||
|
TAG+="seat", ENV{ID_AUTOSEAT}="1"
|
||||||
|
|
||||||
|
Patch with this rule will be submitted to upstream udev/systemd, so
|
||||||
|
long-term, when systemd with this lands in distros, things will work
|
||||||
|
just fine without any manual guest configuration.
|
||||||
|
|
||||||
Enjoy!
|
Enjoy!
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
|
@ -47,6 +47,7 @@ PCI devices (other than virtio):
|
||||||
1b36:0005 PCI test device (docs/specs/pci-testdev.txt)
|
1b36:0005 PCI test device (docs/specs/pci-testdev.txt)
|
||||||
1b36:0006 PCI Rocker Ethernet switch device
|
1b36:0006 PCI Rocker Ethernet switch device
|
||||||
1b36:0007 PCI SD Card Host Controller Interface (SDHCI)
|
1b36:0007 PCI SD Card Host Controller Interface (SDHCI)
|
||||||
|
1b36:000a PCI-PCI bridge (multiseat)
|
||||||
|
|
||||||
All these devices are documented in docs/specs.
|
All these devices are documented in docs/specs.
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,8 @@
|
||||||
#include "hw/pci/pci_bus.h"
|
#include "hw/pci/pci_bus.h"
|
||||||
#include "hw/hotplug.h"
|
#include "hw/hotplug.h"
|
||||||
|
|
||||||
#define TYPE_PCI_BRIDGE_DEV "pci-bridge"
|
#define TYPE_PCI_BRIDGE_DEV "pci-bridge"
|
||||||
|
#define TYPE_PCI_BRIDGE_SEAT_DEV "pci-bridge-seat"
|
||||||
#define PCI_BRIDGE_DEV(obj) \
|
#define PCI_BRIDGE_DEV(obj) \
|
||||||
OBJECT_CHECK(PCIBridgeDev, (obj), TYPE_PCI_BRIDGE_DEV)
|
OBJECT_CHECK(PCIBridgeDev, (obj), TYPE_PCI_BRIDGE_DEV)
|
||||||
|
|
||||||
|
@ -170,9 +171,31 @@ static const TypeInfo pci_bridge_dev_info = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Multiseat bridge. Same as the standard pci bridge, only with a
|
||||||
|
* different pci id, so we can match it easily in the guest for
|
||||||
|
* automagic multiseat configuration. See docs/multiseat.txt for more.
|
||||||
|
*/
|
||||||
|
static void pci_bridge_dev_seat_class_init(ObjectClass *klass, void *data)
|
||||||
|
{
|
||||||
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||||
|
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||||
|
|
||||||
|
k->device_id = PCI_DEVICE_ID_REDHAT_BRIDGE_SEAT;
|
||||||
|
dc->desc = "Standard PCI Bridge (multiseat)";
|
||||||
|
}
|
||||||
|
|
||||||
|
static const TypeInfo pci_bridge_dev_seat_info = {
|
||||||
|
.name = TYPE_PCI_BRIDGE_SEAT_DEV,
|
||||||
|
.parent = TYPE_PCI_BRIDGE_DEV,
|
||||||
|
.instance_size = sizeof(PCIBridgeDev),
|
||||||
|
.class_init = pci_bridge_dev_seat_class_init,
|
||||||
|
};
|
||||||
|
|
||||||
static void pci_bridge_dev_register(void)
|
static void pci_bridge_dev_register(void)
|
||||||
{
|
{
|
||||||
type_register_static(&pci_bridge_dev_info);
|
type_register_static(&pci_bridge_dev_info);
|
||||||
|
type_register_static(&pci_bridge_dev_seat_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
type_init(pci_bridge_dev_register);
|
type_init(pci_bridge_dev_register);
|
||||||
|
|
|
@ -92,6 +92,7 @@
|
||||||
#define PCI_DEVICE_ID_REDHAT_SDHCI 0x0007
|
#define PCI_DEVICE_ID_REDHAT_SDHCI 0x0007
|
||||||
#define PCI_DEVICE_ID_REDHAT_PCIE_HOST 0x0008
|
#define PCI_DEVICE_ID_REDHAT_PCIE_HOST 0x0008
|
||||||
#define PCI_DEVICE_ID_REDHAT_PXB 0x0009
|
#define PCI_DEVICE_ID_REDHAT_PXB 0x0009
|
||||||
|
#define PCI_DEVICE_ID_REDHAT_BRIDGE_SEAT 0x000a
|
||||||
#define PCI_DEVICE_ID_REDHAT_QXL 0x0100
|
#define PCI_DEVICE_ID_REDHAT_QXL 0x0100
|
||||||
|
|
||||||
#define FMT_PCIBUS PRIx64
|
#define FMT_PCIBUS PRIx64
|
||||||
|
|
Loading…
Reference in New Issue