[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] evtchn: rename and adjust guest_enabled_event()
commit 451a9098608976ec164307a80eef40a2186fd5b3 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Fri Oct 23 10:11:46 2020 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Oct 23 10:11:46 2020 +0200 evtchn: rename and adjust guest_enabled_event() The function isn't about an "event" in general, but about a vIRQ. The function also failed to honor global vIRQ-s, instead assuming the caller would pass vCPU 0 in such a case. While at it also adjust the - types the function uses, - single user to make use of domain_vcpu(). Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- xen/arch/x86/cpu/mcheck/vmce.h | 6 +++--- xen/common/event_channel.c | 10 ++++++++-- xen/include/xen/event.h | 4 ++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/cpu/mcheck/vmce.h b/xen/arch/x86/cpu/mcheck/vmce.h index 2797e00275..2e9b32a9bd 100644 --- a/xen/arch/x86/cpu/mcheck/vmce.h +++ b/xen/arch/x86/cpu/mcheck/vmce.h @@ -5,9 +5,9 @@ int vmce_init(struct cpuinfo_x86 *c); -#define dom0_vmce_enabled() (hardware_domain && hardware_domain->max_vcpus \ - && hardware_domain->vcpu[0] \ - && guest_enabled_event(hardware_domain->vcpu[0], VIRQ_MCA)) +#define dom0_vmce_enabled() \ + (hardware_domain && \ + evtchn_virq_enabled(domain_vcpu(hardware_domain, 0), VIRQ_MCA)) int unmmap_broken_page(struct domain *d, mfn_t mfn, unsigned long gfn); diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index 8578af5f6b..37d0b75384 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -778,9 +778,15 @@ out: return ret; } -int guest_enabled_event(struct vcpu *v, uint32_t virq) +bool evtchn_virq_enabled(const struct vcpu *v, unsigned int virq) { - return ((v != NULL) && (v->virq_to_evtchn[virq] != 0)); + if ( !v ) + return false; + + if ( virq_is_global(virq) && v->vcpu_id ) + v = domain_vcpu(v->domain, 0); + + return v->virq_to_evtchn[virq]; } void send_guest_vcpu_virq(struct vcpu *v, uint32_t virq) diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h index 6df989b51b..2ed4be78f6 100644 --- a/xen/include/xen/event.h +++ b/xen/include/xen/event.h @@ -85,8 +85,8 @@ int alloc_unbound_xen_event_channel( xen_event_channel_notification_t notification_fn); void free_xen_event_channel(struct domain *d, int port); -/* Query if event channel is in use by the guest */ -int guest_enabled_event(struct vcpu *v, uint32_t virq); +/* Query whether a vIRQ is in use by the guest. */ +bool evtchn_virq_enabled(const struct vcpu *v, unsigned int virq); /* Notify remote end of a Xen-attached event channel.*/ void notify_via_xen_event_channel(struct domain *ld, int lport); -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |