Release 4.14 arch/s390/include/asm/hugetlb.h
/* SPDX-License-Identifier: GPL-2.0 */
/*
* IBM System z Huge TLB Page Support for Kernel.
*
* Copyright IBM Corp. 2008
* Author(s): Gerald Schaefer <gerald.schaefer@de.ibm.com>
*/
#ifndef _ASM_S390_HUGETLB_H
#define _ASM_S390_HUGETLB_H
#include <asm/page.h>
#include <asm/pgtable.h>
#define is_hugepage_only_range(mm, addr, len) 0
#define hugetlb_free_pgd_range free_pgd_range
#define hugepages_supported() (MACHINE_HAS_EDAT1)
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
pte_t *ptep, pte_t pte);
pte_t huge_ptep_get(pte_t *ptep);
pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
unsigned long addr, pte_t *ptep);
/*
* If the arch doesn't supply something else, assume that hugepage
* size aligned regions are ok without further preparation.
*/
static inline int prepare_hugepage_range(struct file *file,
unsigned long addr, unsigned long len)
{
if (len & ~HPAGE_MASK)
return -EINVAL;
if (addr & ~HPAGE_MASK)
return -EINVAL;
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 40 | 88.89% | 1 | 50.00% |
Andi Kleen | 5 | 11.11% | 1 | 50.00% |
Total | 45 | 100.00% | 2 | 100.00% |
#define arch_clear_hugepage_flags(page) do { } while (0)
static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
pte_t *ptep, unsigned long sz)
{
if ((pte_val(*ptep) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R3)
pte_val(*ptep) = _REGION3_ENTRY_EMPTY;
else
pte_val(*ptep) = _SEGMENT_ENTRY_EMPTY;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 39 | 70.91% | 2 | 50.00% |
Martin Schwidefsky | 12 | 21.82% | 1 | 25.00% |
Punit Agrawal | 4 | 7.27% | 1 | 25.00% |
Total | 55 | 100.00% | 4 | 100.00% |
static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
unsigned long address, pte_t *ptep)
{
huge_ptep_get_and_clear(vma->vm_mm, address, ptep);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 22 | 70.97% | 2 | 66.67% |
Martin Schwidefsky | 9 | 29.03% | 1 | 33.33% |
Total | 31 | 100.00% | 3 | 100.00% |
static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
unsigned long addr, pte_t *ptep,
pte_t pte, int dirty)
{
int changed = !pte_same(huge_ptep_get(ptep), pte);
if (changed) {
huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
}
return changed;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Martin Schwidefsky | 42 | 57.53% | 1 | 50.00% |
Gerald Schaefer | 31 | 42.47% | 1 | 50.00% |
Total | 73 | 100.00% | 2 | 100.00% |
static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
unsigned long addr, pte_t *ptep)
{
pte_t pte = huge_ptep_get_and_clear(mm, addr, ptep);
set_huge_pte_at(mm, addr, ptep, pte_wrprotect(pte));
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Martin Schwidefsky | 24 | 52.17% | 1 | 50.00% |
Gerald Schaefer | 22 | 47.83% | 1 | 50.00% |
Total | 46 | 100.00% | 2 | 100.00% |
static inline pte_t mk_huge_pte(struct page *page, pgprot_t pgprot)
{
return mk_pte(page, pgprot);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 19 | 82.61% | 1 | 50.00% |
Martin Schwidefsky | 4 | 17.39% | 1 | 50.00% |
Total | 23 | 100.00% | 2 | 100.00% |
static inline int huge_pte_none(pte_t pte)
{
return pte_none(pte);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Martin Schwidefsky | 11 | 68.75% | 1 | 50.00% |
Gerald Schaefer | 5 | 31.25% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline int huge_pte_write(pte_t pte)
{
return pte_write(pte);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 14 | 87.50% | 1 | 50.00% |
Martin Schwidefsky | 2 | 12.50% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline int huge_pte_dirty(pte_t pte)
{
return pte_dirty(pte);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 12 | 75.00% | 1 | 50.00% |
Martin Schwidefsky | 4 | 25.00% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline pte_t huge_pte_mkwrite(pte_t pte)
{
return pte_mkwrite(pte);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 14 | 87.50% | 1 | 50.00% |
Martin Schwidefsky | 2 | 12.50% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline pte_t huge_pte_mkdirty(pte_t pte)
{
return pte_mkdirty(pte);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 13 | 81.25% | 1 | 50.00% |
Martin Schwidefsky | 3 | 18.75% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline pte_t huge_pte_wrprotect(pte_t pte)
{
return pte_wrprotect(pte);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 13 | 81.25% | 1 | 50.00% |
Martin Schwidefsky | 3 | 18.75% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline pte_t huge_pte_modify(pte_t pte, pgprot_t newprot)
{
return pte_modify(pte, newprot);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Martin Schwidefsky | 12 | 57.14% | 1 | 50.00% |
Gerald Schaefer | 9 | 42.86% | 1 | 50.00% |
Total | 21 | 100.00% | 2 | 100.00% |
#ifdef CONFIG_ARCH_HAS_GIGANTIC_PAGE
static inline bool gigantic_page_supported(void) { return true; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Aneesh Kumar K.V | 12 | 100.00% | 1 | 100.00% |
Total | 12 | 100.00% | 1 | 100.00% |
#endif
#endif /* _ASM_S390_HUGETLB_H */
Overall Contributors
Person | Tokens | Prop | Commits | CommitProp |
Gerald Schaefer | 305 | 61.37% | 5 | 38.46% |
Martin Schwidefsky | 153 | 30.78% | 1 | 7.69% |
Aneesh Kumar K.V | 17 | 3.42% | 1 | 7.69% |
Will Deacon | 7 | 1.41% | 1 | 7.69% |
Andi Kleen | 5 | 1.01% | 1 | 7.69% |
Dominik Dingel | 4 | 0.80% | 1 | 7.69% |
Punit Agrawal | 4 | 0.80% | 1 | 7.69% |
Greg Kroah-Hartman | 1 | 0.20% | 1 | 7.69% |
Heiko Carstens | 1 | 0.20% | 1 | 7.69% |
Total | 497 | 100.00% | 13 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.