Re: [RFC v2 PATCH 7/8] mm: add the buddy system interface

2015-06-29 Thread Kamezawa Hiroyuki

On 2015/06/30 10:31, Xishi Qiu wrote:

On 2015/6/30 9:01, Kamezawa Hiroyuki wrote:


On 2015/06/30 8:11, Luck, Tony wrote:

@@ -814,7 +814,7 @@ int __init_memblock memblock_clear_hotplug(phys_addr_t 
base, phys_addr_t size)
*/
   int __init_memblock memblock_mark_mirror(phys_addr_t base, phys_addr_t size)
   {
-system_has_some_mirror = true;
+static_key_slow_inc(&system_has_mirror);

   return memblock_setclr_flag(base, size, 1, MEMBLOCK_MIRROR);
   }


This generates some WARN_ON noise when called from efi_find_mirror():



It seems jump_label_init() is called after memory initialization. 
(init/main.c::start_kernel())
So, it may be difficut to use static_key function for our purpose because
kernel memory allocation may occur before jump_label is ready.

Thanks,
-Kame



Hi Kame,

How about like this? Use static bool in bootmem, and use jump label in buddy 
system.
This means we use two variable to do it.



I think it can be done but it should be done in separated patch with enough 
comment/changelog.

Thanks,
-Kame



--
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: [RFC v2 PATCH 7/8] mm: add the buddy system interface

2015-06-29 Thread Xishi Qiu
On 2015/6/30 9:01, Kamezawa Hiroyuki wrote:

> On 2015/06/30 8:11, Luck, Tony wrote:
>>> @@ -814,7 +814,7 @@ int __init_memblock memblock_clear_hotplug(phys_addr_t 
>>> base, phys_addr_t size)
>>>*/
>>>   int __init_memblock memblock_mark_mirror(phys_addr_t base, phys_addr_t 
>>> size)
>>>   {
>>> -system_has_some_mirror = true;
>>> +static_key_slow_inc(&system_has_mirror);
>>>
>>>   return memblock_setclr_flag(base, size, 1, MEMBLOCK_MIRROR);
>>>   }
>>
>> This generates some WARN_ON noise when called from efi_find_mirror():
>>
> 
> It seems jump_label_init() is called after memory initialization. 
> (init/main.c::start_kernel())
> So, it may be difficut to use static_key function for our purpose because
> kernel memory allocation may occur before jump_label is ready.
> 
> Thanks,
> -Kame
> 

Hi Kame,

How about like this? Use static bool in bootmem, and use jump label in buddy 
system.
This means we use two variable to do it.

Thanks,
Xishi Qiu

>> [0.00] e820: last_pfn = 0x7b800 max_arch_pfn = 0x4
>> [0.00] [ cut here ]
>> [0.00] WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:61 
>> static_key_slow_inc+0x57/0xc0()
>> [0.00] static_key_slow_inc used before call to jump_label_init
>> [0.00] Modules linked in:
>>
>> [0.00] CPU: 0 PID: 0 Comm: swapper Not tainted 4.1.0 #4
>> [0.00] Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS 
>> BRHSXSD1.86B.0065.R01.1505011640 05/01/2015
>> [0.00]   ee366a8dff38f745 81997d68 
>> 816683b4
>> [0.00]   81997dc0 81997da8 
>> 8107b0aa
>> [0.00]  81d48822 81f281a0 4000 
>> 001fcb7a4000
>> [0.00] Call Trace:
>> [0.00]  [] dump_stack+0x45/0x57
>> [0.00]  [] warn_slowpath_common+0x8a/0xc0
>> [0.00]  [] warn_slowpath_fmt+0x55/0x70
>> [0.00]  [] ? memblock_add_range+0x175/0x19e
>> [0.00]  [] static_key_slow_inc+0x57/0xc0
>> [0.00]  [] memblock_mark_mirror+0x19/0x33
>> [0.00]  [] efi_find_mirror+0x59/0xdd
>> [0.00]  [] setup_arch+0x642/0xccf
>> [0.00]  [] ? early_idt_handler_array+0x120/0x120
>> [0.00]  [] ? printk+0x55/0x6b
>> [0.00]  [] ? early_idt_handler_array+0x120/0x120
>> [0.00]  [] start_kernel+0xe8/0x4eb
>> [0.00]  [] ? early_idt_handler_array+0x120/0x120
>> [0.00]  [] ? early_idt_handler_array+0x120/0x120
>> [0.00]  [] x86_64_start_reservations+0x2a/0x2c
>> [0.00]  [] x86_64_start_kernel+0x14c/0x16f
>> [0.00] ---[ end trace baa7fa0514e3bc58 ]---
>> [0.00] [ cut here ]
>>
>>
>>
>>
>>
> 
> 
> 
> .
> 



--
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: [RFC v2 PATCH 7/8] mm: add the buddy system interface

2015-06-29 Thread Kamezawa Hiroyuki

On 2015/06/30 8:11, Luck, Tony wrote:

