[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 1/3] x86/boot: Drop pre-C IDT patching
It is not needed now that __start_xen sets itself up with complete trap handlers as its first action. This fixes a potential issue introduced in c/s 7e510a7b874 "x86/boot: move some __high_start code and data into init sections" which would leave ignore_int (in the .init section) patched into the reserved exceptions in all IDTs. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Keir Fraser <keir@xxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Tim Deegan <tim@xxxxxxx> --- xen/arch/x86/boot/x86_64.S | 56 +------------------------------------------- xen/arch/x86/efi/boot.c | 1 - 2 files changed, 1 insertion(+), 56 deletions(-) diff --git a/xen/arch/x86/boot/x86_64.S b/xen/arch/x86/boot/x86_64.S index 417623f..bfbafd2 100644 --- a/xen/arch/x86/boot/x86_64.S +++ b/xen/arch/x86/boot/x86_64.S @@ -25,64 +25,15 @@ leaq 1f(%rip),%rax pushq %rax lretq -1: lidt idt_descr(%rip) - +1: test %ebx,%ebx jnz start_secondary - jmp start_bsp - - .section .init.text, "ax", @progbits - -start_bsp: - /* Initialise IDT with simple error defaults. */ - leaq ignore_int(%rip),%rcx - movl %ecx,%eax - andl $0xFFFF0000,%eax - orl $0x00008E00,%eax - shlq $32,%rax - movl %ecx,%edx - andl $0x0000FFFF,%edx - orl $(__HYPERVISOR_CS64<<16),%edx - orq %rdx,%rax - shrq $32,%rcx - movl %ecx,%edx - leaq idt_table(%rip),%rdi - movl $256,%ecx -1: movq %rax,(%rdi) - movq %rdx,8(%rdi) - addq $16,%rdi - loop 1b /* Pass off the Multiboot info structure to C land. */ mov multiboot_ptr(%rip),%edi call __start_xen ud2 /* Force a panic (invalid opcode). */ -/* This is the default interrupt handler. */ -ignore_int: - SAVE_ALL CLAC - movq %cr2,%rsi - leaq int_msg(%rip),%rdi - xorl %eax,%eax - call printk - movq %rsp,%rbp -0: movq (%rbp),%rsi - addq $8,%rbp - leaq hex_msg(%rip),%rdi - xorl %eax,%eax - call printk - testq $0xff8,%rbp - jnz 0b -1: hlt - jmp 1b - - .section .init.rodata, "a", @progbits - -int_msg: - .asciz "Unknown interrupt (cr2=%016lx)\n" -hex_msg: - .asciz " %016lx" - /*** DESCRIPTOR TABLES ***/ .data @@ -95,11 +46,6 @@ GLOBAL(gdt_descr) .word LAST_RESERVED_GDT_BYTE .quad boot_cpu_gdt_table - FIRST_RESERVED_GDT_BYTE - .word 0,0,0 -GLOBAL(idt_descr) - .word 256*16-1 - .quad idt_table - GLOBAL(stack_start) .quad cpu0_stack diff --git a/xen/arch/x86/efi/boot.c b/xen/arch/x86/efi/boot.c index 62c4812..a772509 100644 --- a/xen/arch/x86/efi/boot.c +++ b/xen/arch/x86/efi/boot.c @@ -1474,7 +1474,6 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) asm volatile ( "mov %[cr4], %%cr4\n\t" "mov %[cr3], %%cr3\n\t" "movabs $__start_xen, %[rip]\n\t" - "lidt idt_descr(%%rip)\n\t" "lgdt gdt_descr(%%rip)\n\t" "mov stack_start(%%rip), %%rsp\n\t" "mov %[ds], %%ss\n\t" -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |