Re: [PATCH] x86: mm: accurate the comments for STEP_SIZE_SHIFT macro

2013-03-18 Thread H. Peter Anvin
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

2013-03-18 Thread Yinghai Lu
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

2013-03-18 Thread H. Peter Anvin
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

2013-03-18 Thread Yinghai Lu
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

2013-03-18 Thread H. Peter Anvin
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

2013-03-18 Thread Yinghai Lu
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

2013-03-18 Thread Lin Feng
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/