mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 02:19:51 +00:00
mn10300/irq: Use access helper irq_data_get_affinity_mask()
Use access helper irq_data_get_affinity_mask() to hide implementation details of struct irq_desc. Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Tony Luck <tony.luck@intel.com> Cc: linux-am33-list@redhat.com Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Yinghai Lu <yinghai@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: David Howells <dhowells@redhat.com> Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com> Link: http://lkml.kernel.org/r/1433145945-789-23-git-send-email-jiang.liu@linux.intel.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
4ba375016f
commit
9d03e784bc
2 changed files with 8 additions and 7 deletions
|
@ -123,7 +123,7 @@ int __init init_clockevents(void)
|
|||
{
|
||||
struct irq_data *data;
|
||||
data = irq_get_irq_data(cd->irq);
|
||||
cpumask_copy(data->affinity, cpumask_of(cpu));
|
||||
cpumask_copy(irq_data_get_affinity_mask(data), cpumask_of(cpu));
|
||||
iact->flags |= IRQF_NOBALANCING;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -87,7 +87,8 @@ static void mn10300_cpupic_mask_ack(struct irq_data *d)
|
|||
tmp2 = GxICR(irq);
|
||||
|
||||
irq_affinity_online[irq] =
|
||||
cpumask_any_and(d->affinity, cpu_online_mask);
|
||||
cpumask_any_and(irq_data_get_affinity_mask(d),
|
||||
cpu_online_mask);
|
||||
CROSS_GxICR(irq, irq_affinity_online[irq]) =
|
||||
(tmp & (GxICR_LEVEL | GxICR_ENABLE)) | GxICR_DETECT;
|
||||
tmp = CROSS_GxICR(irq, irq_affinity_online[irq]);
|
||||
|
@ -124,7 +125,7 @@ static void mn10300_cpupic_unmask_clear(struct irq_data *d)
|
|||
} else {
|
||||
tmp = GxICR(irq);
|
||||
|
||||
irq_affinity_online[irq] = cpumask_any_and(d->affinity,
|
||||
irq_affinity_online[irq] = cpumask_any_and(irq_data_get_affinity_mask(d),
|
||||
cpu_online_mask);
|
||||
CROSS_GxICR(irq, irq_affinity_online[irq]) = (tmp & GxICR_LEVEL) | GxICR_ENABLE | GxICR_DETECT;
|
||||
tmp = CROSS_GxICR(irq, irq_affinity_online[irq]);
|
||||
|
@ -316,15 +317,16 @@ void migrate_irqs(void)
|
|||
self = smp_processor_id();
|
||||
for (irq = 0; irq < NR_IRQS; irq++) {
|
||||
struct irq_data *data = irq_get_irq_data(irq);
|
||||
struct cpumask *mask = irq_data_get_affinity_mask(data);
|
||||
|
||||
if (irqd_is_per_cpu(data))
|
||||
continue;
|
||||
|
||||
if (cpumask_test_cpu(self, data->affinity) &&
|
||||
if (cpumask_test_cpu(self, mask) &&
|
||||
!cpumask_intersects(&irq_affinity[irq], cpu_online_mask)) {
|
||||
int cpu_id;
|
||||
cpu_id = cpumask_first(cpu_online_mask);
|
||||
cpumask_set_cpu(cpu_id, data->affinity);
|
||||
cpumask_set_cpu(cpu_id, mask);
|
||||
}
|
||||
/* We need to operate irq_affinity_online atomically. */
|
||||
arch_local_cli_save(flags);
|
||||
|
@ -335,8 +337,7 @@ void migrate_irqs(void)
|
|||
GxICR(irq) = x & GxICR_LEVEL;
|
||||
tmp = GxICR(irq);
|
||||
|
||||
new = cpumask_any_and(data->affinity,
|
||||
cpu_online_mask);
|
||||
new = cpumask_any_and(mask, cpu_online_mask);
|
||||
irq_affinity_online[irq] = new;
|
||||
|
||||
CROSS_GxICR(irq, new) =
|
||||
|
|
Loading…
Reference in a new issue