* [PATCH v8 2/9] xsm bits for vNUMA hypercalls
@ 2014-08-26 7:44 Elena Ufimtseva
2014-08-26 15:23 ` Jan Beulich
2014-08-26 22:54 ` Daniel De Graaf
0 siblings, 2 replies; 5+ messages in thread
From: Elena Ufimtseva @ 2014-08-26 7:44 UTC (permalink / raw)
To: xen-devel
Cc: keir, Ian.Campbell, stefano.stabellini, george.dunlap, msw,
dario.faggioli, lccycc123, ian.jackson, JBeulich, dgdegra,
Elena Ufimtseva
Define xsm_get_vnumainfo hypercall used for domain which
wish to receive vnuma topology. Add xsm hook for
XEN_DOMCTL_setvnumainfo. Also adds basic policies.
Signed-off-by: Elena Ufimtseva <ufimtseva@gmail.com>
---
tools/flask/policy/policy/modules/xen/xen.if | 3 ++-
tools/flask/policy/policy/modules/xen/xen.te | 2 +-
xen/common/memory.c | 7 +++++++
xen/include/xsm/dummy.h | 6 ++++++
xen/include/xsm/xsm.h | 7 +++++++
xen/xsm/dummy.c | 1 +
xen/xsm/flask/hooks.c | 10 ++++++++++
xen/xsm/flask/policy/access_vectors | 4 ++++
8 files changed, 38 insertions(+), 2 deletions(-)
diff --git a/tools/flask/policy/policy/modules/xen/xen.if b/tools/flask/policy/policy/modules/xen/xen.if
index dedc035..32b51b6 100644
--- a/tools/flask/policy/policy/modules/xen/xen.if
+++ b/tools/flask/policy/policy/modules/xen/xen.if
@@ -49,7 +49,7 @@ define(`create_domain_common', `
getdomaininfo hypercall setvcpucontext setextvcpucontext
getscheduler getvcpuinfo getvcpuextstate getaddrsize
getaffinity setaffinity };
- allow $1 $2:domain2 { set_cpuid settsc setscheduler setclaim set_max_evtchn };
+ allow $1 $2:domain2 { set_cpuid settsc setscheduler setclaim set_max_evtchn set_vnumainfo get_vnumainfo };
allow $1 $2:security check_context;
allow $1 $2:shadow enable;
allow $1 $2:mmu { map_read map_write adjust memorymap physmap pinpage mmuext_op };
@@ -81,6 +81,7 @@ define(`manage_domain', `
allow $1 $2:domain { getdomaininfo getvcpuinfo getaffinity
getaddrsize pause unpause trigger shutdown destroy
setaffinity setdomainmaxmem getscheduler };
+ allow $1 $2:domain2 set_vnumainfo;
')
# migrate_domain_out(priv, target)
diff --git a/tools/flask/policy/policy/modules/xen/xen.te b/tools/flask/policy/policy/modules/xen/xen.te
index bb59fe8..1937883 100644
--- a/tools/flask/policy/policy/modules/xen/xen.te
+++ b/tools/flask/policy/policy/modules/xen/xen.te
@@ -76,7 +76,7 @@ allow dom0_t dom0_t:domain {
getpodtarget setpodtarget set_misc_info set_virq_handler
};
allow dom0_t dom0_t:domain2 {
- set_cpuid gettsc settsc setscheduler set_max_evtchn
+ set_cpuid gettsc settsc setscheduler set_max_evtchn set_vnumainfo get_vnumainfo
};
allow dom0_t dom0_t:resource { add remove };
diff --git a/xen/common/memory.c b/xen/common/memory.c
index 58c919c..5d017c9 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -986,6 +986,13 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
if ( (d = rcu_lock_domain_by_any_id(topology.domid)) == NULL )
return -ESRCH;
+ rc = xsm_get_vnumainfo(XSM_TARGET, d);
+ if ( rc )
+ {
+ rcu_unlock_domain(d);
+ return rc;
+ }
+
read_lock(&d->vnuma_rwlock);
if ( d->vnuma == NULL )
diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h
index c5aa316..df55e70 100644
--- a/xen/include/xsm/dummy.h
+++ b/xen/include/xsm/dummy.h
@@ -317,6 +317,12 @@ static XSM_INLINE int xsm_set_pod_target(XSM_DEFAULT_ARG struct domain *d)
return xsm_default_action(action, current->domain, d);
}
+static XSM_INLINE int xsm_get_vnumainfo(XSM_DEFAULT_ARG struct domain *d)
+{
+ XSM_ASSERT_ACTION(XSM_TARGET);
+ return xsm_default_action(action, current->domain, d);
+}
+
#if defined(HAS_PASSTHROUGH) && defined(HAS_PCI)
static XSM_INLINE int xsm_get_device_group(XSM_DEFAULT_ARG uint32_t machine_bdf)
{
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index a85045d..6c1c079 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -139,6 +139,7 @@ struct xsm_operations {
int (*hvm_param) (struct domain *d, unsigned long op);
int (*hvm_control) (struct domain *d, unsigned long op);
int (*hvm_param_nested) (struct domain *d);
+ int (*get_vnumainfo) (struct domain *d);
#ifdef CONFIG_X86
int (*do_mca) (void);
@@ -534,6 +535,11 @@ static inline int xsm_hvm_param_nested (xsm_default_t def, struct domain *d)
return xsm_ops->hvm_param_nested(d);
}
+static inline int xsm_get_vnumainfo (xsm_default_t def, struct domain *d)
+{
+ return xsm_ops->get_vnumainfo(d);
+}
+
#ifdef CONFIG_X86
static inline int xsm_do_mca(xsm_default_t def)
{
@@ -653,6 +659,7 @@ static inline int xsm_ioport_mapping (xsm_default_t def, struct domain *d, uint3
{
return xsm_ops->ioport_mapping(d, s, e, allow);
}
+
#endif /* CONFIG_X86 */
#endif /* XSM_NO_WRAPPERS */
diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c
index c95c803..0826a8b 100644
--- a/xen/xsm/dummy.c
+++ b/xen/xsm/dummy.c
@@ -85,6 +85,7 @@ void xsm_fixup_ops (struct xsm_operations *ops)
set_to_dummy_if_null(ops, iomem_permission);
set_to_dummy_if_null(ops, iomem_mapping);
set_to_dummy_if_null(ops, pci_config_permission);
+ set_to_dummy_if_null(ops, get_vnumainfo);
#if defined(HAS_PASSTHROUGH) && defined(HAS_PCI)
set_to_dummy_if_null(ops, get_device_group);
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index f2f59ea..00efba1 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -404,6 +404,11 @@ static int flask_claim_pages(struct domain *d)
return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__SETCLAIM);
}
+static int flask_get_vnumainfo(struct domain *d)
+{
+ return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__GET_VNUMAINFO);
+}
+
static int flask_console_io(struct domain *d, int cmd)
{
u32 perm;
@@ -715,6 +720,9 @@ static int flask_domctl(struct domain *d, int cmd)
case XEN_DOMCTL_cacheflush:
return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__CACHEFLUSH);
+ case XEN_DOMCTL_setvnumainfo:
+ return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN2__SET_VNUMAINFO);
+
default:
printk("flask_domctl: Unknown op %d\n", cmd);
return -EPERM;
@@ -1552,6 +1560,8 @@ static struct xsm_operations flask_ops = {
.hvm_param_nested = flask_hvm_param_nested,
.do_xsm_op = do_flask_op,
+ .get_vnumainfo = flask_get_vnumainfo,
+
#ifdef CONFIG_COMPAT
.do_compat_op = compat_flask_op,
#endif
diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/access_vectors
index 32371a9..d279841 100644
--- a/xen/xsm/flask/policy/access_vectors
+++ b/xen/xsm/flask/policy/access_vectors
@@ -200,6 +200,10 @@ class domain2
cacheflush
# Creation of the hardware domain when it is not dom0
create_hardware_domain
+# XEN_DOMCTL_setvnumainfo
+ set_vnumainfo
+# XENMEM_getvnumainfo
+ get_vnumainfo
}
# Similar to class domain, but primarily contains domctls related to HVM domains
--
1.7.10.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v8 2/9] xsm bits for vNUMA hypercalls
2014-08-26 7:44 [PATCH v8 2/9] xsm bits for vNUMA hypercalls Elena Ufimtseva
@ 2014-08-26 15:23 ` Jan Beulich
2014-08-26 15:33 ` Elena Ufimtseva
2014-08-26 22:54 ` Daniel De Graaf
1 sibling, 1 reply; 5+ messages in thread
From: Jan Beulich @ 2014-08-26 15:23 UTC (permalink / raw)
To: Elena Ufimtseva
Cc: keir, Ian.Campbell, lccycc123, george.dunlap, msw, dario.faggioli,
stefano.stabellini, ian.jackson, xen-devel, dgdegra
>>> On 26.08.14 at 09:44, <ufimtseva@gmail.com> wrote:
> Define xsm_get_vnumainfo hypercall used for domain which
> wish to receive vnuma topology. Add xsm hook for
> XEN_DOMCTL_setvnumainfo. Also adds basic policies.
>
> Signed-off-by: Elena Ufimtseva <ufimtseva@gmail.com>
> ---
> tools/flask/policy/policy/modules/xen/xen.if | 3 ++-
> tools/flask/policy/policy/modules/xen/xen.te | 2 +-
> xen/common/memory.c | 7 +++++++
> xen/include/xsm/dummy.h | 6 ++++++
> xen/include/xsm/xsm.h | 7 +++++++
> xen/xsm/dummy.c | 1 +
> xen/xsm/flask/hooks.c | 10 ++++++++++
> xen/xsm/flask/policy/access_vectors | 4 ++++
> 8 files changed, 38 insertions(+), 2 deletions(-)
Were there any substantial changes from v7, or did you simply lose
Daniel's ack?
Jan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v8 2/9] xsm bits for vNUMA hypercalls
2014-08-26 15:23 ` Jan Beulich
@ 2014-08-26 15:33 ` Elena Ufimtseva
2014-08-26 15:43 ` Jan Beulich
0 siblings, 1 reply; 5+ messages in thread
From: Elena Ufimtseva @ 2014-08-26 15:33 UTC (permalink / raw)
To: Jan Beulich
Cc: Keir Fraser, Ian Campbell, Li Yechen, George Dunlap, Matt Wilson,
Dario Faggioli, Stefano Stabellini, Ian Jackson,
xen-devel@lists.xen.org, Daniel De Graaf
On Tue, Aug 26, 2014 at 11:23 AM, Jan Beulich <JBeulich@suse.com> wrote:
>>>> On 26.08.14 at 09:44, <ufimtseva@gmail.com> wrote:
>> Define xsm_get_vnumainfo hypercall used for domain which
>> wish to receive vnuma topology. Add xsm hook for
>> XEN_DOMCTL_setvnumainfo. Also adds basic policies.
>>
>> Signed-off-by: Elena Ufimtseva <ufimtseva@gmail.com>
>> ---
>> tools/flask/policy/policy/modules/xen/xen.if | 3 ++-
>> tools/flask/policy/policy/modules/xen/xen.te | 2 +-
>> xen/common/memory.c | 7 +++++++
>> xen/include/xsm/dummy.h | 6 ++++++
>> xen/include/xsm/xsm.h | 7 +++++++
>> xen/xsm/dummy.c | 1 +
>> xen/xsm/flask/hooks.c | 10 ++++++++++
>> xen/xsm/flask/policy/access_vectors | 4 ++++
>> 8 files changed, 38 insertions(+), 2 deletions(-)
>
> Were there any substantial changes from v7, or did you simply lose
> Daniel's ack?
>
> Jan
>
Jan,
I am not sure if after received ack, few changes automatically remove
it from the patch.
Daniel,
Could you please take a look. v8 differ from v7 by using XSM_TARGET
instead of XSM_PRIV in dummy.h for xsm_get_vnumainfo call.
Thank you!
Elena
--
Elena
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v8 2/9] xsm bits for vNUMA hypercalls
2014-08-26 15:33 ` Elena Ufimtseva
@ 2014-08-26 15:43 ` Jan Beulich
0 siblings, 0 replies; 5+ messages in thread
From: Jan Beulich @ 2014-08-26 15:43 UTC (permalink / raw)
To: Elena Ufimtseva
Cc: Keir Fraser, Ian Campbell, Li Yechen, George Dunlap, Matt Wilson,
Dario Faggioli, Stefano Stabellini, Ian Jackson,
xen-devel@lists.xen.org, Daniel De Graaf
>>> On 26.08.14 at 17:33, <ufimtseva@gmail.com> wrote:
> On Tue, Aug 26, 2014 at 11:23 AM, Jan Beulich <JBeulich@suse.com> wrote:
>> Were there any substantial changes from v7, or did you simply lose
>> Daniel's ack?
>
> I am not sure if after received ack, few changes automatically remove
> it from the patch.
>
> Daniel,
> Could you please take a look. v8 differ from v7 by using XSM_TARGET
> instead of XSM_PRIV in dummy.h for xsm_get_vnumainfo call.
Ah, yes, in that case dropping the ack certainly makes sense to
me. Spelling out changes in individual patches would certainly
help noticing this.
Jan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v8 2/9] xsm bits for vNUMA hypercalls
2014-08-26 7:44 [PATCH v8 2/9] xsm bits for vNUMA hypercalls Elena Ufimtseva
2014-08-26 15:23 ` Jan Beulich
@ 2014-08-26 22:54 ` Daniel De Graaf
1 sibling, 0 replies; 5+ messages in thread
From: Daniel De Graaf @ 2014-08-26 22:54 UTC (permalink / raw)
To: Elena Ufimtseva, xen-devel
Cc: keir, Ian.Campbell, stefano.stabellini, george.dunlap, msw,
dario.faggioli, lccycc123, ian.jackson, JBeulich
On 08/26/2014 03:44 AM, Elena Ufimtseva wrote:
> Define xsm_get_vnumainfo hypercall used for domain which
> wish to receive vnuma topology. Add xsm hook for
> XEN_DOMCTL_setvnumainfo. Also adds basic policies.
>
> Signed-off-by: Elena Ufimtseva <ufimtseva@gmail.com>
Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-08-26 22:54 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-26 7:44 [PATCH v8 2/9] xsm bits for vNUMA hypercalls Elena Ufimtseva
2014-08-26 15:23 ` Jan Beulich
2014-08-26 15:33 ` Elena Ufimtseva
2014-08-26 15:43 ` Jan Beulich
2014-08-26 22:54 ` Daniel De Graaf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).