lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 11 Nov 2008 13:48:11 +0100
From:	Ivan Vecera <ivecera@...hat.com>
To:	Pavel Machek <pavel@...e.cz>
CC:	Ingo Molnar <mingo@...e.hu>, linux-kernel@...r.kernel.org,
	tglx@...utronix.de, mingo@...hat.com, hpa@...or.com,
	nhorman@...hat.com, jmarchan@...hat.com
Subject: Re: [PATCH] x86: call machine_shutdown and stop all CPUs in	native_machine_halt

Pavel Machek wrote:
> On Thu 2008-11-06 17:10:01, Ivan Vecera wrote:
>> Any comments?
>>
>> Ivan
>>
>> ---
>> Ivan Vecera wrote:
>>> Ingo Molnar wrote:
>>>> the code in arch/x86/kernel/smp.c::stop_this_cpu() is very similar to 
>>>> this and could be shared. You could move the stop_this_cpu() function to 
>>>> arch/x86/kernel/process.c (out of smp.c), so that it can be used by 
>>>> reboot.c.
>>>>
>>> Yes, this make sense. Here is the patch.
>>>
>>> Ivan
>>>
>>> ---
>>>  arch/x86/kernel/process.c |   16 ++++++++++++++++
>>>  arch/x86/kernel/reboot.c  |    5 +++++
>>>  arch/x86/kernel/smp.c     |   13 -------------
>>>  include/asm-x86/system.h  |    2 ++
>>>  4 files changed, 23 insertions(+), 13 deletions(-)
>>>
>>> diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
>>> index c622772..af6904e 100644
>>> --- a/arch/x86/kernel/process.c
>>> +++ b/arch/x86/kernel/process.c
>>> @@ -8,6 +8,7 @@
>>>  #include <linux/pm.h>
>>>  #include <linux/clockchips.h>
>>>  #include <asm/system.h>
>>> +#include <asm/apic.h>
>>>  
>>>  unsigned long idle_halt;
>>>  EXPORT_SYMBOL(idle_halt);
>>> @@ -122,6 +123,21 @@ void default_idle(void)
>>>  EXPORT_SYMBOL(default_idle);
>>>  #endif
>>>  
>>> +void stop_this_cpu(void *dummy)
>>> +{
>>> +	local_irq_disable();
>>> +	/*
>>> +	 * Remove this CPU:
>>> +	 */
>>> +	cpu_clear(smp_processor_id(), cpu_online_map);
>>> +#ifdef CONFIG_X86_LOCAL_APIC
>>> +	disable_local_APIC();
>>> +#endif
>>> +	if (hlt_works(smp_processor_id()))
>>> +		for (;;) halt();
>>> +	for (;;);
>>> +}
> 
> Why the new ifdef? And while we are at it, why is it neccessary to
> disable APIC for stopping CPU? (comment in code would be nice)
Because stop_this_cpu is shared between native_machine_halt and
native_smp_send_stop. It was only moved from smp.c to process.c.
native_machine_halt doesn't require disable APIC for stopping the
current CPU because at this time is already disabled.
The ifdef is another thing and I sent already corrected patch.
> 
>>> -static void stop_this_cpu(void *dummy)
>>> -{
>>> -	local_irq_disable();
>>> -	/*
>>> -	 * Remove this CPU:
>>> -	 */
>>> -	cpu_clear(smp_processor_id(), cpu_online_map);
>>> -	disable_local_APIC();
>>> -	if (hlt_works(smp_processor_id()))
>>> -		for (;;) halt();
>>> -	for (;;);
>>> -}
>>> -
>>>  /*
>>>   * this function calls the 'stop' function on all other CPUs in the system.
>>>   */
> 

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

Powered by Openwall GNU/*/Linux Powered by OpenVZ