diff options
author | Keir Fraser <keir@xen.org> | 2010-11-03 08:17:39 +0000 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2010-11-03 08:17:39 +0000 |
commit | d0cf8141501afe4e4e257260f093ddd5a760f9af (patch) | |
tree | 08bd9986696314c6469b4f5567a5b13f03ba2a2e /xen/xsm | |
parent | 5a4cecd8281530b9165b0186877d5a9db2dcef00 (diff) | |
download | xen-d0cf8141501afe4e4e257260f093ddd5a760f9af.tar.gz xen-d0cf8141501afe4e4e257260f093ddd5a760f9af.tar.bz2 xen-d0cf8141501afe4e4e257260f093ddd5a760f9af.zip |
x86: xsave save/restore support for both PV and HVM guests.
Signed-off-by: Shan Haitao <haitao.shan@intel.com>
Signed-off-by: Han Weidong <weidong.han@intel.com>
Diffstat (limited to 'xen/xsm')
-rw-r--r-- | xen/xsm/flask/hooks.c | 20 | ||||
-rw-r--r-- | xen/xsm/flask/include/av_permissions.h | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 53b28c2e14..727eddb989 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1177,6 +1177,25 @@ static int flask_ext_vcpucontext (struct domain *d, uint32_t cmd) return domain_has_perm(current->domain, d, SECCLASS_DOMAIN, perm); } + +static int flask_vcpuextstate (struct domain *d, uint32_t cmd) +{ + u32 perm; + + switch ( cmd ) + { + case XEN_DOMCTL_setvcpuextstate: + perm = DOMAIN__SETVCPUEXTSTATE; + break; + case XEN_DOMCTL_getvcpuextstate: + perm = DOMAIN__GETVCPUEXTSTATE; + break; + default: + return -EPERM; + } + + return domain_has_perm(current->domain, d, SECCLASS_DOMAIN, perm); +} #endif static int io_has_perm(struct domain *d, char *name, unsigned long s, @@ -1328,6 +1347,7 @@ static struct xsm_operations flask_ops = { .bind_pt_irq = flask_bind_pt_irq, .pin_mem_cacheattr = flask_pin_mem_cacheattr, .ext_vcpucontext = flask_ext_vcpucontext, + .vcpuextstate = flask_vcpuextstate, #endif }; diff --git a/xen/xsm/flask/include/av_permissions.h b/xen/xsm/flask/include/av_permissions.h index cc1f0a2ccb..14bd0536dd 100644 --- a/xen/xsm/flask/include/av_permissions.h +++ b/xen/xsm/flask/include/av_permissions.h @@ -51,6 +51,8 @@ #define DOMAIN__TRIGGER 0x00800000UL #define DOMAIN__GETEXTVCPUCONTEXT 0x01000000UL #define DOMAIN__SETEXTVCPUCONTEXT 0x02000000UL +#define DOMAIN__GETVCPUEXTSTATE 0x04000000UL +#define DOMAIN__SETVCPUEXTSTATE 0x08000000UL #define HVM__SETHVMC 0x00000001UL #define HVM__GETHVMC 0x00000002UL |