On 09.02.2026 10:40, Oleksii Kurochko wrote: > > On 2/9/26 10:07 AM, Jan Beulich wrote: >> On 06.02.2026 17:36, Oleksii Kurochko wrote: >>> On 1/22/26 5:47 PM, Oleksii Kurochko wrote: >>>> Add a RISC-V implementation of vcpu_kick(), which unblocks the target >>>> vCPU and sends an event check IPI if the vCPU was running on another >>>> processor. This mirrors the behavior of Arm and enables proper vCPU >>>> wakeup handling on RISC-V. >>>> >>>> Remove the stub implementation from stubs.c, as it is now provided by >>>> arch/riscv/domain.c. >>>> >>>> Signed-off-by: Oleksii Kurochko <[email protected]> >>>> Acked-by: Jan Beulich <[email protected]> >>>> --- >>>> Changes in v2: >>>> - Add Acked-by: Jan Beulich <[email protected]>. >>>> --- >>>> xen/arch/riscv/domain.c | 14 ++++++++++++++ >>>> xen/arch/riscv/stubs.c | 5 ----- >>>> 2 files changed, 14 insertions(+), 5 deletions(-) >>>> >>>> diff --git a/xen/arch/riscv/domain.c b/xen/arch/riscv/domain.c >>>> index e38c0db62cac..13ac384c4b76 100644 >>>> --- a/xen/arch/riscv/domain.c >>>> +++ b/xen/arch/riscv/domain.c >>>> @@ -1,8 +1,10 @@ >>>> /* SPDX-License-Identifier: GPL-2.0-only */ >>>> >>>> +#include <xen/cpumask.h> >>>> #include <xen/init.h> >>>> #include <xen/mm.h> >>>> #include <xen/sched.h> >>>> +#include <xen/smp.h> >>>> #include <xen/vmap.h> >>>> >>>> #include <asm/bitops.h> >>>> @@ -240,3 +242,15 @@ void vcpu_sync_interrupts(struct vcpu *v) >>>> # error "Update vsieh" >>>> #endif >>>> } >>>> + >>>> +void vcpu_kick(struct vcpu *v) >>>> +{ >>>> + bool running = v->is_running; >>>> + >>>> + vcpu_unblock(v); >>>> + if ( running && v != current ) >>>> + { >>>> + perfc_incr(vcpu_kick); >>> Because of this it is needed to introduce: >>> PERFCOUNTER(vcpu_kick, "vcpu: notify other vcpu") >>> Otherwise randconfig build will fail when CONFIG_PERF_COUNTERS=y. >>> >>> I would like to ask if it would be okay to add it >>> xen/include/xen/perfc_defn.h >>> just after PERFCOUNTER(need_flush_tlb_flush,...) or would it be better to >>> have >>> it in arch specific perfc_defn.h? >> Arch-specific please - it's not used by x86 nor ppc. > > Then I will do the following changes: > > diff --git a/xen/arch/riscv/include/asm/Makefile > b/xen/arch/riscv/include/asm/Makefile > index 3824f31c395c..86c56251d5d7 100644 > --- a/xen/arch/riscv/include/asm/Makefile > +++ b/xen/arch/riscv/include/asm/Makefile > @@ -7,7 +7,6 @@ generic-y += hypercall.h > generic-y += iocap.h > generic-y += irq-dt.h > generic-y += percpu.h > -generic-y += perfc_defn.h > generic-y += random.h > generic-y += softirq.h > generic-y += vm_event.h > diff --git a/xen/arch/riscv/include/asm/perfc_defn.h > b/xen/arch/riscv/include/asm/perfc_defn.h > new file mode 100644 > index 000000000000..4fc161f1abad > --- /dev/null > +++ b/xen/arch/riscv/include/asm/perfc_defn.h > @@ -0,0 +1,7 @@ > +/* This file is intended to be included multiple times. */ > +/*#ifndef __XEN_PERFC_DEFN_H__*/ > +/*#define __XEN_PERFC_DEFN_H__*/ > + > +PERFCOUNTER(vcpu_kick, "vcpu: notify other vcpu") > + > +/*#endif*/ /* __XEN_PERFC_DEFN_H__ */ > > and add the following to commit message: > Since vcpu_kick() calls perfc_incr(vcpu_kick), add perfcounter for > vcpu_kick to handle the case when CONFIG_PERF_COUNTERS=y. Although > CONFIG_PERF_COUNTERS is not enabled by default, it can be enabled, > for example, by randconfig what will lead to CI build issues. > > Note that I keep __XEN_PERFC_DEFN_H__ as other archictectures use the same, > not something like ASM__<arch>__PERFC_DEFN_H.
Please don't copy this mistake. I actually question the commented-out pre- processor directives altogether: Misra also has a rule against commented- out code (directive 4.4, which we didn't accept [yet], but which exists nevertheless). Yet at the very least what's commented out should not be obviously wrong. Jan
