diff mbox series

[2/2] KVM: not link irqfd with a fake IRQ bypass producer

Message ID 20201019090657.131-2-zhenzhong.duan@gmail.com
State New
Headers show
Series [1/2] KVM: not register a IRQ bypass producer if unsupported or disabled | expand

Commit Message

Zhenzhong Duan Oct. 19, 2020, 9:06 a.m. UTC
In case failure to setup Post interrupt for an IRQ, it make no sense
to assign irqfd->producer to the producer.

This change makes code more robust.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@gmail.com>
---
 arch/x86/kvm/x86.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jason Wang Oct. 20, 2020, 6:32 a.m. UTC | #1
On 2020/10/19 下午5:06, Zhenzhong Duan wrote:
> In case failure to setup Post interrupt for an IRQ, it make no sense

> to assign irqfd->producer to the producer.

>

> This change makes code more robust.



It's better to describe what issue we will get without this patch.

Thanks


>

> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@gmail.com>

> ---

>   arch/x86/kvm/x86.c | 3 ++-

>   1 file changed, 2 insertions(+), 1 deletion(-)

>

> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c

> index ce856e0..277e961 100644

> --- a/arch/x86/kvm/x86.c

> +++ b/arch/x86/kvm/x86.c

> @@ -10683,13 +10683,14 @@ int kvm_arch_irq_bypass_add_producer(struct irq_bypass_consumer *cons,

>   		container_of(cons, struct kvm_kernel_irqfd, consumer);

>   	int ret;

>   

> -	irqfd->producer = prod;

>   	kvm_arch_start_assignment(irqfd->kvm);

>   	ret = kvm_x86_ops.update_pi_irte(irqfd->kvm,

>   					 prod->irq, irqfd->gsi, 1);

>   

>   	if (ret)

>   		kvm_arch_end_assignment(irqfd->kvm);

> +	else

> +		irqfd->producer = prod;

>   

>   	return ret;

>   }
Zhenzhong Duan Oct. 20, 2020, 10:12 a.m. UTC | #2
On Tue, Oct 20, 2020 at 2:32 PM Jason Wang <jasowang@redhat.com> wrote:
>
>
> On 2020/10/19 下午5:06, Zhenzhong Duan wrote:
> > In case failure to setup Post interrupt for an IRQ, it make no sense
> > to assign irqfd->producer to the producer.
> >
> > This change makes code more robust.
>
>
> It's better to describe what issue we will get without this patch.

I didn't see an issue without this patch.

Regards
Zhenzhong
diff mbox series

Patch

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index ce856e0..277e961 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -10683,13 +10683,14 @@  int kvm_arch_irq_bypass_add_producer(struct irq_bypass_consumer *cons,
 		container_of(cons, struct kvm_kernel_irqfd, consumer);
 	int ret;
 
-	irqfd->producer = prod;
 	kvm_arch_start_assignment(irqfd->kvm);
 	ret = kvm_x86_ops.update_pi_irte(irqfd->kvm,
 					 prod->irq, irqfd->gsi, 1);
 
 	if (ret)
 		kvm_arch_end_assignment(irqfd->kvm);
+	else
+		irqfd->producer = prod;
 
 	return ret;
 }