Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /* Xen-specific pieces of head.S, intended to be included in the right
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) 	place in head.S */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #ifdef CONFIG_XEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #include <linux/elfnote.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #include <linux/init.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #include <asm/boot.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #include <asm/asm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #include <asm/msr.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include <asm/page_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include <asm/percpu.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #include <asm/unwind_hints.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #include <xen/interface/elfnote.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #include <xen/interface/features.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #include <xen/interface/xen.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #include <xen/interface/xen-mca.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #include <asm/xen/interface.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #ifdef CONFIG_XEN_PV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	__INIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) SYM_CODE_START(startup_xen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	UNWIND_HINT_EMPTY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	cld
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	/* Clear .bss */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	xor %eax,%eax
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	mov $__bss_start, %_ASM_DI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	mov $__bss_stop, %_ASM_CX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	sub %_ASM_DI, %_ASM_CX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	shr $__ASM_SEL(2, 3), %_ASM_CX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	rep __ASM_SIZE(stos)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	mov %_ASM_SI, xen_start_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	mov initial_stack(%rip), %rsp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	/* Set up %gs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	 * The base of %gs always points to fixed_percpu_data.  If the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	 * stack protector canary is enabled, it is located at %gs:40.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	 * Note that, on SMP, the boot cpu uses init data section until
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	 * the per cpu areas are set up.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	movl	$MSR_GS_BASE,%ecx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	movq	$INIT_PER_CPU_VAR(fixed_percpu_data),%rax
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	cdq
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	wrmsr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	call xen_start_kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) SYM_CODE_END(startup_xen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	__FINIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #ifdef CONFIG_XEN_PV_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) .pushsection .text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) SYM_CODE_START(asm_cpu_bringup_and_idle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	UNWIND_HINT_EMPTY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	call cpu_bringup_and_idle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) SYM_CODE_END(asm_cpu_bringup_and_idle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) .popsection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) .pushsection .text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	.balign PAGE_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) SYM_CODE_START(hypercall_page)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	.rept (PAGE_SIZE / 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 		UNWIND_HINT_EMPTY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 		.skip 32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	.endr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define HYPERCALL(n) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	.equ xen_hypercall_##n, hypercall_page + __HYPERVISOR_##n * 32; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	.type xen_hypercall_##n, @function; .size xen_hypercall_##n, 32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #include <asm/xen-hypercalls.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #undef HYPERCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) SYM_CODE_END(hypercall_page)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) .popsection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS,       .asciz "linux")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION,  .asciz "2.6")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION,    .asciz "xen-3.0")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #ifdef CONFIG_X86_32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	ELFNOTE(Xen, XEN_ELFNOTE_VIRT_BASE,      _ASM_PTR __PAGE_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	ELFNOTE(Xen, XEN_ELFNOTE_VIRT_BASE,      _ASM_PTR __START_KERNEL_map)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	/* Map the p2m table to a 512GB-aligned user address. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	ELFNOTE(Xen, XEN_ELFNOTE_INIT_P2M,       .quad (PUD_SIZE * PTRS_PER_PUD))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #ifdef CONFIG_XEN_PV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	ELFNOTE(Xen, XEN_ELFNOTE_ENTRY,          _ASM_PTR startup_xen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, _ASM_PTR hypercall_page)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 		.ascii "!writable_page_tables|pae_pgdir_above_4gb")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	ELFNOTE(Xen, XEN_ELFNOTE_SUPPORTED_FEATURES,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 		.long (1 << XENFEAT_writable_page_tables) |       \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 		      (1 << XENFEAT_dom0) |                       \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 		      (1 << XENFEAT_linux_rsdp_unrestricted))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE,       .asciz "yes")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	ELFNOTE(Xen, XEN_ELFNOTE_LOADER,         .asciz "generic")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 		.quad _PAGE_PRESENT; .quad _PAGE_PRESENT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	ELFNOTE(Xen, XEN_ELFNOTE_MOD_START_PFN,  .long 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	ELFNOTE(Xen, XEN_ELFNOTE_HV_START_LOW,   _ASM_PTR __HYPERVISOR_VIRT_START)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	ELFNOTE(Xen, XEN_ELFNOTE_PADDR_OFFSET,   _ASM_PTR 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #endif /*CONFIG_XEN */