From: Janosch Frank <frankja@linux.ibm.com>
To: Steffen Eiden <seiden@linux.ibm.com>,
kvm@vger.kernel.org, kvmarm@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Cc: Alexander Gordeev <agordeev@linux.ibm.com>,
Andreas Grapentin <gra@linux.ibm.com>,
Arnd Bergmann <arnd@arndb.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
David Hildenbrand <david@kernel.org>,
Friedrich Welter <fritz@linux.ibm.com>,
Fuad Tabba <tabba@google.com>, Gautam Gala <ggala@linux.ibm.com>,
Hariharan Mari <hari55@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Hendrik Brueckner <brueckner@linux.ibm.com>,
Ilya Leoshkevich <iii@linux.ibm.com>,
Joey Gouly <joey.gouly@arm.com>, Marc Zyngier <maz@kernel.org>,
Nico Boehr <nrb@linux.ibm.com>,
Nina Schoetterl-Glausch <oss@nina.schoetterlglausch.eu>,
Oliver Upton <oupton@kernel.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Sean Christopherson <seanjc@google.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Ulrich Weigand <Ulrich.Weigand@de.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>, Will Deacon <will@kernel.org>,
Zenghui Yu <yuzenghui@huawei.com>
Subject: Re: [PATCH v7 21/23] KVM: s390: arm64: Implement vCPU IOCTLs
Date: Thu, 3 Sep 2026 15:27:16 +0200 [thread overview]
Message-ID: <d706435a-3984-4ef3-b319-1efc92517650@linux.ibm.com> (raw)
In-Reply-To: <20260831144802.834315-22-seiden@linux.ibm.com>
On 8/31/26 4:47 PM, Steffen Eiden wrote:
> Implement all required vCPU (arch) IOCTLs.
>
> Co-developed-by: Andreas Grapentin <gra@linux.ibm.com>
> Signed-off-by: Andreas Grapentin <gra@linux.ibm.com>
> Co-developed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
> Signed-off-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
> ---
[...]
> +static void arm_vcpu_run(struct kvm_vcpu *vcpu)
> +{
> + struct kvm_sae_block *sae_block = &vcpu->arch.sae_block;
> +
> + adjust_pc(vcpu);
> +
> + local_irq_disable();
> + guest_timing_enter_irqoff();
> + guest_state_enter_irqoff();
> + local_irq_enable();
> +
> + sae_block->icptr = 0;
We already do that in the function below, no?
If possible I'd like to avoid setting ictpr here.
> +
> + sae64a(sae_block);
> +
> + local_irq_disable();
> + guest_state_exit_irqoff();
> + guest_timing_exit_irqoff();
> + local_irq_enable();
> +}
> +
> +/** kvm_arch_vcpu_ioctl_run() - run arm64 vCPU
> + *
> + * Execute arm64 guest instructions using SAE.
> + *
> + * Returns:
> + * 1 enter the guest (should not be observed by userspace)
> + * 0 exit to userspace
> + * < 0 exit to userspace, where the return value indicates n error
> + *
> + *
> + */
> +int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
> +{
> + DECLARE_KERNEL_FPU_ONSTACK32(fpu_save);
> + struct kvm_run *kvm_run = vcpu->run;
> + int ret;
> +
> + if (kvm_run->exit_reason == KVM_EXIT_MMIO) {
> + ret = kvm_handle_mmio_return(vcpu);
> + if (ret <= 0)
> + return ret;
> + }
> +
> + vcpu_load(vcpu);
> +
> + kernel_fpu_begin(&fpu_save, KERNEL_FPC | KERNEL_VXR);
> + load_vx_regs((vcpu->arch.ctxt.vregs));
> +
> + if (!vcpu->wants_to_run) {
> + ret = -EINTR;
> + goto out;
> + }
> +
> + kvm_sigset_activate(vcpu);
> +
> + might_fault();
> +
> + kvm_vcpu_srcu_read_lock(vcpu);
> +
> + ret = 1;
> + do {
> + if (signal_pending(current)) {
> + kvm_run->exit_reason = KVM_EXIT_INTR;
> + ret = -EINTR;
> + break;
> + }
> +
> + if (need_resched())
> + schedule();
> +
> + if (ret > 0)
> + ret = check_vcpu_requests(vcpu);
> +
> + vcpu->arch.sae_block.icptr = 0;
Here
> +
> + smp_store_mb(vcpu->mode, IN_GUEST_MODE);
> +
> + if (kvm_request_pending(vcpu)) {
> + vcpu->mode = OUTSIDE_GUEST_MODE;
> + continue;
> + }
> +
> + kvm_vcpu_srcu_read_unlock(vcpu);
> +
> + arm_vcpu_run(vcpu);
> +
> + vcpu->mode = OUTSIDE_GUEST_MODE;
> +
> + kvm_vcpu_srcu_read_lock(vcpu);
> +
> + ret = handle_exit(vcpu);
ARM increases stat.exits here and since you copied the stat fields over
we could do that too.
General question to the ARM maintainers:
We'll be adding more stat fields in the very soon future.
Are you fine with us adding them under any name or should we prefix them
so it's clear they exist because of our architecture / implementation
and will likely never be added to ARM KVM?
In the past we've added a lot of stats and I'd expect us to at least add
stats for every intercept reason.
> +
> + } while (ret > 0);
> +
> + kvm_vcpu_srcu_read_unlock(vcpu);
> +
> + kvm_sigset_deactivate(vcpu);
> +out:
> + if (unlikely(vcpu_get_flag(vcpu, INCREMENT_PC)))
> + adjust_pc(vcpu);
> +
> + save_vx_regs(vcpu->arch.ctxt.vregs);
> + kernel_fpu_end(&fpu_save, KERNEL_FPC | KERNEL_VXR);
> + vcpu_put(vcpu);
> +
> + return ret;
> +}
next prev parent reply other threads:[~2026-09-03 13:27 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 14:47 [PATCH v7 00/23] KVM: s390: Introduce arm64 KVM Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 01/23] vfio: Use file-based reference counting for KVM Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 02/23] KVM: Make device name configurable Steffen Eiden
2026-09-02 0:40 ` Sean Christopherson
2026-09-02 7:50 ` Steffen Eiden
2026-09-02 16:14 ` Sean Christopherson
2026-09-03 11:42 ` Steffen Eiden
2026-09-03 14:30 ` Sean Christopherson
2026-09-03 14:32 ` Sean Christopherson
2026-09-03 14:45 ` Sean Christopherson
2026-09-03 14:55 ` Paolo Bonzini
2026-09-03 15:54 ` Sean Christopherson
2026-09-03 19:13 ` Paolo Bonzini
2026-09-03 20:58 ` Sean Christopherson
2026-09-03 15:48 ` Sean Christopherson
2026-08-31 14:47 ` [PATCH v7 03/23] KVM: Allow KVM implementations to switch off MMIO independent of Kconfig Steffen Eiden
2026-09-02 0:38 ` Sean Christopherson
2026-09-02 8:22 ` Steffen Eiden
2026-09-02 8:30 ` Marc Zyngier
2026-09-02 9:13 ` Steffen Eiden
2026-09-02 13:00 ` Sean Christopherson
2026-09-02 15:50 ` Sean Christopherson
2026-08-31 14:47 ` [PATCH v7 04/23] arm64: Use proper include variant Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 05/23] arm64: ptrace: Use constants for compat register numbers Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 06/23] arm64: sysreg: Convert SPSR_ELx to automatic register generation Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 07/23] KVM: arm64: Access elements of vcpu_gp_regs individually Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 08/23] KVM: arm64: Use accessor functions for core regs Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 09/23] arm64: Prepare sharing arm64 headers with s390 Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 10/23] arm64: Share " Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 11/23] KVM: arm64: Share arm64 code " Steffen Eiden
2026-09-01 8:13 ` Marc Zyngier
2026-09-01 8:40 ` Steffen Eiden
2026-09-02 7:41 ` Marc Zyngier
2026-09-02 12:41 ` Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 12/23] s390/tools: Use arm64 headers Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 13/23] KVM: s390: Use arm64 code Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 14/23] KVM: s390: Prepare KVM/s390 for a second KVM module Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 15/23] s390: Introduce Start Arm Execution instruction Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 16/23] KVM: s390: arm64: Introduce host definitions Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 17/23] s390/hwcaps: Report SAE support as hwcap Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 18/23] KVM: s390: Add basic arm64 kvm module Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 19/23] KVM: s390: arm64: Implement required functions Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 20/23] KVM: s390: arm64: Implement vm/vcpu create destroy Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 21/23] KVM: s390: arm64: Implement vCPU IOCTLs Steffen Eiden
2026-09-03 13:27 ` Janosch Frank [this message]
2026-08-31 14:47 ` [PATCH v7 22/23] KVM: s390: arm64: Implement basic page fault handler Steffen Eiden
2026-08-31 14:48 ` [PATCH v7 23/23] KVM: s390: arm64: Add KVM_S390_ARM64 Kconfig and Makefile Steffen Eiden
2026-09-02 16:20 ` Sean Christopherson
2026-09-03 8:38 ` Steffen Eiden
2026-09-03 14:43 ` Sean Christopherson
2026-09-03 15:43 ` Steffen Eiden
2026-09-03 16:33 ` Sean Christopherson
2026-09-03 16:41 ` Paolo Bonzini
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=d706435a-3984-4ef3-b319-1efc92517650@linux.ibm.com \
--to=frankja@linux.ibm.com \
--cc=Ulrich.Weigand@de.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=arnd@arndb.de \
--cc=borntraeger@linux.ibm.com \
--cc=brueckner@linux.ibm.com \
--cc=catalin.marinas@arm.com \
--cc=david@kernel.org \
--cc=fritz@linux.ibm.com \
--cc=ggala@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=gra@linux.ibm.com \
--cc=hari55@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=joey.gouly@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=maz@kernel.org \
--cc=nrb@linux.ibm.com \
--cc=oss@nina.schoetterlglausch.eu \
--cc=oupton@kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=seiden@linux.ibm.com \
--cc=suzuki.poulose@arm.com \
--cc=svens@linux.ibm.com \
--cc=tabba@google.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox