[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <be6b436c-66d0-f966-10cf-205cb4aedfef@loongson.cn>
Date: Tue, 12 Aug 2025 09:48:24 +0800
From: Bibo Mao <maobibo@...ngson.cn>
To: Huacai Chen <chenhuacai@...nel.org>
Cc: Song Gao <gaosong@...ngson.cn>, zhaotianrui@...ngson.cn,
lixianglai@...ngson.cn, loongarch@...ts.linux.dev,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] LoongArch: KVM: Use kvm_get_vcpu_by_id() instead of
kvm_get_vcpu()
On 2025/8/11 下午9:23, Huacai Chen wrote:
> On Mon, Aug 11, 2025 at 6:53 PM Bibo Mao <maobibo@...ngson.cn> wrote:
>>
>>
>>
>> On 2025/8/11 上午10:55, Song Gao wrote:
>>> Use kvm_get_vcpu() may can't get vcpu context, use kvm_get_vcpu_by_id()
>>> instead of kvm_get_vcpu().
>>>
>>> Signed-off-by: Song Gao <gaosong@...ngson.cn>
>>> ---
>>> arch/loongarch/kvm/intc/eiointc.c | 5 ++++-
>>> arch/loongarch/kvm/intc/ipi.c | 2 +-
>>> 2 files changed, 5 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/arch/loongarch/kvm/intc/eiointc.c b/arch/loongarch/kvm/intc/eiointc.c
>>> index a3a12af9ecbf..5180da91d2e6 100644
>>> --- a/arch/loongarch/kvm/intc/eiointc.c
>>> +++ b/arch/loongarch/kvm/intc/eiointc.c
>>> @@ -45,7 +45,10 @@ static void eiointc_update_irq(struct loongarch_eiointc *s, int irq, int level)
>>> }
>>>
>>> cpu = s->sw_coremap[irq];
>>> - vcpu = kvm_get_vcpu(s->kvm, cpu);
>>> + vcpu = kvm_get_vcpu_by_id(s->kvm, cpu);
>>> + if (unlikely(vcpu == NULL)) {
>>> + return;
>>> + }
>> Brace {} is unnecessary with kernel coding style :), just something like
>> this:
>> if (unlikely(vcpu == NULL))
>> return;
>>
>> The other looks good to me.
> Maybe add a print statement the same as kvm_ipi_regs_access()?
Both are ok for me now.
In future there may be change with return value and printk message with
in-kernel MMIO/IOCSR read/write emulation.
About return value there should be -EOPNOTSUPP if addr is not in range
of device, it will transfer the emulation to user space VMM. Other value
such as -EINVAL should be supported, and should not transfer to VMM
since the address is in range of device.
About printk message I have no idea now, it may cause lots of noise
message in host because of bad guest kernel, however abnormal behavior
should be recorded anyway.
Regards
Bibo Mao
>
> Huacai
>
>>
>> Regards
>> Bibo Mao
>>> if (level) {
>>> /* if not enable return false */
>>> if (!test_bit(irq, (unsigned long *)s->enable.reg_u32))
>>> diff --git a/arch/loongarch/kvm/intc/ipi.c b/arch/loongarch/kvm/intc/ipi.c
>>> index e658d5b37c04..0348a83a7ed7 100644
>>> --- a/arch/loongarch/kvm/intc/ipi.c
>>> +++ b/arch/loongarch/kvm/intc/ipi.c
>>> @@ -298,7 +298,7 @@ static int kvm_ipi_regs_access(struct kvm_device *dev,
>>> cpu = (attr->attr >> 16) & 0x3ff;
>>> addr = attr->attr & 0xff;
>>>
>>> - vcpu = kvm_get_vcpu(dev->kvm, cpu);
>>> + vcpu = kvm_get_vcpu_by_id(dev->kvm, cpu);
>>> if (unlikely(vcpu == NULL)) {
>>> kvm_err("%s: invalid target cpu: %d\n", __func__, cpu);
>>> return -EINVAL;
>>>
>>
Powered by blists - more mailing lists