aboutsummaryrefslogtreecommitdiffstats
path: root/xen/drivers/char
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2012-09-11 16:01:15 +0200
committerJan Beulich <jbeulich@suse.com>2012-09-11 16:01:15 +0200
commite46ea4d44dc0929d9e15dcde5c13b569278970d2 (patch)
tree6992a7be13ec2c6a58fe7c2e7e9d6b5f17bc0e58 /xen/drivers/char
parent510cbdf5edecc3a4898c87b02de9e4f3e9360eda (diff)
downloadxen-e46ea4d44dc0929d9e15dcde5c13b569278970d2.tar.gz
xen-e46ea4d44dc0929d9e15dcde5c13b569278970d2.tar.bz2
xen-e46ea4d44dc0929d9e15dcde5c13b569278970d2.zip
PCI: don't allow guest assignment of devices used by Xen
This covers the devices used for the console and the AMD IOMMU ones (as would be any others that might get passed to pci_ro_device()). Boot video device determination cloned from similar Linux logic. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/drivers/char')
-rw-r--r--xen/drivers/char/ehci-dbgp.c2
-rw-r--r--xen/drivers/char/ns16550.c4
2 files changed, 6 insertions, 0 deletions
diff --git a/xen/drivers/char/ehci-dbgp.c b/xen/drivers/char/ehci-dbgp.c
index 47b8405d30..6b7066081d 100644
--- a/xen/drivers/char/ehci-dbgp.c
+++ b/xen/drivers/char/ehci-dbgp.c
@@ -1364,6 +1364,8 @@ static void __init ehci_dbgp_init_postirq(struct serial_port *port)
init_timer(&dbgp->timer, ehci_dbgp_poll, port, 0);
ehci_dbgp_setup_postirq(dbgp);
+
+ pci_hide_device(dbgp->bus, PCI_DEVFN(dbgp->slot, dbgp->func));
}
static int ehci_dbgp_check_release(struct ehci_dbgp *dbgp)
diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c
index 2eb7f6cff7..c7c5b7cc03 100644
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -334,6 +334,10 @@ static void __init ns16550_init_postirq(struct serial_port *port)
}
ns16550_setup_postirq(uart);
+
+ if ( uart->bar || uart->ps_bdf_enable )
+ pci_hide_device(uart->ps_bdf[0], PCI_DEVFN(uart->ps_bdf[1],
+ uart->ps_bdf[2]));
}
static void ns16550_suspend(struct serial_port *port)