 3e5d8f9784
			
		
	
	
	3e5d8f9784
	
	
	
		
			
			[ Based on original patch from Christoph Lameter and Mike Travis. ] This patch makes percpu symbols zerobased on x86_64 SMP by adding PERCPU_VADDR() to vmlinux.lds.h which helps setting explicit vaddr on the percpu output section and using it in vmlinux_64.lds.S. A new PHDR is added as existing ones cannot contain sections near address zero. PERCPU_VADDR() also adds a new symbol __per_cpu_load which always points to the vaddr of the loaded percpu data.init region. The following adjustments have been made to accomodate the address change. * code to locate percpu gdt_page in head_64.S is updated to add the load address to the gdt_page offset. * __per_cpu_load is used in places where access to the init data area is necessary. * pda->data_offset is initialized soon after C code is entered as zero value doesn't work anymore. This patch is mostly taken from Mike Travis' "x86_64: Base percpu variables at zero" patch. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
		
			
				
	
	
		
			23 lines
		
	
	
	
		
			762 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			762 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_GENERIC_SECTIONS_H_
 | |
| #define _ASM_GENERIC_SECTIONS_H_
 | |
| 
 | |
| /* References to section boundaries */
 | |
| 
 | |
| extern char _text[], _stext[], _etext[];
 | |
| extern char _data[], _sdata[], _edata[];
 | |
| extern char __bss_start[], __bss_stop[];
 | |
| extern char __init_begin[], __init_end[];
 | |
| extern char _sinittext[], _einittext[];
 | |
| extern char _end[];
 | |
| extern char __per_cpu_load[], __per_cpu_start[], __per_cpu_end[];
 | |
| extern char __kprobes_text_start[], __kprobes_text_end[];
 | |
| extern char __initdata_begin[], __initdata_end[];
 | |
| extern char __start_rodata[], __end_rodata[];
 | |
| 
 | |
| /* function descriptor handling (if any).  Override
 | |
|  * in asm/sections.h */
 | |
| #ifndef dereference_function_descriptor
 | |
| #define dereference_function_descriptor(p) (p)
 | |
| #endif
 | |
| 
 | |
| #endif /* _ASM_GENERIC_SECTIONS_H_ */
 |