mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 21:23:23 +00:00
x86/cpu: Refresh DCA leaf reading code
The DCA leaf number is also hard-coded in the CPUID level dependency table. Move its definition to common code and use it. While at it, fix up the naming and types in the probe code. All CPUID data is provided in 32-bit registers, not 'unsigned long'. Also stop referring to "level_9". Move away from test_bit() because the type is no longer an 'unsigned long'. Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Link: https://lore.kernel.org/all/20241213205032.476A30FE%40davehans-spike.ostc.intel.com
This commit is contained in:
parent
262fba5570
commit
5d82d8e0a9
@ -21,7 +21,8 @@ enum cpuid_regs_idx {
|
||||
CPUID_EDX,
|
||||
};
|
||||
|
||||
#define CPUID_MWAIT_LEAF 5
|
||||
#define CPUID_MWAIT_LEAF 0x5
|
||||
#define CPUID_DCA_LEAF 0x9
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
bool have_cpuid_p(void);
|
||||
|
@ -638,7 +638,7 @@ struct cpuid_dependent_feature {
|
||||
static const struct cpuid_dependent_feature
|
||||
cpuid_dependent_features[] = {
|
||||
{ X86_FEATURE_MWAIT, CPUID_MWAIT_LEAF },
|
||||
{ X86_FEATURE_DCA, 0x00000009 },
|
||||
{ X86_FEATURE_DCA, CPUID_DCA_LEAF },
|
||||
{ X86_FEATURE_XSAVE, 0x0000000d },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
@ -10,6 +10,8 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/dca.h>
|
||||
|
||||
#include <asm/cpuid.h>
|
||||
|
||||
/* either a kernel change is needed, or we need something like this in kernel */
|
||||
#ifndef CONFIG_SMP
|
||||
#include <asm/smp.h>
|
||||
@ -58,11 +60,11 @@ static int dca_enabled_in_bios(struct pci_dev *pdev)
|
||||
{
|
||||
/* CPUID level 9 returns DCA configuration */
|
||||
/* Bit 0 indicates DCA enabled by the BIOS */
|
||||
unsigned long cpuid_level_9;
|
||||
u32 eax;
|
||||
int res;
|
||||
|
||||
cpuid_level_9 = cpuid_eax(9);
|
||||
res = test_bit(0, &cpuid_level_9);
|
||||
eax = cpuid_eax(CPUID_DCA_LEAF);
|
||||
res = eax & BIT(0);
|
||||
if (!res)
|
||||
dev_dbg(&pdev->dev, "DCA is disabled in BIOS\n");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user