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-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Ingo Molnar:
"Three changes:

- An UV fix/quirk to pull UV BIOS calls into the efi_runtime_lock
locking regime. (This done by aliasing __efi_uv_runtime_lock to
efi_runtime_lock, which should make the quirk nature obvious and
maintain the general policy that the EFI lock (name...) isn't
exposed to drivers.)

- Our version of MAGA: Make a.out Great Again.

- Add a new Intel model name enumerator to an upstream header to help
reduce dependencies going forward"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/platform/UV: Use efi_runtime_lock to serialise BIOS calls
x86/CPU: Add Icelake model number
x86/a.out: Clear the dump structure initially

+41 -5
+4 -2
arch/x86/ia32/ia32_aout.c
··· 51 51 /* 52 52 * fill in the user structure for a core dump.. 53 53 */ 54 - static void dump_thread32(struct pt_regs *regs, struct user32 *dump) 54 + static void fill_dump(struct pt_regs *regs, struct user32 *dump) 55 55 { 56 56 u32 fs, gs; 57 57 memset(dump, 0, sizeof(*dump)); ··· 157 157 fs = get_fs(); 158 158 set_fs(KERNEL_DS); 159 159 has_dumped = 1; 160 + 161 + fill_dump(cprm->regs, &dump); 162 + 160 163 strncpy(dump.u_comm, current->comm, sizeof(current->comm)); 161 164 dump.u_ar0 = offsetof(struct user32, regs); 162 165 dump.signal = cprm->siginfo->si_signo; 163 - dump_thread32(cprm->regs, &dump); 164 166 165 167 /* 166 168 * If the size of the dump file exceeds the rlimit, then see
+2
arch/x86/include/asm/intel-family.h
··· 52 52 53 53 #define INTEL_FAM6_CANNONLAKE_MOBILE 0x66 54 54 55 + #define INTEL_FAM6_ICELAKE_MOBILE 0x7E 56 + 55 57 /* "Small Core" Processors (Atom) */ 56 58 57 59 #define INTEL_FAM6_ATOM_BONNELL 0x1C /* Diamondville, Pineview */
+7 -1
arch/x86/include/asm/uv/bios.h
··· 48 48 BIOS_STATUS_SUCCESS = 0, 49 49 BIOS_STATUS_UNIMPLEMENTED = -ENOSYS, 50 50 BIOS_STATUS_EINVAL = -EINVAL, 51 - BIOS_STATUS_UNAVAIL = -EBUSY 51 + BIOS_STATUS_UNAVAIL = -EBUSY, 52 + BIOS_STATUS_ABORT = -EINTR, 52 53 }; 53 54 54 55 /* Address map parameters */ ··· 167 166 #define uv_partition_coherence_id() (sn_coherency_id) 168 167 169 168 extern struct kobject *sgi_uv_kobj; /* /sys/firmware/sgi_uv */ 169 + 170 + /* 171 + * EFI runtime lock; cf. firmware/efi/runtime-wrappers.c for details 172 + */ 173 + extern struct semaphore __efi_uv_runtime_lock; 170 174 171 175 #endif /* _ASM_X86_UV_BIOS_H */
+21 -2
arch/x86/platform/uv/bios_uv.c
··· 29 29 30 30 struct uv_systab *uv_systab; 31 31 32 - s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4, u64 a5) 32 + static s64 __uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, 33 + u64 a4, u64 a5) 33 34 { 34 35 struct uv_systab *tab = uv_systab; 35 36 s64 ret; ··· 52 51 53 52 return ret; 54 53 } 54 + 55 + s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4, u64 a5) 56 + { 57 + s64 ret; 58 + 59 + if (down_interruptible(&__efi_uv_runtime_lock)) 60 + return BIOS_STATUS_ABORT; 61 + 62 + ret = __uv_bios_call(which, a1, a2, a3, a4, a5); 63 + up(&__efi_uv_runtime_lock); 64 + 65 + return ret; 66 + } 55 67 EXPORT_SYMBOL_GPL(uv_bios_call); 56 68 57 69 s64 uv_bios_call_irqsave(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, ··· 73 59 unsigned long bios_flags; 74 60 s64 ret; 75 61 62 + if (down_interruptible(&__efi_uv_runtime_lock)) 63 + return BIOS_STATUS_ABORT; 64 + 76 65 local_irq_save(bios_flags); 77 - ret = uv_bios_call(which, a1, a2, a3, a4, a5); 66 + ret = __uv_bios_call(which, a1, a2, a3, a4, a5); 78 67 local_irq_restore(bios_flags); 68 + 69 + up(&__efi_uv_runtime_lock); 79 70 80 71 return ret; 81 72 }
+7
drivers/firmware/efi/runtime-wrappers.c
··· 147 147 static DEFINE_SEMAPHORE(efi_runtime_lock); 148 148 149 149 /* 150 + * Expose the EFI runtime lock to the UV platform 151 + */ 152 + #ifdef CONFIG_X86_UV 153 + extern struct semaphore __efi_uv_runtime_lock __alias(efi_runtime_lock); 154 + #endif 155 + 156 + /* 150 157 * Calls the appropriate efi_runtime_service() with the appropriate 151 158 * arguments. 152 159 *