On Fri, 21 Nov 2014, Linus Torvalds wrote: > Here's the simplified end result. Again, this is TOTALLY UNTESTED. I > compiled it and verified that the code generation looks like what I'd > have expected, but that's literally it. > > static noinline int vmalloc_fault(unsigned long address) > { > pgd_t *pgd_dst; > pgdval_t pgd_entry; > unsigned index = pgd_index(address); > > if (index < KERNEL_PGD_BOUNDARY) > return -1; > > pgd_entry = init_mm.pgd[index].pgd; > if (!pgd_entry) > return -1; > > pgd_dst = __va(PAGE_MASK & read_cr3()); > pgd_dst += index; > > if (pgd_dst->pgd) > return -1; > > ACCESS_ONCE(pgd_dst->pgd) = pgd_entry;
This will break paravirt. set_pgd/set_pmd are paravirt functions. But I'm fine with breaking it, then you just need to change CONFIG_PARAVIRT to 'def_bool n' Thanks, tglx -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/