[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aCUlbDNoxQ-65mc0@google.com>
Date: Wed, 14 May 2025 16:21:16 -0700
From: Sean Christopherson <seanjc@...gle.com>
To: Mingwei Zhang <mizhang@...gle.com>
Cc: Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>,
Arnaldo Carvalho de Melo <acme@...nel.org>, Namhyung Kim <namhyung@...nel.org>,
Paolo Bonzini <pbonzini@...hat.com>, Mark Rutland <mark.rutland@....com>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Jiri Olsa <jolsa@...nel.org>,
Ian Rogers <irogers@...gle.com>, Adrian Hunter <adrian.hunter@...el.com>, Liang@...gle.com,
Kan <kan.liang@...ux.intel.com>, "H. Peter Anvin" <hpa@...or.com>,
linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org,
kvm@...r.kernel.org, linux-kselftest@...r.kernel.org,
Yongwei Ma <yongwei.ma@...el.com>, Xiong Zhang <xiong.y.zhang@...ux.intel.com>,
Dapeng Mi <dapeng1.mi@...ux.intel.com>, Jim Mattson <jmattson@...gle.com>,
Sandipan Das <sandipan.das@....com>, Zide Chen <zide.chen@...el.com>,
Eranian Stephane <eranian@...gle.com>, Shukla Manali <Manali.Shukla@....com>,
Nikunj Dadhania <nikunj.dadhania@....com>
Subject: Re: [PATCH v4 06/38] x86/irq: Factor out common code for installing
kvm irq handler
On Mon, Mar 24, 2025, Mingwei Zhang wrote:
> diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
> index 385e3a5fc304..18cd418fe106 100644
> --- a/arch/x86/kernel/irq.c
> +++ b/arch/x86/kernel/irq.c
> @@ -312,16 +312,22 @@ DEFINE_IDTENTRY_SYSVEC(sysvec_x86_platform_ipi)
> static void dummy_handler(void) {}
> static void (*kvm_posted_intr_wakeup_handler)(void) = dummy_handler;
>
> -void kvm_set_posted_intr_wakeup_handler(void (*handler)(void))
> +void x86_set_kvm_irq_handler(u8 vector, void (*handler)(void))
> {
> - if (handler)
> + if (!handler)
> + handler = dummy_handler;
> +
> + if (vector == POSTED_INTR_WAKEUP_VECTOR &&
> + (handler == dummy_handler ||
> + kvm_posted_intr_wakeup_handler == dummy_handler))
> kvm_posted_intr_wakeup_handler = handler;
> - else {
> - kvm_posted_intr_wakeup_handler = dummy_handler;
> + else
> + WARN_ON_ONCE(1);
> +
> + if (handler == dummy_handler)
Eww. Aside from the fact that the dummy_handler implementation is pointless
overhead, I don't think KVM should own the IRQ vector. Given that perf owns the
LVTPC, i.e. responsible for switching between NMI and the medited PMI IRQ, I
think perf should also own the vector. KVM can then use the existing perf guest
callbacks to wire up its PMI handler.
And with that, this patch can be dropped.
Powered by blists - more mailing lists