mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 00:22:00 +02:00
Use u64 instead of uint64_t to make the KVM selftests code more concise and more similar to the kernel (since selftests are primarily developed by kernel developers). This commit was generated with the following command: git ls-files tools/testing/selftests/kvm | xargs sed -i 's/uint64_t/u64/g' Then by manually adjusting whitespace to make checkpatch.pl happy. Include <linux/types.h> in include/kvm_util_types.h, iinclude/test_util.h, and include/x86/pmu.h to pick up the tools-defined u64. Arguably, all headers (especially kvm_util_types.h) should have already been including stdint.h to get uint64_t from the libc headers, but the missing dependency only rears its head once KVM uses u64 instead of uint64_t. No functional change intended. Signed-off-by: David Matlack <dmatlack@google.com> [sean: rename pread_uint64() => pread_u64, expand on types.h include] Link: https://patch.msgid.link/20260420212004.3938325-5-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* Copyright (C) 2021, Google LLC.
|
|
*/
|
|
|
|
#include "apic.h"
|
|
|
|
void apic_disable(void)
|
|
{
|
|
wrmsr(MSR_IA32_APICBASE,
|
|
rdmsr(MSR_IA32_APICBASE) &
|
|
~(MSR_IA32_APICBASE_ENABLE | MSR_IA32_APICBASE_EXTD));
|
|
}
|
|
|
|
void xapic_enable(void)
|
|
{
|
|
u64 val = rdmsr(MSR_IA32_APICBASE);
|
|
|
|
/* Per SDM: to enable xAPIC when in x2APIC must first disable APIC */
|
|
if (val & MSR_IA32_APICBASE_EXTD) {
|
|
apic_disable();
|
|
wrmsr(MSR_IA32_APICBASE,
|
|
rdmsr(MSR_IA32_APICBASE) | MSR_IA32_APICBASE_ENABLE);
|
|
} else if (!(val & MSR_IA32_APICBASE_ENABLE)) {
|
|
wrmsr(MSR_IA32_APICBASE, val | MSR_IA32_APICBASE_ENABLE);
|
|
}
|
|
|
|
/*
|
|
* Per SDM: reset value of spurious interrupt vector register has the
|
|
* APIC software enabled bit=0. It must be enabled in addition to the
|
|
* enable bit in the MSR.
|
|
*/
|
|
val = xapic_read_reg(APIC_SPIV) | APIC_SPIV_APIC_ENABLED;
|
|
xapic_write_reg(APIC_SPIV, val);
|
|
}
|
|
|
|
void x2apic_enable(void)
|
|
{
|
|
wrmsr(MSR_IA32_APICBASE, rdmsr(MSR_IA32_APICBASE) |
|
|
MSR_IA32_APICBASE_ENABLE | MSR_IA32_APICBASE_EXTD);
|
|
x2apic_write_reg(APIC_SPIV,
|
|
x2apic_read_reg(APIC_SPIV) | APIC_SPIV_APIC_ENABLED);
|
|
}
|