From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 19591C2D0C0 for ; Sun, 22 Dec 2019 11:24:25 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id 9E25A208C3 for ; Sun, 22 Dec 2019 11:24:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9E25A208C3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvmarm-bounces@lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 2337E4AF31; Sun, 22 Dec 2019 06:24:24 -0500 (EST) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mWegk8adkE+8; Sun, 22 Dec 2019 06:24:23 -0500 (EST) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 10EDE4AF18; Sun, 22 Dec 2019 06:24:23 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 247BD4AF0B for ; Sun, 22 Dec 2019 06:24:22 -0500 (EST) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZJB+2KbcjbQh for ; Sun, 22 Dec 2019 06:24:21 -0500 (EST) Received: from inca-roads.misterjones.org (inca-roads.misterjones.org [213.251.177.50]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id EC2854AEE8 for ; Sun, 22 Dec 2019 06:24:20 -0500 (EST) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=big-swifty.misterjones.org) by cheepnis.misterjones.org with esmtpsa (TLSv1.2:AES256-GCM-SHA384:256) (Exim 4.80) (envelope-from ) id 1iizLM-0006ag-LE; Sun, 22 Dec 2019 12:24:17 +0100 Date: Sun, 22 Dec 2019 11:24:13 +0000 Message-ID: <868sn4iowy.wl-maz@kernel.org> From: Marc Zyngier To: Andrew Murray Subject: Re: [PATCH v2 13/18] perf: arm_spe: Add KVM structure for obtaining IRQ info In-Reply-To: <20191220143025.33853-14-andrew.murray@arm.com> References: <20191220143025.33853-1-andrew.murray@arm.com> <20191220143025.33853-14-andrew.murray@arm.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 EasyPG/1.0.0 Emacs/26 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: andrew.murray@arm.com, catalin.marinas@arm.com, will@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, sudeep.holla@arm.com, kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on cheepnis.misterjones.org); SAEximRunCond expanded to false Cc: kvm@vger.kernel.org, Catalin Marinas , linux-kernel@vger.kernel.org, Sudeep Holla , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu On Fri, 20 Dec 2019 14:30:20 +0000, Andrew Murray wrote: > > KVM requires knowledge of the physical SPE IRQ number such that it can > associate it with any virtual IRQ for guests that require SPE emulation. This is at best extremely odd. The only reason for KVM to obtain this IRQ number is if it has exclusive access to the device. This obviously isn't the case, as this device is shared between host and guest. > Let's create a structure to hold this information and an accessor that > KVM can use to retrieve this information. > > We expect that each SPE device will have the same physical PPI number > and thus will warn when this is not the case. > > Signed-off-by: Andrew Murray > --- > drivers/perf/arm_spe_pmu.c | 23 +++++++++++++++++++++++ > include/kvm/arm_spe.h | 6 ++++++ > 2 files changed, 29 insertions(+) > > diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c > index 4e4984a55cd1..2d24af4cfcab 100644 > --- a/drivers/perf/arm_spe_pmu.c > +++ b/drivers/perf/arm_spe_pmu.c > @@ -34,6 +34,9 @@ > #include > #include > > +#include > +#include > + > #include > #include > #include > @@ -1127,6 +1130,24 @@ static void arm_spe_pmu_dev_teardown(struct arm_spe_pmu *spe_pmu) > free_percpu_irq(spe_pmu->irq, spe_pmu->handle); > } > > +#ifdef CONFIG_KVM_ARM_SPE > +static struct arm_spe_kvm_info arm_spe_kvm_info; > + > +struct arm_spe_kvm_info *arm_spe_get_kvm_info(void) > +{ > + return &arm_spe_kvm_info; > +} How does this work when SPE is built as a module? > + > +static void arm_spe_populate_kvm_info(struct arm_spe_pmu *spe_pmu) > +{ > + WARN_ON_ONCE(arm_spe_kvm_info.physical_irq != 0 && > + arm_spe_kvm_info.physical_irq != spe_pmu->irq); > + arm_spe_kvm_info.physical_irq = spe_pmu->irq; What does 'physical' means here? It's an IRQ in the Linux sense, so it's already some random number that bears no relation to anything 'physical'. > +} > +#else > +static void arm_spe_populate_kvm_info(struct arm_spe_pmu *spe_pmu) {} > +#endif > + > /* Driver and device probing */ > static int arm_spe_pmu_irq_probe(struct arm_spe_pmu *spe_pmu) > { > @@ -1149,6 +1170,8 @@ static int arm_spe_pmu_irq_probe(struct arm_spe_pmu *spe_pmu) > } > > spe_pmu->irq = irq; > + arm_spe_populate_kvm_info(spe_pmu); > + > return 0; > } > > diff --git a/include/kvm/arm_spe.h b/include/kvm/arm_spe.h > index d1f3c564dfd0..9c65130d726d 100644 > --- a/include/kvm/arm_spe.h > +++ b/include/kvm/arm_spe.h > @@ -17,6 +17,12 @@ struct kvm_spe { > bool irq_level; > }; > > +struct arm_spe_kvm_info { > + int physical_irq; > +}; > + > +struct arm_spe_kvm_info *arm_spe_get_kvm_info(void); > + > #ifdef CONFIG_KVM_ARM_SPE > #define kvm_arm_spe_v1_ready(v) ((v)->arch.spe.ready) > #define kvm_arm_spe_irq_initialized(v) \ M. -- Jazz is not dead, it just smells funny. _______________________________________________ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4EC8DC2D0D4 for ; Sun, 22 Dec 2019 11:24:26 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 23F59208C3 for ; Sun, 22 Dec 2019 11:24:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="NqQxHVQ6" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 23F59208C3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Subject:To:From:Message-ID:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=1v+5/MdXE0ktjaUsqvId8qI9UaHdSr4wQyj1AivHQFI=; b=NqQxHVQ6/SY67i Xm910lDBwDSKkebWKxFWwswSkkEvCvnKEPSKYnfDkuiPfK5Cgji1x77/1vHF15fc1pm8CIA1XMrPh OScuKg3X3mq9LAg+BH4Lxt7CjIHai1rDx3alG/S8qXoTGinalFSMXKMCEvpd1g5nzYvfB7x7LOBdB VPEsSZ8dyky6Ifq1QL+y9S15rS3UDPVp+2HT192LC4hQEoXJyJbS1e+1aiT2iepdxgvFyMxpc76o2 wQdNNJWESTMJ8zIqgghTStB/qjdFJuTNRpwjx6HxAmhf2FaWRfiDxjqCN00PECFB2UFWLPj87lRvc j68gyGJh1Q12AJfaA+sA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iizLV-0007Au-DA; Sun, 22 Dec 2019 11:24:25 +0000 Received: from inca-roads.misterjones.org ([213.251.177.50]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iizLS-0007AQ-88 for linux-arm-kernel@lists.infradead.org; Sun, 22 Dec 2019 11:24:23 +0000 Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=big-swifty.misterjones.org) by cheepnis.misterjones.org with esmtpsa (TLSv1.2:AES256-GCM-SHA384:256) (Exim 4.80) (envelope-from ) id 1iizLM-0006ag-LE; Sun, 22 Dec 2019 12:24:17 +0100 Date: Sun, 22 Dec 2019 11:24:13 +0000 Message-ID: <868sn4iowy.wl-maz@kernel.org> From: Marc Zyngier To: Andrew Murray Subject: Re: [PATCH v2 13/18] perf: arm_spe: Add KVM structure for obtaining IRQ info In-Reply-To: <20191220143025.33853-14-andrew.murray@arm.com> References: <20191220143025.33853-1-andrew.murray@arm.com> <20191220143025.33853-14-andrew.murray@arm.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 EasyPG/1.0.0 Emacs/26 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: andrew.murray@arm.com, catalin.marinas@arm.com, will@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, sudeep.holla@arm.com, kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on cheepnis.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191222_032422_433758_44A36706 X-CRM114-Status: GOOD ( 18.48 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kvm@vger.kernel.org, Catalin Marinas , linux-kernel@vger.kernel.org, Sudeep Holla , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Fri, 20 Dec 2019 14:30:20 +0000, Andrew Murray wrote: > > KVM requires knowledge of the physical SPE IRQ number such that it can > associate it with any virtual IRQ for guests that require SPE emulation. This is at best extremely odd. The only reason for KVM to obtain this IRQ number is if it has exclusive access to the device. This obviously isn't the case, as this device is shared between host and guest. > Let's create a structure to hold this information and an accessor that > KVM can use to retrieve this information. > > We expect that each SPE device will have the same physical PPI number > and thus will warn when this is not the case. > > Signed-off-by: Andrew Murray > --- > drivers/perf/arm_spe_pmu.c | 23 +++++++++++++++++++++++ > include/kvm/arm_spe.h | 6 ++++++ > 2 files changed, 29 insertions(+) > > diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c > index 4e4984a55cd1..2d24af4cfcab 100644 > --- a/drivers/perf/arm_spe_pmu.c > +++ b/drivers/perf/arm_spe_pmu.c > @@ -34,6 +34,9 @@ > #include > #include > > +#include > +#include > + > #include > #include > #include > @@ -1127,6 +1130,24 @@ static void arm_spe_pmu_dev_teardown(struct arm_spe_pmu *spe_pmu) > free_percpu_irq(spe_pmu->irq, spe_pmu->handle); > } > > +#ifdef CONFIG_KVM_ARM_SPE > +static struct arm_spe_kvm_info arm_spe_kvm_info; > + > +struct arm_spe_kvm_info *arm_spe_get_kvm_info(void) > +{ > + return &arm_spe_kvm_info; > +} How does this work when SPE is built as a module? > + > +static void arm_spe_populate_kvm_info(struct arm_spe_pmu *spe_pmu) > +{ > + WARN_ON_ONCE(arm_spe_kvm_info.physical_irq != 0 && > + arm_spe_kvm_info.physical_irq != spe_pmu->irq); > + arm_spe_kvm_info.physical_irq = spe_pmu->irq; What does 'physical' means here? It's an IRQ in the Linux sense, so it's already some random number that bears no relation to anything 'physical'. > +} > +#else > +static void arm_spe_populate_kvm_info(struct arm_spe_pmu *spe_pmu) {} > +#endif > + > /* Driver and device probing */ > static int arm_spe_pmu_irq_probe(struct arm_spe_pmu *spe_pmu) > { > @@ -1149,6 +1170,8 @@ static int arm_spe_pmu_irq_probe(struct arm_spe_pmu *spe_pmu) > } > > spe_pmu->irq = irq; > + arm_spe_populate_kvm_info(spe_pmu); > + > return 0; > } > > diff --git a/include/kvm/arm_spe.h b/include/kvm/arm_spe.h > index d1f3c564dfd0..9c65130d726d 100644 > --- a/include/kvm/arm_spe.h > +++ b/include/kvm/arm_spe.h > @@ -17,6 +17,12 @@ struct kvm_spe { > bool irq_level; > }; > > +struct arm_spe_kvm_info { > + int physical_irq; > +}; > + > +struct arm_spe_kvm_info *arm_spe_get_kvm_info(void); > + > #ifdef CONFIG_KVM_ARM_SPE > #define kvm_arm_spe_v1_ready(v) ((v)->arch.spe.ready) > #define kvm_arm_spe_irq_initialized(v) \ M. -- Jazz is not dead, it just smells funny. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8945C2D0C0 for ; Sun, 22 Dec 2019 11:24:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8B6BB208C3 for ; Sun, 22 Dec 2019 11:24:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577013862; bh=s/P9uI0VwTvGyMNCo3mOf06aSHq63arnkciTbL8Y6XA=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=hYD5FKfNsVzHwAfAF3s/oR6ooHZm/NTM+vjBaibNxumgRRwDfUEzy3WqkgZfScNxR Wg7Nz9IpxJ3VRzuIJegSRNQK9BgNhnruXJSAWnJXBnZidooen8vXvz4vyfvISYyU+Z lAMxa+9qZAOyTNTFq9a3rbeiAq12bed7pwDo0iUI= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726267AbfLVLYT (ORCPT ); Sun, 22 Dec 2019 06:24:19 -0500 Received: from inca-roads.misterjones.org ([213.251.177.50]:42757 "EHLO inca-roads.misterjones.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725977AbfLVLYT (ORCPT ); Sun, 22 Dec 2019 06:24:19 -0500 Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=big-swifty.misterjones.org) by cheepnis.misterjones.org with esmtpsa (TLSv1.2:AES256-GCM-SHA384:256) (Exim 4.80) (envelope-from ) id 1iizLM-0006ag-LE; Sun, 22 Dec 2019 12:24:17 +0100 Date: Sun, 22 Dec 2019 11:24:13 +0000 Message-ID: <868sn4iowy.wl-maz@kernel.org> From: Marc Zyngier To: Andrew Murray Cc: Catalin Marinas , Will Deacon , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Sudeep Holla , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v2 13/18] perf: arm_spe: Add KVM structure for obtaining IRQ info In-Reply-To: <20191220143025.33853-14-andrew.murray@arm.com> References: <20191220143025.33853-1-andrew.murray@arm.com> <20191220143025.33853-14-andrew.murray@arm.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 EasyPG/1.0.0 Emacs/26 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: andrew.murray@arm.com, catalin.marinas@arm.com, will@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, sudeep.holla@arm.com, kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on cheepnis.misterjones.org); SAEximRunCond expanded to false Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On Fri, 20 Dec 2019 14:30:20 +0000, Andrew Murray wrote: > > KVM requires knowledge of the physical SPE IRQ number such that it can > associate it with any virtual IRQ for guests that require SPE emulation. This is at best extremely odd. The only reason for KVM to obtain this IRQ number is if it has exclusive access to the device. This obviously isn't the case, as this device is shared between host and guest. > Let's create a structure to hold this information and an accessor that > KVM can use to retrieve this information. > > We expect that each SPE device will have the same physical PPI number > and thus will warn when this is not the case. > > Signed-off-by: Andrew Murray > --- > drivers/perf/arm_spe_pmu.c | 23 +++++++++++++++++++++++ > include/kvm/arm_spe.h | 6 ++++++ > 2 files changed, 29 insertions(+) > > diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c > index 4e4984a55cd1..2d24af4cfcab 100644 > --- a/drivers/perf/arm_spe_pmu.c > +++ b/drivers/perf/arm_spe_pmu.c > @@ -34,6 +34,9 @@ > #include > #include > > +#include > +#include > + > #include > #include > #include > @@ -1127,6 +1130,24 @@ static void arm_spe_pmu_dev_teardown(struct arm_spe_pmu *spe_pmu) > free_percpu_irq(spe_pmu->irq, spe_pmu->handle); > } > > +#ifdef CONFIG_KVM_ARM_SPE > +static struct arm_spe_kvm_info arm_spe_kvm_info; > + > +struct arm_spe_kvm_info *arm_spe_get_kvm_info(void) > +{ > + return &arm_spe_kvm_info; > +} How does this work when SPE is built as a module? > + > +static void arm_spe_populate_kvm_info(struct arm_spe_pmu *spe_pmu) > +{ > + WARN_ON_ONCE(arm_spe_kvm_info.physical_irq != 0 && > + arm_spe_kvm_info.physical_irq != spe_pmu->irq); > + arm_spe_kvm_info.physical_irq = spe_pmu->irq; What does 'physical' means here? It's an IRQ in the Linux sense, so it's already some random number that bears no relation to anything 'physical'. > +} > +#else > +static void arm_spe_populate_kvm_info(struct arm_spe_pmu *spe_pmu) {} > +#endif > + > /* Driver and device probing */ > static int arm_spe_pmu_irq_probe(struct arm_spe_pmu *spe_pmu) > { > @@ -1149,6 +1170,8 @@ static int arm_spe_pmu_irq_probe(struct arm_spe_pmu *spe_pmu) > } > > spe_pmu->irq = irq; > + arm_spe_populate_kvm_info(spe_pmu); > + > return 0; > } > > diff --git a/include/kvm/arm_spe.h b/include/kvm/arm_spe.h > index d1f3c564dfd0..9c65130d726d 100644 > --- a/include/kvm/arm_spe.h > +++ b/include/kvm/arm_spe.h > @@ -17,6 +17,12 @@ struct kvm_spe { > bool irq_level; > }; > > +struct arm_spe_kvm_info { > + int physical_irq; > +}; > + > +struct arm_spe_kvm_info *arm_spe_get_kvm_info(void); > + > #ifdef CONFIG_KVM_ARM_SPE > #define kvm_arm_spe_v1_ready(v) ((v)->arch.spe.ready) > #define kvm_arm_spe_irq_initialized(v) \ M. -- Jazz is not dead, it just smells funny.