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 0x8D
|
||||
|
||||
#define INTEL_FAM6_COMETLAKE 0xA5
|
||||
#define INTEL_FAM6_COMETLAKE_L 0xA6
|
||||
|
||||
/* "Small Core" Processors (Atom) */
|
||||
|
||||
#define INTEL_FAM6_ATOM_BONNELL 0x1C /* Diamondville, Pineview */
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#define MWAIT_ECX_INTERRUPT_BREAK 0x1
|
||||
#define MWAITX_ECX_TIMER_ENABLE BIT(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,
|
||||
unsigned long edx)
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
#define VMWARE_CMD_VCPU_RESERVED 31
|
||||
|
||||
#define VMWARE_PORT(cmd, eax, ebx, ecx, edx) \
|
||||
__asm__("inl (%%dx)" : \
|
||||
__asm__("inl (%%dx), %%eax" : \
|
||||
"=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : \
|
||||
"a"(VMWARE_HYPERVISOR_MAGIC), \
|
||||
"c"(VMWARE_CMD_##cmd), \
|
||||
|
|
|
@ -113,8 +113,8 @@ static void delay_mwaitx(unsigned long __loops)
|
|||
__monitorx(raw_cpu_ptr(&cpu_tss_rw), 0, 0);
|
||||
|
||||
/*
|
||||
* AMD, like Intel, supports the EAX hint and EAX=0xf
|
||||
* means, do not enter any deep C-state and we use it
|
||||
* AMD, like Intel's MWAIT version, supports the EAX hint and
|
||||
* EAX=0xf0 means, do not enter any deep C-state and we use it
|
||||
* here in delay() to minimize wakeup latency.
|
||||
*/
|
||||
__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);
|
||||
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.
|
||||
|
|
21
lib/string.c
21
lib/string.c
|
@ -748,27 +748,6 @@ void *memset(void *s, int c, size_t count)
|
|||
EXPORT_SYMBOL(memset);
|
||||
#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
|
||||
/**
|
||||
* memset16() - Fill a memory area with a uint16_t
|
||||
|
|
Loading…
Reference in New Issue