lkml.org 
[lkml]   [2020]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 17/35] x86/pci/xen: Use msi_msg shadow structs
    Date
    From: Thomas Gleixner <tglx@linutronix.de>

    Use the msi_msg shadow structs and compose the message with named bitfields
    instead of the unreadable macro maze.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    ---
    arch/x86/pci/xen.c | 26 +++++++++++---------------
    1 file changed, 11 insertions(+), 15 deletions(-)

    diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c
    index c552cd2d0632..3d41a09c2c14 100644
    --- a/arch/x86/pci/xen.c
    +++ b/arch/x86/pci/xen.c
    @@ -152,7 +152,6 @@ static int acpi_register_gsi_xen(struct device *dev, u32 gsi,

    #if defined(CONFIG_PCI_MSI)
    #include <linux/msi.h>
    -#include <asm/msidef.h>

    struct xen_pci_frontend_ops *xen_pci_frontend;
    EXPORT_SYMBOL_GPL(xen_pci_frontend);
    @@ -210,23 +209,20 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
    return ret;
    }

    -#define XEN_PIRQ_MSI_DATA (MSI_DATA_TRIGGER_EDGE | \
    - MSI_DATA_LEVEL_ASSERT | (3 << 8) | MSI_DATA_VECTOR(0))
    -
    static void xen_msi_compose_msg(struct pci_dev *pdev, unsigned int pirq,
    struct msi_msg *msg)
    {
    - /* We set vector == 0 to tell the hypervisor we don't care about it,
    - * but we want a pirq setup instead.
    - * We use the dest_id field to pass the pirq that we want. */
    - msg->address_hi = MSI_ADDR_BASE_HI | MSI_ADDR_EXT_DEST_ID(pirq);
    - msg->address_lo =
    - MSI_ADDR_BASE_LO |
    - MSI_ADDR_DEST_MODE_PHYSICAL |
    - MSI_ADDR_REDIRECTION_CPU |
    - MSI_ADDR_DEST_ID(pirq);
    -
    - msg->data = XEN_PIRQ_MSI_DATA;
    + /*
    + * We set vector == 0 to tell the hypervisor we don't care about
    + * it, but we want a pirq setup instead. We use the dest_id fields
    + * to pass the pirq that we want.
    + */
    + memset(msg, 0, sizeof(*msg));
    + msg->address_hi = X86_MSI_BASE_ADDRESS_HIGH;
    + msg->arch_addr_hi.destid_8_31 = pirq >> 8;
    + msg->arch_addr_lo.destid_0_7 = pirq & 0xFF;
    + msg->arch_addr_lo.base_address = X86_MSI_BASE_ADDRESS_LOW;
    + msg->arch_data.delivery_mode = APIC_DELIVERY_MODE_EXTINT;
    }

    static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-10-24 23:38    [W:4.025 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site