mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	KVM: x86: use a separate asm-offsets.c file
This already removes an ugly #include "" from asm-offsets.c, but
especially it avoids a future error when trying to define asm-offsets
for KVM's svm/svm.h header.
This would not work for kernel/asm-offsets.c, because svm/svm.h
includes kvm_cache_regs.h which is not in the include path when
compiling asm-offsets.c.  The problem is not there if the .c file is
in arch/x86/kvm.
Suggested-by: Sean Christopherson <seanjc@google.com>
Cc: stable@vger.kernel.org
Fixes: a149180fbc ("x86: Add magic AMD return-thunk")
Reviewed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
			
			
This commit is contained in:
		
							parent
							
								
									f4298cac2b
								
							
						
					
					
						commit
						debc5a1ec0
					
				
					 5 changed files with 30 additions and 7 deletions
				
			
		| 
						 | 
					@ -19,7 +19,6 @@
 | 
				
			||||||
#include <asm/suspend.h>
 | 
					#include <asm/suspend.h>
 | 
				
			||||||
#include <asm/tlbflush.h>
 | 
					#include <asm/tlbflush.h>
 | 
				
			||||||
#include <asm/tdx.h>
 | 
					#include <asm/tdx.h>
 | 
				
			||||||
#include "../kvm/vmx/vmx.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_XEN
 | 
					#ifdef CONFIG_XEN
 | 
				
			||||||
#include <xen/interface/xen.h>
 | 
					#include <xen/interface/xen.h>
 | 
				
			||||||
| 
						 | 
					@ -108,9 +107,4 @@ static void __used common(void)
 | 
				
			||||||
	OFFSET(TSS_sp0, tss_struct, x86_tss.sp0);
 | 
						OFFSET(TSS_sp0, tss_struct, x86_tss.sp0);
 | 
				
			||||||
	OFFSET(TSS_sp1, tss_struct, x86_tss.sp1);
 | 
						OFFSET(TSS_sp1, tss_struct, x86_tss.sp1);
 | 
				
			||||||
	OFFSET(TSS_sp2, tss_struct, x86_tss.sp2);
 | 
						OFFSET(TSS_sp2, tss_struct, x86_tss.sp2);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (IS_ENABLED(CONFIG_KVM_INTEL)) {
 | 
					 | 
				
			||||||
		BLANK();
 | 
					 | 
				
			||||||
		OFFSET(VMX_spec_ctrl, vcpu_vmx, spec_ctrl);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								arch/x86/kvm/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								arch/x86/kvm/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					/kvm-asm-offsets.s
 | 
				
			||||||
 | 
					/kvm-asm-offsets.h
 | 
				
			||||||
| 
						 | 
					@ -34,3 +34,12 @@ endif
 | 
				
			||||||
obj-$(CONFIG_KVM)	+= kvm.o
 | 
					obj-$(CONFIG_KVM)	+= kvm.o
 | 
				
			||||||
obj-$(CONFIG_KVM_INTEL)	+= kvm-intel.o
 | 
					obj-$(CONFIG_KVM_INTEL)	+= kvm-intel.o
 | 
				
			||||||
obj-$(CONFIG_KVM_AMD)	+= kvm-amd.o
 | 
					obj-$(CONFIG_KVM_AMD)	+= kvm-amd.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AFLAGS_vmx/vmenter.o    := -iquote $(obj)
 | 
				
			||||||
 | 
					$(obj)/vmx/vmenter.o: $(obj)/kvm-asm-offsets.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(obj)/kvm-asm-offsets.h: $(obj)/kvm-asm-offsets.s FORCE
 | 
				
			||||||
 | 
						$(call filechk,offsets,__KVM_ASM_OFFSETS_H__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					targets += kvm-asm-offsets.s
 | 
				
			||||||
 | 
					clean-files += kvm-asm-offsets.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								arch/x86/kvm/kvm-asm-offsets.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								arch/x86/kvm/kvm-asm-offsets.c
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: GPL-2.0
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Generate definitions needed by assembly language modules.
 | 
				
			||||||
 | 
					 * This code generates raw asm output which is post-processed to extract
 | 
				
			||||||
 | 
					 * and format the required data.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#define COMPILE_OFFSETS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <linux/kbuild.h>
 | 
				
			||||||
 | 
					#include "vmx/vmx.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void __used common(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (IS_ENABLED(CONFIG_KVM_INTEL)) {
 | 
				
			||||||
 | 
							BLANK();
 | 
				
			||||||
 | 
							OFFSET(VMX_spec_ctrl, vcpu_vmx, spec_ctrl);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,12 @@
 | 
				
			||||||
/* SPDX-License-Identifier: GPL-2.0 */
 | 
					/* SPDX-License-Identifier: GPL-2.0 */
 | 
				
			||||||
#include <linux/linkage.h>
 | 
					#include <linux/linkage.h>
 | 
				
			||||||
#include <asm/asm.h>
 | 
					#include <asm/asm.h>
 | 
				
			||||||
#include <asm/asm-offsets.h>
 | 
					 | 
				
			||||||
#include <asm/bitsperlong.h>
 | 
					#include <asm/bitsperlong.h>
 | 
				
			||||||
#include <asm/kvm_vcpu_regs.h>
 | 
					#include <asm/kvm_vcpu_regs.h>
 | 
				
			||||||
#include <asm/nospec-branch.h>
 | 
					#include <asm/nospec-branch.h>
 | 
				
			||||||
#include <asm/percpu.h>
 | 
					#include <asm/percpu.h>
 | 
				
			||||||
#include <asm/segment.h>
 | 
					#include <asm/segment.h>
 | 
				
			||||||
 | 
					#include "kvm-asm-offsets.h"
 | 
				
			||||||
#include "run_flags.h"
 | 
					#include "run_flags.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define WORD_SIZE (BITS_PER_LONG / 8)
 | 
					#define WORD_SIZE (BITS_PER_LONG / 8)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue