mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-04 09:17:00 +07:00
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Ingo Molnar: "Three irqchip driver fixes, and an affinity mask helper function bug fix affecting x86" * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: Revert "genirq: Restrict effective affinity to interrupts actually using it" irqchip.mips-gic: Fix shared interrupt mask writes irqchip/gic-v4: Fix building with ancient gcc irqchip/gic-v3: Iterate over possible CPUs by for_each_possible_cpu()
This commit is contained in:
commit
43d368a18f
@ -1042,7 +1042,7 @@ static int get_cpu_number(struct device_node *dn)
|
|||||||
{
|
{
|
||||||
const __be32 *cell;
|
const __be32 *cell;
|
||||||
u64 hwid;
|
u64 hwid;
|
||||||
int i;
|
int cpu;
|
||||||
|
|
||||||
cell = of_get_property(dn, "reg", NULL);
|
cell = of_get_property(dn, "reg", NULL);
|
||||||
if (!cell)
|
if (!cell)
|
||||||
@ -1056,9 +1056,9 @@ static int get_cpu_number(struct device_node *dn)
|
|||||||
if (hwid & ~MPIDR_HWID_BITMASK)
|
if (hwid & ~MPIDR_HWID_BITMASK)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
for (i = 0; i < num_possible_cpus(); i++)
|
for_each_possible_cpu(cpu)
|
||||||
if (cpu_logical_map(i) == hwid)
|
if (cpu_logical_map(cpu) == hwid)
|
||||||
return i;
|
return cpu;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,9 @@ int its_map_vlpi(int irq, struct its_vlpi_map *map)
|
|||||||
{
|
{
|
||||||
struct its_cmd_info info = {
|
struct its_cmd_info info = {
|
||||||
.cmd_type = MAP_VLPI,
|
.cmd_type = MAP_VLPI,
|
||||||
.map = map,
|
{
|
||||||
|
.map = map,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -189,7 +191,9 @@ int its_get_vlpi(int irq, struct its_vlpi_map *map)
|
|||||||
{
|
{
|
||||||
struct its_cmd_info info = {
|
struct its_cmd_info info = {
|
||||||
.cmd_type = GET_VLPI,
|
.cmd_type = GET_VLPI,
|
||||||
.map = map,
|
{
|
||||||
|
.map = map,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return irq_set_vcpu_affinity(irq, &info);
|
return irq_set_vcpu_affinity(irq, &info);
|
||||||
@ -205,7 +209,9 @@ int its_prop_update_vlpi(int irq, u8 config, bool inv)
|
|||||||
{
|
{
|
||||||
struct its_cmd_info info = {
|
struct its_cmd_info info = {
|
||||||
.cmd_type = inv ? PROP_UPDATE_AND_INV_VLPI : PROP_UPDATE_VLPI,
|
.cmd_type = inv ? PROP_UPDATE_AND_INV_VLPI : PROP_UPDATE_VLPI,
|
||||||
.config = config,
|
{
|
||||||
|
.config = config,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return irq_set_vcpu_affinity(irq, &info);
|
return irq_set_vcpu_affinity(irq, &info);
|
||||||
|
@ -169,7 +169,7 @@ static void gic_mask_irq(struct irq_data *d)
|
|||||||
{
|
{
|
||||||
unsigned int intr = GIC_HWIRQ_TO_SHARED(d->hwirq);
|
unsigned int intr = GIC_HWIRQ_TO_SHARED(d->hwirq);
|
||||||
|
|
||||||
write_gic_rmask(BIT(intr));
|
write_gic_rmask(intr);
|
||||||
gic_clear_pcpu_masks(intr);
|
gic_clear_pcpu_masks(intr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,7 +179,7 @@ static void gic_unmask_irq(struct irq_data *d)
|
|||||||
unsigned int intr = GIC_HWIRQ_TO_SHARED(d->hwirq);
|
unsigned int intr = GIC_HWIRQ_TO_SHARED(d->hwirq);
|
||||||
unsigned int cpu;
|
unsigned int cpu;
|
||||||
|
|
||||||
write_gic_smask(BIT(intr));
|
write_gic_smask(intr);
|
||||||
|
|
||||||
gic_clear_pcpu_masks(intr);
|
gic_clear_pcpu_masks(intr);
|
||||||
cpu = cpumask_first_and(affinity, cpu_online_mask);
|
cpu = cpumask_first_and(affinity, cpu_online_mask);
|
||||||
@ -767,7 +767,7 @@ static int __init gic_of_init(struct device_node *node,
|
|||||||
for (i = 0; i < gic_shared_intrs; i++) {
|
for (i = 0; i < gic_shared_intrs; i++) {
|
||||||
change_gic_pol(i, GIC_POL_ACTIVE_HIGH);
|
change_gic_pol(i, GIC_POL_ACTIVE_HIGH);
|
||||||
change_gic_trig(i, GIC_TRIG_LEVEL);
|
change_gic_trig(i, GIC_TRIG_LEVEL);
|
||||||
write_gic_rmask(BIT(i));
|
write_gic_rmask(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < gic_vpes; i++) {
|
for (i = 0; i < gic_vpes; i++) {
|
||||||
|
@ -783,10 +783,7 @@ static inline struct cpumask *irq_data_get_affinity_mask(struct irq_data *d)
|
|||||||
static inline
|
static inline
|
||||||
struct cpumask *irq_data_get_effective_affinity_mask(struct irq_data *d)
|
struct cpumask *irq_data_get_effective_affinity_mask(struct irq_data *d)
|
||||||
{
|
{
|
||||||
if (!cpumask_empty(d->common->effective_affinity))
|
return d->common->effective_affinity;
|
||||||
return d->common->effective_affinity;
|
|
||||||
|
|
||||||
return d->common->affinity;
|
|
||||||
}
|
}
|
||||||
static inline void irq_data_update_effective_affinity(struct irq_data *d,
|
static inline void irq_data_update_effective_affinity(struct irq_data *d,
|
||||||
const struct cpumask *m)
|
const struct cpumask *m)
|
||||||
|
Loading…
Reference in New Issue
Block a user