From: Kees Cook <keescook@chromium.org> To: linux-kernel@vger.kernel.org Cc: Kees Cook <keescook@chromium.org>, Mark Salter <msalter@redhat.com>, Laura Abbott <lauraa@codeaurora.org>, Rob Herring <robh@kernel.org>, Leif Lindholm <leif.lindholm@linaro.org>, Stephen Boyd <sboyd@codeaurora.org>, Rabin Vincent <rabin@rab.in>, Liu hua <sdu.liu@huawei.com>, Nikolay Borisov <Nikolay.Borisov@arm.com>, Nicolas Pitre <nicolas.pitre@linaro.org>, Tomasz Figa <t.figa@samsung.com>, Doug Anderson <dianders@google.com>, Jason Wessel <jason.wessel@windriver.com>, Will Deacon <will.deacon@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Russell King - ARM Linux <linux@arm.linux.org.uk>, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org Subject: [PATCH v4 1/8] arm: use generic fixmap.h Date: Wed, 13 Aug 2014 10:06:26 -0700 [thread overview] Message-ID: <1407949593-16121-2-git-send-email-keescook@chromium.org> (raw) In-Reply-To: <1407949593-16121-1-git-send-email-keescook@chromium.org> From: Mark Salter <msalter@redhat.com> ARM is different from other architectures in that fixmap pages are indexed with a positive offset from FIXADDR_START. Other architectures index with a negative offset from FIXADDR_TOP. In order to use the generic fixmap.h definitions, this patch redefines FIXADDR_TOP to be inclusive of the useable range. That is, FIXADDR_TOP is the virtual address of the topmost fixed page. The newly defined FIXADDR_END is the first virtual address past the fixed mappings. Signed-off-by: Mark Salter <msalter@redhat.com> Reviewed-by: Doug Anderson <dianders@chromium.org> [kees: update for a05e54c103b0 "ARM: 8031/2: change fixmap ..."] Signed-off-by: Kees Cook <keescook@chromium.org> Cc: Laura Abbott <lauraa@codeaurora.org> Cc: Rob Herring <robh@kernel.org> --- arch/arm/include/asm/fixmap.h | 27 +++++++++------------------ arch/arm/mm/init.c | 2 +- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h index 74124b0d0d79..a7add6f9315d 100644 --- a/arch/arm/include/asm/fixmap.h +++ b/arch/arm/include/asm/fixmap.h @@ -2,27 +2,18 @@ #define _ASM_FIXMAP_H #define FIXADDR_START 0xffc00000UL -#define FIXADDR_TOP 0xffe00000UL -#define FIXADDR_SIZE (FIXADDR_TOP - FIXADDR_START) +#define FIXADDR_END 0xffe00000UL +#define FIXADDR_TOP (FIXADDR_END - PAGE_SIZE) -#define FIX_KMAP_NR_PTES (FIXADDR_SIZE >> PAGE_SHIFT) +#include <asm/kmap_types.h> -#define __fix_to_virt(x) (FIXADDR_START + ((x) << PAGE_SHIFT)) -#define __virt_to_fix(x) (((x) - FIXADDR_START) >> PAGE_SHIFT) +enum fixed_addresses { + FIX_KMAP_BEGIN, + FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_TYPE_NR * NR_CPUS) - 1, -extern void __this_fixmap_does_not_exist(void); + __end_of_fixed_addresses +}; -static inline unsigned long fix_to_virt(const unsigned int idx) -{ - if (idx >= FIX_KMAP_NR_PTES) - __this_fixmap_does_not_exist(); - return __fix_to_virt(idx); -} - -static inline unsigned int virt_to_fix(const unsigned long vaddr) -{ - BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START); - return __virt_to_fix(vaddr); -} +#include <asm-generic/fixmap.h> #endif diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 659c75d808dc..ad82c05bfc3a 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -570,7 +570,7 @@ void __init mem_init(void) MLK(DTCM_OFFSET, (unsigned long) dtcm_end), MLK(ITCM_OFFSET, (unsigned long) itcm_end), #endif - MLK(FIXADDR_START, FIXADDR_TOP), + MLK(FIXADDR_START, FIXADDR_END), MLM(VMALLOC_START, VMALLOC_END), MLM(PAGE_OFFSET, (unsigned long)high_memory), #ifdef CONFIG_HIGHMEM -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: keescook@chromium.org (Kees Cook) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v4 1/8] arm: use generic fixmap.h Date: Wed, 13 Aug 2014 10:06:26 -0700 [thread overview] Message-ID: <1407949593-16121-2-git-send-email-keescook@chromium.org> (raw) In-Reply-To: <1407949593-16121-1-git-send-email-keescook@chromium.org> From: Mark Salter <msalter@redhat.com> ARM is different from other architectures in that fixmap pages are indexed with a positive offset from FIXADDR_START. Other architectures index with a negative offset from FIXADDR_TOP. In order to use the generic fixmap.h definitions, this patch redefines FIXADDR_TOP to be inclusive of the useable range. That is, FIXADDR_TOP is the virtual address of the topmost fixed page. The newly defined FIXADDR_END is the first virtual address past the fixed mappings. Signed-off-by: Mark Salter <msalter@redhat.com> Reviewed-by: Doug Anderson <dianders@chromium.org> [kees: update for a05e54c103b0 "ARM: 8031/2: change fixmap ..."] Signed-off-by: Kees Cook <keescook@chromium.org> Cc: Laura Abbott <lauraa@codeaurora.org> Cc: Rob Herring <robh@kernel.org> --- arch/arm/include/asm/fixmap.h | 27 +++++++++------------------ arch/arm/mm/init.c | 2 +- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h index 74124b0d0d79..a7add6f9315d 100644 --- a/arch/arm/include/asm/fixmap.h +++ b/arch/arm/include/asm/fixmap.h @@ -2,27 +2,18 @@ #define _ASM_FIXMAP_H #define FIXADDR_START 0xffc00000UL -#define FIXADDR_TOP 0xffe00000UL -#define FIXADDR_SIZE (FIXADDR_TOP - FIXADDR_START) +#define FIXADDR_END 0xffe00000UL +#define FIXADDR_TOP (FIXADDR_END - PAGE_SIZE) -#define FIX_KMAP_NR_PTES (FIXADDR_SIZE >> PAGE_SHIFT) +#include <asm/kmap_types.h> -#define __fix_to_virt(x) (FIXADDR_START + ((x) << PAGE_SHIFT)) -#define __virt_to_fix(x) (((x) - FIXADDR_START) >> PAGE_SHIFT) +enum fixed_addresses { + FIX_KMAP_BEGIN, + FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_TYPE_NR * NR_CPUS) - 1, -extern void __this_fixmap_does_not_exist(void); + __end_of_fixed_addresses +}; -static inline unsigned long fix_to_virt(const unsigned int idx) -{ - if (idx >= FIX_KMAP_NR_PTES) - __this_fixmap_does_not_exist(); - return __fix_to_virt(idx); -} - -static inline unsigned int virt_to_fix(const unsigned long vaddr) -{ - BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START); - return __virt_to_fix(vaddr); -} +#include <asm-generic/fixmap.h> #endif diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 659c75d808dc..ad82c05bfc3a 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -570,7 +570,7 @@ void __init mem_init(void) MLK(DTCM_OFFSET, (unsigned long) dtcm_end), MLK(ITCM_OFFSET, (unsigned long) itcm_end), #endif - MLK(FIXADDR_START, FIXADDR_TOP), + MLK(FIXADDR_START, FIXADDR_END), MLM(VMALLOC_START, VMALLOC_END), MLM(PAGE_OFFSET, (unsigned long)high_memory), #ifdef CONFIG_HIGHMEM -- 1.9.1
next prev parent reply other threads:[~2014-08-13 17:07 UTC|newest] Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-08-13 17:06 [PATCH v4 0/8] arm: support CONFIG_RODATA Kees Cook 2014-08-13 17:06 ` Kees Cook 2014-08-13 17:06 ` Kees Cook [this message] 2014-08-13 17:06 ` [PATCH v4 1/8] arm: use generic fixmap.h Kees Cook 2014-08-13 17:06 ` [PATCH v4 2/8] ARM: expand fixmap region to 3MB Kees Cook 2014-08-13 17:06 ` Kees Cook 2014-08-19 12:26 ` Will Deacon 2014-08-19 12:26 ` Will Deacon 2014-08-20 12:16 ` Kees Cook 2014-08-20 12:16 ` Kees Cook 2014-08-26 14:37 ` Will Deacon 2014-08-26 14:37 ` Will Deacon 2014-08-13 17:06 ` [PATCH v4 3/8] arm: fixmap: implement __set_fixmap() Kees Cook 2014-08-13 17:06 ` Kees Cook 2014-08-13 17:06 ` [PATCH v4 4/8] arm: use fixmap for text patching when text is RO Kees Cook 2014-08-13 17:06 ` Kees Cook 2014-08-19 12:29 ` Will Deacon 2014-08-19 12:29 ` Will Deacon 2014-08-20 12:28 ` Kees Cook 2014-08-20 12:28 ` Kees Cook 2014-09-03 21:43 ` Kees Cook 2014-09-03 21:43 ` Kees Cook 2014-09-04 9:27 ` Will Deacon 2014-09-04 9:27 ` Will Deacon 2014-09-04 14:00 ` Kees Cook 2014-09-04 14:00 ` Kees Cook 2014-09-04 14:06 ` Will Deacon 2014-09-04 14:06 ` Will Deacon 2014-08-13 17:06 ` [PATCH v4 5/8] ARM: kexec: Make .text R/W in machine_kexec Kees Cook 2014-08-13 17:06 ` Kees Cook 2014-08-13 17:06 ` [PATCH v4 6/8] arm: kgdb: Handle read-only text / modules Kees Cook 2014-08-13 17:06 ` Kees Cook 2014-08-13 17:06 ` [PATCH v4 7/8] ARM: mm: allow non-text sections to be non-executable Kees Cook 2014-08-13 17:06 ` Kees Cook 2014-08-19 12:33 ` Will Deacon 2014-08-19 12:33 ` Will Deacon 2014-08-20 12:37 ` Kees Cook 2014-08-20 12:37 ` Kees Cook 2014-08-26 14:43 ` Will Deacon 2014-08-26 14:43 ` Will Deacon 2014-08-29 16:04 ` Kees Cook 2014-08-29 16:04 ` Kees Cook 2014-08-31 14:59 ` Rabin Vincent 2014-08-31 14:59 ` Rabin Vincent 2014-08-13 17:06 ` [PATCH v4 8/8] ARM: mm: allow text and rodata sections to be read-only Kees Cook 2014-08-13 17:06 ` Kees Cook 2014-08-19 12:36 ` Will Deacon 2014-08-19 12:36 ` Will Deacon 2014-08-20 12:52 ` Kees Cook 2014-08-20 12:52 ` Kees Cook 2014-08-13 17:38 ` [PATCH v4 0/8] arm: support CONFIG_RODATA Nicolas Pitre 2014-08-13 17:38 ` Nicolas Pitre
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1407949593-16121-2-git-send-email-keescook@chromium.org \ --to=keescook@chromium.org \ --cc=Nikolay.Borisov@arm.com \ --cc=catalin.marinas@arm.com \ --cc=dianders@google.com \ --cc=jason.wessel@windriver.com \ --cc=lauraa@codeaurora.org \ --cc=leif.lindholm@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-doc@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=msalter@redhat.com \ --cc=nicolas.pitre@linaro.org \ --cc=rabin@rab.in \ --cc=robh@kernel.org \ --cc=sboyd@codeaurora.org \ --cc=sdu.liu@huawei.com \ --cc=t.figa@samsung.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.