2026-01-29 22:25:33 +08:00

28 lines
729 B
C

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2021 Arm Ltd. */
#include <asm/mpam.h>
#include <linux/arm_mpam.h>
#include <linux/jump_label.h>
#include <linux/percpu.h>
#include <linux/crash_dump.h>
DEFINE_STATIC_KEY_FALSE(arm64_mpam_has_hcr);
DEFINE_STATIC_KEY_FALSE(mpam_enabled);
DEFINE_PER_CPU(u64, arm64_mpam_default);
DEFINE_PER_CPU(u64, arm64_mpam_current);
static int __init arm64_mpam_register_cpus(void)
{
if (is_kdump_kernel())
return 0;
u64 mpamidr = read_sanitised_ftr_reg(SYS_MPAMIDR_EL1);
u16 partid_max = FIELD_GET(MPAMIDR_PARTID_MAX, mpamidr);
u8 pmg_max = FIELD_GET(MPAMIDR_PMG_MAX, mpamidr);
return mpam_register_requestor(partid_max, pmg_max);
}
arch_initcall(arm64_mpam_register_cpus)