Merge branches 'x86/mm', 'x86/build', 'x86/apic' and 'x86/platform' into x86/core, to apply dependent patch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
34e7724c07
122 changed files with 3699 additions and 3233 deletions
|
|
@ -227,6 +227,7 @@ extern void dmar_msi_read(int irq, struct msi_msg *msg);
|
|||
extern void dmar_msi_write(int irq, struct msi_msg *msg);
|
||||
extern int dmar_set_interrupt(struct intel_iommu *iommu);
|
||||
extern irqreturn_t dmar_fault(int irq, void *dev_id);
|
||||
extern int arch_setup_dmar_msi(unsigned int irq);
|
||||
extern int dmar_alloc_hwirq(int id, int node, void *arg);
|
||||
extern void dmar_free_hwirq(int irq);
|
||||
|
||||
#endif /* __DMAR_H__ */
|
||||
|
|
|
|||
|
|
@ -1,24 +1,38 @@
|
|||
#ifndef LINUX_HTIRQ_H
|
||||
#define LINUX_HTIRQ_H
|
||||
|
||||
struct pci_dev;
|
||||
struct irq_data;
|
||||
|
||||
struct ht_irq_msg {
|
||||
u32 address_lo; /* low 32 bits of the ht irq message */
|
||||
u32 address_hi; /* high 32 bits of the it irq message */
|
||||
};
|
||||
|
||||
typedef void (ht_irq_update_t)(struct pci_dev *dev, int irq,
|
||||
struct ht_irq_msg *msg);
|
||||
|
||||
struct ht_irq_cfg {
|
||||
struct pci_dev *dev;
|
||||
/* Update callback used to cope with buggy hardware */
|
||||
ht_irq_update_t *update;
|
||||
unsigned pos;
|
||||
unsigned idx;
|
||||
struct ht_irq_msg msg;
|
||||
};
|
||||
|
||||
/* Helper functions.. */
|
||||
void fetch_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg);
|
||||
void write_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg);
|
||||
struct irq_data;
|
||||
void mask_ht_irq(struct irq_data *data);
|
||||
void unmask_ht_irq(struct irq_data *data);
|
||||
|
||||
/* The arch hook for getting things started */
|
||||
int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev);
|
||||
int arch_setup_ht_irq(int idx, int pos, struct pci_dev *dev,
|
||||
ht_irq_update_t *update);
|
||||
void arch_teardown_ht_irq(unsigned int irq);
|
||||
|
||||
/* For drivers of buggy hardware */
|
||||
typedef void (ht_irq_update_t)(struct pci_dev *dev, int irq,
|
||||
struct ht_irq_msg *msg);
|
||||
int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update);
|
||||
|
||||
#endif /* LINUX_HTIRQ_H */
|
||||
|
|
|
|||
|
|
@ -298,6 +298,8 @@ struct q_inval {
|
|||
|
||||
#define INTR_REMAP_TABLE_ENTRIES 65536
|
||||
|
||||
struct irq_domain;
|
||||
|
||||
struct ir_table {
|
||||
struct irte *base;
|
||||
unsigned long *bitmap;
|
||||
|
|
@ -347,6 +349,8 @@ struct intel_iommu {
|
|||
|
||||
#ifdef CONFIG_IRQ_REMAP
|
||||
struct ir_table *ir_table; /* Interrupt remapping info */
|
||||
struct irq_domain *ir_domain;
|
||||
struct irq_domain *ir_msi_domain;
|
||||
#endif
|
||||
struct device *iommu_dev; /* IOMMU-sysfs device */
|
||||
int node;
|
||||
|
|
|
|||
|
|
@ -111,6 +111,13 @@ static inline void arch_phys_wc_del(int handle)
|
|||
}
|
||||
|
||||
#define arch_phys_wc_add arch_phys_wc_add
|
||||
#ifndef arch_phys_wc_index
|
||||
static inline int arch_phys_wc_index(int handle)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
#define arch_phys_wc_index arch_phys_wc_index
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_IO_H */
|
||||
|
|
|
|||
|
|
@ -327,6 +327,7 @@ static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d)
|
|||
* @irq_write_msi_msg: optional to write message content for MSI
|
||||
* @irq_get_irqchip_state: return the internal state of an interrupt
|
||||
* @irq_set_irqchip_state: set the internal state of a interrupt
|
||||
* @irq_set_vcpu_affinity: optional to target a vCPU in a virtual machine
|
||||
* @flags: chip specific flags
|
||||
*/
|
||||
struct irq_chip {
|
||||
|
|
@ -369,6 +370,8 @@ struct irq_chip {
|
|||
int (*irq_get_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool *state);
|
||||
int (*irq_set_irqchip_state)(struct irq_data *data, enum irqchip_irq_state which, bool state);
|
||||
|
||||
int (*irq_set_vcpu_affinity)(struct irq_data *data, void *vcpu_info);
|
||||
|
||||
unsigned long flags;
|
||||
};
|
||||
|
||||
|
|
@ -422,6 +425,7 @@ extern void irq_cpu_online(void);
|
|||
extern void irq_cpu_offline(void);
|
||||
extern int irq_set_affinity_locked(struct irq_data *data,
|
||||
const struct cpumask *cpumask, bool force);
|
||||
extern int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info);
|
||||
|
||||
#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_PENDING_IRQ)
|
||||
void irq_move_irq(struct irq_data *data);
|
||||
|
|
@ -467,6 +471,8 @@ extern int irq_chip_set_affinity_parent(struct irq_data *data,
|
|||
const struct cpumask *dest,
|
||||
bool force);
|
||||
extern int irq_chip_set_wake_parent(struct irq_data *data, unsigned int on);
|
||||
extern int irq_chip_set_vcpu_affinity_parent(struct irq_data *data,
|
||||
void *vcpu_info);
|
||||
#endif
|
||||
|
||||
/* Handling of unhandled and spurious interrupts: */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue