ChangeSet 1.1356, 2005/03/23 18:18:19+00:00, kaf24@xxxxxxxxxxxxxxxxxxxx
Remove DOM0_IOPL_PERMISSION since it doesn't make much sense.
All admin checks go throu the bitmap mask. Even privileged domains
(inc. domain0) must have a mask.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
arch/x86/dom0_ops.c | 20 --------------------
arch/x86/traps.c | 3 ---
common/physdev.c | 21 +++++++++++----------
include/asm-x86/domain.h | 1 -
include/public/dom0_ops.h | 9 +--------
5 files changed, 12 insertions(+), 42 deletions(-)
diff -Nru a/xen/arch/x86/dom0_ops.c b/xen/arch/x86/dom0_ops.c
--- a/xen/arch/x86/dom0_ops.c 2005-03-23 14:03:10 -05:00
+++ b/xen/arch/x86/dom0_ops.c 2005-03-23 14:03:10 -05:00
@@ -136,26 +136,6 @@
}
break;
- case DOM0_IOPL_PERMISSION:
- {
- struct domain *d;
-
- ret = -EINVAL;
- if ( op->u.iopl_permission.max_iopl > 3 )
- break;
-
- ret = -ESRCH;
- if ( unlikely((d = find_domain_by_id(
- op->u.iopl_permission.domain)) == NULL) )
- break;
-
- ret = 0;
- d->arch.max_iopl = op->u.iopl_permission.max_iopl;
-
- put_domain(d);
- }
- break;
-
case DOM0_IOPORT_PERMISSION:
{
struct domain *d;
diff -Nru a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c 2005-03-23 14:03:10 -05:00
+++ b/xen/arch/x86/traps.c 2005-03-23 14:03:10 -05:00
@@ -417,9 +417,6 @@
struct domain *d = ed->domain;
u16 x;
- if ( IS_PRIV(d) || (d->arch.max_iopl >= (KERNEL_MODE(ed, regs) ? 1 : 3)) )
- return 1;
-
if ( d->arch.iobmp_mask != NULL )
{
x = *(u16 *)(d->arch.iobmp_mask + (port >> 3));
diff -Nru a/xen/common/physdev.c b/xen/common/physdev.c
--- a/xen/common/physdev.c 2005-03-23 14:03:10 -05:00
+++ b/xen/common/physdev.c 2005-03-23 14:03:10 -05:00
@@ -744,13 +744,17 @@
/* Domain 0 has read access to all devices. */
-void physdev_init_dom0(struct domain *p)
+void physdev_init_dom0(struct domain *d)
{
struct pci_dev *dev;
phys_dev_t *pdev;
- INFO("Give DOM0 read access to all PCI devices\n");
+ /* Access to all I/O ports. */
+ d->arch.iobmp_mask = xmalloc_array(u8, IOBMP_BYTES);
+ BUG_ON(d->arch.iobmp_mask == NULL);
+ memset(d->arch.iobmp_mask, 0, IOBMP_BYTES);
+ /* Access to all PCI devices. */
pci_for_each_dev(dev)
{
if ( pcidev_dom0_hidden(dev) )
@@ -759,20 +763,17 @@
continue;
}
-
- if ( (pdev = xmalloc(phys_dev_t)) == NULL ) {
- INFO("failed to allocate physical device structure!\n");
- break;
- }
+ pdev = xmalloc(phys_dev_t);
+ BUG_ON(pdev == NULL);
pdev->dev = dev;
pdev->flags = ACC_WRITE;
pdev->state = 0;
- pdev->owner = p;
- list_add(&pdev->node, &p->pcidev_list);
+ pdev->owner = d;
+ list_add(&pdev->node, &d->pcidev_list);
}
- set_bit(DF_PHYSDEV, &p->d_flags);
+ set_bit(DF_PHYSDEV, &d->d_flags);
}
diff -Nru a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
--- a/xen/include/asm-x86/domain.h 2005-03-23 14:03:10 -05:00
+++ b/xen/include/asm-x86/domain.h 2005-03-23 14:03:10 -05:00
@@ -20,7 +20,6 @@
/* I/O-port access bitmap mask. */
u8 *iobmp_mask; /* Address of IO bitmap mask, or NULL. */
- int max_iopl; /* Maximum achievable IOPL. */
/* shadow mode status and controls */
unsigned int shadow_mode; /* flags to control shadow table operation */
diff -Nru a/xen/include/public/dom0_ops.h b/xen/include/public/dom0_ops.h
--- a/xen/include/public/dom0_ops.h 2005-03-23 14:03:10 -05:00
+++ b/xen/include/public/dom0_ops.h 2005-03-23 14:03:10 -05:00
@@ -407,13 +407,7 @@
u32 _pad0;
} PACKED dom0_microcode_t; /* 16 bytes */
-#define DOM0_IOPL_PERMISSION 36
-typedef struct {
- domid_t domain; /* 0: domain to be affected */
- u16 max_iopl; /* 2: new effective IOPL limit */
-} PACKED dom0_iopl_permission_t; /* 4 bytes */
-
-#define DOM0_IOPORT_PERMISSION 37
+#define DOM0_IOPORT_PERMISSION 36
typedef struct {
domid_t domain; /* 0: domain to be affected */
u16 first_port; /* 2: first port int range */
@@ -455,7 +449,6 @@
dom0_read_memtype_t read_memtype;
dom0_perfccontrol_t perfccontrol;
dom0_microcode_t microcode;
- dom0_iopl_permission_t iopl_permission;
dom0_ioport_permission_t ioport_permission;
} PACKED u;
} PACKED dom0_op_t; /* 80 bytes */
-------------------------------------------------------
This SF.net email is sponsored by Microsoft Mobile & Embedded DevCon 2005
Attend MEDC 2005 May 9-12 in Vegas. Learn more about the latest Windows
Embedded(r) & Windows Mobile(tm) platforms, applications & content. Register
by 3/29 & save $300 http://ads.osdn.com/?ad_id=6883&alloc_id=15149&op=click
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-changelog
|