diff options
-rw-r--r-- | arch/arm64/mm/proc.S | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S index 71baed7e592a..c0af47617299 100644 --- a/arch/arm64/mm/proc.S +++ b/arch/arm64/mm/proc.S | |||
@@ -205,7 +205,8 @@ ENDPROC(idmap_cpu_replace_ttbr1) | |||
205 | dc cvac, cur_\()\type\()p // Ensure any existing dirty | 205 | dc cvac, cur_\()\type\()p // Ensure any existing dirty |
206 | dmb sy // lines are written back before | 206 | dmb sy // lines are written back before |
207 | ldr \type, [cur_\()\type\()p] // loading the entry | 207 | ldr \type, [cur_\()\type\()p] // loading the entry |
208 | tbz \type, #0, next_\()\type // Skip invalid entries | 208 | tbz \type, #0, skip_\()\type // Skip invalid and |
209 | tbnz \type, #11, skip_\()\type // non-global entries | ||
209 | .endm | 210 | .endm |
210 | 211 | ||
211 | .macro __idmap_kpti_put_pgtable_ent_ng, type | 212 | .macro __idmap_kpti_put_pgtable_ent_ng, type |
@@ -265,8 +266,9 @@ ENTRY(idmap_kpti_install_ng_mappings) | |||
265 | add end_pgdp, cur_pgdp, #(PTRS_PER_PGD * 8) | 266 | add end_pgdp, cur_pgdp, #(PTRS_PER_PGD * 8) |
266 | do_pgd: __idmap_kpti_get_pgtable_ent pgd | 267 | do_pgd: __idmap_kpti_get_pgtable_ent pgd |
267 | tbnz pgd, #1, walk_puds | 268 | tbnz pgd, #1, walk_puds |
268 | __idmap_kpti_put_pgtable_ent_ng pgd | ||
269 | next_pgd: | 269 | next_pgd: |
270 | __idmap_kpti_put_pgtable_ent_ng pgd | ||
271 | skip_pgd: | ||
270 | add cur_pgdp, cur_pgdp, #8 | 272 | add cur_pgdp, cur_pgdp, #8 |
271 | cmp cur_pgdp, end_pgdp | 273 | cmp cur_pgdp, end_pgdp |
272 | b.ne do_pgd | 274 | b.ne do_pgd |
@@ -294,8 +296,9 @@ walk_puds: | |||
294 | add end_pudp, cur_pudp, #(PTRS_PER_PUD * 8) | 296 | add end_pudp, cur_pudp, #(PTRS_PER_PUD * 8) |
295 | do_pud: __idmap_kpti_get_pgtable_ent pud | 297 | do_pud: __idmap_kpti_get_pgtable_ent pud |
296 | tbnz pud, #1, walk_pmds | 298 | tbnz pud, #1, walk_pmds |
297 | __idmap_kpti_put_pgtable_ent_ng pud | ||
298 | next_pud: | 299 | next_pud: |
300 | __idmap_kpti_put_pgtable_ent_ng pud | ||
301 | skip_pud: | ||
299 | add cur_pudp, cur_pudp, 8 | 302 | add cur_pudp, cur_pudp, 8 |
300 | cmp cur_pudp, end_pudp | 303 | cmp cur_pudp, end_pudp |
301 | b.ne do_pud | 304 | b.ne do_pud |
@@ -314,8 +317,9 @@ walk_pmds: | |||
314 | add end_pmdp, cur_pmdp, #(PTRS_PER_PMD * 8) | 317 | add end_pmdp, cur_pmdp, #(PTRS_PER_PMD * 8) |
315 | do_pmd: __idmap_kpti_get_pgtable_ent pmd | 318 | do_pmd: __idmap_kpti_get_pgtable_ent pmd |
316 | tbnz pmd, #1, walk_ptes | 319 | tbnz pmd, #1, walk_ptes |
317 | __idmap_kpti_put_pgtable_ent_ng pmd | ||
318 | next_pmd: | 320 | next_pmd: |
321 | __idmap_kpti_put_pgtable_ent_ng pmd | ||
322 | skip_pmd: | ||
319 | add cur_pmdp, cur_pmdp, #8 | 323 | add cur_pmdp, cur_pmdp, #8 |
320 | cmp cur_pmdp, end_pmdp | 324 | cmp cur_pmdp, end_pmdp |
321 | b.ne do_pmd | 325 | b.ne do_pmd |
@@ -333,7 +337,7 @@ walk_ptes: | |||
333 | add end_ptep, cur_ptep, #(PTRS_PER_PTE * 8) | 337 | add end_ptep, cur_ptep, #(PTRS_PER_PTE * 8) |
334 | do_pte: __idmap_kpti_get_pgtable_ent pte | 338 | do_pte: __idmap_kpti_get_pgtable_ent pte |
335 | __idmap_kpti_put_pgtable_ent_ng pte | 339 | __idmap_kpti_put_pgtable_ent_ng pte |
336 | next_pte: | 340 | skip_pte: |
337 | add cur_ptep, cur_ptep, #8 | 341 | add cur_ptep, cur_ptep, #8 |
338 | cmp cur_ptep, end_ptep | 342 | cmp cur_ptep, end_ptep |
339 | b.ne do_pte | 343 | b.ne do_pte |