powerpc: Define empty_zero_page[] in C
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Mon, 7 Jun 2021 10:56:04 +0000 (10:56 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 16 Jun 2021 14:09:10 +0000 (00:09 +1000)
At the time being, empty_zero_page[] is defined in each
platform head.S.

Define it in mm/mem.c instead, and put it in BSS section instead
of the DATA section. Commit 5227cfa71f9e ("arm64: mm: place
empty_zero_page in bss") explains why it is interesting to have
it in BSS.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/5838caffa269e0957c5a50cc85477876220298b0.1623063174.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/head_40x.S
arch/powerpc/kernel/head_44x.S
arch/powerpc/kernel/head_64.S
arch/powerpc/kernel/head_8xx.S
arch/powerpc/kernel/head_book3s_32.S
arch/powerpc/kernel/head_fsl_booke.S
arch/powerpc/mm/mem.c

index 2717aa8..92b6c73 100644 (file)
@@ -709,10 +709,6 @@ _GLOBAL(abort)
        .align  12
        .globl  sdata
 sdata:
-       .globl  empty_zero_page
-empty_zero_page:
-       .space  4096
-EXPORT_SYMBOL(empty_zero_page)
        .globl  swapper_pg_dir
 swapper_pg_dir:
        .space  PGD_TABLE_SIZE
index 2c4ffec..e037eb6 100644 (file)
@@ -1241,10 +1241,6 @@ head_start_common:
        .align  PAGE_SHIFT
        .globl  sdata
 sdata:
-       .globl  empty_zero_page
-empty_zero_page:
-       .space  PAGE_SIZE
-EXPORT_SYMBOL(empty_zero_page)
 
 /*
  * To support >32-bit physical addresses, we use an 8KB pgdir.
index ece7f97..730838c 100644 (file)
@@ -1012,8 +1012,3 @@ start_here_common:
        .globl  swapper_pg_dir
 swapper_pg_dir:
        .space  PGD_TABLE_SIZE
-
-       .globl  empty_zero_page
-empty_zero_page:
-       .space  PAGE_SIZE
-EXPORT_SYMBOL(empty_zero_page)
index 817df9f..5ce42df 100644 (file)
@@ -795,12 +795,6 @@ _GLOBAL(mmu_pin_tlb)
        .data
        .globl  sdata
 sdata:
-       .globl  empty_zero_page
-       .align  PAGE_SHIFT
-empty_zero_page:
-       .space  PAGE_SIZE
-EXPORT_SYMBOL(empty_zero_page)
-
        .globl  swapper_pg_dir
 swapper_pg_dir:
        .space  PGD_TABLE_SIZE
index 0b82672..59ddd68 100644 (file)
@@ -1216,11 +1216,6 @@ setup_usbgecko_bat:
        .data
        .globl  sdata
 sdata:
-       .globl  empty_zero_page
-empty_zero_page:
-       .space  4096
-EXPORT_SYMBOL(empty_zero_page)
-
        .globl  swapper_pg_dir
 swapper_pg_dir:
        .space  PGD_TABLE_SIZE
index ab718fd..f33bc5a 100644 (file)
@@ -1221,10 +1221,6 @@ _GLOBAL(restore_to_as0)
        .align  12
        .globl  sdata
 sdata:
-       .globl  empty_zero_page
-empty_zero_page:
-       .space  4096
-EXPORT_SYMBOL(empty_zero_page)
        .globl  swapper_pg_dir
 swapper_pg_dir:
        .space  PGD_TABLE_SIZE
index a6b36a4..77fce7a 100644 (file)
@@ -28,6 +28,9 @@
 unsigned long long memory_limit;
 bool init_mem_is_free;
 
+unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)] __page_aligned_bss;
+EXPORT_SYMBOL(empty_zero_page);
+
 pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
                              unsigned long size, pgprot_t vma_prot)
 {