Merge branch 'x86/urgent' into perf/urgent, to pick up new CPU model definitions
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
7a275fd7b9
|
@ -83,6 +83,9 @@
|
||||||
#define INTEL_FAM6_TIGERLAKE_L 0x8C
|
#define INTEL_FAM6_TIGERLAKE_L 0x8C
|
||||||
#define INTEL_FAM6_TIGERLAKE 0x8D
|
#define INTEL_FAM6_TIGERLAKE 0x8D
|
||||||
|
|
||||||
|
#define INTEL_FAM6_COMETLAKE 0xA5
|
||||||
|
#define INTEL_FAM6_COMETLAKE_L 0xA6
|
||||||
|
|
||||||
/* "Small Core" Processors (Atom) */
|
/* "Small Core" Processors (Atom) */
|
||||||
|
|
||||||
#define INTEL_FAM6_ATOM_BONNELL 0x1C /* Diamondville, Pineview */
|
#define INTEL_FAM6_ATOM_BONNELL 0x1C /* Diamondville, Pineview */
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#define MWAIT_ECX_INTERRUPT_BREAK 0x1
|
#define MWAIT_ECX_INTERRUPT_BREAK 0x1
|
||||||
#define MWAITX_ECX_TIMER_ENABLE BIT(1)
|
#define MWAITX_ECX_TIMER_ENABLE BIT(1)
|
||||||
#define MWAITX_MAX_LOOPS ((u32)-1)
|
#define MWAITX_MAX_LOOPS ((u32)-1)
|
||||||
#define MWAITX_DISABLE_CSTATES 0xf
|
#define MWAITX_DISABLE_CSTATES 0xf0
|
||||||
|
|
||||||
static inline void __monitor(const void *eax, unsigned long ecx,
|
static inline void __monitor(const void *eax, unsigned long ecx,
|
||||||
unsigned long edx)
|
unsigned long edx)
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
#define VMWARE_CMD_VCPU_RESERVED 31
|
#define VMWARE_CMD_VCPU_RESERVED 31
|
||||||
|
|
||||||
#define VMWARE_PORT(cmd, eax, ebx, ecx, edx) \
|
#define VMWARE_PORT(cmd, eax, ebx, ecx, edx) \
|
||||||
__asm__("inl (%%dx)" : \
|
__asm__("inl (%%dx), %%eax" : \
|
||||||
"=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : \
|
"=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : \
|
||||||
"a"(VMWARE_HYPERVISOR_MAGIC), \
|
"a"(VMWARE_HYPERVISOR_MAGIC), \
|
||||||
"c"(VMWARE_CMD_##cmd), \
|
"c"(VMWARE_CMD_##cmd), \
|
||||||
|
|
|
@ -113,8 +113,8 @@ static void delay_mwaitx(unsigned long __loops)
|
||||||
__monitorx(raw_cpu_ptr(&cpu_tss_rw), 0, 0);
|
__monitorx(raw_cpu_ptr(&cpu_tss_rw), 0, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* AMD, like Intel, supports the EAX hint and EAX=0xf
|
* AMD, like Intel's MWAIT version, supports the EAX hint and
|
||||||
* means, do not enter any deep C-state and we use it
|
* EAX=0xf0 means, do not enter any deep C-state and we use it
|
||||||
* here in delay() to minimize wakeup latency.
|
* here in delay() to minimize wakeup latency.
|
||||||
*/
|
*/
|
||||||
__mwaitx(MWAITX_DISABLE_CSTATES, delay, MWAITX_ECX_TIMER_ENABLE);
|
__mwaitx(MWAITX_DISABLE_CSTATES, delay, MWAITX_ECX_TIMER_ENABLE);
|
||||||
|
|
|
@ -227,7 +227,26 @@ static inline bool strstarts(const char *str, const char *prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t memweight(const void *ptr, size_t bytes);
|
size_t memweight(const void *ptr, size_t bytes);
|
||||||
void memzero_explicit(void *s, size_t count);
|
|
||||||
|
/**
|
||||||
|
* memzero_explicit - Fill a region of memory (e.g. sensitive
|
||||||
|
* keying data) with 0s.
|
||||||
|
* @s: Pointer to the start of the area.
|
||||||
|
* @count: The size of the area.
|
||||||
|
*
|
||||||
|
* Note: usually using memset() is just fine (!), but in cases
|
||||||
|
* where clearing out _local_ data at the end of a scope is
|
||||||
|
* necessary, memzero_explicit() should be used instead in
|
||||||
|
* order to prevent the compiler from optimising away zeroing.
|
||||||
|
*
|
||||||
|
* memzero_explicit() doesn't need an arch-specific version as
|
||||||
|
* it just invokes the one of memset() implicitly.
|
||||||
|
*/
|
||||||
|
static inline void memzero_explicit(void *s, size_t count)
|
||||||
|
{
|
||||||
|
memset(s, 0, count);
|
||||||
|
barrier_data(s);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* kbasename - return the last part of a pathname.
|
* kbasename - return the last part of a pathname.
|
||||||
|
|
21
lib/string.c
21
lib/string.c
|
@ -748,27 +748,6 @@ void *memset(void *s, int c, size_t count)
|
||||||
EXPORT_SYMBOL(memset);
|
EXPORT_SYMBOL(memset);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* memzero_explicit - Fill a region of memory (e.g. sensitive
|
|
||||||
* keying data) with 0s.
|
|
||||||
* @s: Pointer to the start of the area.
|
|
||||||
* @count: The size of the area.
|
|
||||||
*
|
|
||||||
* Note: usually using memset() is just fine (!), but in cases
|
|
||||||
* where clearing out _local_ data at the end of a scope is
|
|
||||||
* necessary, memzero_explicit() should be used instead in
|
|
||||||
* order to prevent the compiler from optimising away zeroing.
|
|
||||||
*
|
|
||||||
* memzero_explicit() doesn't need an arch-specific version as
|
|
||||||
* it just invokes the one of memset() implicitly.
|
|
||||||
*/
|
|
||||||
void memzero_explicit(void *s, size_t count)
|
|
||||||
{
|
|
||||||
memset(s, 0, count);
|
|
||||||
barrier_data(s);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(memzero_explicit);
|
|
||||||
|
|
||||||
#ifndef __HAVE_ARCH_MEMSET16
|
#ifndef __HAVE_ARCH_MEMSET16
|
||||||
/**
|
/**
|
||||||
* memset16() - Fill a memory area with a uint16_t
|
* memset16() - Fill a memory area with a uint16_t
|
||||||
|
|
Loading…
Reference in New Issue