Merge tag 'kvm-x86-misc-6.11' of https://github.com/kvm-x86/linux into HEAD
KVM x86 misc changes for 6.11 - Add a global struct to consolidate tracking of host values, e.g. EFER, and move "shadow_phys_bits" into the structure as "maxphyaddr". - Add KVM_CAP_X86_APIC_BUS_CYCLES_NS to allow configuring the effective APIC bus frequency, because TDX. - Print the name of the APICv/AVIC inhibits in the relevant tracepoint. - Clean up KVM's handling of vendor specific emulation to consistently act on "compatible with Intel/AMD", versus checking for a specific vendor. - Misc cleanups
This commit is contained in:
@@ -60,6 +60,14 @@
|
||||
#define APIC_VECTOR_MASK 0x000FF
|
||||
#define APIC_ICR2 0x310
|
||||
#define SET_APIC_DEST_FIELD(x) ((x) << 24)
|
||||
#define APIC_LVTT 0x320
|
||||
#define APIC_LVT_TIMER_ONESHOT (0 << 17)
|
||||
#define APIC_LVT_TIMER_PERIODIC (1 << 17)
|
||||
#define APIC_LVT_TIMER_TSCDEADLINE (2 << 17)
|
||||
#define APIC_LVT_MASKED (1 << 16)
|
||||
#define APIC_TMICT 0x380
|
||||
#define APIC_TMCCT 0x390
|
||||
#define APIC_TDCR 0x3E0
|
||||
|
||||
void apic_disable(void);
|
||||
void xapic_enable(void);
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
extern bool host_cpu_is_intel;
|
||||
extern bool host_cpu_is_amd;
|
||||
extern uint64_t guest_tsc_khz;
|
||||
|
||||
/* Forced emulation prefix, used to invoke the emulator unconditionally. */
|
||||
#define KVM_FEP "ud2; .byte 'k', 'v', 'm';"
|
||||
@@ -816,6 +817,23 @@ static inline void cpu_relax(void)
|
||||
asm volatile("rep; nop" ::: "memory");
|
||||
}
|
||||
|
||||
static inline void udelay(unsigned long usec)
|
||||
{
|
||||
uint64_t start, now, cycles;
|
||||
|
||||
GUEST_ASSERT(guest_tsc_khz);
|
||||
cycles = guest_tsc_khz / 1000 * usec;
|
||||
|
||||
/*
|
||||
* Deliberately don't PAUSE, a.k.a. cpu_relax(), so that the delay is
|
||||
* as accurate as possible, e.g. doesn't trigger PAUSE-Loop VM-Exits.
|
||||
*/
|
||||
start = rdtsc();
|
||||
do {
|
||||
now = rdtsc();
|
||||
} while (now - start < cycles);
|
||||
}
|
||||
|
||||
#define ud2() \
|
||||
__asm__ __volatile__( \
|
||||
"ud2\n" \
|
||||
|
||||
Reference in New Issue
Block a user