All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoffer Dall <christoffer.dall@linaro.org>
To: shannon.zhao@linaro.org
Cc: kvm@vger.kernel.org, marc.zyngier@arm.com, will.deacon@arm.com,
	kvmarm@lists.cs.columbia.edu,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 06/18] KVM: ARM64: Add reset and access handlers for PMCEID0_EL0 and PMCEID1_EL0 register
Date: Fri, 17 Jul 2015 15:51:07 +0200	[thread overview]
Message-ID: <20150717135107.GQ14024@cbox> (raw)
In-Reply-To: <1436149068-3784-7-git-send-email-shannon.zhao@linaro.org>

On Mon, Jul 06, 2015 at 10:17:36AM +0800, shannon.zhao@linaro.org wrote:
> From: Shannon Zhao <shannon.zhao@linaro.org>
> 
> Add reset handler which gets host value of PMCEID0_EL0 or PMCEID1_EL0.
> Add access handler which emulates writing and reading PMCEID0_EL0 or
> PMCEID1_EL0 register.
> 
> Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
> ---
>  arch/arm64/kvm/sys_regs.c | 36 ++++++++++++++++++++++++++++++++++--
>  1 file changed, 34 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
> index 69c8c48..1df9ef3 100644
> --- a/arch/arm64/kvm/sys_regs.c
> +++ b/arch/arm64/kvm/sys_regs.c
> @@ -246,6 +246,19 @@ static void reset_pmcr_el0(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
>  				       | (ARMV8_PMCR_MASK & 0xdecafbad);
>  }
>  
> +static void reset_pmceid(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
> +{
> +	u32 pmceid;
> +
> +	if (r->reg == PMCEID0_EL0) {
> +		asm volatile("mrs %0, pmceid0_el0\n" : "=r" (pmceid));
> +		vcpu_sys_reg(vcpu, r->reg) = pmceid;
> +	} else {

add /* PMCEID1_EL1 */
> +		asm volatile("mrs %0, pmceid1_el0\n" : "=r" (pmceid));
> +		vcpu_sys_reg(vcpu, r->reg) = pmceid;
> +	}
> +}
> +
>  /* PMCR_EL0 accessor. Only called as long as MDCR_EL2.TPMCR is set. */
>  static bool access_pmcr(struct kvm_vcpu *vcpu,
>  			const struct sys_reg_params *p,
> @@ -299,6 +312,25 @@ static bool access_pmselr(struct kvm_vcpu *vcpu,
>  	return true;
>  }
>  
> +/* PMCEID0_EL0 and PMCEID1_EL0 accessor. */
> +static bool access_pmceid(struct kvm_vcpu *vcpu,
> +			  const struct sys_reg_params *p,
> +			  const struct sys_reg_desc *r)
> +{
> +	unsigned long val;
> +
> +	if (p->is_write) {
> +		return ignore_write(vcpu, p);
> +	} else {
> +		if (!p->is_aarch32)
> +			val = vcpu_sys_reg(vcpu, r->reg);
> +		else
> +			val = vcpu_cp15(vcpu, r->reg);
> +		*vcpu_reg(vcpu, p->Rt) = val;
> +		return true;
> +	}
> +}
> +
>  /* Silly macro to expand the DBG{BCR,BVR,WVR,WCR}n_EL1 registers in one go */
>  #define DBG_BCR_BVR_WCR_WVR_EL1(n)					\
>  	/* DBGBVRn_EL1 */						\
> @@ -508,10 +540,10 @@ static const struct sys_reg_desc sys_reg_descs[] = {
>  	  access_pmselr, reset_unknown, PMSELR_EL0 },
>  	/* PMCEID0_EL0 */
>  	{ Op0(0b11), Op1(0b011), CRn(0b1001), CRm(0b1100), Op2(0b110),
> -	  trap_raz_wi },
> +	  access_pmceid, reset_pmceid, PMCEID0_EL0, },
>  	/* PMCEID1_EL0 */
>  	{ Op0(0b11), Op1(0b011), CRn(0b1001), CRm(0b1100), Op2(0b111),
> -	  trap_raz_wi },
> +	  access_pmceid, reset_pmceid, PMCEID1_EL0, },
>  	/* PMCCNTR_EL0 */
>  	{ Op0(0b11), Op1(0b011), CRn(0b1001), CRm(0b1101), Op2(0b000),
>  	  trap_raz_wi },
> -- 
> 2.1.0
> 
same comment wrt. 32-bit table.

-Christoffer

WARNING: multiple messages have this Message-ID (diff)
From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 06/18] KVM: ARM64: Add reset and access handlers for PMCEID0_EL0 and PMCEID1_EL0 register
Date: Fri, 17 Jul 2015 15:51:07 +0200	[thread overview]
Message-ID: <20150717135107.GQ14024@cbox> (raw)
In-Reply-To: <1436149068-3784-7-git-send-email-shannon.zhao@linaro.org>

On Mon, Jul 06, 2015 at 10:17:36AM +0800, shannon.zhao at linaro.org wrote:
> From: Shannon Zhao <shannon.zhao@linaro.org>
> 
> Add reset handler which gets host value of PMCEID0_EL0 or PMCEID1_EL0.
> Add access handler which emulates writing and reading PMCEID0_EL0 or
> PMCEID1_EL0 register.
> 
> Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
> ---
>  arch/arm64/kvm/sys_regs.c | 36 ++++++++++++++++++++++++++++++++++--
>  1 file changed, 34 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
> index 69c8c48..1df9ef3 100644
> --- a/arch/arm64/kvm/sys_regs.c
> +++ b/arch/arm64/kvm/sys_regs.c
> @@ -246,6 +246,19 @@ static void reset_pmcr_el0(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
>  				       | (ARMV8_PMCR_MASK & 0xdecafbad);
>  }
>  
> +static void reset_pmceid(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
> +{
> +	u32 pmceid;
> +
> +	if (r->reg == PMCEID0_EL0) {
> +		asm volatile("mrs %0, pmceid0_el0\n" : "=r" (pmceid));
> +		vcpu_sys_reg(vcpu, r->reg) = pmceid;
> +	} else {

add /* PMCEID1_EL1 */
> +		asm volatile("mrs %0, pmceid1_el0\n" : "=r" (pmceid));
> +		vcpu_sys_reg(vcpu, r->reg) = pmceid;
> +	}
> +}
> +
>  /* PMCR_EL0 accessor. Only called as long as MDCR_EL2.TPMCR is set. */
>  static bool access_pmcr(struct kvm_vcpu *vcpu,
>  			const struct sys_reg_params *p,
> @@ -299,6 +312,25 @@ static bool access_pmselr(struct kvm_vcpu *vcpu,
>  	return true;
>  }
>  
> +/* PMCEID0_EL0 and PMCEID1_EL0 accessor. */
> +static bool access_pmceid(struct kvm_vcpu *vcpu,
> +			  const struct sys_reg_params *p,
> +			  const struct sys_reg_desc *r)
> +{
> +	unsigned long val;
> +
> +	if (p->is_write) {
> +		return ignore_write(vcpu, p);
> +	} else {
> +		if (!p->is_aarch32)
> +			val = vcpu_sys_reg(vcpu, r->reg);
> +		else
> +			val = vcpu_cp15(vcpu, r->reg);
> +		*vcpu_reg(vcpu, p->Rt) = val;
> +		return true;
> +	}
> +}
> +
>  /* Silly macro to expand the DBG{BCR,BVR,WVR,WCR}n_EL1 registers in one go */
>  #define DBG_BCR_BVR_WCR_WVR_EL1(n)					\
>  	/* DBGBVRn_EL1 */						\
> @@ -508,10 +540,10 @@ static const struct sys_reg_desc sys_reg_descs[] = {
>  	  access_pmselr, reset_unknown, PMSELR_EL0 },
>  	/* PMCEID0_EL0 */
>  	{ Op0(0b11), Op1(0b011), CRn(0b1001), CRm(0b1100), Op2(0b110),
> -	  trap_raz_wi },
> +	  access_pmceid, reset_pmceid, PMCEID0_EL0, },
>  	/* PMCEID1_EL0 */
>  	{ Op0(0b11), Op1(0b011), CRn(0b1001), CRm(0b1100), Op2(0b111),
> -	  trap_raz_wi },
> +	  access_pmceid, reset_pmceid, PMCEID1_EL0, },
>  	/* PMCCNTR_EL0 */
>  	{ Op0(0b11), Op1(0b011), CRn(0b1001), CRm(0b1101), Op2(0b000),
>  	  trap_raz_wi },
> -- 
> 2.1.0
> 
same comment wrt. 32-bit table.

