On Wed, Mar 22, 2023, Binbin Wu wrote: > Replace kvm_read_{cr0,cr4}_bits() with kvm_is_{cr0,cr4}_bit_set() when only > one bit is checked and bool is preferred as return value type. > Also change the return value type from int to bool of is_pae(), is_pse() and > is_paging(). I'm going to squash the obvious/direct changes with the introduction of the helpers, and isolate is_{pae,pse,paging}() as those are more risky due to the multiple casts (ulong=>int=>bool), and because the end usage isn't visible in the patch. Case in point, there is a benign but in svm_set_cr0() that would be silently fixed by converting is_paging() to return a bool: bool old_paging = is_paging(vcpu); ... vcpu->arch.cr0 = cr0; if (!npt_enabled) { hcr0 |= X86_CR0_PG | X86_CR0_WP; if (old_paging != is_paging(vcpu)) The "old_paging != is_paging(vcpu)" compares a bool (1/0) against an int that was an unsigned long (X86_CR0_PG/0), i.e. gets a false positive when paging is enabled. I'll post a fix and slot it in before this patch, both so that there's no silent fixes and so that this changelog can reference the commit. > --- > arch/x86/kvm/cpuid.c | 4 ++-- > arch/x86/kvm/mmu.h | 2 +- > arch/x86/kvm/vmx/nested.c | 2 +- > arch/x86/kvm/vmx/vmx.c | 2 +- > arch/x86/kvm/x86.c | 20 ++++++++++---------- > arch/x86/kvm/x86.h | 16 ++++++++-------- This misses a few conversions in kvm_pmu_rdpmc(), I'll fix those when applying too.