Re: [PATCH] x86: mm: accurate the comments for STEP_SIZE_SHIFT macro
On 03/18/2013 02:19 PM, Yinghai Lu wrote: > On Mon, Mar 18, 2013 at 12:14 PM, H. Peter Anvin wrote: > >> Instead, try to explain why 5 is the correct value in the current code >> and how it is (or should be!) derived. > > initial mapped size is PMD_SIZE, aka 2M. > if we use step_size to be PUD_SIZE aka 1G, as most worse case > that 1G is cross the 1G boundary, and PG_LEVEL_2M is not set, > we will need 1+1+512 pages (aka 2M + 8k) to map 1G range with PTE. > So i picked (30-21)/2 to get 5. > > Please check attached patch. > > Thanks > > Yinghai > This still seems very opaque. I need to look at it and see if it makes more sense in context. -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] x86: mm: accurate the comments for STEP_SIZE_SHIFT macro
On Mon, Mar 18, 2013 at 12:14 PM, H. Peter Anvin wrote: > Instead, try to explain why 5 is the correct value in the current code > and how it is (or should be!) derived. initial mapped size is PMD_SIZE, aka 2M. if we use step_size to be PUD_SIZE aka 1G, as most worse case that 1G is cross the 1G boundary, and PG_LEVEL_2M is not set, we will need 1+1+512 pages (aka 2M + 8k) to map 1G range with PTE. So i picked (30-21)/2 to get 5. Please check attached patch. Thanks Yinghai add_comment_for_step_size.patch Description: Binary data
Re: [PATCH] x86: mm: accurate the comments for STEP_SIZE_SHIFT macro
On 03/18/2013 12:13 PM, Yinghai Lu wrote: >> >> No, it doesn't. This is C, not elementary school Now I'm really bothered. >> >> The comment doesn't say *why* (PUD_SHIFT-PMD_SHIFT)/2 or any other >> variant is correct, furthermore I suspect that the +1 is misplaced. >> However, what is really needed is: >> >> 1. Someone needs to explain what the logic should be and why, and >> 2. replace the macro with a symbolic macro, not with a constant and a >>comment explaining, incorrectly, how that value was derived. > > yes, we should find out free_mem_size instead to decide next step size. > > But that will come out page table size estimation problem again. > Sorry, that comment is double nonsense for someone who isn't intimately familiar with the code, and it sounds like it is just plain wrong. Instead, try to explain why 5 is the correct value in the current code and how it is (or should be!) derived. -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] x86: mm: accurate the comments for STEP_SIZE_SHIFT macro
On Mon, Mar 18, 2013 at 11:59 AM, H. Peter Anvin wrote: > On 03/18/2013 11:53 AM, Yinghai Lu wrote: >> On Mon, Mar 18, 2013 at 3:21 AM, Lin Feng wrote: >>> For x86 PUD_SHIFT is 30 and PMD_SHIFT is 21, so the consequence of >>> (PUD_SHIFT-PMD_SHIFT)/2 is 4. Update the comments to the code. >>> >>> Cc: Yinghai Lu >>> Signed-off-by: Lin Feng >>> --- >>> arch/x86/mm/init.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c >>> index 59b7fc4..637a95b 100644 >>> --- a/arch/x86/mm/init.c >>> +++ b/arch/x86/mm/init.c >>> @@ -389,7 +389,7 @@ static unsigned long __init init_range_memory_mapping( >>> return mapped_ram_size; >>> } >>> >>> -/* (PUD_SHIFT-PMD_SHIFT)/2 */ >>> +/* (PUD_SHIFT-PMD_SHIFT)/2+1 */ >>> #define STEP_SIZE_SHIFT 5 >>> void __init init_mem_mapping(void) >>> { >> >> 9/2=4.5, so it becomes 5. >> > > No, it doesn't. This is C, not elementary school Now I'm really bothered. > > The comment doesn't say *why* (PUD_SHIFT-PMD_SHIFT)/2 or any other > variant is correct, furthermore I suspect that the +1 is misplaced. > However, what is really needed is: > > 1. Someone needs to explain what the logic should be and why, and > 2. replace the macro with a symbolic macro, not with a constant and a >comment explaining, incorrectly, how that value was derived. yes, we should find out free_mem_size instead to decide next step size. But that will come out page table size estimation problem again. Yinghai -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] x86: mm: accurate the comments for STEP_SIZE_SHIFT macro
On 03/18/2013 11:53 AM, Yinghai Lu wrote: > On Mon, Mar 18, 2013 at 3:21 AM, Lin Feng wrote: >> For x86 PUD_SHIFT is 30 and PMD_SHIFT is 21, so the consequence of >> (PUD_SHIFT-PMD_SHIFT)/2 is 4. Update the comments to the code. >> >> Cc: Yinghai Lu >> Signed-off-by: Lin Feng >> --- >> arch/x86/mm/init.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c >> index 59b7fc4..637a95b 100644 >> --- a/arch/x86/mm/init.c >> +++ b/arch/x86/mm/init.c >> @@ -389,7 +389,7 @@ static unsigned long __init init_range_memory_mapping( >> return mapped_ram_size; >> } >> >> -/* (PUD_SHIFT-PMD_SHIFT)/2 */ >> +/* (PUD_SHIFT-PMD_SHIFT)/2+1 */ >> #define STEP_SIZE_SHIFT 5 >> void __init init_mem_mapping(void) >> { > > 9/2=4.5, so it becomes 5. > No, it doesn't. This is C, not elementary school Now I'm really bothered. The comment doesn't say *why* (PUD_SHIFT-PMD_SHIFT)/2 or any other variant is correct, furthermore I suspect that the +1 is misplaced. However, what is really needed is: 1. Someone needs to explain what the logic should be and why, and 2. replace the macro with a symbolic macro, not with a constant and a comment explaining, incorrectly, how that value was derived. -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] x86: mm: accurate the comments for STEP_SIZE_SHIFT macro
On Mon, Mar 18, 2013 at 3:21 AM, Lin Feng wrote: > For x86 PUD_SHIFT is 30 and PMD_SHIFT is 21, so the consequence of > (PUD_SHIFT-PMD_SHIFT)/2 is 4. Update the comments to the code. > > Cc: Yinghai Lu > Signed-off-by: Lin Feng > --- > arch/x86/mm/init.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c > index 59b7fc4..637a95b 100644 > --- a/arch/x86/mm/init.c > +++ b/arch/x86/mm/init.c > @@ -389,7 +389,7 @@ static unsigned long __init init_range_memory_mapping( > return mapped_ram_size; > } > > -/* (PUD_SHIFT-PMD_SHIFT)/2 */ > +/* (PUD_SHIFT-PMD_SHIFT)/2+1 */ > #define STEP_SIZE_SHIFT 5 > void __init init_mem_mapping(void) > { 9/2=4.5, so it becomes 5. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] x86: mm: accurate the comments for STEP_SIZE_SHIFT macro
For x86 PUD_SHIFT is 30 and PMD_SHIFT is 21, so the consequence of (PUD_SHIFT-PMD_SHIFT)/2 is 4. Update the comments to the code. Cc: Yinghai Lu Signed-off-by: Lin Feng --- arch/x86/mm/init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index 59b7fc4..637a95b 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -389,7 +389,7 @@ static unsigned long __init init_range_memory_mapping( return mapped_ram_size; } -/* (PUD_SHIFT-PMD_SHIFT)/2 */ +/* (PUD_SHIFT-PMD_SHIFT)/2+1 */ #define STEP_SIZE_SHIFT 5 void __init init_mem_mapping(void) { -- 1.8.0.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/