diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-09-04 11:25:09 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-09-04 11:25:09 +0100 |
commit | aff2988ad524ed3835bd0c402f8ec25264db61ea (patch) | |
tree | 12ba50c678f9862e3b519adf0605c97d2c7d3df3 /xen/arch/x86/platform_hypercall.c | |
parent | 06cfe5df7bdadd1972619d26127bd18a56a1db04 (diff) | |
download | xen-aff2988ad524ed3835bd0c402f8ec25264db61ea.tar.gz xen-aff2988ad524ed3835bd0c402f8ec25264db61ea.tar.bz2 xen-aff2988ad524ed3835bd0c402f8ec25264db61ea.zip |
xsm: refactor IO hooks/sysctl hooks
- The patch refactors the IO resource checks into the rangeset add/del
code. This produces a much more architecture friendly implementation and
ensures that HVM and paravirtualized guests are checked consistently.
- The patch removes the following hooks in support of the refactoring
of the IO resource checks:
- xsm_irq_permission
- xsm_iomem_permission
- xsm_ioport_permission
- The patch adds the following hooks in support of the refactoring of
the IO resource checks:
- xsm_add_range
- xsm_remove_range
- These IO refactoring changes are transparent to any pre-existing
Flask policies.
- The patch adds also adds hooks for sysctl functionality that was
added since the last major XSM patch. The following hooks were added:
- xsm_set_target
- xsm_debug_keys
- xsm_getcpuinfo
- xsm_availheap
- xsm_firmware_info
- xsm_acpi_sleep
- xsm_change_freq
- xsm_getidletime
- xsm_sendtrigger
- xsm_test_assign_device
- xsm_assign_device
- xsm_deassign_device
- xsm_bind_pt_irq
- xsm_pin_mem_cacheattr
- xsm_ext_vcpucontext
Signed-off-by: George Coker <gscoker@alpha.ncsc.mil>
Diffstat (limited to 'xen/arch/x86/platform_hypercall.c')
-rw-r--r-- | xen/arch/x86/platform_hypercall.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c index 571f412b04..c5747085bb 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -192,6 +192,10 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op) break; case XENPF_firmware_info: + ret = xsm_firmware_info(); + if ( ret ) + break; + switch ( op->u.firmware_info.type ) { case XEN_FW_DISK_INFO: { @@ -280,10 +284,18 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op) break; case XENPF_enter_acpi_sleep: + ret = xsm_acpi_sleep(); + if ( ret ) + break; + ret = acpi_enter_sleep(&op->u.enter_acpi_sleep); break; case XENPF_change_freq: + ret = xsm_change_freq(); + if ( ret ) + break; + ret = -ENOSYS; if ( cpufreq_controller != FREQCTL_dom0_kernel ) break; @@ -306,6 +318,10 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op) XEN_GUEST_HANDLE(uint8) cpumap_bitmap; XEN_GUEST_HANDLE(uint64) idletimes; + ret = xsm_getidletime(); + if ( ret ) + break; + ret = -ENOSYS; if ( cpufreq_controller != FREQCTL_dom0_kernel ) break; |