apic: add send_msi() to APICCommonClass

The MMIO based interface to APIC doesn't work well with MSIs that have
upper address bits set (remapped x2APIC MSIs).  A specialized interface
is a quick and dirty way to avoid the shortcoming.

Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
Radim Krčmář 2016-10-10 17:28:43 +02:00 committed by Eduardo Habkost
parent 2f114315dc
commit 267ee35715
4 changed files with 29 additions and 8 deletions

View file

@ -68,6 +68,11 @@ static void xen_apic_external_nmi(APICCommonState *s)
{
}
static void xen_send_msi(MSIMessage *msi)
{
xen_hvm_inject_msi(msi->address, msi->data);
}
static void xen_apic_class_init(ObjectClass *klass, void *data)
{
APICCommonClass *k = APIC_COMMON_CLASS(klass);
@ -78,6 +83,7 @@ static void xen_apic_class_init(ObjectClass *klass, void *data)
k->get_tpr = xen_apic_get_tpr;
k->vapic_base_update = xen_apic_vapic_base_update;
k->external_nmi = xen_apic_external_nmi;
k->send_msi = xen_send_msi;
}
static const TypeInfo xen_apic_info = {