-Christoffer

  reply	other threads:[~2015-07-17 13:38 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-06  2:17 [PATCH 00/18] KVM: ARM64: Add guest PMU support shannon.zhao
2015-07-06  2:17 ` shannon.zhao at linaro.org
2015-07-06  2:17 ` [PATCH 01/18] ARM64: Move PMU register related defines to asm/pmu.h shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-08 17:18   ` Will Deacon
2015-07-08 17:18     ` Will Deacon
2015-07-06  2:17 ` [PATCH 02/18] KVM: ARM64: Add initial support for PMU shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-16 18:25   ` Christoffer Dall
2015-07-16 18:25     ` Christoffer Dall
2015-07-17  8:13     ` Shannon Zhao
2015-07-17  8:13       ` Shannon Zhao
2015-07-17  9:58       ` Christoffer Dall
2015-07-17  9:58         ` Christoffer Dall
2015-07-17 11:34         ` Shannon Zhao
2015-07-17 11:34           ` Shannon Zhao
2015-07-17 12:48           ` Christoffer Dall
2015-07-17 12:48             ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 03/18] KVM: ARM64: Add offset defines for PMU registers shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-16 18:45   ` Christoffer Dall
2015-07-16 18:45     ` Christoffer Dall
2015-07-17  8:25     ` Shannon Zhao
2015-07-17  8:25       ` Shannon Zhao
2015-07-17 10:17       ` Christoffer Dall
2015-07-17 10:17         ` Christoffer Dall
2015-07-17 11:40         ` Shannon Zhao
2015-07-17 11:40           ` Shannon Zhao
2015-07-06  2:17 ` [PATCH 04/18] KVM: ARM64: Add reset and access handlers for PMCR_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-16 19:55   ` Christoffer Dall
2015-07-16 19:55     ` Christoffer Dall
2015-07-17  8:45     ` Shannon Zhao
2015-07-17  8:45       ` Shannon Zhao
2015-07-17 10:21       ` Christoffer Dall
2015-07-17 10:21         ` Christoffer Dall
2015-07-21  1:16         ` Shannon Zhao
2015-07-21  1:16           ` Shannon Zhao
2015-08-03 19:39           ` Christoffer Dall
2015-08-03 19:39             ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 05/18] KVM: ARM64: Add reset and access handlers for PMSELR_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-06  2:17 ` [PATCH 06/18] KVM: ARM64: Add reset and access handlers for PMCEID0_EL0 and PMCEID1_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 13:51   ` Christoffer Dall [this message]
2015-07-17 13:51     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 07/18] KVM: ARM64: PMU: Add perf event map and introduce perf event creating function shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 14:30   ` Christoffer Dall
2015-07-17 14:30     ` Christoffer Dall
2015-07-21  1:35     ` Shannon Zhao
2015-07-21  1:35       ` Shannon Zhao
2015-08-03 19:55       ` Christoffer Dall
2015-08-03 19:55         ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 08/18] KVM: ARM64: Add reset and access handlers for PMXEVTYPER_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-06  2:17 ` [PATCH 09/18] KVM: ARM64: Add reset and access handlers for PMXEVCNTR_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 14:41   ` Christoffer Dall
2015-07-17 14:41     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 10/18] KVM: ARM64: Add reset and access handlers for PMCCNTR_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 14:42   ` Christoffer Dall
2015-07-17 14:42     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 11/18] KVM: ARM64: Add reset and access handlers for PMCNTENSET_EL0 and PMCNTENCLR_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 14:52   ` Christoffer Dall
2015-07-17 14:52     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 12/18] KVM: ARM64: Add reset and access handlers for PMINTENSET_EL1 and PMINTENCLR_EL1 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 14:56   ` Christoffer Dall
2015-07-17 14:56     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 13/18] KVM: ARM64: Add reset and access handlers for PMOVSSET_EL0 and PMOVSCLR_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 14:59   ` Christoffer Dall
2015-07-17 14:59     ` Christoffer Dall
2015-07-17 15:02   ` Christoffer Dall
2015-07-17 15:02     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 14/18] KVM: ARM64: Add reset and access handlers for PMUSERENR_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 15:01   ` Christoffer Dall
2015-07-17 15:01     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 15/18] KVM: ARM64: Add reset and access handlers for PMSWINC_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 15:13   ` Christoffer Dall
2015-07-17 15:13     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 16/18] KVM: ARM64: Add access handlers for PMEVCNTRn_EL0 and PMEVTYPERn_EL0 register shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 15:19   ` Christoffer Dall
2015-07-17 15:19     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 17/18] KVM: ARM64: Add PMU overflow interrupt routing shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 15:28   ` Christoffer Dall
2015-07-17 15:28     ` Christoffer Dall
2015-07-06  2:17 ` [PATCH 18/18] KVM: ARM64: Add KVM_CAP_ARM_PMU and KVM_ARM_PMU_SET_IRQ shannon.zhao
2015-07-06  2:17   ` shannon.zhao at linaro.org
2015-07-17 15:32   ` Christoffer Dall
2015-07-17 15:32     ` Christoffer Dall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150717135107.GQ14024@cbox \
    --to=christoffer.dall@linaro.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=marc.zyngier@arm.com \
    --cc=shannon.zhao@linaro.org \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.