Re: [PATCH 24/27] Convert gfp_zone() to use a table ofprecalculated values

From: KAMEZAWA Hiroyuki
Date: Wed Mar 18 2009 - 20:06:35 EST


On Wed, 18 Mar 2009 19:46:04 +0000
Mel Gorman <mel@xxxxxxxxx> wrote:

> On Wed, Mar 18, 2009 at 03:07:48PM -0400, Christoph Lameter wrote:
> > On Wed, 18 Mar 2009, Mel Gorman wrote:
> >
> > > Thanks.At a quick glance, it looks ok but I haven't tested it. As the intention
> > > was to get one pass of patches that are not controversial and are "obvious",
> > > I have dropped my version of the gfp_zone patch and the subsequent flag
> > > cleanup and will revisit it after the first lot of patches has been dealt
> > > with. I'm testing again with the remaining patches.
> >
> > This fixes buggy behavior of gfp_zone so it would deserve a higher
> > priority.
> >
>
> It is buggy behaviour in response to a flag combination that makes no sense
> which arguably is a buggy caller. Now that I get to think about it a bit more,
> you can't define a const table in a header. If it's declared extern, then
> the compiler doesn't know what the constant value is so it can't generate
> better code. At best, you end up with equivalent code to what my patch did
> in the first place except __GFP_DMA32|__GFP_HIGHMEM will return ZONE_NORMAL.
>

I wonder why you have to make the bad caller work insane way ?
Is this bad ?
==
const int gfp_zone_table[GFP_ZONEMASK] = {
ZONE_NORMAL, /* 00 No flags set */
ZONE_DMA, /* 01 Only GFP_DMA set */
ZONE_HIGHMEM, /* 02 Only GFP_HIGHMEM set */
BAD_ZONE, /* 03 GFP_HIGHMEM and GFP_DMA set */
ZONE_DMA32, /* 04 Only GFP_DMA32 set */
BAD_ZONE, /* 05 GFP_DMA and GFP_DMA32 set */
BAD_ZONE, /* 06 GFP_DMA32 and GFP_HIGHMEM set */
BAD_ZONE, /* 07 GFP_DMA, GFP_DMA32 and GFP_DMA32 set */
ZONE_MOVABLE, /* 08 Only ZONE_MOVABLE set */
ZONE_DMA, /* 09 MOVABLE + DMA */
ZONE_MOVABLE, /* 0A MOVABLE + HIGHMEM */
BAD_ZONE, /* 0B MOVABLE + DMA + HIGHMEM */
ZONE_DMA32, /* 0C MOVABLE + DMA32 */
BAD_ZONE, /* 0D MOVABLE + DMA + DMA32 */
BAD_ZONE, /* 0E MOVABLE + DMA32 + HIGHMEM */
BAD_ZONE /* 0F MOVABLE + DMA32 + HIGHMEM + DMA
};
==

Thanks,
-Kame



> --
> Mel Gorman
> Part-time Phd Student Linux Technology Center
> University of Limerick IBM Dublin Software Lab
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@xxxxxxxxxx For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/