From a46a1ad097419aeea7350987dd95230f50d90392 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 15 Nov 2024 08:53:41 +0000
Subject: [PATCH] 固定GMAC1 网卡名为 eth3
---
kernel/arch/arm64/kernel/vdso.c | 28 +++++++++++++++++++++++++++-
1 files changed, 27 insertions(+), 1 deletions(-)
diff --git a/kernel/arch/arm64/kernel/vdso.c b/kernel/arch/arm64/kernel/vdso.c
index debb899..9ddd257 100644
--- a/kernel/arch/arm64/kernel/vdso.c
+++ b/kernel/arch/arm64/kernel/vdso.c
@@ -43,6 +43,8 @@
VVAR_NR_PAGES,
};
+#define VPRIV_NR_PAGES __VPRIV_PAGES
+
struct vdso_abi_info {
const char *name;
const char *vdso_code_start;
@@ -123,6 +125,9 @@
vdso_pagelist[i] = pfn_to_page(pfn + i);
vdso_info[abi].cm->pages = vdso_pagelist;
+#ifdef CONFIG_GENERIC_CLOCKSOURCE_VDSO
+ vdso_data->cs_type_seq = CLOCKSOURCE_VDSO_NONE << 16 | 1;
+#endif
return 0;
}
@@ -243,7 +248,8 @@
vdso_text_len = vdso_info[abi].vdso_pages << PAGE_SHIFT;
/* Be sure to map the data page */
- vdso_mapping_len = vdso_text_len + VVAR_NR_PAGES * PAGE_SIZE;
+ vdso_mapping_len = vdso_text_len + VVAR_NR_PAGES * PAGE_SIZE
+ + VPRIV_NR_PAGES * PAGE_SIZE;
vdso_base = get_unmapped_area(NULL, 0, vdso_mapping_len, 0, 0);
if (IS_ERR_VALUE(vdso_base)) {
@@ -251,6 +257,26 @@
goto up_fail;
}
+ /*
+ * Install the vDSO mappings we need:
+ *
+ * +----------------+
+ * | vpriv | PAGE_SIZE (private anon page if GENERIC_CLOCKSOURCE_VDSO)
+ * |----------------|
+ * | vvar | PAGE_SIZE (shared)
+ * |----------------|
+ * | text | text_pages * PAGE_SIZE (shared)
+ * | ... |
+ * +----------------+
+ */
+ if (VPRIV_NR_PAGES > 0 && mmap_region(NULL, vdso_base, PAGE_SIZE,
+ VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE,
+ 0, NULL) != vdso_base) {
+ ret = ERR_PTR(-EINVAL);
+ goto up_fail;
+ }
+
+ vdso_base += VPRIV_NR_PAGES * PAGE_SIZE; /* Skip private area. */
ret = _install_special_mapping(mm, vdso_base, VVAR_NR_PAGES * PAGE_SIZE,
VM_READ|VM_MAYREAD|VM_PFNMAP,
vdso_info[abi].dm);
--
Gitblit v1.6.2