lkml.org 
[lkml]   [2022]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 6/6] arm64: Add HAVE_IOREMAP_PROT support
    Date
    With ioremap_prot() definition from generic ioremap, also move
    pte_pgprot() from hugetlbpage.c into pgtable.h, then arm64 could
    have HAVE_IOREMAP_PROT, which will enable generic_access_phys()
    code, it is useful for debug, eg, gdb.

    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    ---
    .../features/vm/ioremap_prot/arch-support.txt | 2 +-
    arch/arm64/Kconfig | 1 +
    arch/arm64/include/asm/pgtable.h | 10 ++++++++++
    arch/arm64/mm/hugetlbpage.c | 10 ----------
    4 files changed, 12 insertions(+), 11 deletions(-)

    diff --git a/Documentation/features/vm/ioremap_prot/arch-support.txt b/Documentation/features/vm/ioremap_prot/arch-support.txt
    index 205a90e82050..a710bd99c32e 100644
    --- a/Documentation/features/vm/ioremap_prot/arch-support.txt
    +++ b/Documentation/features/vm/ioremap_prot/arch-support.txt
    @@ -9,7 +9,7 @@
    | alpha: | TODO |
    | arc: | ok |
    | arm: | TODO |
    - | arm64: | TODO |
    + | arm64: | ok |
    | csky: | TODO |
    | hexagon: | TODO |
    | ia64: | TODO |
    diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
    index ac160aa26126..1267f325d32b 100644
    --- a/arch/arm64/Kconfig
    +++ b/arch/arm64/Kconfig
    @@ -189,6 +189,7 @@ config ARM64
    select HAVE_FUNCTION_GRAPH_TRACER
    select HAVE_GCC_PLUGINS
    select HAVE_HW_BREAKPOINT if PERF_EVENTS
    + select HAVE_IOREMAP_PROT
    select HAVE_IRQ_TIME_ACCOUNTING
    select HAVE_KVM
    select HAVE_NMI
    diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
    index 0b6632f18364..5a2eb6232e69 100644
    --- a/arch/arm64/include/asm/pgtable.h
    +++ b/arch/arm64/include/asm/pgtable.h
    @@ -427,6 +427,16 @@ static inline pte_t pte_swp_clear_exclusive(pte_t pte)
    return clear_pte_bit(pte, __pgprot(PTE_SWP_EXCLUSIVE));
    }

    +/*
    + * Select all bits except the pfn
    + */
    +static inline pgprot_t pte_pgprot(pte_t pte)
    +{
    + unsigned long pfn = pte_pfn(pte);
    +
    + return __pgprot(pte_val(pfn_pte(pfn, __pgprot(0))) ^ pte_val(pte));
    +}
    +
    #ifdef CONFIG_NUMA_BALANCING
    /*
    * See the comment in include/linux/pgtable.h
    diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
    index e2a5ec9fdc0d..8eab05367549 100644
    --- a/arch/arm64/mm/hugetlbpage.c
    +++ b/arch/arm64/mm/hugetlbpage.c
    @@ -100,16 +100,6 @@ int pud_huge(pud_t pud)
    #endif
    }

    -/*
    - * Select all bits except the pfn
    - */
    -static inline pgprot_t pte_pgprot(pte_t pte)
    -{
    - unsigned long pfn = pte_pfn(pte);
    -
    - return __pgprot(pte_val(pfn_pte(pfn, __pgprot(0))) ^ pte_val(pte));
    -}
    -
    static int find_num_contig(struct mm_struct *mm, unsigned long addr,
    pte_t *ptep, size_t *pgsize)
    {
    --
    2.35.3
    \
     
     \ /
      Last update: 2022-06-06 09:40    [W:3.952 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site