[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 0/2] hw/nvme: add irqfd support
From: |
Jinhao Fan |
Subject: |
Re: [PATCH v3 0/2] hw/nvme: add irqfd support |
Date: |
Fri, 26 Aug 2022 10:03:51 +0800 |
at 4:14 AM, Klaus Jensen <its@irrelevant.dk> wrote:
> From: Klaus Jensen <k.jensen@samsung.com>
>
> This is a re-spin of Jinhao's irqfd support series that fixes msix
> vector masking/unmasking to work correctly.
>
> I kept being bugged out about that msi route not getting updated, so I
> hit the code into submission with a hammer.
>
> I finally noticed the core issue:
>
> 1. The vector notifiers was never set because msix is not enabled at
> the point where nvme_init_pci() is called.
>
> Move this call to nvme_start_ctrl().
>
> Since the unmask callback was suddenly getting called now, another fix
> was needed:
>
> 2. Call kvm_irqchip_add_irqfd_notifier_gsi() in the unmask handler -
> not in nvme_init_irq_notifier(). The vectors may potentially be
> masked/unmasked and shall cause a pair of add_irqfd and
> remove_irqfd calls. Removing it from nvme_init_irq_notifier() makes
> sure we do not try to double add.
>
> Now it does what it is supposed to; no hacks required :)
>
> Jinhao Fan (2):
> hw/nvme: support irq(de)assertion with eventfd
> hw/nvme: use KVM irqfd when available
>
> hw/nvme/ctrl.c | 261 ++++++++++++++++++++++++++++++++++++++++---
> hw/nvme/nvme.h | 6 +
> hw/nvme/trace-events | 3 +
> 3 files changed, 253 insertions(+), 17 deletions(-)
>
> --
> 2.37.2
This patch series works well on my machine without a vIOMMU.
Just to confirm my understanding, the workflow of updating msi route is:
Host driver update MSI msg and addr -> unmask callback get called ->
kvm_irqchip_update_msi_route() does the work. Right?