@@ -814,7 +814,7 @@ int __init_memblock memblock_clear_hotplug(phys_addr_t 
base, phys_addr_t size)
   */
  int __init_memblock memblock_mark_mirror(phys_addr_t base, phys_addr_t size)
  {
-   system_has_some_mirror = true;
+   static_key_slow_inc(&system_has_mirror);

return memblock_setclr_flag(base, size, 1, MEMBLOCK_MIRROR);
  }


This generates some WARN_ON noise when called from efi_find_mirror():



It seems jump_label_init() is called after memory initialization. 
(init/main.c::start_kernel())
So, it may be difficut to use static_key function for our purpose because
kernel memory allocation may occur before jump_label is ready.

Thanks,
-Kame


[0.00] e820: last_pfn = 0x7b800 max_arch_pfn = 0x4
[0.00] [ cut here ]
[0.00] WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:61 
static_key_slow_inc+0x57/0xc0()
[0.00] static_key_slow_inc used before call to jump_label_init
[0.00] Modules linked in:

[0.00] CPU: 0 PID: 0 Comm: swapper Not tainted 4.1.0 #4
[0.00] Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS 
BRHSXSD1.86B.0065.R01.1505011640 05/01/2015
[0.00]   ee366a8dff38f745 81997d68 
816683b4
[0.00]   81997dc0 81997da8 
8107b0aa
[0.00]  81d48822 81f281a0 4000 
001fcb7a4000
[0.00] Call Trace:
[0.00]  [] dump_stack+0x45/0x57
[0.00]  [] warn_slowpath_common+0x8a/0xc0
[0.00]  [] warn_slowpath_fmt+0x55/0x70
[0.00]  [] ? memblock_add_range+0x175/0x19e
[0.00]  [] static_key_slow_inc+0x57/0xc0
[0.00]  [] memblock_mark_mirror+0x19/0x33
[0.00]  [] efi_find_mirror+0x59/0xdd
[0.00]  [] setup_arch+0x642/0xccf
[0.00]  [] ? early_idt_handler_array+0x120/0x120
[0.00]  [] ? printk+0x55/0x6b
[0.00]  [] ? early_idt_handler_array+0x120/0x120
[0.00]  [] start_kernel+0xe8/0x4eb
[0.00]  [] ? early_idt_handler_array+0x120/0x120
[0.00]  [] ? early_idt_handler_array+0x120/0x120
[0.00]  [] x86_64_start_reservations+0x2a/0x2c
[0.00]  [] x86_64_start_kernel+0x14c/0x16f
[0.00] ---[ end trace baa7fa0514e3bc58 ]---
[0.00] [ cut here ]








--
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: [RFC v2 PATCH 7/8] mm: add the buddy system interface

2015-06-29 Thread Luck, Tony
> @@ -814,7 +814,7 @@ int __init_memblock memblock_clear_hotplug(phys_addr_t 
> base, phys_addr_t size)
>   */
>  int __init_memblock memblock_mark_mirror(phys_addr_t base, phys_addr_t size)
>  {
> - system_has_some_mirror = true;
> + static_key_slow_inc(&system_has_mirror);
> 
>   return memblock_setclr_flag(base, size, 1, MEMBLOCK_MIRROR);
>  }

This generates some WARN_ON noise when called from efi_find_mirror():

[0.00] e820: last_pfn = 0x7b800 max_arch_pfn = 0x4
[0.00] [ cut here ]
[0.00] WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:61 
static_key_slow_inc+0x57/0xc0()
[0.00] static_key_slow_inc used before call to jump_label_init
[0.00] Modules linked in:

[0.00] CPU: 0 PID: 0 Comm: swapper Not tainted 4.1.0 #4
[0.00] Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS 
BRHSXSD1.86B.0065.R01.1505011640 05/01/2015
[0.00]   ee366a8dff38f745 81997d68 
816683b4
[0.00]   81997dc0 81997da8 
8107b0aa
[0.00]  81d48822 81f281a0 4000 
001fcb7a4000
[0.00] Call Trace:
[0.00]  [] dump_stack+0x45/0x57
[0.00]  [] warn_slowpath_common+0x8a/0xc0
[0.00]  [] warn_slowpath_fmt+0x55/0x70
[0.00]  [] ? memblock_add_range+0x175/0x19e
[0.00]  [] static_key_slow_inc+0x57/0xc0
[0.00]  [] memblock_mark_mirror+0x19/0x33
[0.00]  [] efi_find_mirror+0x59/0xdd
[0.00]  [] setup_arch+0x642/0xccf
[0.00]  [] ? early_idt_handler_array+0x120/0x120
[0.00]  [] ? printk+0x55/0x6b
[0.00]  [] ? early_idt_handler_array+0x120/0x120
[0.00]  [] start_kernel+0xe8/0x4eb
[0.00]  [] ? early_idt_handler_array+0x120/0x120
[0.00]  [] ? early_idt_handler_array+0x120/0x120
[0.00]  [] x86_64_start_reservations+0x2a/0x2c
[0.00]  [] x86_64_start_kernel+0x14c/0x16f
[0.00] ---[ end trace baa7fa0514e3bc58 ]---
[0.00] [ cut here ]





--
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/