Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull two arm64 fixes from Catalin Marinas:
- arm64 migrate_irqs() fix following commit ffde1de640
(irqchip: Gic:
Support forced affinity setting)
- fix arm64 pud_huge() to return 0 when only 2 levels page tables are
used (__PAGETABLE_PMD_FOLDED defined and pmd_huge already covers
block entries at the first level), otherwise KVM gets confused
* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
arm64: fix pud_huge() for 2-level pagetables
arm64: use cpu_online_mask when using forced irq_set_affinity
This commit is contained in:
@@ -97,11 +97,15 @@ static bool migrate_one_irq(struct irq_desc *desc)
|
|||||||
if (irqd_is_per_cpu(d) || !cpumask_test_cpu(smp_processor_id(), affinity))
|
if (irqd_is_per_cpu(d) || !cpumask_test_cpu(smp_processor_id(), affinity))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) {
|
if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids)
|
||||||
affinity = cpu_online_mask;
|
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* when using forced irq_set_affinity we must ensure that the cpu
|
||||||
|
* being offlined is not present in the affinity mask, it may be
|
||||||
|
* selected as the target CPU otherwise
|
||||||
|
*/
|
||||||
|
affinity = cpu_online_mask;
|
||||||
c = irq_data_get_irq_chip(d);
|
c = irq_data_get_irq_chip(d);
|
||||||
if (!c->irq_set_affinity)
|
if (!c->irq_set_affinity)
|
||||||
pr_debug("IRQ%u: unable to set affinity\n", d->irq);
|
pr_debug("IRQ%u: unable to set affinity\n", d->irq);
|
||||||
|
@@ -51,7 +51,11 @@ int pmd_huge(pmd_t pmd)
|
|||||||
|
|
||||||
int pud_huge(pud_t pud)
|
int pud_huge(pud_t pud)
|
||||||
{
|
{
|
||||||
|
#ifndef __PAGETABLE_PMD_FOLDED
|
||||||
return !(pud_val(pud) & PUD_TABLE_BIT);
|
return !(pud_val(pud) & PUD_TABLE_BIT);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int pmd_huge_support(void)
|
int pmd_huge_support(void)
|
||||||
|
Reference in New Issue
Block a user