x86_cpu_handle_mmu_fault has grown by accretion and has a few bugs: - partially incorrect handling of SMAP with CPL = 3
- incorrect filling of TLB entries with SMEP - incorrect handling of reserved bits - PSE36 support is advertised but not implemented - 1 GB pages are trivial to implement, but missing This series, based on the cpu_ldst.h cleanup, fixes all of this. With these changes the exhaustive (and exhausting) x86/access.flat from kvm-unit-tests passes with TCG. Paolo Paolo Bonzini (20): target-i386: rename KSMAP to KNOSMAP target-i386: move check_io helpers to seg_helper.c target-i386: fix kernel accesses with SMAP and CPL = 3 target-i386: simplify SMAP handling in MMU_KSMAP_IDX target-i386: fix coding standards in x86_cpu_handle_mmu_fault target-i386: commonize checks for 2MB and 4KB pages target-i386: commonize checks for 4MB and 4KB pages target-i386: commonize checks for PAE and non-PAE target-i386: tweak handling of PG_NX_MASK target-i386: introduce do_check_protect label target-i386: introduce support for 1 GB pages target-i386: set correct error code for reserved bit access target-i386: test reserved PS bit on PML4Es target-i386: raise page fault for reserved physical address bits target-i386: simplify pte/vaddr calculation target-i386: unify reserved bits and NX bit check target-i386: raise page fault for reserved bits in large pages target-i386: support long addresses for 4MB pages (PSE-36) target-i386: fix protection bits in the TLB for SMEP target-i386: cleanup x86_cpu_get_phys_page_debug target-i386/cpu.c | 7 +- target-i386/cpu.h | 33 +++- target-i386/helper.c | 396 +++++++++++++++++----------------------------- target-i386/misc_helper.c | 42 ----- target-i386/seg_helper.c | 60 +++++++ 5 files changed, 236 insertions(+), 302 deletions(-) -- 1.8.3.1