Commit 10a7462e authored by James Morse's avatar James Morse Committed by Heyuan Wang
Browse files

arm64: acpi: Move get_cpu_for_acpi_id() to a header

stable inclusion
from stable-v5.10.226
commit ccb95b37e9573980258b744bb5fee6462b02c30f
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAU9OA
CVE: CVE-2024-46822

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=ccb95b37e957



--------------------------------

[ Upstream commit 8d34b6f17b9ac93faa2791eb037dcb08bdf755de ]

ACPI identifies CPUs by UID. get_cpu_for_acpi_id() maps the ACPI UID
to the Linux CPU number.

The helper to retrieve this mapping is only available in arm64's NUMA
code.

Move it to live next to get_acpi_id_for_cpu().

Signed-off-by: default avatarJames Morse <james.morse@arm.com>
Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: default avatarGavin Shan <gshan@redhat.com>
Tested-by: default avatarMiguel Luis <miguel.luis@oracle.com>
Tested-by: default avatarVishnu Pajjuri <vishnu@os.amperecomputing.com>
Tested-by: default avatarJianyong Wu <jianyong.wu@arm.com>
Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Acked-by: default avatarHanjun Guo <guohanjun@huawei.com>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: default avatarLorenzo Pieralisi <lpieralisi@kernel.org>
Link: https://lore.kernel.org/r/20240529133446.28446-12-Jonathan.Cameron@huawei.com


Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarwangheyuan <wangheyuan2@h-partners.com>
parent 950c74b8
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -100,6 +100,17 @@ static inline u32 get_acpi_id_for_cpu(unsigned int cpu)
	return	acpi_cpu_get_madt_gicc(cpu)->uid;
}

static inline int get_cpu_for_acpi_id(u32 uid)
{
	int cpu;

	for (cpu = 0; cpu < nr_cpu_ids; cpu++)
		if (uid == get_acpi_id_for_cpu(cpu))
			return cpu;

	return -EINVAL;
}

static inline void arch_fix_phys_package_id(int num, u32 slot) { }
void __init acpi_init_cpus(void);
int apei_claim_sea(struct pt_regs *regs);
+0 −11
Original line number Diff line number Diff line
@@ -34,17 +34,6 @@ int __init acpi_numa_get_nid(unsigned int cpu)
	return acpi_early_node_map[cpu];
}

static inline int get_cpu_for_acpi_id(u32 uid)
{
	int cpu;

	for (cpu = 0; cpu < nr_cpu_ids; cpu++)
		if (uid == get_acpi_id_for_cpu(cpu))
			return cpu;

	return -EINVAL;
}

static int __init acpi_parse_gicc_pxm(union acpi_subtable_headers *header,
				      const unsigned long end)
{