|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v1 24/25] xen/domctl: wrap around arch-specific domctl op
Function arch_do_domctl() is responsible for arch-specific domctl-op,
and the following functions shall be wrapped:
- xsm_domctl
For x86:
- hvm_save_one
- hvm_acpi_power_button
- hvm_acpi_sleep_button
- xsm_{bind,unbind}_pt_irq
- xsm_ioport_permission
- xsm_ioport_mapping
- hvm_debug_op
- mem_sharing_domctl
- make P2M_AUDIT depend on CONFIG_DOMCTL
- make PG_log_dirty depend on CONFIG_DOMCTL
- gdbsx_domctl
- gdbsx_guest_meminfo
- dgb_rw_guest_mem
- dbg_hvm_va2mfn
- dbg_pv_va2mfn
- make policy.o depend on CONFIG_DOMCTL
- do_vmtrace_op
- hvm_vmtrace_control
- hvm_funcs.vmtrace_control
- hvm_vmtrace_get_option
- hvm_funcs.vmtrace_get_option
- hvm_vmtrace_set_option
- hvm_funcs.vmtrace_set_option
For ARM:
- subarch_do_domctl
Also, remove all #ifdef CONFIG_DOMCTL-s in arch-specific domctl.c, as
we put the guardian in Makefile for the whole file.
Signed-off-by: Penny Zheng <Penny.Zheng@xxxxxxx>
---
xen/arch/arm/arm32/Makefile | 2 +-
xen/arch/arm/arm64/Makefile | 2 +-
xen/arch/arm/domctl.c | 2 --
xen/arch/x86/Makefile | 2 +-
xen/arch/x86/domctl.c | 2 --
xen/arch/x86/gdbsx.c | 4 ++++
xen/arch/x86/hvm/hvm.c | 2 +-
xen/arch/x86/hvm/pmtimer.c | 2 ++
xen/arch/x86/hvm/save.c | 2 ++
xen/arch/x86/hvm/vmx/vmx.c | 6 ++++++
xen/arch/x86/include/asm/hvm/hvm.h | 12 ++++++++++++
xen/arch/x86/include/asm/p2m.h | 2 +-
xen/arch/x86/include/asm/paging.h | 2 +-
xen/arch/x86/mm/mem_sharing.c | 2 ++
xen/include/xsm/xsm.h | 12 ++++++++----
xen/lib/x86/Makefile | 2 +-
xen/xsm/dummy.c | 6 ++++--
xen/xsm/flask/hooks.c | 12 ++++++++----
18 files changed, 55 insertions(+), 21 deletions(-)
diff --git a/xen/arch/arm/arm32/Makefile b/xen/arch/arm/arm32/Makefile
index 531168f58a..384aaea398 100644
--- a/xen/arch/arm/arm32/Makefile
+++ b/xen/arch/arm/arm32/Makefile
@@ -4,7 +4,7 @@ obj-$(CONFIG_MPU) += mpu/
obj-y += cache.o
obj-$(CONFIG_EARLY_PRINTK) += debug.o
-obj-y += domctl.o
+obj-$(CONFIG_DOMCTL) += domctl.o
obj-y += domain.o
obj-y += entry.o
obj-y += head.o
diff --git a/xen/arch/arm/arm64/Makefile b/xen/arch/arm/arm64/Makefile
index 6491c5350b..f2f547df9a 100644
--- a/xen/arch/arm/arm64/Makefile
+++ b/xen/arch/arm/arm64/Makefile
@@ -6,7 +6,7 @@ obj-y += cache.o
obj-y += cpufeature.o
obj-$(CONFIG_HARDEN_BRANCH_PREDICTOR) += bpi.o
obj-$(CONFIG_EARLY_PRINTK) += debug.o
-obj-y += domctl.o
+obj-$(CONFIG_DOMCTL) += domctl.o
obj-y += domain.o
obj-y += entry.o
obj-y += head.o
diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c
index d508ee2880..ad914c915f 100644
--- a/xen/arch/arm/domctl.c
+++ b/xen/arch/arm/domctl.c
@@ -184,7 +184,6 @@ long arch_do_domctl(struct xen_domctl *domctl, struct
domain *d,
}
}
-#ifdef CONFIG_DOMCTL
void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
{
struct vcpu_guest_context *ctxt = c.nat;
@@ -200,7 +199,6 @@ void arch_get_info_guest(struct vcpu *v,
vcpu_guest_context_u c)
if ( !test_bit(_VPF_down, &v->pause_flags) )
ctxt->flags |= VGCF_online;
}
-#endif /* CONFIG_DOMCTL */
/*
* Local variables:
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index 17f0e1dbc9..c48759650c 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -28,7 +28,7 @@ obj-y += delay.o
obj-y += desc.o
obj-bin-y += dmi_scan.init.o
obj-y += domain.o
-obj-y += domctl.o
+obj-$(CONFIG_DOMCTL) += domctl.o
obj-bin-y += dom0_build.init.o
obj-y += domain_page.o
obj-y += e820.o
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 29f9db89a1..156c74e07a 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1367,7 +1367,6 @@ long arch_do_domctl(
return ret;
}
-#ifdef CONFIG_DOMCTL
#ifdef CONFIG_COMPAT
#define xen_vcpu_guest_context vcpu_guest_context
#define fpu_ctxt fpu_ctxt.x
@@ -1526,7 +1525,6 @@ void arch_get_info_guest(struct vcpu *v,
vcpu_guest_context_u c)
c(vm_assist = d->vm_assist);
#undef c
}
-#endif /* CONFIG_DOMCTL */
/*
* Local variables:
diff --git a/xen/arch/x86/gdbsx.c b/xen/arch/x86/gdbsx.c
index 21442f5dff..df1a3ce9fb 100644
--- a/xen/arch/x86/gdbsx.c
+++ b/xen/arch/x86/gdbsx.c
@@ -23,6 +23,7 @@
#include <asm/gdbsx.h>
#include <asm/p2m.h>
+#ifdef CONFIG_DOMCTL
typedef unsigned long dbgva_t;
typedef unsigned char dbgbyte_t;
@@ -166,6 +167,7 @@ static int gdbsx_guest_mem_io(
return iop->remain ? -EFAULT : 0;
}
+#endif /* CONFIG_DOMCTL */
void domain_pause_for_debugger(void)
{
@@ -179,6 +181,7 @@ void domain_pause_for_debugger(void)
send_global_virq(VIRQ_DEBUGGER);
}
+#ifdef CONFIG_DOMCTL
int gdbsx_domctl(struct domain *d, struct xen_domctl *domctl, bool *copyback)
{
struct vcpu *v;
@@ -245,6 +248,7 @@ int gdbsx_domctl(struct domain *d, struct xen_domctl
*domctl, bool *copyback)
return ret;
}
+#endif /* CONFIG_DOMCTL */
/*
* Local variables:
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index f464f401aa..aca1e5ba69 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -5212,6 +5212,7 @@ long do_hvm_op(unsigned long op,
XEN_GUEST_HANDLE_PARAM(void) arg)
return rc;
}
+#ifdef CONFIG_DOMCTL
int hvm_debug_op(struct vcpu *v, int32_t op)
{
int rc = 0;
@@ -5251,7 +5252,6 @@ int hvm_debug_op(struct vcpu *v, int32_t op)
return rc;
}
-#ifdef CONFIG_VM_EVENT
void hvm_toggle_singlestep(struct vcpu *v)
{
ASSERT(atomic_read(&v->pause_count));
diff --git a/xen/arch/x86/hvm/pmtimer.c b/xen/arch/x86/hvm/pmtimer.c
index 87a7a01c9f..e4d0f001ff 100644
--- a/xen/arch/x86/hvm/pmtimer.c
+++ b/xen/arch/x86/hvm/pmtimer.c
@@ -56,6 +56,7 @@ static void pmt_update_sci(PMTState *s)
hvm_isa_irq_deassert(s->vcpu->domain, SCI_IRQ);
}
+#ifdef CONFIG_DOMCTL
void hvm_acpi_power_button(struct domain *d)
{
PMTState *s = &d->arch.hvm.pl_time->vpmt;
@@ -81,6 +82,7 @@ void hvm_acpi_sleep_button(struct domain *d)
pmt_update_sci(s);
spin_unlock(&s->lock);
}
+#endif /* CONFIG_DOMCTL */
/* Set the correct value in the timer, accounting for time elapsed
* since the last time we did that. */
diff --git a/xen/arch/x86/hvm/save.c b/xen/arch/x86/hvm/save.c
index 8ab6405706..ffaf731ddc 100644
--- a/xen/arch/x86/hvm/save.c
+++ b/xen/arch/x86/hvm/save.c
@@ -121,6 +121,7 @@ size_t hvm_save_size(struct domain *d)
return sz;
}
+#ifdef CONFIG_DOMCTL
/*
* Extract a single instance of a save record, by marshalling all records of
* that type and copying out the one we need.
@@ -195,6 +196,7 @@ int hvm_save_one(struct domain *d, unsigned int typecode,
unsigned int instance,
xfree(ctxt.data);
return rv;
}
+#endif /* CONFIG_DOMCTL */
int hvm_save(struct domain *d, hvm_domain_context_t *h)
{
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 9e4ad864fa..f562ab90b6 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2577,6 +2577,7 @@ static bool cf_check vmx_get_pending_event(
(RTIT_STATUS_FILTER_EN | RTIT_STATUS_CONTEXT_EN | RTIT_STATUS_TRIGGER_EN |
\
RTIT_STATUS_ERROR | RTIT_STATUS_STOPPED)
+#ifdef CONFIG_DOMCTL
static int cf_check vmtrace_get_option(
struct vcpu *v, uint64_t key, uint64_t *output)
{
@@ -2685,6 +2686,7 @@ static int cf_check vmtrace_control(struct vcpu *v, bool
enable, bool reset)
return 0;
}
+#endif /* CONFIG_DOMCTL */
static int cf_check vmtrace_output_position(struct vcpu *v, uint64_t *pos)
{
@@ -2873,10 +2875,14 @@ static struct hvm_function_table __initdata_cf_clobber
vmx_function_table = {
.altp2m_vcpu_update_vmfunc_ve = vmx_vcpu_update_vmfunc_ve,
.altp2m_vcpu_emulate_ve = vmx_vcpu_emulate_ve,
.altp2m_vcpu_emulate_vmfunc = vmx_vcpu_emulate_vmfunc,
+#ifdef CONFIG_DOMCTL
.vmtrace_control = vmtrace_control,
+#endif
.vmtrace_output_position = vmtrace_output_position,
+#ifdef CONFIG_DOMCTL
.vmtrace_set_option = vmtrace_set_option,
.vmtrace_get_option = vmtrace_get_option,
+#endif
.vmtrace_reset = vmtrace_reset,
.get_reg = vmx_get_reg,
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h
b/xen/arch/x86/include/asm/hvm/hvm.h
index bd53fcf155..dd106bac42 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -236,10 +236,14 @@ struct hvm_function_table {
int (*altp2m_vcpu_emulate_vmfunc)(const struct cpu_user_regs *regs);
/* vmtrace */
+#ifdef CONFIG_DOMCTL
int (*vmtrace_control)(struct vcpu *v, bool enable, bool reset);
+#endif
int (*vmtrace_output_position)(struct vcpu *v, uint64_t *pos);
+#ifdef CONFIG_DOMCTL
int (*vmtrace_set_option)(struct vcpu *v, uint64_t key, uint64_t value);
int (*vmtrace_get_option)(struct vcpu *v, uint64_t key, uint64_t *value);
+#endif
int (*vmtrace_reset)(struct vcpu *v);
uint64_t (*get_reg)(struct vcpu *v, unsigned int reg);
@@ -740,6 +744,7 @@ static inline bool altp2m_vcpu_emulate_ve(struct vcpu *v)
return false;
}
+#ifdef CONFIG_DOMCTL
static inline int hvm_vmtrace_control(struct vcpu *v, bool enable, bool reset)
{
if ( hvm_funcs.vmtrace_control )
@@ -747,6 +752,7 @@ static inline int hvm_vmtrace_control(struct vcpu *v, bool
enable, bool reset)
return -EOPNOTSUPP;
}
+#endif
/* Returns -errno, or a boolean of whether tracing is currently active. */
static inline int hvm_vmtrace_output_position(struct vcpu *v, uint64_t *pos)
@@ -757,6 +763,7 @@ static inline int hvm_vmtrace_output_position(struct vcpu
*v, uint64_t *pos)
return -EOPNOTSUPP;
}
+#ifdef CONFIG_DOMCTL
static inline int hvm_vmtrace_set_option(
struct vcpu *v, uint64_t key, uint64_t value)
{
@@ -774,6 +781,7 @@ static inline int hvm_vmtrace_get_option(
return -EOPNOTSUPP;
}
+#endif
static inline int hvm_vmtrace_reset(struct vcpu *v)
{
@@ -938,16 +946,19 @@ static inline bool
hvm_has_set_descriptor_access_exiting(void)
}
#endif /* CONFIG_VM_EVENT */
+#ifdef CONFIG_DOMCTL
static inline int hvm_vmtrace_control(struct vcpu *v, bool enable, bool reset)
{
return -EOPNOTSUPP;
}
+#endif
static inline int hvm_vmtrace_output_position(struct vcpu *v, uint64_t *pos)
{
return -EOPNOTSUPP;
}
+#ifdef CONFIG_DOMCTL
static inline int hvm_vmtrace_set_option(
struct vcpu *v, uint64_t key, uint64_t value)
{
@@ -959,6 +970,7 @@ static inline int hvm_vmtrace_get_option(
{
return -EOPNOTSUPP;
}
+#endif /* CONFIG_DOMCTL */
static inline uint64_t hvm_get_reg(struct vcpu *v, unsigned int reg)
{
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index 9c92f67443..e20c1a0d4a 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -20,7 +20,7 @@
#include <asm/page.h> /* for pagetable_t */
/* Debugging and auditing of the P2M code? */
-#if !defined(NDEBUG) && defined(CONFIG_HVM)
+#if !defined(NDEBUG) && defined(CONFIG_HVM) && defined(CONFIG_DOMCTL)
#define P2M_AUDIT 1
#else
#define P2M_AUDIT 0
diff --git a/xen/arch/x86/include/asm/paging.h
b/xen/arch/x86/include/asm/paging.h
index 956b83215c..c35ef44fff 100644
--- a/xen/arch/x86/include/asm/paging.h
+++ b/xen/arch/x86/include/asm/paging.h
@@ -55,7 +55,7 @@
#define PG_translate 0
#define PG_external 0
#endif
-#if defined(CONFIG_HVM)
+#if defined(CONFIG_HVM) && defined(CONFIG_DOMCTL)
/* Enable log dirty mode */
#define PG_log_dirty (XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY << PG_mode_shift)
#else
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 7858565429..74706da2f9 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -2317,6 +2317,7 @@ out:
return rc;
}
+#ifdef CONFIG_DOMCTL
int mem_sharing_domctl(struct domain *d, struct xen_domctl_mem_sharing_op *mec)
{
int rc;
@@ -2334,6 +2335,7 @@ int mem_sharing_domctl(struct domain *d, struct
xen_domctl_mem_sharing_op *mec)
return rc;
}
+#endif /* CONFIG_DOMCTL */
void arch_dump_shared_mem_info(void)
{
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 6bbf3df702..86a1aa5d06 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -64,8 +64,8 @@ struct xsm_ops {
#endif
#ifdef CONFIG_DOMCTL
int (*set_target)(struct domain *d, struct domain *e);
-#endif
int (*domctl)(struct domain *d, unsigned int cmd, uint32_t ssidref);
+#endif
int (*sysctl)(int cmd);
int (*readconsole)(uint32_t clear);
@@ -115,9 +115,9 @@ struct xsm_ops {
int (*map_domain_irq)(struct domain *d, int irq, const void *data);
int (*unmap_domain_pirq)(struct domain *d);
int (*unmap_domain_irq)(struct domain *d, int irq, const void *data);
+#ifdef CONFIG_DOMCTL
int (*bind_pt_irq)(struct domain *d, struct xen_domctl_bind_pt_irq *bind);
int (*unbind_pt_irq)(struct domain *d, struct xen_domctl_bind_pt_irq
*bind);
-#ifdef CONFIG_DOMCTL
int (*irq_permission)(struct domain *d, int pirq, uint8_t allow);
int (*iomem_permission)(struct domain *d, uint64_t s, uint64_t e,
uint8_t allow);
@@ -196,10 +196,12 @@ struct xsm_ops {
int (*update_va_mapping)(struct domain *d, struct domain *f,
l1_pgentry_t pte);
int (*priv_mapping)(struct domain *d, struct domain *t);
+#ifdef CONFIG_DOMCTL
int (*ioport_permission)(struct domain *d, uint32_t s, uint32_t e,
uint8_t allow);
int (*ioport_mapping)(struct domain *d, uint32_t s, uint32_t e,
uint8_t allow);
+#endif
int (*pmu_op)(struct domain *d, unsigned int op);
#endif
int (*dm_op)(struct domain *d);
@@ -273,13 +275,13 @@ static inline int xsm_set_target(
{
return alternative_call(xsm_ops.set_target, d, e);
}
-#endif
static inline int xsm_domctl(xsm_default_t def, struct domain *d,
unsigned int cmd, uint32_t ssidref)
{
return alternative_call(xsm_ops.domctl, d, cmd, ssidref);
}
+#endif /* CONFIG_DOMCTL */
static inline int xsm_sysctl(xsm_default_t def, int cmd)
{
@@ -509,6 +511,7 @@ static inline int xsm_unmap_domain_irq(
return alternative_call(xsm_ops.unmap_domain_irq, d, irq, data);
}
+#ifdef CONFIG_DOMCTL
static inline int xsm_bind_pt_irq(
xsm_default_t def, struct domain *d, struct xen_domctl_bind_pt_irq *bind)
{
@@ -521,7 +524,6 @@ static inline int xsm_unbind_pt_irq(
return alternative_call(xsm_ops.unbind_pt_irq, d, bind);
}
-#ifdef CONFIG_DOMCTL
static inline int xsm_irq_permission(
xsm_default_t def, struct domain *d, int pirq, uint8_t allow)
{
@@ -759,6 +761,7 @@ static inline int xsm_priv_mapping(
return alternative_call(xsm_ops.priv_mapping, d, t);
}
+#ifdef CONFIG_DOMCTL
static inline int xsm_ioport_permission(
xsm_default_t def, struct domain *d, uint32_t s, uint32_t e, uint8_t allow)
{
@@ -770,6 +773,7 @@ static inline int xsm_ioport_mapping(
{
return alternative_call(xsm_ops.ioport_mapping, d, s, e, allow);
}
+#endif /* CONFIG_DOMCTL */
static inline int xsm_pmu_op(
xsm_default_t def, struct domain *d, unsigned int op)
diff --git a/xen/lib/x86/Makefile b/xen/lib/x86/Makefile
index 780ea05db1..77f2831e84 100644
--- a/xen/lib/x86/Makefile
+++ b/xen/lib/x86/Makefile
@@ -1,3 +1,3 @@
obj-y += cpuid.o
obj-y += msr.o
-obj-y += policy.o
+obj-$(CONFIG_DOMCTL) += policy.o
diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c
index b5174e610b..04b9b4e579 100644
--- a/xen/xsm/dummy.c
+++ b/xen/xsm/dummy.c
@@ -26,8 +26,8 @@ static const struct xsm_ops __initconst_cf_clobber dummy_ops
= {
#endif
#ifdef CONFIG_DOMCTL
.set_target = xsm_set_target,
-#endif
.domctl = xsm_domctl,
+#endif
#ifdef CONFIG_SYSCTL
.sysctl = xsm_sysctl,
.readconsole = xsm_readconsole,
@@ -75,9 +75,9 @@ static const struct xsm_ops __initconst_cf_clobber dummy_ops
= {
.map_domain_irq = xsm_map_domain_irq,
.unmap_domain_pirq = xsm_unmap_domain_pirq,
.unmap_domain_irq = xsm_unmap_domain_irq,
+#ifdef CONFIG_DOMCTL
.bind_pt_irq = xsm_bind_pt_irq,
.unbind_pt_irq = xsm_unbind_pt_irq,
-#ifdef CONFIG_DOMCTL
.irq_permission = xsm_irq_permission,
.iomem_permission = xsm_iomem_permission,
#endif
@@ -149,8 +149,10 @@ static const struct xsm_ops __initconst_cf_clobber
dummy_ops = {
.mmuext_op = xsm_mmuext_op,
.update_va_mapping = xsm_update_va_mapping,
.priv_mapping = xsm_priv_mapping,
+#ifdef CONFIG_DOMCTL
.ioport_permission = xsm_ioport_permission,
.ioport_mapping = xsm_ioport_mapping,
+#endif
.pmu_op = xsm_pmu_op,
#endif
.dm_op = xsm_dm_op,
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index 254e1323e5..00c4ac94e6 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -669,7 +669,6 @@ static int cf_check flask_set_target(struct domain *d,
struct domain *t)
&dsec->target_sid);
return rc;
}
-#endif /* CONFIG_DOMCTL */
static int cf_check flask_domctl(struct domain *d, unsigned int cmd,
uint32_t ssidref)
@@ -861,6 +860,7 @@ static int cf_check flask_domctl(struct domain *d, unsigned
int cmd,
return avc_unknown_permission("domctl", cmd);
}
}
+#endif /* CONFIG_DOMCTL */
#ifdef CONFIG_SYSCTL
static int cf_check flask_sysctl(int cmd)
@@ -1082,6 +1082,7 @@ static int cf_check flask_unmap_domain_irq(
return rc;
}
+#ifdef CONFIG_DOMCTL
static int cf_check flask_bind_pt_irq(
struct domain *d, struct xen_domctl_bind_pt_irq *bind)
{
@@ -1115,7 +1116,6 @@ static int cf_check flask_unbind_pt_irq(
return current_has_perm(d, SECCLASS_RESOURCE, RESOURCE__REMOVE);
}
-#ifdef CONFIG_DOMCTL
static int cf_check flask_irq_permission(
struct domain *d, int pirq, uint8_t access)
{
@@ -1640,6 +1640,7 @@ static int cf_check flask_shadow_control(struct domain
*d, uint32_t op)
}
#endif /* PG_log_dirty */
+#ifdef CONFIG_DOMCTL
struct ioport_has_perm_data {
uint32_t ssid;
uint32_t dsid;
@@ -1695,6 +1696,7 @@ static int cf_check flask_ioport_mapping(
{
return flask_ioport_permission(d, start, end, access);
}
+#endif /* CONFIG_DOMCTL */
static int cf_check flask_mem_sharing_op(
struct domain *d, struct domain *cd, int op)
@@ -1904,8 +1906,8 @@ static const struct xsm_ops __initconst_cf_clobber
flask_ops = {
#endif
#ifdef CONFIG_DOMCTL
.set_target = flask_set_target,
-#endif
.domctl = flask_domctl,
+#endif
#ifdef CONFIG_SYSCTL
.sysctl = flask_sysctl,
.readconsole = flask_readconsole,
@@ -1953,9 +1955,9 @@ static const struct xsm_ops __initconst_cf_clobber
flask_ops = {
.map_domain_irq = flask_map_domain_irq,
.unmap_domain_pirq = flask_unmap_domain_pirq,
.unmap_domain_irq = flask_unmap_domain_irq,
+#ifdef CONFIG_DOMCTL
.bind_pt_irq = flask_bind_pt_irq,
.unbind_pt_irq = flask_unbind_pt_irq,
-#ifdef CONFIG_DOMCTL
.irq_permission = flask_irq_permission,
.iomem_permission = flask_iomem_permission,
#endif
@@ -2028,8 +2030,10 @@ static const struct xsm_ops __initconst_cf_clobber
flask_ops = {
.mmuext_op = flask_mmuext_op,
.update_va_mapping = flask_update_va_mapping,
.priv_mapping = flask_priv_mapping,
+#ifdef CONFIG_DOMCTL
.ioport_permission = flask_ioport_permission,
.ioport_mapping = flask_ioport_mapping,
+#endif
.pmu_op = flask_pmu_op,
#endif
.dm_op = flask_dm_op,
--
2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |