Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 asm updates from Ingo Molnar: "This includes the following changes: - cpu_has() cleanups - sync_bitops.h modernization to the rmwcc.h facility, similarly to bitops.h - continued LTO annotations/fixes - misc cleanups and smaller cleanups" * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/um/vdso: Drop unnecessary cc-ldoption x86/vdso: Rename variable to fix -Wshadow warning x86/cpu/amd: Exclude 32bit only assembler from 64bit build x86/asm: Mark all top level asm statements as .text x86/build/vdso: Add FORCE to the build rule of %.so x86/asm: Modernize sync_bitops.h x86/mm: Convert some slow-path static_cpu_has() callers to boot_cpu_has() x86: Convert some slow-path static_cpu_has() callers to boot_cpu_has() x86/asm: Clarify static_cpu_has()'s intended use x86/uaccess: Fix implicit cast of __user pointer x86/cpufeature: Remove __pure attribute to _static_cpu_has()
This commit is contained in:
@@ -175,7 +175,7 @@ static void fixup_cpu_id(struct cpuinfo_x86 *c, int node)
|
||||
this_cpu_write(cpu_llc_id, node);
|
||||
|
||||
/* Account for nodes per socket in multi-core-module processors */
|
||||
if (static_cpu_has(X86_FEATURE_NODEID_MSR)) {
|
||||
if (boot_cpu_has(X86_FEATURE_NODEID_MSR)) {
|
||||
rdmsrl(MSR_FAM10H_NODE_ID, val);
|
||||
nodes = ((val >> 3) & 7) + 1;
|
||||
}
|
||||
|
@@ -82,11 +82,14 @@ static inline int wrmsrl_amd_safe(unsigned msr, unsigned long long val)
|
||||
* performance at the same time..
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
extern __visible void vide(void);
|
||||
__asm__(".globl vide\n"
|
||||
__asm__(".text\n"
|
||||
".globl vide\n"
|
||||
".type vide, @function\n"
|
||||
".align 4\n"
|
||||
"vide: ret\n");
|
||||
#endif
|
||||
|
||||
static void init_amd_k5(struct cpuinfo_x86 *c)
|
||||
{
|
||||
|
@@ -83,7 +83,7 @@ unsigned int aperfmperf_get_khz(int cpu)
|
||||
if (!cpu_khz)
|
||||
return 0;
|
||||
|
||||
if (!static_cpu_has(X86_FEATURE_APERFMPERF))
|
||||
if (!boot_cpu_has(X86_FEATURE_APERFMPERF))
|
||||
return 0;
|
||||
|
||||
aperfmperf_snapshot_cpu(cpu, ktime_get(), true);
|
||||
@@ -99,7 +99,7 @@ void arch_freq_prepare_all(void)
|
||||
if (!cpu_khz)
|
||||
return;
|
||||
|
||||
if (!static_cpu_has(X86_FEATURE_APERFMPERF))
|
||||
if (!boot_cpu_has(X86_FEATURE_APERFMPERF))
|
||||
return;
|
||||
|
||||
for_each_online_cpu(cpu)
|
||||
@@ -115,7 +115,7 @@ unsigned int arch_freq_get_on_cpu(int cpu)
|
||||
if (!cpu_khz)
|
||||
return 0;
|
||||
|
||||
if (!static_cpu_has(X86_FEATURE_APERFMPERF))
|
||||
if (!boot_cpu_has(X86_FEATURE_APERFMPERF))
|
||||
return 0;
|
||||
|
||||
if (aperfmperf_snapshot_cpu(cpu, ktime_get(), true))
|
||||
|
@@ -1668,7 +1668,7 @@ static void setup_getcpu(int cpu)
|
||||
unsigned long cpudata = vdso_encode_cpunode(cpu, early_cpu_to_node(cpu));
|
||||
struct desc_struct d = { };
|
||||
|
||||
if (static_cpu_has(X86_FEATURE_RDTSCP))
|
||||
if (boot_cpu_has(X86_FEATURE_RDTSCP))
|
||||
write_rdtscp_aux(cpudata);
|
||||
|
||||
/* Store CPU and node number in limit. */
|
||||
|
@@ -528,7 +528,7 @@ static void do_inject(void)
|
||||
* only on the node base core. Refer to D18F3x44[NbMcaToMstCpuEn] for
|
||||
* Fam10h and later BKDGs.
|
||||
*/
|
||||
if (static_cpu_has(X86_FEATURE_AMD_DCM) &&
|
||||
if (boot_cpu_has(X86_FEATURE_AMD_DCM) &&
|
||||
b == 4 &&
|
||||
boot_cpu_data.x86 < 0x17) {
|
||||
toggle_nb_mca_mst_cpu(amd_get_nb_id(cpu));
|
||||
|
@@ -35,11 +35,11 @@ static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c)
|
||||
"fpu_exception\t: %s\n"
|
||||
"cpuid level\t: %d\n"
|
||||
"wp\t\t: yes\n",
|
||||
static_cpu_has_bug(X86_BUG_FDIV) ? "yes" : "no",
|
||||
static_cpu_has_bug(X86_BUG_F00F) ? "yes" : "no",
|
||||
static_cpu_has_bug(X86_BUG_COMA) ? "yes" : "no",
|
||||
static_cpu_has(X86_FEATURE_FPU) ? "yes" : "no",
|
||||
static_cpu_has(X86_FEATURE_FPU) ? "yes" : "no",
|
||||
boot_cpu_has_bug(X86_BUG_FDIV) ? "yes" : "no",
|
||||
boot_cpu_has_bug(X86_BUG_F00F) ? "yes" : "no",
|
||||
boot_cpu_has_bug(X86_BUG_COMA) ? "yes" : "no",
|
||||
boot_cpu_has(X86_FEATURE_FPU) ? "yes" : "no",
|
||||
boot_cpu_has(X86_FEATURE_FPU) ? "yes" : "no",
|
||||
c->cpuid_level);
|
||||
}
|
||||
#else
|
||||
|
@@ -716,6 +716,7 @@ NOKPROBE_SYMBOL(kprobe_int3_handler);
|
||||
* calls trampoline_handler() runs, which calls the kretprobe's handler.
|
||||
*/
|
||||
asm(
|
||||
".text\n"
|
||||
".global kretprobe_trampoline\n"
|
||||
".type kretprobe_trampoline, @function\n"
|
||||
"kretprobe_trampoline:\n"
|
||||
|
@@ -113,7 +113,7 @@ static void do_sanity_check(struct mm_struct *mm,
|
||||
* tables.
|
||||
*/
|
||||
WARN_ON(!had_kernel_mapping);
|
||||
if (static_cpu_has(X86_FEATURE_PTI))
|
||||
if (boot_cpu_has(X86_FEATURE_PTI))
|
||||
WARN_ON(!had_user_mapping);
|
||||
} else {
|
||||
/*
|
||||
@@ -121,7 +121,7 @@ static void do_sanity_check(struct mm_struct *mm,
|
||||
* Sync the pgd to the usermode tables.
|
||||
*/
|
||||
WARN_ON(had_kernel_mapping);
|
||||
if (static_cpu_has(X86_FEATURE_PTI))
|
||||
if (boot_cpu_has(X86_FEATURE_PTI))
|
||||
WARN_ON(had_user_mapping);
|
||||
}
|
||||
}
|
||||
@@ -156,7 +156,7 @@ static void map_ldt_struct_to_user(struct mm_struct *mm)
|
||||
k_pmd = pgd_to_pmd_walk(k_pgd, LDT_BASE_ADDR);
|
||||
u_pmd = pgd_to_pmd_walk(u_pgd, LDT_BASE_ADDR);
|
||||
|
||||
if (static_cpu_has(X86_FEATURE_PTI) && !mm->context.ldt)
|
||||
if (boot_cpu_has(X86_FEATURE_PTI) && !mm->context.ldt)
|
||||
set_pmd(u_pmd, *k_pmd);
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ static void map_ldt_struct_to_user(struct mm_struct *mm)
|
||||
{
|
||||
pgd_t *pgd = pgd_offset(mm, LDT_BASE_ADDR);
|
||||
|
||||
if (static_cpu_has(X86_FEATURE_PTI) && !mm->context.ldt)
|
||||
if (boot_cpu_has(X86_FEATURE_PTI) && !mm->context.ldt)
|
||||
set_pgd(kernel_to_user_pgdp(pgd), *pgd);
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ map_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt, int slot)
|
||||
spinlock_t *ptl;
|
||||
int i, nr_pages;
|
||||
|
||||
if (!static_cpu_has(X86_FEATURE_PTI))
|
||||
if (!boot_cpu_has(X86_FEATURE_PTI))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
@@ -271,7 +271,7 @@ static void unmap_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt)
|
||||
return;
|
||||
|
||||
/* LDT map/unmap is only required for PTI */
|
||||
if (!static_cpu_has(X86_FEATURE_PTI))
|
||||
if (!boot_cpu_has(X86_FEATURE_PTI))
|
||||
return;
|
||||
|
||||
nr_pages = DIV_ROUND_UP(ldt->nr_entries * LDT_ENTRY_SIZE, PAGE_SIZE);
|
||||
@@ -311,7 +311,7 @@ static void free_ldt_pgtables(struct mm_struct *mm)
|
||||
unsigned long start = LDT_BASE_ADDR;
|
||||
unsigned long end = LDT_END_ADDR;
|
||||
|
||||
if (!static_cpu_has(X86_FEATURE_PTI))
|
||||
if (!boot_cpu_has(X86_FEATURE_PTI))
|
||||
return;
|
||||
|
||||
tlb_gather_mmu(&tlb, mm, start, end);
|
||||
|
@@ -121,7 +121,7 @@ DEFINE_STATIC_KEY_TRUE(virt_spin_lock_key);
|
||||
|
||||
void __init native_pv_lock_init(void)
|
||||
{
|
||||
if (!static_cpu_has(X86_FEATURE_HYPERVISOR))
|
||||
if (!boot_cpu_has(X86_FEATURE_HYPERVISOR))
|
||||
static_branch_disable(&virt_spin_lock_key);
|
||||
}
|
||||
|
||||
|
@@ -236,7 +236,7 @@ static int get_cpuid_mode(void)
|
||||
|
||||
static int set_cpuid_mode(struct task_struct *task, unsigned long cpuid_enabled)
|
||||
{
|
||||
if (!static_cpu_has(X86_FEATURE_CPUID_FAULT))
|
||||
if (!boot_cpu_has(X86_FEATURE_CPUID_FAULT))
|
||||
return -ENODEV;
|
||||
|
||||
if (cpuid_enabled)
|
||||
@@ -670,7 +670,7 @@ static int prefer_mwait_c1_over_halt(const struct cpuinfo_x86 *c)
|
||||
if (c->x86_vendor != X86_VENDOR_INTEL)
|
||||
return 0;
|
||||
|
||||
if (!cpu_has(c, X86_FEATURE_MWAIT) || static_cpu_has_bug(X86_BUG_MONITOR))
|
||||
if (!cpu_has(c, X86_FEATURE_MWAIT) || boot_cpu_has_bug(X86_BUG_MONITOR))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
|
@@ -121,7 +121,7 @@ void __noreturn machine_real_restart(unsigned int type)
|
||||
write_cr3(real_mode_header->trampoline_pgd);
|
||||
|
||||
/* Exiting long mode will fail if CR4.PCIDE is set. */
|
||||
if (static_cpu_has(X86_FEATURE_PCID))
|
||||
if (boot_cpu_has(X86_FEATURE_PCID))
|
||||
cr4_clear_bits(X86_CR4_PCIDE);
|
||||
#endif
|
||||
|
||||
|
@@ -369,7 +369,7 @@ static long do_sys_vm86(struct vm86plus_struct __user *user_vm86, bool plus)
|
||||
preempt_disable();
|
||||
tsk->thread.sp0 += 16;
|
||||
|
||||
if (static_cpu_has(X86_FEATURE_SEP)) {
|
||||
if (boot_cpu_has(X86_FEATURE_SEP)) {
|
||||
tsk->thread.sysenter_cs = 0;
|
||||
refresh_sysenter_cs(&tsk->thread);
|
||||
}
|
||||
|
Reference in New Issue
Block a user