[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d52e8af9-61af-45c2-837b-5a489e7e2916@arm.com>
Date: Thu, 12 Aug 2021 14:45:37 +0530
From: Anshuman Khandual <anshuman.khandual@....com>
To: Catalin Marinas <catalin.marinas@....com>
Cc: linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, akpm@...ux-foundation.org,
suzuki.poulose@....com, mark.rutland@....com, will@...nel.org,
maz@...nel.org, james.morse@....com, steven.price@....com
Subject: Re: [RFC V2 01/10] mm/mmap: Dynamically initialize protection_map[]
On 8/5/21 10:33 PM, Catalin Marinas wrote:
> On Mon, Jul 26, 2021 at 12:07:16PM +0530, Anshuman Khandual wrote:
>> The protection_map[] elements (__PXXX and __SXXX) might sometimes contain
>> runtime variables in certain platforms like arm64 preventing a successful
>> build because of the current static initialization. So it just defers the
>> initialization until mmmap_init() via a new helper init_protection_map().
>>
>> Signed-off-by: Anshuman Khandual <anshuman.khandual@....com>
>> ---
>> mm/mmap.c | 26 ++++++++++++++++++++++----
>> 1 file changed, 22 insertions(+), 4 deletions(-)
>>
>> diff --git a/mm/mmap.c b/mm/mmap.c
>> index ca54d36..a95b078 100644
>> --- a/mm/mmap.c
>> +++ b/mm/mmap.c
>> @@ -100,10 +100,7 @@ static void unmap_region(struct mm_struct *mm,
>> * w: (no) no
>> * x: (yes) yes
>> */
>> -pgprot_t protection_map[16] __ro_after_init = {
>> - __P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111,
>> - __S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111
>> -};
>> +pgprot_t protection_map[16] __ro_after_init;
>
> Mips, x86, sparc, arm32, m68k all adjust protection_map[] during boot.
> Could we do something similar here and avoid changing the generic code?
If __P[000..111] and __S[000..111] be made dummy values (e.g 0 or something
standard prot temporarily), hence the compilation problem could be avoided.
Later in the platform code, protection_map[] could be adjusted with actual
prot values which would involve variable.
Powered by blists - more mailing lists