| .. | .. |
|---|
| 7 | 7 | #include <linux/mm.h> |
|---|
| 8 | 8 | #include <asm/cacheflush.h> |
|---|
| 9 | 9 | #include <asm/facility.h> |
|---|
| 10 | | -#include <asm/pgtable.h> |
|---|
| 11 | 10 | #include <asm/pgalloc.h> |
|---|
| 12 | 11 | #include <asm/page.h> |
|---|
| 13 | 12 | #include <asm/set_memory.h> |
|---|
| .. | .. |
|---|
| 86 | 85 | { |
|---|
| 87 | 86 | pte_t *ptep, new; |
|---|
| 88 | 87 | |
|---|
| 89 | | - ptep = pte_offset(pmdp, addr); |
|---|
| 88 | + ptep = pte_offset_kernel(pmdp, addr); |
|---|
| 90 | 89 | do { |
|---|
| 91 | 90 | new = *ptep; |
|---|
| 92 | 91 | if (pte_none(new)) |
|---|
| .. | .. |
|---|
| 279 | 278 | return rc; |
|---|
| 280 | 279 | } |
|---|
| 281 | 280 | |
|---|
| 282 | | -static DEFINE_MUTEX(cpa_mutex); |
|---|
| 281 | +DEFINE_MUTEX(cpa_mutex); |
|---|
| 283 | 282 | |
|---|
| 284 | 283 | static int change_page_attr(unsigned long addr, unsigned long end, |
|---|
| 285 | 284 | unsigned long flags) |
|---|
| .. | .. |
|---|
| 338 | 337 | { |
|---|
| 339 | 338 | unsigned long address; |
|---|
| 340 | 339 | int nr, i, j; |
|---|
| 341 | | - pgd_t *pgd; |
|---|
| 342 | | - p4d_t *p4d; |
|---|
| 343 | | - pud_t *pud; |
|---|
| 344 | | - pmd_t *pmd; |
|---|
| 345 | 340 | pte_t *pte; |
|---|
| 346 | 341 | |
|---|
| 347 | 342 | for (i = 0; i < numpages;) { |
|---|
| 348 | 343 | address = page_to_phys(page + i); |
|---|
| 349 | | - pgd = pgd_offset_k(address); |
|---|
| 350 | | - p4d = p4d_offset(pgd, address); |
|---|
| 351 | | - pud = pud_offset(p4d, address); |
|---|
| 352 | | - pmd = pmd_offset(pud, address); |
|---|
| 353 | | - pte = pte_offset_kernel(pmd, address); |
|---|
| 344 | + pte = virt_to_kpte(address); |
|---|
| 354 | 345 | nr = (unsigned long)pte >> ilog2(sizeof(long)); |
|---|
| 355 | 346 | nr = PTRS_PER_PTE - (nr & (PTRS_PER_PTE - 1)); |
|---|
| 356 | 347 | nr = min(numpages - i, nr); |
|---|
| .. | .. |
|---|
| 366 | 357 | i += nr; |
|---|
| 367 | 358 | } |
|---|
| 368 | 359 | } |
|---|
| 369 | | - |
|---|
| 370 | | -#ifdef CONFIG_HIBERNATION |
|---|
| 371 | | -bool kernel_page_present(struct page *page) |
|---|
| 372 | | -{ |
|---|
| 373 | | - unsigned long addr; |
|---|
| 374 | | - int cc; |
|---|
| 375 | | - |
|---|
| 376 | | - addr = page_to_phys(page); |
|---|
| 377 | | - asm volatile( |
|---|
| 378 | | - " lra %1,0(%1)\n" |
|---|
| 379 | | - " ipm %0\n" |
|---|
| 380 | | - " srl %0,28" |
|---|
| 381 | | - : "=d" (cc), "+a" (addr) : : "cc"); |
|---|
| 382 | | - return cc == 0; |
|---|
| 383 | | -} |
|---|
| 384 | | -#endif /* CONFIG_HIBERNATION */ |
|---|
| 385 | 360 | |
|---|
| 386 | 361 | #endif /* CONFIG_DEBUG_PAGEALLOC */ |
|---|