Balbir Singh <bsinghar...@gmail.com> writes: > On Tue, Jun 6, 2017 at 3:48 PM, Michael Ellerman <m...@ellerman.id.au> wrote: >> Currently we map the whole linear mapping with PAGE_KERNEL_X. Instead we >> should check if the page overlaps the kernel text and only then add >> PAGE_KERNEL_X. ... >> @@ -145,8 +147,14 @@ static int __meminit create_physical_mapping(unsigned >> long start, >> start = addr; >> } >> >> - rc = radix__map_kernel_page((unsigned long)__va(addr), addr, >> - PAGE_KERNEL_X, mapping_size); >> + vaddr = (unsigned long)__va(addr); >> + >> + if (overlaps_kernel_text(vaddr, vaddr + mapping_size)) >> + prot = PAGE_KERNEL_X; >> + else >> + prot = PAGE_KERNEL; > > Do we need the kvm tmp/trampoline bits like hash?
Ugh, I hope not. What is that crap. It appears to be epapr paravirt only: static int __init kvm_guest_init(void) { if (!kvm_para_available()) goto free_tmp; if (!epapr_paravirt_enabled) goto free_tmp; But I can't convince myself whether epapr_paravirt_enabled is ever set on Book3S guests or not. Looking at Qemu it looks like it *could* be. And why isn't that code in arch/powerpc/kvm ? cheers