Kernel: Query OS-enabled CPUID features again at the end of cpu_setup()

For OSPKE this is a no-op as we don't enable PKU yet, but the state of
the OSXSAVE flag might have changed if we enabled XSAVE.
This commit is contained in:
Linus Groh 2022-04-08 18:25:38 +01:00
parent 87aabb5ef7
commit 62185452f0

View file

@ -594,6 +594,14 @@ UNMAP_AFTER_INIT void Processor::cpu_setup()
MSR sfmask_msr(MSR_SFMASK);
sfmask_msr.set(rflags_mask);
#endif
// Query OS-enabled CPUID features again, and set the flags if needed.
CPUID processor_info(0x1);
if (processor_info.ecx() & (1 << 27))
m_features |= CPUFeature::OSXSAVE;
CPUID extended_features(0x7);
if (extended_features.ecx() & (1 << 4))
m_features |= CPUFeature::OSPKE;
}
UNMAP_AFTER_INIT void Processor::early_initialize(u32 cpu)