[PATCH RFC v1 09/12] powerpc/64s: Prepare hash_page_do_lazy_icache() for PG_reserved changes
David Hildenbrand
david at redhat.com
Wed Oct 23 04:12:36 AEDT 2019
Right now, ZONE_DEVICE memory is always set PG_reserved. We want to
change that.
We could explicitly check for is_zone_device_page(page). But looking at
the pfn_valid() check, it seems safer to just use pfn_to_online_page()
here, that will skip all ZONE_DEVICE pages right away.
Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Cc: Paul Mackerras <paulus at samba.org>
Cc: Michael Ellerman <mpe at ellerman.id.au>
Cc: "Aneesh Kumar K.V" <aneesh.kumar at linux.ibm.com>
Cc: Christophe Leroy <christophe.leroy at c-s.fr>
Cc: Nicholas Piggin <npiggin at gmail.com>
Cc: Andrew Morton <akpm at linux-foundation.org>
Cc: Mike Rapoport <rppt at linux.ibm.com>
Cc: YueHaibing <yuehaibing at huawei.com>
Signed-off-by: David Hildenbrand <david at redhat.com>
---
arch/powerpc/mm/book3s64/hash_utils.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c
index 6c123760164e..a1566039e747 100644
--- a/arch/powerpc/mm/book3s64/hash_utils.c
+++ b/arch/powerpc/mm/book3s64/hash_utils.c
@@ -1084,13 +1084,15 @@ void hash__early_init_mmu_secondary(void)
*/
unsigned int hash_page_do_lazy_icache(unsigned int pp, pte_t pte, int trap)
{
- struct page *page;
+ struct page *page = pfn_to_online_page(pte_pfn(pte));
- if (!pfn_valid(pte_pfn(pte)))
+ /*
+ * We ignore any pages that are not online (not managed by the buddy).
+ * This includes ZONE_DEVICE pages.
+ */
+ if (!page)
return pp;
- page = pte_page(pte);
-
/* page is dirty */
if (!test_bit(PG_arch_1, &page->flags) && !PageReserved(page)) {
if (trap == 0x400) {
--
2.21.0
More information about the Linuxppc-dev
mailing list