| 
									
										
										
										
											2008-10-27 10:41:46 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (C) 2008, VMware, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation; either version 2 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, but | 
					
						
							|  |  |  |  * WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | 
					
						
							|  |  |  |  * NON INFRINGEMENT.  See the GNU General Public License for more | 
					
						
							|  |  |  |  * details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |  * along with this program; if not, write to the Free Software | 
					
						
							|  |  |  |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-05-07 16:57:28 -07:00
										 |  |  | #ifndef _ASM_X86_HYPERVISOR_H
 | 
					
						
							|  |  |  | #define _ASM_X86_HYPERVISOR_H
 | 
					
						
							| 
									
										
										
										
											2008-10-27 10:41:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-04 21:20:21 +01:00
										 |  |  | #ifdef CONFIG_HYPERVISOR_GUEST
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-21 14:18:48 +08:00
										 |  |  | #include <asm/kvm_para.h>
 | 
					
						
							| 
									
										
										
										
											2010-12-21 14:18:49 +08:00
										 |  |  | #include <asm/xen/hypervisor.h>
 | 
					
						
							| 
									
										
										
										
											2010-12-21 14:18:48 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-07 16:57:28 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * x86 hypervisor information | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | struct hypervisor_x86 { | 
					
						
							|  |  |  | 	/* Hypervisor name */ | 
					
						
							|  |  |  | 	const char	*name; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* Detection routine */ | 
					
						
							| 
									
										
										
										
											2013-07-25 16:54:35 +08:00
										 |  |  | 	uint32_t	(*detect)(void); | 
					
						
							| 
									
										
										
										
											2010-05-07 16:57:28 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* Adjust CPU feature bits (run once per CPU) */ | 
					
						
							|  |  |  | 	void		(*set_cpu_features)(struct cpuinfo_x86 *); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* Platform setup (run once per boot) */ | 
					
						
							|  |  |  | 	void		(*init_platform)(void); | 
					
						
							| 
									
										
										
										
											2013-01-17 15:44:42 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* X2APIC detection (run once per boot) */ | 
					
						
							|  |  |  | 	bool		(*x2apic_available)(void); | 
					
						
							| 
									
										
										
										
											2010-05-07 16:57:28 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern const struct hypervisor_x86 *x86_hyper; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Recognized hypervisors */ | 
					
						
							|  |  |  | extern const struct hypervisor_x86 x86_hyper_vmware; | 
					
						
							|  |  |  | extern const struct hypervisor_x86 x86_hyper_ms_hyperv; | 
					
						
							| 
									
										
										
										
											2010-05-14 12:39:33 +01:00
										 |  |  | extern const struct hypervisor_x86 x86_hyper_xen_hvm; | 
					
						
							| 
									
										
										
										
											2012-07-06 13:47:39 -04:00
										 |  |  | extern const struct hypervisor_x86 x86_hyper_kvm; | 
					
						
							| 
									
										
										
										
											2010-05-07 16:57:28 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-04 21:20:21 +01:00
										 |  |  | extern void init_hypervisor(struct cpuinfo_x86 *c); | 
					
						
							|  |  |  | extern void init_hypervisor_platform(void); | 
					
						
							|  |  |  | extern bool hypervisor_x2apic_available(void); | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | static inline void init_hypervisor(struct cpuinfo_x86 *c) { } | 
					
						
							|  |  |  | static inline void init_hypervisor_platform(void) { } | 
					
						
							|  |  |  | static inline bool hypervisor_x2apic_available(void) { return false; } | 
					
						
							|  |  |  | #endif /* CONFIG_HYPERVISOR_GUEST */
 | 
					
						
							|  |  |  | #endif /* _ASM_X86_HYPERVISOR_H */
 |