* Re: [RFC PATCH] riscv: kvm: return SBI_ERR_FAILURE for PMU shmem OOM [not found] <20260415220930.287592-1-osama.abdelkader@gmail.com> @ 2026-05-06 13:21 ` Osama Abdelkader 2026-05-14 13:43 ` Anup Patel 1 sibling, 0 replies; 3+ messages in thread From: Osama Abdelkader @ 2026-05-06 13:21 UTC (permalink / raw) To: Anup Patel, Atish Patra, Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, kvm, kvm-riscv, linux-riscv, linux-kernel On Thu, Apr 16, 2026 at 12:09:30AM +0200, Osama Abdelkader wrote: > kvm_riscv_vcpu_pmu_snapshot_set_shmem() and kvm_riscv_vcpu_pmu_event_info() > returned -ENOMEM from the SBI extension handler, which caused > kvm_riscv_vcpu_sbi_ecall() to abort KVM_RUN and surface the error to > userspace instead of completing the ECALL with a negative SBI error in a0. > Use SBI_ERR_FAILURE and the normal retdata path, matching other PMU > handlers and kvm_sbi_ext_pmu_handler comment. > > Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> > --- > arch/riscv/kvm/vcpu_pmu.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c > index e873430e596b..f36b099f447c 100644 > --- a/arch/riscv/kvm/vcpu_pmu.c > +++ b/arch/riscv/kvm/vcpu_pmu.c > @@ -435,8 +435,10 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s > } > > kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC); > - if (!kvpmu->sdata) > - return -ENOMEM; > + if (!kvpmu->sdata) { > + sbiret = SBI_ERR_FAILURE; > + goto out; > + } > > /* No need to check writable slot explicitly as kvm_vcpu_write_guest does it internally */ > if (kvm_vcpu_write_guest(vcpu, saddr, kvpmu->sdata, snapshot_area_size)) { > @@ -480,8 +482,10 @@ int kvm_riscv_vcpu_pmu_event_info(struct kvm_vcpu *vcpu, unsigned long saddr_low > } > > einfo = kzalloc(shmem_size, GFP_KERNEL); > - if (!einfo) > - return -ENOMEM; > + if (!einfo) { > + ret = SBI_ERR_FAILURE; > + goto out; > + } > > ret = kvm_vcpu_read_guest(vcpu, shmem, einfo, shmem_size); > if (ret) { > -- > 2.43.0 > ping. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC PATCH] riscv: kvm: return SBI_ERR_FAILURE for PMU shmem OOM [not found] <20260415220930.287592-1-osama.abdelkader@gmail.com> 2026-05-06 13:21 ` [RFC PATCH] riscv: kvm: return SBI_ERR_FAILURE for PMU shmem OOM Osama Abdelkader @ 2026-05-14 13:43 ` Anup Patel 2026-05-14 17:40 ` Osama Abdelkader 1 sibling, 1 reply; 3+ messages in thread From: Anup Patel @ 2026-05-14 13:43 UTC (permalink / raw) To: Osama Abdelkader Cc: Atish Patra, Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, kvm, kvm-riscv, linux-riscv, linux-kernel On Thu, Apr 16, 2026 at 3:40 AM Osama Abdelkader <osama.abdelkader@gmail.com> wrote: > > kvm_riscv_vcpu_pmu_snapshot_set_shmem() and kvm_riscv_vcpu_pmu_event_info() > returned -ENOMEM from the SBI extension handler, which caused > kvm_riscv_vcpu_sbi_ecall() to abort KVM_RUN and surface the error to > userspace instead of completing the ECALL with a negative SBI error in a0. > Use SBI_ERR_FAILURE and the normal retdata path, matching other PMU > handlers and kvm_sbi_ext_pmu_handler comment. > > Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> Split this into two patches where: 1) One patch fixing kvm_riscv_vcpu_pmu_snapshot_set_shmem() 2) Second patch fixing kvm_riscv_vcpu_pmu_event_info() Make sure to add Fixes tag in both patches. Regards, Anup > --- > arch/riscv/kvm/vcpu_pmu.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c > index e873430e596b..f36b099f447c 100644 > --- a/arch/riscv/kvm/vcpu_pmu.c > +++ b/arch/riscv/kvm/vcpu_pmu.c > @@ -435,8 +435,10 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s > } > > kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC); > - if (!kvpmu->sdata) > - return -ENOMEM; > + if (!kvpmu->sdata) { > + sbiret = SBI_ERR_FAILURE; > + goto out; > + } > > /* No need to check writable slot explicitly as kvm_vcpu_write_guest does it internally */ > if (kvm_vcpu_write_guest(vcpu, saddr, kvpmu->sdata, snapshot_area_size)) { > @@ -480,8 +482,10 @@ int kvm_riscv_vcpu_pmu_event_info(struct kvm_vcpu *vcpu, unsigned long saddr_low > } > > einfo = kzalloc(shmem_size, GFP_KERNEL); > - if (!einfo) > - return -ENOMEM; > + if (!einfo) { > + ret = SBI_ERR_FAILURE; > + goto out; > + } > > ret = kvm_vcpu_read_guest(vcpu, shmem, einfo, shmem_size); > if (ret) { > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC PATCH] riscv: kvm: return SBI_ERR_FAILURE for PMU shmem OOM 2026-05-14 13:43 ` Anup Patel @ 2026-05-14 17:40 ` Osama Abdelkader 0 siblings, 0 replies; 3+ messages in thread From: Osama Abdelkader @ 2026-05-14 17:40 UTC (permalink / raw) To: Anup Patel Cc: Atish Patra, Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti, kvm, kvm-riscv, linux-riscv, linux-kernel On Thu, May 14, 2026 at 07:13:04PM +0530, Anup Patel wrote: > On Thu, Apr 16, 2026 at 3:40 AM Osama Abdelkader > <osama.abdelkader@gmail.com> wrote: > > > > kvm_riscv_vcpu_pmu_snapshot_set_shmem() and kvm_riscv_vcpu_pmu_event_info() > > returned -ENOMEM from the SBI extension handler, which caused > > kvm_riscv_vcpu_sbi_ecall() to abort KVM_RUN and surface the error to > > userspace instead of completing the ECALL with a negative SBI error in a0. > > Use SBI_ERR_FAILURE and the normal retdata path, matching other PMU > > handlers and kvm_sbi_ext_pmu_handler comment. > > > > Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> > > Split this into two patches where: > > 1) One patch fixing kvm_riscv_vcpu_pmu_snapshot_set_shmem() > 2) Second patch fixing kvm_riscv_vcpu_pmu_event_info() > > Make sure to add Fixes tag in both patches. > > Regards, > Anup Thanks Anup for the review, I just did that. Regards, Osama > > > --- > > arch/riscv/kvm/vcpu_pmu.c | 12 ++++++++---- > > 1 file changed, 8 insertions(+), 4 deletions(-) > > > > diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c > > index e873430e596b..f36b099f447c 100644 > > --- a/arch/riscv/kvm/vcpu_pmu.c > > +++ b/arch/riscv/kvm/vcpu_pmu.c > > @@ -435,8 +435,10 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s > > } > > > > kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC); > > - if (!kvpmu->sdata) > > - return -ENOMEM; > > + if (!kvpmu->sdata) { > > + sbiret = SBI_ERR_FAILURE; > > + goto out; > > + } > > > > /* No need to check writable slot explicitly as kvm_vcpu_write_guest does it internally */ > > if (kvm_vcpu_write_guest(vcpu, saddr, kvpmu->sdata, snapshot_area_size)) { > > @@ -480,8 +482,10 @@ int kvm_riscv_vcpu_pmu_event_info(struct kvm_vcpu *vcpu, unsigned long saddr_low > > } > > > > einfo = kzalloc(shmem_size, GFP_KERNEL); > > - if (!einfo) > > - return -ENOMEM; > > + if (!einfo) { > > + ret = SBI_ERR_FAILURE; > > + goto out; > > + } > > > > ret = kvm_vcpu_read_guest(vcpu, shmem, einfo, shmem_size); > > if (ret) { > > -- > > 2.43.0 > > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-05-14 17:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260415220930.287592-1-osama.abdelkader@gmail.com>
2026-05-06 13:21 ` [RFC PATCH] riscv: kvm: return SBI_ERR_FAILURE for PMU shmem OOM Osama Abdelkader
2026-05-14 13:43 ` Anup Patel
2026-05-14 17:40 ` Osama Abdelkader
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox