diff options
Diffstat (limited to 'arch/powerpc/kvm/book3s_hv.c')
-rw-r--r-- | arch/powerpc/kvm/book3s_hv.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index a7fe1783d245..a393c2b6b1b6 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c | |||
@@ -3490,9 +3490,15 @@ static int kvmppc_set_passthru_irq(struct kvm *kvm, int host_irq, int guest_gsi) | |||
3490 | irq_map = &pimap->mapped[i]; | 3490 | irq_map = &pimap->mapped[i]; |
3491 | 3491 | ||
3492 | irq_map->v_hwirq = guest_gsi; | 3492 | irq_map->v_hwirq = guest_gsi; |
3493 | irq_map->r_hwirq = desc->irq_data.hwirq; | ||
3494 | irq_map->desc = desc; | 3493 | irq_map->desc = desc; |
3495 | 3494 | ||
3495 | /* | ||
3496 | * Order the above two stores before the next to serialize with | ||
3497 | * the KVM real mode handler. | ||
3498 | */ | ||
3499 | smp_wmb(); | ||
3500 | irq_map->r_hwirq = desc->irq_data.hwirq; | ||
3501 | |||
3496 | if (i == pimap->n_mapped) | 3502 | if (i == pimap->n_mapped) |
3497 | pimap->n_mapped++; | 3503 | pimap->n_mapped++; |
3498 | 3504 | ||