mirror of https://gitee.com/openkylin/linux.git
x86: fix c_p_a() boot crash
fix: > hm, i just found a failing 64-bit .config while testing your CPA > patchset: > > [ 1.916541] CPA mapping 4k 0 large 2048 gb 0 x 0[0-0] miss 0 > [ 1.919874] Unable to handle kernel paging request at 000000000335aea8 RIP: > [ 1.919874] [<ffffffff8021d2d3>] change_page_attr+0x3/0x61 > [ 1.919874] PGD 0 > [ 1.919874] Oops: 0000 [1] > [ 1.919874] CPU 0 This handles addresses which don't have a mem_map entry. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
aaa0e89023
commit
6ba9b7d8f0
|
@ -177,7 +177,7 @@ static __init int exercise_pageattr(void)
|
|||
continue;
|
||||
}
|
||||
|
||||
err = change_page_attr(virt_to_page(addr[i]), len[i],
|
||||
err = change_page_attr_addr(addr[i], len[i],
|
||||
pte_pgprot(pte_clrhuge(pte_clrglobal(pte0))));
|
||||
if (err < 0) {
|
||||
printk(KERN_ERR "CPA %d failed %d\n", i, err);
|
||||
|
@ -212,7 +212,7 @@ static __init int exercise_pageattr(void)
|
|||
failed++;
|
||||
continue;
|
||||
}
|
||||
err = change_page_attr(virt_to_page(addr[i]), len[i],
|
||||
err = change_page_attr_addr(addr[i], len[i],
|
||||
pte_pgprot(pte_mkglobal(*pte)));
|
||||
if (err < 0) {
|
||||
printk(KERN_ERR "CPA reverting failed: %d\n", err);
|
||||
|
|
Loading…
Reference in New Issue