lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 6 Feb 2016 22:10:15 -0800 From: Dan Williams <dan.j.williams@...el.com> To: Andrew Morton <akpm@...ux-foundation.org> Cc: Rik van Riel <riel@...hat.com>, Dave Hansen <dave.hansen@...ux.intel.com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, Linux MM <linux-mm@...ck.org>, Mel Gorman <mgorman@...e.de>, Mark <markk@...ra.co.uk>, Joonsoo Kim <iamjoonsoo.kim@....com>, Sudip Mukherjee <sudipm.mukherjee@...il.com> Subject: Re: [RFC PATCH] mm: CONFIG_NR_ZONES_EXTENDED On Mon, Feb 1, 2016 at 9:42 PM, Andrew Morton <akpm@...ux-foundation.org> wrote: > On Wed, 27 Jan 2016 22:19:14 -0800 Dan Williams <dan.j.williams@...el.com> wrote: >> #define GFP_ZONE_TABLE ( \ >> - (ZONE_NORMAL << 0 * ZONES_SHIFT) \ >> - | (OPT_ZONE_DMA << ___GFP_DMA * ZONES_SHIFT) \ >> - | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * ZONES_SHIFT) \ >> - | (OPT_ZONE_DMA32 << ___GFP_DMA32 * ZONES_SHIFT) \ >> - | (ZONE_NORMAL << ___GFP_MOVABLE * ZONES_SHIFT) \ >> - | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * ZONES_SHIFT) \ >> - | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * ZONES_SHIFT) \ >> - | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * ZONES_SHIFT) \ >> + (ZONE_NORMAL << 0 * GFP_ZONES_SHIFT) \ >> + | (OPT_ZONE_DMA << ___GFP_DMA * GFP_ZONES_SHIFT) \ >> + | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * GFP_ZONES_SHIFT) \ >> + | (OPT_ZONE_DMA32 << ___GFP_DMA32 * GFP_ZONES_SHIFT) \ >> + | (ZONE_NORMAL << ___GFP_MOVABLE * GFP_ZONES_SHIFT) \ >> + | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * GFP_ZONES_SHIFT) \ >> + | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * GFP_ZONES_SHIFT) \ >> + | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * GFP_ZONES_SHIFT) \ >> ) > > Geeze. Congrats on decrypting this stuff. I hope. Do you think it's > possible to comprehensibly document it all for the next poor soul who > ventures into it? > It is documented, just not included in the diff context. At least the existing documentation was enough for me to decipher that my changes were doing the right thing: /* * GFP_ZONE_TABLE is a word size bitstring that is used for looking up the * zone to use given the lowest 4 bits of gfp_t. Entries are ZONE_SHIFT long * and there are 16 of them to cover all possible combinations of * __GFP_DMA, __GFP_DMA32, __GFP_MOVABLE and __GFP_HIGHMEM. * * The zone fallback order is MOVABLE=>HIGHMEM=>NORMAL=>DMA32=>DMA. * But GFP_MOVABLE is not only a zone specifier but also an allocation * policy. Therefore __GFP_MOVABLE plus another zone selector is valid. * Only 1 bit of the lowest 3 bits (DMA,DMA32,HIGHMEM) can be set to "1". * * bit result * ================= * 0x0 => NORMAL * 0x1 => DMA or NORMAL * 0x2 => HIGHMEM or NORMAL * 0x3 => BAD (DMA+HIGHMEM) * 0x4 => DMA32 or DMA or NORMAL * 0x5 => BAD (DMA+DMA32) * 0x6 => BAD (HIGHMEM+DMA32) * 0x7 => BAD (HIGHMEM+DMA32+DMA) * 0x8 => NORMAL (MOVABLE+0) * 0x9 => DMA or NORMAL (MOVABLE+DMA) * 0xa => MOVABLE (Movable is valid only if HIGHMEM is set too) * 0xb => BAD (MOVABLE+HIGHMEM+DMA) * 0xc => DMA32 (MOVABLE+DMA32) * 0xd => BAD (MOVABLE+DMA32+DMA) * 0xe => BAD (MOVABLE+DMA32+HIGHMEM) * 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA) * * GFP_ZONES_SHIFT must be <= 2 on 32 bit platforms. */
Powered by blists - more mailing lists