Commit 485940e0 authored by Thomas Gleixner's avatar Thomas Gleixner

x86/kvm: Use msi_msg shadow structs

Use the bitfields in the x86 shadow structs instead of decomposing the
32bit value with macros.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20201024213535.443185-17-dwmw2@infradead.org
parent e16c8058
...@@ -16,8 +16,6 @@ ...@@ -16,8 +16,6 @@
#include <trace/events/kvm.h> #include <trace/events/kvm.h>
#include <asm/msidef.h>
#include "irq.h" #include "irq.h"
#include "ioapic.h" #include "ioapic.h"
...@@ -104,22 +102,19 @@ int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src, ...@@ -104,22 +102,19 @@ int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src,
void kvm_set_msi_irq(struct kvm *kvm, struct kvm_kernel_irq_routing_entry *e, void kvm_set_msi_irq(struct kvm *kvm, struct kvm_kernel_irq_routing_entry *e,
struct kvm_lapic_irq *irq) struct kvm_lapic_irq *irq)
{ {
trace_kvm_msi_set_irq(e->msi.address_lo | (kvm->arch.x2apic_format ? struct msi_msg msg = { .address_lo = e->msi.address_lo,
(u64)e->msi.address_hi << 32 : 0), .address_hi = e->msi.address_hi,
e->msi.data); .data = e->msi.data };
irq->dest_id = (e->msi.address_lo & trace_kvm_msi_set_irq(msg.address_lo | (kvm->arch.x2apic_format ?
MSI_ADDR_DEST_ID_MASK) >> MSI_ADDR_DEST_ID_SHIFT; (u64)msg.address_hi << 32 : 0), msg.data);
if (kvm->arch.x2apic_format)
irq->dest_id |= MSI_ADDR_EXT_DEST_ID(e->msi.address_hi); irq->dest_id = x86_msi_msg_get_destid(&msg, kvm->arch.x2apic_format);
irq->vector = (e->msi.data & irq->vector = msg.arch_data.vector;
MSI_DATA_VECTOR_MASK) >> MSI_DATA_VECTOR_SHIFT; irq->dest_mode = kvm_lapic_irq_dest_mode(msg.arch_addr_lo.dest_mode_logical);
irq->dest_mode = kvm_lapic_irq_dest_mode( irq->trig_mode = msg.arch_data.is_level;
!!((1 << MSI_ADDR_DEST_MODE_SHIFT) & e->msi.address_lo)); irq->delivery_mode = msg.arch_data.delivery_mode << 8;
irq->trig_mode = (1 << MSI_DATA_TRIGGER_SHIFT) & e->msi.data; irq->msi_redir_hint = msg.arch_addr_lo.redirect_hint;
irq->delivery_mode = e->msi.data & 0x700;
irq->msi_redir_hint = ((e->msi.address_lo
& MSI_ADDR_REDIRECTION_LOWPRI) > 0);
irq->level = 1; irq->level = 1;
irq->shorthand = APIC_DEST_NOSHORT; irq->shorthand = APIC_DEST_NOSHORT;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment