Arch-specific domain_set_time_offset() is responisble for
XEN_DOMCTL_settimeoffset domctl-op, and shall be wrapped with
CONFIG_MGMT_HYPERCALLS. Otherwise it will become unreachable when
MGMT_HYPERCALLS=n, and hence violating Misra rule 2.1.
Signed-off-by: Penny Zheng <Penny.Zheng@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Acked-by: Jan Beulich <jbeulich@suse.com> # x86
---
v1 -> v2:
- adapt to changes of "unify DOMCTL to MGMT_HYPERCALLS"
- wrap XEN_DOMCTL_settimeoffset-case transiently
---
v2 -> v3:
- add back stub wrapping for riscv
- address "violating Misra rule 2.1" in commit message
- remove transient wrapping around XEN_DOMCTL_settimeoffset-case
---
xen/arch/arm/time.c | 2 ++
xen/arch/riscv/stubs.c | 2 ++
xen/arch/x86/time.c | 2 ++
3 files changed, 6 insertions(+)
diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index e74d30d258..dfed0b0ab8 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -365,12 +365,14 @@ void force_update_vcpu_system_time(struct vcpu *v)
update_vcpu_system_time(v);
}
+#ifdef CONFIG_MGMT_HYPERCALLS
void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds)
{
d->time_offset.seconds = time_offset_seconds;
d->time_offset.set = true;
/* XXX update guest visible wallclock time */
}
+#endif /* CONFIG_MGMT_HYPERCALLS */
static int cpu_time_callback(struct notifier_block *nfb,
unsigned long action,
diff --git a/xen/arch/riscv/stubs.c b/xen/arch/riscv/stubs.c
index 3e4280dee1..be1cadc362 100644
--- a/xen/arch/riscv/stubs.c
+++ b/xen/arch/riscv/stubs.c
@@ -31,10 +31,12 @@ void send_timer_event(struct vcpu *v)
BUG_ON("unimplemented");
}
+#ifdef CONFIG_MGMT_HYPERCALLS
void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds)
{
BUG_ON("unimplemented");
}
+#endif /* CONFIG_MGMT_HYPERCALLS */
/* domctl.c */
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 59129f419d..e7394ce8cf 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -1841,6 +1841,7 @@ static void update_domain_rtc(void)
rcu_read_unlock(&domlist_read_lock);
}
+#ifdef CONFIG_MGMT_HYPERCALLS
void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds)
{
d->time_offset.seconds = time_offset_seconds;
@@ -1849,6 +1850,7 @@ void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds)
rtc_update_clock(d);
update_domain_wallclock_time(d);
}
+#endif /* CONFIG_MGMT_HYPERCALLS */
int cpu_frequency_change(u64 freq)
{
--
2.34.1