Commit 14dcf78a authored by Catalin Marinas's avatar Catalin Marinas
Browse files

Merge branch 'for-next/cpus_have_const_cap' into for-next/core

* for-next/cpus_have_const_cap: (38 commits)
  : cpus_have_const_cap() removal
  arm64: Remove cpus_have_const_cap()
  arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_REPEAT_TLBI
  arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_NVIDIA_CARMEL_CNP
  arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_CAVIUM_23154
  arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_2645198
  arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_1742098
  arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_1542419
  arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_843419
  arm64: Avoid cpus_have_const_cap() for ARM64_UNMAP_KERNEL_AT_EL0
  arm64: Avoid cpus_have_const_cap() for ARM64_{SVE,SME,SME2,FA64}
  arm64: Avoid cpus_have_const_cap() for ARM64_SPECTRE_V2
  arm64: Avoid cpus_have_const_cap() for ARM64_SSBS
  arm64: Avoid cpus_have_const_cap() for ARM64_MTE
  arm64: Avoid cpus_have_const_cap() for ARM64_HAS_TLB_RANGE
  arm64: Avoid cpus_have_const_cap() for ARM64_HAS_WFXT
  arm64: Avoid cpus_have_const_cap() for ARM64_HAS_RNG
  arm64: Avoid cpus_have_const_cap() for ARM64_HAS_EPAN
  arm64: Avoid cpus_have_const_cap() for ARM64_HAS_PAN
  arm64: Avoid cpus_have_const_cap() for ARM64_HAS_GIC_PRIO_MASKING
  arm64: Avoid cpus_have_const_cap() for ARM64_HAS_DIT
  ...
parents 2baca17e e8d4006d
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -164,9 +164,6 @@ static int xen_starting_cpu(unsigned int cpu)
	BUG_ON(err);
	per_cpu(xen_vcpu, cpu) = vcpup;

	if (!xen_kernel_unmapped_at_usr())
		xen_setup_runstate_info(cpu);

after_register_vcpu_info:
	enable_percpu_irq(xen_events_irq, 0);
	return 0;
@@ -523,9 +520,6 @@ static int __init xen_guest_init(void)
		return -EINVAL;
	}

	if (!xen_kernel_unmapped_at_usr())
		xen_time_setup_guest();

	if (xen_initial_domain())
		pvclock_gtod_register_notifier(&xen_pvclock_gtod_notifier);

@@ -535,7 +529,13 @@ static int __init xen_guest_init(void)
}
early_initcall(xen_guest_init);

static int __init xen_pm_init(void)
static int xen_starting_runstate_cpu(unsigned int cpu)
{
	xen_setup_runstate_info(cpu);
	return 0;
}

static int __init xen_late_init(void)
{
	if (!xen_domain())
		return -ENODEV;
@@ -548,9 +548,16 @@ static int __init xen_pm_init(void)
		do_settimeofday64(&ts);
	}

	if (xen_kernel_unmapped_at_usr())
		return 0;

	xen_time_setup_guest();

	return cpuhp_setup_state(CPUHP_AP_ARM_XEN_RUNSTATE_STARTING,
				 "arm/xen_runstate:starting",
				 xen_starting_runstate_cpu, NULL);
}
late_initcall(xen_pm_init);
late_initcall(xen_late_init);


/* empty stubs */
+1 −1
Original line number Diff line number Diff line
@@ -6,5 +6,5 @@ generic-y += qspinlock.h
generic-y += parport.h
generic-y += user.h

generated-y += cpucaps.h
generated-y += cpucap-defs.h
generated-y += sysreg-defs.h
+4 −4
Original line number Diff line number Diff line
@@ -226,8 +226,8 @@ alternative_endif
static __always_inline bool
alternative_has_cap_likely(const unsigned long cpucap)
{
	compiletime_assert(cpucap < ARM64_NCAPS,
			   "cpucap must be < ARM64_NCAPS");
	if (!cpucap_is_possible(cpucap))
		return false;

	asm_volatile_goto(
	ALTERNATIVE_CB("b	%l[l_no]", %[cpucap], alt_cb_patch_nops)
@@ -244,8 +244,8 @@ alternative_has_cap_likely(const unsigned long cpucap)
static __always_inline bool
alternative_has_cap_unlikely(const unsigned long cpucap)
{
	compiletime_assert(cpucap < ARM64_NCAPS,
			   "cpucap must be < ARM64_NCAPS");
	if (!cpucap_is_possible(cpucap))
		return false;

	asm_volatile_goto(
	ALTERNATIVE("nop", "b	%l[l_yes]", %[cpucap])
+8 −0
Original line number Diff line number Diff line
@@ -79,6 +79,14 @@ static inline u64 gic_read_iar_cavium_thunderx(void)
	return 0x3ff;
}

static u64 __maybe_unused gic_read_iar(void)
{
	if (alternative_has_cap_unlikely(ARM64_WORKAROUND_CAVIUM_23154))
		return gic_read_iar_cavium_thunderx();
	else
		return gic_read_iar_common();
}

static inline void gic_write_ctlr(u32 val)
{
	write_sysreg_s(val, SYS_ICC_CTLR_EL1);
+1 −1
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ static __always_inline bool __cpu_has_rng(void)
{
	if (unlikely(!system_capabilities_finalized() && !preemptible()))
		return this_cpu_has_cap(ARM64_HAS_RNG);
	return cpus_have_const_cap(ARM64_HAS_RNG);
	return alternative_has_cap_unlikely(ARM64_HAS_RNG);
}

static inline size_t __must_check arch_get_random_longs(unsigned long *v, size_t max_longs)
Loading