On Fri, 1 Sep 2017 06:22:57 +0200
Yi Min Zhao wrote:
> The guest uses the mpcifc instruction to register the aibvo of a zpci
> device, which is the starting offset of indicators in the indicator
> area and thus remains constant. Each msix vector is an offset from the
> aibvo. When we map a msix route to an adapter route, we should not
> modify the starting offset, but instead add the vector to the starting
> offset to get the absolute offset in the specific route.
>
> Signed-off-by: Yi Min Zhao
> ---
> target/s390x/kvm.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
> index 3d490c5e4b..21ce06966c 100644
> --- a/target/s390x/kvm.c
> +++ b/target/s390x/kvm.c
> @@ -2545,14 +2545,12 @@ int kvm_arch_fixup_msi_route(struct
> kvm_irq_routing_entry *route,
> return -ENODEV;
> }
>
> -pbdev->routes.adapter.ind_offset = vec;
> -
> route->type = KVM_IRQ_ROUTING_S390_ADAPTER;
> route->flags = 0;
> route->u.adapter.summary_addr = pbdev->routes.adapter.summary_addr;
> route->u.adapter.ind_addr = pbdev->routes.adapter.ind_addr;
> route->u.adapter.summary_offset = pbdev->routes.adapter.summary_offset;
> -route->u.adapter.ind_offset = pbdev->routes.adapter.ind_offset;
> +route->u.adapter.ind_offset = pbdev->routes.adapter.ind_offset + vec;
> route->u.adapter.adapter_id = pbdev->routes.adapter.adapter_id;
> return 0;
> }
Looks good. I assume you'll send a v3, so I'll hold off on applying for
now.