forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
kernel/arch/x86/kernel/apic/x2apic_phys.c
....@@ -1,14 +1,9 @@
11 // SPDX-License-Identifier: GPL-2.0
2
-#include <linux/threads.h>
3
-#include <linux/cpumask.h>
4
-#include <linux/string.h>
5
-#include <linux/kernel.h>
6
-#include <linux/ctype.h>
7
-#include <linux/dmar.h>
82
9
-#include <asm/smp.h>
10
-#include <asm/ipi.h>
11
-#include "x2apic.h"
3
+#include <linux/cpumask.h>
4
+#include <linux/acpi.h>
5
+
6
+#include "local.h"
127
138 int x2apic_phys;
149
....@@ -88,12 +83,12 @@
8883
8984 static void x2apic_send_IPI_allbutself(int vector)
9085 {
91
- __x2apic_send_IPI_mask(cpu_online_mask, vector, APIC_DEST_ALLBUT);
86
+ __x2apic_send_IPI_shorthand(vector, APIC_DEST_ALLBUT);
9287 }
9388
9489 static void x2apic_send_IPI_all(int vector)
9590 {
96
- __x2apic_send_IPI_mask(cpu_online_mask, vector, APIC_DEST_ALLINC);
91
+ __x2apic_send_IPI_shorthand(vector, APIC_DEST_ALLINC);
9792 }
9893
9994 static void init_x2apic_ldr(void)
....@@ -128,6 +123,15 @@
128123 native_x2apic_icr_write(cfg, apicid);
129124 }
130125
126
+void __x2apic_send_IPI_shorthand(int vector, u32 which)
127
+{
128
+ unsigned long cfg = __prepare_ICR(which, vector, 0);
129
+
130
+ /* x2apic MSRs are special and need a special fence: */
131
+ weak_wrmsr_fence();
132
+ native_x2apic_icr_write(cfg, 0);
133
+}
134
+
131135 unsigned int x2apic_get_apic_id(unsigned long id)
132136 {
133137 return id;