| From fd7e315988b784509ba3f1b42f539bd0b1fca9bb Mon Sep 17 00:00:00 2001 |
| From: Tom Lendacky <thomas.lendacky@amd.com> |
| Date: Mon, 17 Jul 2017 16:10:06 -0500 |
| Subject: x86/mm: Simplify p[g4um]d_page() macros |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Tom Lendacky <thomas.lendacky@amd.com> |
| |
| commit fd7e315988b784509ba3f1b42f539bd0b1fca9bb upstream. |
| |
| Create a pgd_pfn() macro similar to the p[4um]d_pfn() macros and then |
| use the p[g4um]d_pfn() macros in the p[g4um]d_page() macros instead of |
| duplicating the code. |
| |
| Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> |
| Reviewed-by: Thomas Gleixner <tglx@linutronix.de> |
| Reviewed-by: Borislav Petkov <bp@suse.de> |
| Cc: Alexander Potapenko <glider@google.com> |
| Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> |
| Cc: Andy Lutomirski <luto@kernel.org> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Borislav Petkov <bp@alien8.de> |
| Cc: Brijesh Singh <brijesh.singh@amd.com> |
| Cc: Dave Young <dyoung@redhat.com> |
| Cc: Dmitry Vyukov <dvyukov@google.com> |
| Cc: Jonathan Corbet <corbet@lwn.net> |
| Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
| Cc: Larry Woodman <lwoodman@redhat.com> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Matt Fleming <matt@codeblueprint.co.uk> |
| Cc: Michael S. Tsirkin <mst@redhat.com> |
| Cc: Paolo Bonzini <pbonzini@redhat.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Radim Krčmář <rkrcmar@redhat.com> |
| Cc: Rik van Riel <riel@redhat.com> |
| Cc: Toshimitsu Kani <toshi.kani@hpe.com> |
| Cc: kasan-dev@googlegroups.com |
| Cc: kvm@vger.kernel.org |
| Cc: linux-arch@vger.kernel.org |
| Cc: linux-doc@vger.kernel.org |
| Cc: linux-efi@vger.kernel.org |
| Cc: linux-mm@kvack.org |
| Link: http://lkml.kernel.org/r/e61eb533a6d0aac941db2723d8aa63ef6b882dee.1500319216.git.thomas.lendacky@amd.com |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| [Backported to 4.9 stable by AK, suggested by Michael Hocko] |
| Signed-off-by: Andi Kleen <ak@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/include/asm/pgtable.h | 13 ++++++++----- |
| 1 file changed, 8 insertions(+), 5 deletions(-) |
| |
| --- a/arch/x86/include/asm/pgtable.h |
| +++ b/arch/x86/include/asm/pgtable.h |
| @@ -190,6 +190,11 @@ static inline unsigned long pud_pfn(pud_ |
| return (pfn & pud_pfn_mask(pud)) >> PAGE_SHIFT; |
| } |
| |
| +static inline unsigned long pgd_pfn(pgd_t pgd) |
| +{ |
| + return (pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT; |
| +} |
| + |
| #define pte_page(pte) pfn_to_page(pte_pfn(pte)) |
| |
| static inline int pmd_large(pmd_t pte) |
| @@ -621,8 +626,7 @@ static inline unsigned long pmd_page_vad |
| * Currently stuck as a macro due to indirect forward reference to |
| * linux/mmzone.h's __section_mem_map_addr() definition: |
| */ |
| -#define pmd_page(pmd) \ |
| - pfn_to_page((pmd_val(pmd) & pmd_pfn_mask(pmd)) >> PAGE_SHIFT) |
| +#define pmd_page(pmd) pfn_to_page(pmd_pfn(pmd)) |
| |
| /* |
| * the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD] |
| @@ -690,8 +694,7 @@ static inline unsigned long pud_page_vad |
| * Currently stuck as a macro due to indirect forward reference to |
| * linux/mmzone.h's __section_mem_map_addr() definition: |
| */ |
| -#define pud_page(pud) \ |
| - pfn_to_page((pud_val(pud) & pud_pfn_mask(pud)) >> PAGE_SHIFT) |
| +#define pud_page(pud) pfn_to_page(pud_pfn(pud)) |
| |
| /* Find an entry in the second-level page table.. */ |
| static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address) |
| @@ -731,7 +734,7 @@ static inline unsigned long pgd_page_vad |
| * Currently stuck as a macro due to indirect forward reference to |
| * linux/mmzone.h's __section_mem_map_addr() definition: |
| */ |
| -#define pgd_page(pgd) pfn_to_page(pgd_val(pgd) >> PAGE_SHIFT) |
| +#define pgd_page(pgd) pfn_to_page(pgd_pfn(pgd)) |
| |
| /* to find an entry in a page-table-directory. */ |
| static inline unsigned long pud_index(unsigned long address) |