cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pgtable-4k.h (1760B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _ASM_POWERPC_BOOK3S_64_PGTABLE_4K_H
      3#define _ASM_POWERPC_BOOK3S_64_PGTABLE_4K_H
      4/*
      5 * hash 4k can't share hugetlb and also doesn't support THP
      6 */
      7#ifndef __ASSEMBLY__
      8#ifdef CONFIG_HUGETLB_PAGE
      9static inline int pmd_huge(pmd_t pmd)
     10{
     11	/*
     12	 * leaf pte for huge page
     13	 */
     14	if (radix_enabled())
     15		return !!(pmd_raw(pmd) & cpu_to_be64(_PAGE_PTE));
     16	return 0;
     17}
     18
     19static inline int pud_huge(pud_t pud)
     20{
     21	/*
     22	 * leaf pte for huge page
     23	 */
     24	if (radix_enabled())
     25		return !!(pud_raw(pud) & cpu_to_be64(_PAGE_PTE));
     26	return 0;
     27}
     28
     29static inline int pgd_huge(pgd_t pgd)
     30{
     31	/*
     32	 * leaf pte for huge page
     33	 */
     34	if (radix_enabled())
     35		return !!(pgd_raw(pgd) & cpu_to_be64(_PAGE_PTE));
     36	return 0;
     37}
     38#define pgd_huge pgd_huge
     39/*
     40 * With radix , we have hugepage ptes in the pud and pmd entries. We don't
     41 * need to setup hugepage directory for them. Our pte and page directory format
     42 * enable us to have this enabled.
     43 */
     44static inline int hugepd_ok(hugepd_t hpd)
     45{
     46	if (radix_enabled())
     47		return 0;
     48	return hash__hugepd_ok(hpd);
     49}
     50#define is_hugepd(hpd)		(hugepd_ok(hpd))
     51
     52/*
     53 * 16M and 16G huge page directory tables are allocated from slab cache
     54 *
     55 */
     56#define H_16M_CACHE_INDEX (PAGE_SHIFT + H_PTE_INDEX_SIZE + H_PMD_INDEX_SIZE - 24)
     57#define H_16G_CACHE_INDEX                                                      \
     58	(PAGE_SHIFT + H_PTE_INDEX_SIZE + H_PMD_INDEX_SIZE + H_PUD_INDEX_SIZE - 34)
     59
     60static inline int get_hugepd_cache_index(int index)
     61{
     62	switch (index) {
     63	case H_16M_CACHE_INDEX:
     64		return HTLB_16M_INDEX;
     65	case H_16G_CACHE_INDEX:
     66		return HTLB_16G_INDEX;
     67	default:
     68		BUG();
     69	}
     70	/* should not reach */
     71}
     72
     73#endif /* CONFIG_HUGETLB_PAGE */
     74
     75#endif /* __ASSEMBLY__ */
     76
     77#endif /*_ASM_POWERPC_BOOK3S_64_PGTABLE_4K_H */