Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3265105ybl; Fri, 20 Dec 2019 06:33:27 -0800 (PST) X-Google-Smtp-Source: APXvYqzGfRIEeYpK52gTInyxJ0QR+9CgJtjANA2GgyrSiD6hLFboRdZMYEKzXwwDTdzyvUitrFXP X-Received: by 2002:a9d:1e88:: with SMTP id n8mr15564819otn.369.1576852407194; Fri, 20 Dec 2019 06:33:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576852407; cv=none; d=google.com; s=arc-20160816; b=drAXGV703sw08juM7DsJxhOt0yZoLbLTvlHn/MWOXFrZuGiY91HLibYnPI29qw7Sbo +D2da3/eQi/XtiHXEGCY73d1tUc/OYsIY69ErD75EmY9xiZSUU5ACdxuDCQBJGtg6wwR 7T/Zd4krBmpwJMpJVnc1NWEGLXgRUqTowF/AAiGWdU0js792XVV9QQwR3ZJmJWXyCAjh zydQj1YdprT48RigXeAS3YpIcTSYs3+TnKRDFbe54hcgNHLIciTJ2vf/OBOl0w2I9Dnp TtfIBAcQyINaMY74QcPzlpvl3awZcS5vmiwevbIokD8qj+lHgXqmhpkgXf3cG5dCuo0k Kmkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=jd6GciWjnG16LOMdwZb3XKeTHNJ5tDDZ5irENosrpEo=; b=VZiVj1U64fGIlOqgk6c7wmrbi6tZ2YpO2jOVRAvx1dta+COLT+MF5EX2Ni/OIf2f8f lxAp7jUoqsloVaqAZ+oCN5emow9lHIxIkVP37lMk+9HxRzU7acsK9yiWr0JZI25azwnc yk9N3y+j0LPk719a5AeBH/yeV2Gb8UMfL8ugmBUVO7q2N8sFIq0TN3NHQAubrU7fNoIm pdukHg3v8Q7p50ZIJdA6cEflOKTmvH03i7HpnDixVXzOtjVsPnTZays7MbjcJa4/0IbK C8CyrVOMzsf6pOYjzPvifIZttWa/sQnRYkHeDafhubFAUowOozEeGLeF3p6hHbb6F46s LurQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u8si5301586otq.262.2019.12.20.06.33.15; Fri, 20 Dec 2019 06:33:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727663AbfLTOcA (ORCPT + 99 others); Fri, 20 Dec 2019 09:32:00 -0500 Received: from foss.arm.com ([217.140.110.172]:51312 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727983AbfLTObB (ORCPT ); Fri, 20 Dec 2019 09:31:01 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id DB5FF11D4; Fri, 20 Dec 2019 06:31:00 -0800 (PST) Received: from e119886-lin.cambridge.arm.com (unknown [10.37.6.20]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0EEF63F718; Fri, 20 Dec 2019 06:30:58 -0800 (PST) From: Andrew Murray To: Marc Zyngier , Catalin Marinas , Will Deacon Cc: Sudeep Holla , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Mark Rutland Subject: [PATCH v2 13/18] perf: arm_spe: Add KVM structure for obtaining IRQ info Date: Fri, 20 Dec 2019 14:30:20 +0000 Message-Id: <20191220143025.33853-14-andrew.murray@arm.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191220143025.33853-1-andrew.murray@arm.com> References: <20191220143025.33853-1-andrew.murray@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. 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; +} + +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; +} +#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) \ -- 2.21.0