提交 b1ee5170 编写于 作者: L Linus Torvalds

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 fixes from Catalin Marinas:

 - re-introduce the arm64 get_current() optimisation

 - KERN_CONT fallout fix in show_pte()

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: restore get_current() optimisation
  arm64: mm: fix show_pte KERN_CONT fallout
...@@ -9,9 +9,17 @@ ...@@ -9,9 +9,17 @@
struct task_struct; struct task_struct;
/*
* We don't use read_sysreg() as we want the compiler to cache the value where
* possible.
*/
static __always_inline struct task_struct *get_current(void) static __always_inline struct task_struct *get_current(void)
{ {
return (struct task_struct *)read_sysreg(sp_el0); unsigned long sp_el0;
asm ("mrs %0, sp_el0" : "=r" (sp_el0));
return (struct task_struct *)sp_el0;
} }
#define current get_current() #define current get_current()
......
...@@ -88,21 +88,21 @@ void show_pte(struct mm_struct *mm, unsigned long addr) ...@@ -88,21 +88,21 @@ void show_pte(struct mm_struct *mm, unsigned long addr)
break; break;
pud = pud_offset(pgd, addr); pud = pud_offset(pgd, addr);
printk(", *pud=%016llx", pud_val(*pud)); pr_cont(", *pud=%016llx", pud_val(*pud));
if (pud_none(*pud) || pud_bad(*pud)) if (pud_none(*pud) || pud_bad(*pud))
break; break;
pmd = pmd_offset(pud, addr); pmd = pmd_offset(pud, addr);
printk(", *pmd=%016llx", pmd_val(*pmd)); pr_cont(", *pmd=%016llx", pmd_val(*pmd));
if (pmd_none(*pmd) || pmd_bad(*pmd)) if (pmd_none(*pmd) || pmd_bad(*pmd))
break; break;
pte = pte_offset_map(pmd, addr); pte = pte_offset_map(pmd, addr);
printk(", *pte=%016llx", pte_val(*pte)); pr_cont(", *pte=%016llx", pte_val(*pte));
pte_unmap(pte); pte_unmap(pte);
} while(0); } while(0);
printk("\n"); pr_cont("\n");
} }
#ifdef CONFIG_ARM64_HW_AFDBM #ifdef CONFIG_ARM64_HW_AFDBM
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册