Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Thomas Gleixner:
"A couple of fixlets for x86:

- Fix the ESPFIX double fault handling for 5-level pagetables

- Fix the commandline parsing for 'apic=' on 32bit systems and update
documentation

- Make zombie stack traces reliable

- Fix kexec with stack canary

- Fix the delivery mode for APICs which was missed when the x86
vector management was converted to single target delivery. Caused a
regression due to the broken hardware which ignores affinity
settings in lowest prio delivery mode.

- Unbreak modules when AMD memory encryption is enabled

- Remove an unused parameter of prepare_switch_to"

* 'x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/apic: Switch all APICs to Fixed delivery mode
x86/apic: Update the 'apic=' description of setting APIC driver
x86/apic: Avoid wrong warning when parsing 'apic=' in X86-32 case
x86-32: Fix kexec with stack canary (CONFIG_CC_STACKPROTECTOR)
x86: Remove unused parameter of prepare_switch_to
x86/stacktrace: Make zombie stack traces reliable
x86/mm: Unbreak modules that use the DMA API
x86/build: Make isoimage work on Debian
x86/espfix/64: Fix espfix double-fault handling on 5-level systems

+42 -39
+5 -1
Documentation/admin-guide/kernel-parameters.txt
··· 328 328 not play well with APC CPU idle - disable it if you have 329 329 APC and your system crashes randomly. 330 330 331 - apic= [APIC,X86-32] Advanced Programmable Interrupt Controller 331 + apic= [APIC,X86] Advanced Programmable Interrupt Controller 332 332 Change the output verbosity whilst booting 333 333 Format: { quiet (default) | verbose | debug } 334 334 Change the amount of debugging information output 335 335 when initialising the APIC and IO-APIC components. 336 + For X86-32, this can also be used to specify an APIC 337 + driver name. 338 + Format: apic=driver_name 339 + Examples: apic=bigsmp 336 340 337 341 apic_extnmi= [APIC,X86] External NMI delivery setting 338 342 Format: { bsp (default) | all | none }
+16 -12
arch/x86/boot/genimage.sh
··· 80 80 mcopy $FBZIMAGE w:linux 81 81 } 82 82 83 - genisoimage() { 83 + geniso() { 84 84 tmp_dir=`dirname $FIMAGE`/isoimage 85 85 rm -rf $tmp_dir 86 86 mkdir $tmp_dir 87 - for i in lib lib64 share end ; do 87 + for i in lib lib64 share ; do 88 88 for j in syslinux ISOLINUX ; do 89 89 if [ -f /usr/$i/$j/isolinux.bin ] ; then 90 90 isolinux=/usr/$i/$j/isolinux.bin 91 - cp $isolinux $tmp_dir 92 91 fi 93 92 done 94 93 for j in syslinux syslinux/modules/bios ; do 95 94 if [ -f /usr/$i/$j/ldlinux.c32 ]; then 96 95 ldlinux=/usr/$i/$j/ldlinux.c32 97 - cp $ldlinux $tmp_dir 98 96 fi 99 97 done 100 98 if [ -n "$isolinux" -a -n "$ldlinux" ] ; then 101 99 break 102 100 fi 103 - if [ $i = end -a -z "$isolinux" ] ; then 104 - echo 'Need an isolinux.bin file, please install syslinux/isolinux.' 105 - exit 1 106 - fi 107 101 done 102 + if [ -z "$isolinux" ] ; then 103 + echo 'Need an isolinux.bin file, please install syslinux/isolinux.' 104 + exit 1 105 + fi 106 + if [ -z "$ldlinux" ] ; then 107 + echo 'Need an ldlinux.c32 file, please install syslinux/isolinux.' 108 + exit 1 109 + fi 110 + cp $isolinux $tmp_dir 111 + cp $ldlinux $tmp_dir 108 112 cp $FBZIMAGE $tmp_dir/linux 109 113 echo "$KCMDLINE" > $tmp_dir/isolinux.cfg 110 114 if [ -f "$FDINITRD" ] ; then 111 115 cp "$FDINITRD" $tmp_dir/initrd.img 112 116 fi 113 - mkisofs -J -r -input-charset=utf-8 -quiet -o $FIMAGE -b isolinux.bin \ 114 - -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \ 115 - $tmp_dir 117 + genisoimage -J -r -input-charset=utf-8 -quiet -o $FIMAGE \ 118 + -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 \ 119 + -boot-info-table $tmp_dir 116 120 isohybrid $FIMAGE 2>/dev/null || true 117 121 rm -rf $tmp_dir 118 122 } ··· 125 121 bzdisk) genbzdisk;; 126 122 fdimage144) genfdimage144;; 127 123 fdimage288) genfdimage288;; 128 - isoimage) genisoimage;; 124 + isoimage) geniso;; 129 125 *) echo 'Unknown image format'; exit 1; 130 126 esac
+2 -3
arch/x86/include/asm/switch_to.h
··· 16 16 struct tss_struct *tss); 17 17 18 18 /* This runs runs on the previous thread's stack. */ 19 - static inline void prepare_switch_to(struct task_struct *prev, 20 - struct task_struct *next) 19 + static inline void prepare_switch_to(struct task_struct *next) 21 20 { 22 21 #ifdef CONFIG_VMAP_STACK 23 22 /* ··· 69 70 70 71 #define switch_to(prev, next, last) \ 71 72 do { \ 72 - prepare_switch_to(prev, next); \ 73 + prepare_switch_to(next); \ 73 74 \ 74 75 ((last) = __switch_to_asm((prev), (next))); \ 75 76 } while (0)
+2
arch/x86/kernel/apic/apic.c
··· 2626 2626 apic_verbosity = APIC_DEBUG; 2627 2627 else if (strcmp("verbose", arg) == 0) 2628 2628 apic_verbosity = APIC_VERBOSE; 2629 + #ifdef CONFIG_X86_64 2629 2630 else { 2630 2631 pr_warning("APIC Verbosity level %s not recognised" 2631 2632 " use apic=verbose or apic=debug\n", arg); 2632 2633 return -EINVAL; 2633 2634 } 2635 + #endif 2634 2636 2635 2637 return 0; 2636 2638 }
+1 -1
arch/x86/kernel/apic/apic_flat_64.c
··· 151 151 .apic_id_valid = default_apic_id_valid, 152 152 .apic_id_registered = flat_apic_id_registered, 153 153 154 - .irq_delivery_mode = dest_LowestPrio, 154 + .irq_delivery_mode = dest_Fixed, 155 155 .irq_dest_mode = 1, /* logical */ 156 156 157 157 .disable_esr = 0,
+1 -1
arch/x86/kernel/apic/apic_noop.c
··· 110 110 .apic_id_valid = default_apic_id_valid, 111 111 .apic_id_registered = noop_apic_id_registered, 112 112 113 - .irq_delivery_mode = dest_LowestPrio, 113 + .irq_delivery_mode = dest_Fixed, 114 114 /* logical delivery broadcast to all CPUs: */ 115 115 .irq_dest_mode = 1, 116 116
+2 -6
arch/x86/kernel/apic/msi.c
··· 39 39 ((apic->irq_dest_mode == 0) ? 40 40 MSI_ADDR_DEST_MODE_PHYSICAL : 41 41 MSI_ADDR_DEST_MODE_LOGICAL) | 42 - ((apic->irq_delivery_mode != dest_LowestPrio) ? 43 - MSI_ADDR_REDIRECTION_CPU : 44 - MSI_ADDR_REDIRECTION_LOWPRI) | 42 + MSI_ADDR_REDIRECTION_CPU | 45 43 MSI_ADDR_DEST_ID(cfg->dest_apicid); 46 44 47 45 msg->data = 48 46 MSI_DATA_TRIGGER_EDGE | 49 47 MSI_DATA_LEVEL_ASSERT | 50 - ((apic->irq_delivery_mode != dest_LowestPrio) ? 51 - MSI_DATA_DELIVERY_FIXED : 52 - MSI_DATA_DELIVERY_LOWPRI) | 48 + MSI_DATA_DELIVERY_FIXED | 53 49 MSI_DATA_VECTOR(cfg->vector); 54 50 } 55 51
+1 -1
arch/x86/kernel/apic/probe_32.c
··· 105 105 .apic_id_valid = default_apic_id_valid, 106 106 .apic_id_registered = default_apic_id_registered, 107 107 108 - .irq_delivery_mode = dest_LowestPrio, 108 + .irq_delivery_mode = dest_Fixed, 109 109 /* logical delivery broadcast to all CPUs: */ 110 110 .irq_dest_mode = 1, 111 111
+1 -1
arch/x86/kernel/apic/x2apic_cluster.c
··· 184 184 .apic_id_valid = x2apic_apic_id_valid, 185 185 .apic_id_registered = x2apic_apic_id_registered, 186 186 187 - .irq_delivery_mode = dest_LowestPrio, 187 + .irq_delivery_mode = dest_Fixed, 188 188 .irq_dest_mode = 1, /* logical */ 189 189 190 190 .disable_esr = 0,
+1 -3
arch/x86/kernel/machine_kexec_32.c
··· 48 48 "\tmovl $"STR(__KERNEL_DS)",%%eax\n" 49 49 "\tmovl %%eax,%%ds\n" 50 50 "\tmovl %%eax,%%es\n" 51 - "\tmovl %%eax,%%fs\n" 52 - "\tmovl %%eax,%%gs\n" 53 51 "\tmovl %%eax,%%ss\n" 54 52 : : : "eax", "memory"); 55 53 #undef STR ··· 230 232 * The gdt & idt are now invalid. 231 233 * If you want to load them you must set up your own idt & gdt. 232 234 */ 233 - set_gdt(phys_to_virt(0), 0); 234 235 idt_invalidate(phys_to_virt(0)); 236 + set_gdt(phys_to_virt(0), 0); 235 237 236 238 /* now call it */ 237 239 image->start = relocate_kernel_ptr((unsigned long)image->head,
+5 -1
arch/x86/kernel/stacktrace.c
··· 164 164 { 165 165 int ret; 166 166 167 + /* 168 + * If the task doesn't have a stack (e.g., a zombie), the stack is 169 + * "reliably" empty. 170 + */ 167 171 if (!try_get_task_stack(tsk)) 168 - return -EINVAL; 172 + return 0; 169 173 170 174 ret = __save_stack_trace_reliable(trace, tsk); 171 175
+1 -1
arch/x86/kernel/traps.c
··· 361 361 * 362 362 * No need for ist_enter here because we don't use RCU. 363 363 */ 364 - if (((long)regs->sp >> PGDIR_SHIFT) == ESPFIX_PGD_ENTRY && 364 + if (((long)regs->sp >> P4D_SHIFT) == ESPFIX_PGD_ENTRY && 365 365 regs->cs == __KERNEL_CS && 366 366 regs->ip == (unsigned long)native_irq_return_iret) 367 367 {
+2 -2
arch/x86/mm/mem_encrypt.c
··· 405 405 { 406 406 return sme_me_mask && !sev_enabled; 407 407 } 408 - EXPORT_SYMBOL_GPL(sme_active); 408 + EXPORT_SYMBOL(sme_active); 409 409 410 410 bool sev_active(void) 411 411 { 412 412 return sme_me_mask && sev_enabled; 413 413 } 414 - EXPORT_SYMBOL_GPL(sev_active); 414 + EXPORT_SYMBOL(sev_active); 415 415 416 416 static const struct dma_map_ops sev_dma_ops = { 417 417 .alloc = sev_alloc,
+2 -6
drivers/pci/host/pci-hyperv.c
··· 985 985 int_pkt->wslot.slot = slot; 986 986 int_pkt->int_desc.vector = vector; 987 987 int_pkt->int_desc.vector_count = 1; 988 - int_pkt->int_desc.delivery_mode = 989 - (apic->irq_delivery_mode == dest_LowestPrio) ? 990 - dest_LowestPrio : dest_Fixed; 988 + int_pkt->int_desc.delivery_mode = dest_Fixed; 991 989 992 990 /* 993 991 * Create MSI w/ dummy vCPU set, overwritten by subsequent retarget in ··· 1006 1008 int_pkt->wslot.slot = slot; 1007 1009 int_pkt->int_desc.vector = vector; 1008 1010 int_pkt->int_desc.vector_count = 1; 1009 - int_pkt->int_desc.delivery_mode = 1010 - (apic->irq_delivery_mode == dest_LowestPrio) ? 1011 - dest_LowestPrio : dest_Fixed; 1011 + int_pkt->int_desc.delivery_mode = dest_Fixed; 1012 1012 1013 1013 /* 1014 1014 * Create MSI w/ dummy vCPU set targeting just one vCPU, overwritten