Hi, it appears that stage2_flush_memslot(), unmap_range(), and stage2_get_pmd() all assume a valid pgd entry and pass it off to pud_offset(). The checks for the valid descriptor are made in PUD functions. For 3-level tables the pud layer checks for null pgd entries, but for 4-level it appears like it can pass off an null pgd entry, there are no pgd_present() checks. Im thinking of a case where a memslot range that covered a pgd has not been accessed. I rewrote the memslot write protect and was wondering. - Mario _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm