From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
paulus@samba.org, mpe@ellerman.id.au, ryabinin.a.a@gmail.com
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: [RFC PATCH V1 0/8] KASAN ppc64 support
Date: Mon, 17 Aug 2015 16:20:36 +0530 [thread overview]
Message-ID: <87io8ep4sj.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <1439805684.2416.16.camel@kernel.crashing.org>
Benjamin Herrenschmidt <benh@kernel.crashing.org> writes:
> On Mon, 2015-08-17 at 15:20 +0530, Aneesh Kumar K.V wrote:
>
>> For kernel linear mapping, our address space looks like
>> 0xc000000000000000 - 0xc0003fffffffffff (64TB)
>>
>> We can't have virtual address(effective address) above that range
>> in 0xc region. Hence in-order to shadow the linear mapping, I am
>> using region 0xe. ie, the shadow mapping now looks liwe
>>
>> 0xc000000000000000 -> 0xe000000000000000
>
> Why ? IE. Why can't you put the shadow at address +64T and have it work
> for everything ?
> .../...
Above +64TB ? How will that work ? We have check in different parts of
code like below, where we check each region's top address is within 64TB range.
PGTABLE_RANGE and (ESID_BITS + SID_SHIFT) and all dependendent on 64TB
range. (46 bits).
static inline unsigned long get_vsid(unsigned long context, unsigned long ea,
int ssize)
{
/*
* Bad address. We return VSID 0 for that
*/
if ((ea & ~REGION_MASK) >= PGTABLE_RANGE)
return 0;
if (ssize == MMU_SEGSIZE_256M)
return vsid_scramble((context << ESID_BITS)
| (ea >> SID_SHIFT), 256M);
return vsid_scramble((context << ESID_BITS_1T)
| (ea >> SID_SHIFT_1T), 1T);
}
>> Another reason why inline instrumentation is difficult is that for
>> inline instrumentation to work, we need to create a mapping for
>> _possible_
>> virtual address space before kasan is fully initialized. ie, we need
>> to create page table entries for the shadow of the entire 64TB range,
>> with zero page, even though we have lesser ram. We definitely can't
>> bolt those entries. I am yet to get the shadow for kernel linear
>> mapping to work without bolting. Also we will have to get the page
>> table allocated for that, because we can't share page table entries.
>> Our fault path use pte entries for storing hash slot index.
>
> Hrm, that means we might want to start considering a page table to
> cover the linear mapping...
But that would require us to get a large zero page ? Are you suggesting
to use 16G page ?
>
>> If we are ok to steal part of that 64TB range, for kasan mapping , ie
>> we make shadow of each region part of the same region, may be we can
>> get inline instrumentation to work. But that still doesn't solve the
>> page table allocation overhead issue mentioned above.
>>
-aneesh
next prev parent reply other threads:[~2015-08-17 10:51 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-17 6:36 [RFC PATCH V1 0/8] KASAN ppc64 support Aneesh Kumar K.V
2015-08-17 6:36 ` [RFC PATCH V1 1/8] powerpc/mm: Add virt_to_pfn and use this instead of opencoding Aneesh Kumar K.V
2015-08-17 6:36 ` [RFC PATCH V1 2/8] kasan: MODULE_VADDR is not available on all archs Aneesh Kumar K.V
2015-08-17 6:36 ` [RFC PATCH V1 3/8] kasan: Rename kasan_enabled to kasan_report_enabled Aneesh Kumar K.V
2015-08-17 6:36 ` [RFC PATCH V1 4/8] kasan: Don't use kasan shadow pointer in generic functions Aneesh Kumar K.V
2015-08-17 11:36 ` Andrey Ryabinin
2015-08-18 5:29 ` Aneesh Kumar K.V
2015-08-18 9:12 ` Andrey Ryabinin
2015-08-17 6:36 ` [RFC PATCH V1 5/8] kasan: Enable arch to hook into kasan callbacks Aneesh Kumar K.V
2015-08-17 6:36 ` [RFC PATCH V1 6/8] kasan: Allow arch to overrride kasan shadow offsets Aneesh Kumar K.V
2015-08-17 6:36 ` [RFC PATCH V1 7/8] powerpc/mm: kasan: Add kasan support for ppc64 Aneesh Kumar K.V
2015-08-17 12:13 ` Andrey Ryabinin
2015-08-17 12:17 ` Andrey Ryabinin
2015-08-18 5:36 ` Aneesh Kumar K.V
2015-08-18 8:40 ` Andrey Ryabinin
2015-08-18 5:34 ` Aneesh Kumar K.V
2015-08-17 6:36 ` [RFC PATCH V1 8/8] powerpc: Disable kasan for kernel/ and mm/ directory Aneesh Kumar K.V
2015-08-17 6:54 ` [RFC PATCH V1 0/8] KASAN ppc64 support Benjamin Herrenschmidt
2015-08-17 9:50 ` Aneesh Kumar K.V
2015-08-17 10:01 ` Benjamin Herrenschmidt
2015-08-17 10:50 ` Aneesh Kumar K.V [this message]
2015-08-17 11:21 ` Benjamin Herrenschmidt
2015-08-17 11:29 ` Andrey Ryabinin
2015-08-18 5:42 ` Aneesh Kumar K.V
2015-08-18 8:50 ` Andrey Ryabinin
2015-08-18 9:21 ` Aneesh Kumar K.V
2015-08-18 9:30 ` Andrey Ryabinin
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=87io8ep4sj.fsf@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=ryabinin.a.a@gmail.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: link
Be 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.