[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <543548C3.7030003@oracle.com>
Date: Wed, 08 Oct 2014 10:22:59 -0400
From: Sasha Levin <sasha.levin@...cle.com>
To: Dave Hansen <dave.hansen@...el.com>, akpm@...ux-foundation.org
CC: linux-kernel@...r.kernel.org, linux-mm@...ck.org, hughd@...gle.com,
mgorman@...e.de, Christoph Lameter <cl@...ux.com>
Subject: Re: [PATCH 5/5] mm: poison page struct
On 10/07/2014 06:02 PM, Dave Hansen wrote:
> On 09/29/2014 06:47 PM, Sasha Levin wrote:
>> struct page {
>> +#ifdef CONFIG_DEBUG_VM_POISON
>> + u32 poison_start;
>> +#endif
>> /* First double word block */
>> unsigned long flags; /* Atomic flags, some possibly
>> * updated asynchronously */
>> @@ -196,6 +199,9 @@ struct page {
>> #ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS
>> int _last_cpupid;
>> #endif
>> +#ifdef CONFIG_DEBUG_VM_POISON
>> + u32 poison_end;
>> +#endif
>> }
>
> Does this break slub's __cmpxchg_double_slab trick? I thought it
> required page->freelist and page->counters to be doubleword-aligned.
I'll probably have to switch it to 8 bytes anyways to make it work with
kasan. This should take care of the slub optimization as well.
> It's not like we really require this optimization when we're debugging,
> but trying to use it will unnecessarily slow things down.
>
> FWIW, if you're looking to trim down the number of lines of code, you
> could certainly play some macro tricks and #ifdef tricks.
>
> struct vm_poison {
> #ifdef CONFIG_DEBUG_VM_POISON
> u32 val;
> #endif
> };
>
> Then, instead of #ifdefs in each structure, you do:
>
> struct page {
> struct vm_poison poison_start;
> ... other gunk
> struct vm_poison poison_end;
> };
Agreed, I'll reword that in the next version.
Thanks,
Sasha
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists