From 7e970c18f85f99acc678d90128b6e01dce1bf273 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 01 Nov 2024 02:40:12 +0000
Subject: [PATCH] gmac get mac form eeprom
---
kernel/arch/arm64/include/asm/mmu_context.h | 34 ++++++++++++++++++++++++++++++++--
1 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/kernel/arch/arm64/include/asm/mmu_context.h b/kernel/arch/arm64/include/asm/mmu_context.h
index cc58614..1b0551e 100644
--- a/kernel/arch/arm64/include/asm/mmu_context.h
+++ b/kernel/arch/arm64/include/asm/mmu_context.h
@@ -15,6 +15,7 @@
#include <linux/sched/hotplug.h>
#include <linux/mm_types.h>
#include <linux/pgtable.h>
+#include <linux/irq_pipeline.h>
#include <asm/cacheflush.h>
#include <asm/cpufeature.h>
@@ -112,6 +113,9 @@
static inline void cpu_uninstall_idmap(void)
{
struct mm_struct *mm = current->active_mm;
+ unsigned long flags;
+
+ flags = hard_cond_local_irq_save();
cpu_set_reserved_ttbr0();
local_flush_tlb_all();
@@ -119,15 +123,23 @@
if (mm != &init_mm && !system_uses_ttbr0_pan())
cpu_switch_mm(mm->pgd, mm);
+
+ hard_cond_local_irq_restore(flags);
}
static inline void cpu_install_idmap(void)
{
+ unsigned long flags;
+
+ flags = hard_cond_local_irq_save();
+
cpu_set_reserved_ttbr0();
local_flush_tlb_all();
cpu_set_idmap_tcr_t0sz();
cpu_switch_mm(lm_alias(idmap_pg_dir), &init_mm);
+
+ hard_cond_local_irq_restore(flags);
}
/*
@@ -230,7 +242,7 @@
}
static inline void
-switch_mm(struct mm_struct *prev, struct mm_struct *next,
+do_switch_mm(struct mm_struct *prev, struct mm_struct *next,
struct task_struct *tsk)
{
if (prev != next)
@@ -245,8 +257,26 @@
update_saved_ttbr0(tsk, next);
}
+static inline void
+switch_mm(struct mm_struct *prev, struct mm_struct *next,
+ struct task_struct *tsk)
+{
+ unsigned long flags;
+
+ protect_inband_mm(flags);
+ do_switch_mm(prev, next, tsk);
+ unprotect_inband_mm(flags);
+}
+
#define deactivate_mm(tsk,mm) do { } while (0)
-#define activate_mm(prev,next) switch_mm(prev, next, current)
+#define activate_mm(prev,next) do_switch_mm(prev, next, current)
+
+static inline void
+switch_oob_mm(struct mm_struct *prev, struct mm_struct *next,
+ struct task_struct *tsk)
+{
+ do_switch_mm(prev, next, tsk);
+}
static inline const struct cpumask *
task_cpu_possible_mask(struct task_struct *p)
--
Gitblit v1.6.2