Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3519248pxb; Mon, 24 Jan 2022 11:15:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJzPHLxjGK/5ctwNlFjR/1WoqLlJ3Bk9L4bg6HvKiGp0s1M717HEyIH+7ApA2mbiyG7uMsna X-Received: by 2002:a63:b50d:: with SMTP id y13mr12723981pge.286.1643051737636; Mon, 24 Jan 2022 11:15:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643051737; cv=none; d=google.com; s=arc-20160816; b=dWIYwXAT4/PPH/sUZRjqt0UNbLinHkA70NOXTuohFAVveDu/6Nvpy4DgqfhfuFd0L7 JDdwXNNGkivgtE8eMQ461U1txkTwu9VUB+00+rf2HIfwNAQe4cuiJ608wzHMoKWehLdM xISMHCv3l/o5mtQP7R5GQ96Jw/Rk5PB7ApopRyJtMOI1UOt3Q8EykT4jTRpHRBJjuGpo ACLRgza33fNbK4X+PdCGX6Texlc3BxE8H8TmXiICwLjF94qKpHNIDzU/+He6MSAQfhAG Vh/CH/ic/8wxIia06mxMh/MqrCTEVpshlOwxfsOAdjwz5nHOMw+tS6ymYrXnsP5VSbjl ekbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=wlJQ/3JDep2uQX3mhaPO+tJNALkg2zmZOhcwR0qA6bY=; b=oFfuWbN+tHA+r5k3elsDsR2Tw2mfZ75ghRqQ8MKVHxOjkUHyCNuaCqaMiI6gGTcDzD hKFQKWSz0Dq0K+s5E850CR8bWeEyp/4HF9EDtcO5wy0qQjK7qgb+3J39n6Y8K3YIjgoM nO/ZA+J69dCM0cHkNT7UyoXtyd2uC5Kj3/UWFf8G0jYSPDnN0mq7K7/w28XEHqqTcBnt +2pf20uTjGEkfB6QG7S1GZ7c5azHy0G5+lM7Rm89I53c9oSNZnvXBv1q6Qyli66/BxrA QQVDb1/7OuGlbDdI5FkvaRPM+nKtciEbDyEU3oJo7wUAZzfyHfQbpMXpsABILXOlEMkc wL2w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c30si13412995pgc.575.2022.01.24.11.15.25; Mon, 24 Jan 2022 11:15:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242844AbiAXM6U (ORCPT + 99 others); Mon, 24 Jan 2022 07:58:20 -0500 Received: from foss.arm.com ([217.140.110.172]:33066 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242800AbiAXM6O (ORCPT ); Mon, 24 Jan 2022 07:58:14 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 92DC9101E; Mon, 24 Jan 2022 04:58:13 -0800 (PST) Received: from p8cg001049571a15.arm.com (unknown [10.163.43.190]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 42CCE3F774; Mon, 24 Jan 2022 04:58:09 -0800 (PST) From: Anshuman Khandual To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, hch@infradead.org, akpm@linux-foundation.org, Anshuman Khandual , Richard Henderson , linux-alpha@vger.kernel.org Subject: [RFC V1 16/31] alpha/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT Date: Mon, 24 Jan 2022 18:26:53 +0530 Message-Id: <1643029028-12710-17-git-send-email-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1643029028-12710-1-git-send-email-anshuman.khandual@arm.com> References: <1643029028-12710-1-git-send-email-anshuman.khandual@arm.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This defines and exports a platform specific custom vm_get_page_prot() via subscribing ARCH_HAS_VM_GET_PAGE_PROT. Subsequently all __SXXX and __PXXX macros can be dropped which are no longer needed. Cc: Richard Henderson Cc: linux-alpha@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual --- arch/alpha/Kconfig | 1 + arch/alpha/include/asm/pgtable.h | 17 ------------- arch/alpha/mm/init.c | 41 ++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 4e87783c90ad..73e82fe5c770 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -2,6 +2,7 @@ config ALPHA bool default y + select ARCH_HAS_VM_GET_PAGE_PROT select ARCH_32BIT_USTAT_F_TINODE select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h index 02f0429f1068..9fb5e9d10bb6 100644 --- a/arch/alpha/include/asm/pgtable.h +++ b/arch/alpha/include/asm/pgtable.h @@ -116,23 +116,6 @@ struct vm_area_struct; * arch/alpha/mm/fault.c) */ /* xwr */ -#define __P000 _PAGE_P(_PAGE_FOE | _PAGE_FOW | _PAGE_FOR) -#define __P001 _PAGE_P(_PAGE_FOE | _PAGE_FOW) -#define __P010 _PAGE_P(_PAGE_FOE) -#define __P011 _PAGE_P(_PAGE_FOE) -#define __P100 _PAGE_P(_PAGE_FOW | _PAGE_FOR) -#define __P101 _PAGE_P(_PAGE_FOW) -#define __P110 _PAGE_P(0) -#define __P111 _PAGE_P(0) - -#define __S000 _PAGE_S(_PAGE_FOE | _PAGE_FOW | _PAGE_FOR) -#define __S001 _PAGE_S(_PAGE_FOE | _PAGE_FOW) -#define __S010 _PAGE_S(_PAGE_FOE) -#define __S011 _PAGE_S(_PAGE_FOE) -#define __S100 _PAGE_S(_PAGE_FOW | _PAGE_FOR) -#define __S101 _PAGE_S(_PAGE_FOW) -#define __S110 _PAGE_S(0) -#define __S111 _PAGE_S(0) /* * pgprot_noncached() is only for infiniband pci support, and a real diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c index f6114d03357c..89e5e593194d 100644 --- a/arch/alpha/mm/init.c +++ b/arch/alpha/mm/init.c @@ -280,3 +280,44 @@ mem_init(void) high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); memblock_free_all(); } + +pgprot_t vm_get_page_prot(unsigned long vm_flags) +{ + switch (vm_flags & (VM_READ | VM_WRITE | VM_EXEC | VM_SHARED)) { + case VM_NONE: + return _PAGE_P(_PAGE_FOE|_PAGE_FOW|_PAGE_FOR); + case VM_READ: + return _PAGE_P(_PAGE_FOE|_PAGE_FOW); + case VM_WRITE: + return _PAGE_P(_PAGE_FOE); + case VM_READ | VM_WRITE: + return _PAGE_P(_PAGE_FOE); + case VM_EXEC: + return _PAGE_P(_PAGE_FOW|_PAGE_FOR); + case VM_EXEC | VM_READ: + return _PAGE_P(_PAGE_FOW); + case VM_EXEC | VM_WRITE: + return _PAGE_P(0); + case VM_EXEC | VM_READ | VM_WRITE: + return _PAGE_P(0); + case VM_SHARED: + return _PAGE_S(_PAGE_FOE|_PAGE_FOW|_PAGE_FOR); + case VM_SHARED | VM_READ: + return _PAGE_S(_PAGE_FOE|_PAGE_FOW); + case VM_SHARED | VM_WRITE: + return _PAGE_S(_PAGE_FOE); + case VM_SHARED | VM_READ | VM_WRITE: + return _PAGE_S(_PAGE_FOE); + case VM_SHARED | VM_EXEC: + return _PAGE_S(_PAGE_FOW|_PAGE_FOR); + case VM_SHARED | VM_EXEC | VM_READ: + return _PAGE_S(_PAGE_FOW); + case VM_SHARED | VM_EXEC | VM_WRITE: + return _PAGE_S(0); + case VM_SHARED | VM_EXEC | VM_READ | VM_WRITE: + return _PAGE_S(0); + default: + BUILD_BUG(); + } +} +EXPORT_SYMBOL(vm_get_page_prot); -- 2.25.1