[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <50F5B214.5060604@zytor.com>
Date: Tue, 15 Jan 2013 11:46:28 -0800
From: "H. Peter Anvin" <hpa@...or.com>
To: Dave Hansen <dave@...ux.vnet.ibm.com>
CC: linux-kernel@...r.kernel.org, linux-mm@...ck.org,
Gleb Natapov <gleb@...hat.com>, Avi Kivity <avi@...hat.com>,
Ingo Molnar <mingo@...hat.com>, x86@...nel.org,
Marcelo Tosatti <mtosatti@...hat.com>
Subject: Re: [RFCv3][PATCH 1/3] create slow_virt_to_phys()
On 01/09/2013 10:59 AM, Dave Hansen wrote:
> + switch (level) {
> + case PG_LEVEL_4K:
> + psize = PAGE_SIZE;
> + pmask = PAGE_MASK;
> + break;
> + case PG_LEVEL_2M:
> + psize = PMD_PAGE_SIZE;
> + pmask = PMD_PAGE_MASK;
> + break;
> +#ifdef CONFIG_X86_64
> + case PG_LEVEL_1G:
> + psize = PUD_PAGE_SIZE;
> + pmask = PUD_PAGE_MASK;
> + break;
> +#endif
> + default:
> + BUG();
> + }
I object to this switch statement. If we are going to create new
primitives, let's create a primitive that embody this and put it in
pgtypes_types.h, especially since it is simply an algorithmic operation:
static inline unsigned long page_level_size(int level)
{
return (PAGE_SIZE/PGDIR_SIZE) << (PGDIR_SHIFT*level);
}
static inline unsigned long page_level_shift(int level)
{
return (PAGE_SHIFT-PGDIR_SHIFT) + (PGDIR_SHIFT*level);
}
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
--
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