On Mon, Aug 14, 2017 at 09:47:18PM -0600, Tycho Andersen wrote:
> I'll do that for the next version

Actually looking closer, I think we just need to mirror the
debug_pagealloc_enabled() checks in set_kpte() from
split_large_page(),

diff --git a/arch/x86/mm/xpfo.c b/arch/x86/mm/xpfo.c
index a1344f27406c..c962bd7f34cc 100644
--- a/arch/x86/mm/xpfo.c
+++ b/arch/x86/mm/xpfo.c
@@ -54,9 +54,11 @@ inline void set_kpte(void *kaddr, struct page *page, 
pgprot_t prot)
 
                do_split = try_preserve_large_page(pte, (unsigned long)kaddr, 
&cpa);
                if (do_split) {
-                       spin_lock(&cpa_lock);
+                       if (!debug_pagealloc_enabled())
+                               spin_lock(&cpa_lock);
                        BUG_ON(split_large_page(&cpa, pte, (unsigned 
long)kaddr));
-                       spin_unlock(&cpa_lock);
+                       if (!debug_pagealloc_enabled())
+                               spin_unlock(&cpa_lock);
                }
 
                break;


Tycho

Reply via email to