Commit 2bf1e7bc authored by Thomas Gleixner's avatar Thomas Gleixner

x86/msi: Consolidate HPET allocation

None of the magic HPET fields are required in any way.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarJoerg Roedel <jroedel@suse.de>
Link: https://lore.kernel.org/r/20200826112331.943993771@linutronix.de
parent 874d9b3a
...@@ -65,13 +65,6 @@ struct irq_alloc_info { ...@@ -65,13 +65,6 @@ struct irq_alloc_info {
union { union {
int unused; int unused;
#ifdef CONFIG_HPET_TIMER
struct {
int hpet_id;
int hpet_index;
void *hpet_data;
};
#endif
#ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI
struct { struct {
struct pci_dev *msi_dev; struct pci_dev *msi_dev;
......
...@@ -423,7 +423,7 @@ static struct irq_chip hpet_msi_controller __ro_after_init = { ...@@ -423,7 +423,7 @@ static struct irq_chip hpet_msi_controller __ro_after_init = {
static irq_hw_number_t hpet_msi_get_hwirq(struct msi_domain_info *info, static irq_hw_number_t hpet_msi_get_hwirq(struct msi_domain_info *info,
msi_alloc_info_t *arg) msi_alloc_info_t *arg)
{ {
return arg->hpet_index; return arg->hwirq;
} }
static int hpet_msi_init(struct irq_domain *domain, static int hpet_msi_init(struct irq_domain *domain,
...@@ -431,8 +431,8 @@ static int hpet_msi_init(struct irq_domain *domain, ...@@ -431,8 +431,8 @@ static int hpet_msi_init(struct irq_domain *domain,
irq_hw_number_t hwirq, msi_alloc_info_t *arg) irq_hw_number_t hwirq, msi_alloc_info_t *arg)
{ {
irq_set_status_flags(virq, IRQ_MOVE_PCNTXT); irq_set_status_flags(virq, IRQ_MOVE_PCNTXT);
irq_domain_set_info(domain, virq, arg->hpet_index, info->chip, NULL, irq_domain_set_info(domain, virq, arg->hwirq, info->chip, NULL,
handle_edge_irq, arg->hpet_data, "edge"); handle_edge_irq, arg->data, "edge");
return 0; return 0;
} }
...@@ -473,7 +473,7 @@ struct irq_domain *hpet_create_irq_domain(int hpet_id) ...@@ -473,7 +473,7 @@ struct irq_domain *hpet_create_irq_domain(int hpet_id)
init_irq_alloc_info(&info, NULL); init_irq_alloc_info(&info, NULL);
info.type = X86_IRQ_ALLOC_TYPE_HPET_GET_PARENT; info.type = X86_IRQ_ALLOC_TYPE_HPET_GET_PARENT;
info.hpet_id = hpet_id; info.devid = hpet_id;
parent = irq_remapping_get_irq_domain(&info); parent = irq_remapping_get_irq_domain(&info);
if (parent == NULL) if (parent == NULL)
parent = x86_vector_domain; parent = x86_vector_domain;
...@@ -502,9 +502,9 @@ int hpet_assign_irq(struct irq_domain *domain, struct hpet_channel *hc, ...@@ -502,9 +502,9 @@ int hpet_assign_irq(struct irq_domain *domain, struct hpet_channel *hc,
init_irq_alloc_info(&info, NULL); init_irq_alloc_info(&info, NULL);
info.type = X86_IRQ_ALLOC_TYPE_HPET; info.type = X86_IRQ_ALLOC_TYPE_HPET;
info.hpet_data = hc; info.data = hc;
info.hpet_id = hpet_dev_id(domain); info.devid = hpet_dev_id(domain);
info.hpet_index = dev_num; info.hwirq = dev_num;
return irq_domain_alloc_irqs(domain, 1, NUMA_NO_NODE, &info); return irq_domain_alloc_irqs(domain, 1, NUMA_NO_NODE, &info);
} }
......
...@@ -3525,7 +3525,7 @@ static int get_devid(struct irq_alloc_info *info) ...@@ -3525,7 +3525,7 @@ static int get_devid(struct irq_alloc_info *info)
return get_ioapic_devid(info->ioapic_id); return get_ioapic_devid(info->ioapic_id);
case X86_IRQ_ALLOC_TYPE_HPET: case X86_IRQ_ALLOC_TYPE_HPET:
case X86_IRQ_ALLOC_TYPE_HPET_GET_PARENT: case X86_IRQ_ALLOC_TYPE_HPET_GET_PARENT:
return get_hpet_devid(info->hpet_id); return get_hpet_devid(info->devid);
case X86_IRQ_ALLOC_TYPE_PCI_MSI: case X86_IRQ_ALLOC_TYPE_PCI_MSI:
case X86_IRQ_ALLOC_TYPE_PCI_MSIX: case X86_IRQ_ALLOC_TYPE_PCI_MSIX:
return get_device_id(&info->msi_dev->dev); return get_device_id(&info->msi_dev->dev);
......
...@@ -1121,7 +1121,7 @@ static struct irq_domain *intel_get_irq_domain(struct irq_alloc_info *info) ...@@ -1121,7 +1121,7 @@ static struct irq_domain *intel_get_irq_domain(struct irq_alloc_info *info)
case X86_IRQ_ALLOC_TYPE_IOAPIC_GET_PARENT: case X86_IRQ_ALLOC_TYPE_IOAPIC_GET_PARENT:
return map_ioapic_to_ir(info->ioapic_id); return map_ioapic_to_ir(info->ioapic_id);
case X86_IRQ_ALLOC_TYPE_HPET_GET_PARENT: case X86_IRQ_ALLOC_TYPE_HPET_GET_PARENT:
return map_hpet_to_ir(info->hpet_id); return map_hpet_to_ir(info->devid);
case X86_IRQ_ALLOC_TYPE_PCI_MSI: case X86_IRQ_ALLOC_TYPE_PCI_MSI:
case X86_IRQ_ALLOC_TYPE_PCI_MSIX: case X86_IRQ_ALLOC_TYPE_PCI_MSIX:
return map_dev_to_ir(info->msi_dev); return map_dev_to_ir(info->msi_dev);
...@@ -1291,7 +1291,7 @@ static void intel_irq_remapping_prepare_irte(struct intel_ir_data *data, ...@@ -1291,7 +1291,7 @@ static void intel_irq_remapping_prepare_irte(struct intel_ir_data *data,
case X86_IRQ_ALLOC_TYPE_PCI_MSI: case X86_IRQ_ALLOC_TYPE_PCI_MSI:
case X86_IRQ_ALLOC_TYPE_PCI_MSIX: case X86_IRQ_ALLOC_TYPE_PCI_MSIX:
if (info->type == X86_IRQ_ALLOC_TYPE_HPET) if (info->type == X86_IRQ_ALLOC_TYPE_HPET)
set_hpet_sid(irte, info->hpet_id); set_hpet_sid(irte, info->devid);
else else
set_msi_sid(irte, info->msi_dev); set_msi_sid(irte, info->msi_dev);
......
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