x86, acpi, idle: Restructure the mwait idle routines
People seem to delight in writing wrong and broken mwait idle routines; collapse the lot. This leaves mwait_play_dead() the sole remaining user of __mwait() and new __mwait() users are probably doing it wrong. Also remove __sti_mwait() as its unused. Cc: Arjan van de Ven <arjan@linux.intel.com> Cc: Jacob Jun Pan <jacob.jun.pan@linux.intel.com> Cc: Mike Galbraith <bitbucket@online.de> Cc: Len Brown <lenb@kernel.org> Cc: Rui Zhang <rui.zhang@intel.com> Acked-by: Rafael Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20131212141654.616820819@infradead.org Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
		
					parent
					
						
							
								40e2d7f9b5
							
						
					
				
			
			
				commit
				
					
						1682425539
					
				
			
		
					 7 changed files with 43 additions and 78 deletions
				
			
		| 
						 | 
				
			
			@ -700,29 +700,6 @@ static inline void sync_core(void)
 | 
			
		|||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void __monitor(const void *eax, unsigned long ecx,
 | 
			
		||||
			     unsigned long edx)
 | 
			
		||||
{
 | 
			
		||||
	/* "monitor %eax, %ecx, %edx;" */
 | 
			
		||||
	asm volatile(".byte 0x0f, 0x01, 0xc8;"
 | 
			
		||||
		     :: "a" (eax), "c" (ecx), "d"(edx));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void __mwait(unsigned long eax, unsigned long ecx)
 | 
			
		||||
{
 | 
			
		||||
	/* "mwait %eax, %ecx;" */
 | 
			
		||||
	asm volatile(".byte 0x0f, 0x01, 0xc9;"
 | 
			
		||||
		     :: "a" (eax), "c" (ecx));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void __sti_mwait(unsigned long eax, unsigned long ecx)
 | 
			
		||||
{
 | 
			
		||||
	trace_hardirqs_on();
 | 
			
		||||
	/* "mwait %eax, %ecx;" */
 | 
			
		||||
	asm volatile("sti; .byte 0x0f, 0x01, 0xc9;"
 | 
			
		||||
		     :: "a" (eax), "c" (ecx));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extern void select_idle_routine(const struct cpuinfo_x86 *c);
 | 
			
		||||
extern void init_amd_e400_c1e_mask(void);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue