linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Yoan Picchi <yoan.picchi@arm.com>
To: Marc Zyngier <maz@kernel.org>
Cc: james.morse@arm.com, julien.thierry.kdev@gmail.com,
	suzuki.poulose@arm.com, linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu, catalin.marinas@arm.com,
	will@kernel.org
Subject: Re: [PATCH 7/7] KVM: arm64: Add irq_inject counter for kvm_stat
Date: Tue, 23 Mar 2021 17:53:42 +0000	[thread overview]
Message-ID: <c1ca65a5-1b7e-8ec2-ecbb-8ceda973bb14@arm.com> (raw)
In-Reply-To: <87lfadkbyz.wl-maz@kernel.org>

Hi Mark.

Thanks for all the reviews. I am a beginner and you gave me a lot to 
learn about.
I will reply to the other patch progressively once I understand better 
the issues.

On 23/03/2021 17:37, Marc Zyngier wrote:
> On Fri, 19 Mar 2021 16:17:11 +0000,
> Yoan Picchi <yoan.picchi@arm.com> wrote:
>> Add a counter for interrupt injections. That is when kvm relay an
>> interrupt to the guest (for instance a timer, or a device interrupt
>> like from a network card)
>>
>> Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
>> ---
>>   arch/arm64/include/asm/kvm_host.h | 2 ++
>>   arch/arm64/kvm/arm.c              | 2 ++
>>   arch/arm64/kvm/guest.c            | 2 ++
>>   arch/arm64/kvm/vgic/vgic.c        | 2 ++
>>   4 files changed, 8 insertions(+)
>>
>> diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
>> index fa59b669c..253acb8c2 100644
>> --- a/arch/arm64/include/asm/kvm_host.h
>> +++ b/arch/arm64/include/asm/kvm_host.h
>> @@ -551,6 +551,7 @@ struct kvm_vm_stat {
>>   	ulong memory_slot_unmaped;
>>   	ulong stage2_unmap_vm;
>>   	ulong cached_page_invalidated;
>> +	ulong irq_inject;
>>   };
>>   
>>   struct kvm_vcpu_stat {
>> @@ -567,6 +568,7 @@ struct kvm_vcpu_stat {
>>   	u64 mmio_exit_kernel;
>>   	u64 regular_page_mapped;
>>   	u64 huge_page_mapped;
>> +	u64 irq_inject;
>>   	u64 exits;
>>   };
>>   
>> diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
>> index fc4c95dd2..841551f14 100644
>> --- a/arch/arm64/kvm/arm.c
>> +++ b/arch/arm64/kvm/arm.c
>> @@ -895,6 +895,8 @@ static int vcpu_interrupt_line(struct kvm_vcpu *vcpu, int number, bool level)
>>   	bool set;
>>   	unsigned long *hcr;
>>   
>> +	vcpu->stat.irq_inject++;
>> +
>>   	if (number == KVM_ARM_IRQ_CPU_IRQ)
>>   		bit_index = __ffs(HCR_VI);
>>   	else /* KVM_ARM_IRQ_CPU_FIQ */
>> diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
>> index 129c0d53d..f663b03ae 100644
>> --- a/arch/arm64/kvm/guest.c
>> +++ b/arch/arm64/kvm/guest.c
>> @@ -45,6 +45,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
>>   	VM_STAT("memory_slot_unmaped", memory_slot_unmaped),
>>   	VM_STAT("stage2_unmap_vm", stage2_unmap_vm),
>>   	VM_STAT("cached_page_invalidated", cached_page_invalidated),
>> +	VM_STAT("irq_inject", irq_inject),
>> +	VCPU_STAT("irq_inject", irq_inject),
>>   	VCPU_STAT("exits", exits),
>>   	VCPU_STAT("halt_poll_success_ns", halt_poll_success_ns),
>>   	VCPU_STAT("halt_poll_fail_ns", halt_poll_fail_ns),
>> diff --git a/arch/arm64/kvm/vgic/vgic.c b/arch/arm64/kvm/vgic/vgic.c
>> index 1c597c988..9e504243b 100644
>> --- a/arch/arm64/kvm/vgic/vgic.c
>> +++ b/arch/arm64/kvm/vgic/vgic.c
>> @@ -458,6 +458,8 @@ int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int intid,
>>   
>>   	raw_spin_lock_irqsave(&irq->irq_lock, flags);
>>   
>> +	kvm->stat.irq_inject++;
>> +
>>   	if (!vgic_validate_injection(irq, level, owner)) {
> So even if the injection failed, you report an injection? And what
> about injection that occur via the MMIO interface? What about direct
> injection? What about a level interrupt that is forever high?
>
> 	M.
>
This one I actually started to fix this afternoon by moving the counter 
into vgic_queue_irq_unlock().
This way it is only incremented when the interrupt is inserted into a 
vcpu, and it also takes care of the
vgic_mmio injections. I also fixed the issue with the interrupt line so 
it only increment when the line
change of level.

I'm not sure about what you mean by direct injection yet though.

Kindly,
Yoan


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-03-23 17:55 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-19 16:17 [PATCH 0/7] KVM: arm64: add more event counters for kvm_stat Yoan Picchi
2021-03-19 16:17 ` [PATCH 1/7] KVM: arm64: Add two page mapping " Yoan Picchi
2021-03-23 11:52   ` Keqian Zhu
2021-03-23 17:03     ` Marc Zyngier
2021-03-19 16:17 ` [PATCH 2/7] KVM: arm64: Add remote_tlb_flush counter " Yoan Picchi
2021-03-23 17:12   ` Marc Zyngier
2021-03-19 16:17 ` [PATCH 3/7] KVM: arm64: Add cached_page_invalidated " Yoan Picchi
2021-03-23 17:17   ` Marc Zyngier
2021-03-19 16:17 ` [PATCH 4/7] KVM: arm64: Add flush_all_cache_lines " Yoan Picchi
2021-03-23 17:22   ` Marc Zyngier
2021-03-19 16:17 ` [PATCH 5/7] KVM: arm64: Add memory_slot_unmaped " Yoan Picchi
2021-03-23 17:33   ` Marc Zyngier
2021-03-19 16:17 ` [PATCH 6/7] KVM: arm64: Add stage2_unmap_vm " Yoan Picchi
2021-03-23 17:33   ` Marc Zyngier
2021-03-19 16:17 ` [PATCH 7/7] KVM: arm64: Add irq_inject " Yoan Picchi
2021-03-23 17:37   ` Marc Zyngier
2021-03-23 17:53     ` Yoan Picchi [this message]
2021-03-23 18:36       ` Marc Zyngier
2021-03-23 18:04 ` [PATCH 0/7] KVM: arm64: add more event counters " Marc Zyngier

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=c1ca65a5-1b7e-8ec2-ecbb-8ceda973bb14@arm.com \
    --to=yoan.picchi@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.com \
    --cc=julien.thierry.kdev@gmail.com \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=maz@kernel.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).