* [GIT PULL] x86 fixes @ 2015-03-05 17:02 Ingo Molnar 2015-03-05 19:23 ` [GIT PULL v2] " Ingo Molnar 0 siblings, 1 reply; 3+ messages in thread From: Ingo Molnar @ 2015-03-05 17:02 UTC (permalink / raw) To: Linus Torvalds Cc: linux-kernel, Borislav Petkov, H. Peter Anvin, Thomas Gleixner, Peter Zijlstra, Andrew Morton Linus, Please pull the latest x86-urgent-for-linus git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-for-linus # HEAD: 9ab6eb51ef4ad63cb71533d3a4dfb09ea8f69b4c x86/intel/quark: Select COMMON_CLK Misc fixes: EFI fixes, an Intel Quark fix and an asm fix. out-of-topic modifications in x86-urgent-for-linus: ----------------------------------------------------- drivers/firmware/dmi_scan.c # 6d9ff4733172: firmware: dmi_scan: Fix dmi_ # ce204e9a4bd8: firmware: dmi_scan: Fix dmi drivers/firmware/efi/libstub/efi-stub-helper.c# 7ed620bb343f: efi/libstub: Fix boundary ch Thanks, Ingo ------------------> Andy Lutomirski (1): x86/asm/entry/64: Remove a bogus 'ret_from_fork' optimization Andy Shevchenko (1): x86/intel/quark: Select COMMON_CLK Ivan Khoronzhuk (2): firmware: dmi_scan: Fix dmi scan to handle "End of Table" structure firmware: dmi_scan: Fix dmi_len type Yinghai Lu (1): efi/libstub: Fix boundary checking in efi_high_alloc() arch/x86/Kconfig | 1 + arch/x86/kernel/entry_64.S | 13 ++++++++----- drivers/firmware/dmi_scan.c | 17 +++++++++-------- drivers/firmware/efi/libstub/efi-stub-helper.c | 8 ++++---- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index c2fb8a87dccb..b7d31ca55187 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -499,6 +499,7 @@ config X86_INTEL_QUARK depends on X86_IO_APIC select IOSF_MBI select INTEL_IMR + select COMMON_CLK ---help--- Select to include support for Quark X1000 SoC. Say Y here if you have a Quark based system such as the Arduino diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index 10074ad9ebf8..1d74d161687c 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S @@ -269,11 +269,14 @@ ENTRY(ret_from_fork) testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread? jz 1f - testl $_TIF_IA32, TI_flags(%rcx) # 32-bit compat task needs IRET - jnz int_ret_from_sys_call - - RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET - jmp ret_from_sys_call # go to the SYSRET fastpath + /* + * By the time we get here, we have no idea whether our pt_regs, + * ti flags, and ti status came from the 64-bit SYSCALL fast path, + * the slow path, or one of the ia32entry paths. + * Use int_ret_from_sys_call to return, since it can safely handle + * all of the above. + */ + jmp int_ret_from_sys_call 1: subq $REST_SKIP, %rsp # leave space for volatiles diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index c5f7b4e9eb6c..69fac068669f 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -78,7 +78,7 @@ static const char * __init dmi_string(const struct dmi_header *dm, u8 s) * We have to be cautious here. We have seen BIOSes with DMI pointers * pointing to completely the wrong place for example */ -static void dmi_table(u8 *buf, int len, int num, +static void dmi_table(u8 *buf, u32 len, int num, void (*decode)(const struct dmi_header *, void *), void *private_data) { @@ -93,12 +93,6 @@ static void dmi_table(u8 *buf, int len, int num, const struct dmi_header *dm = (const struct dmi_header *)data; /* - * 7.45 End-of-Table (Type 127) [SMBIOS reference spec v3.0.0] - */ - if (dm->type == DMI_ENTRY_END_OF_TABLE) - break; - - /* * We want to know the total length (formatted area and * strings) before decoding to make sure we won't run off the * table in dmi_decode or dmi_string @@ -108,13 +102,20 @@ static void dmi_table(u8 *buf, int len, int num, data++; if (data - buf < len - 1) decode(dm, private_data); + + /* + * 7.45 End-of-Table (Type 127) [SMBIOS reference spec v3.0.0] + */ + if (dm->type == DMI_ENTRY_END_OF_TABLE) + break; + data += 2; i++; } } static phys_addr_t dmi_base; -static u16 dmi_len; +static u32 dmi_len; static u16 dmi_num; static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c index 2fe195002021..f07d4a67fa76 100644 --- a/drivers/firmware/efi/libstub/efi-stub-helper.c +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c @@ -179,12 +179,12 @@ efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg, start = desc->phys_addr; end = start + desc->num_pages * (1UL << EFI_PAGE_SHIFT); - if ((start + size) > end || (start + size) > max) - continue; - - if (end - size > max) + if (end > max) end = max; + if ((start + size) > end) + continue; + if (round_down(end - size, align) < start) continue; ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [GIT PULL v2] x86 fixes 2015-03-05 17:02 [GIT PULL] x86 fixes Ingo Molnar @ 2015-03-05 19:23 ` Ingo Molnar 0 siblings, 0 replies; 3+ messages in thread From: Ingo Molnar @ 2015-03-05 19:23 UTC (permalink / raw) To: Linus Torvalds Cc: linux-kernel, Borislav Petkov, H. Peter Anvin, Thomas Gleixner, Peter Zijlstra, Andrew Morton Linus, Please pull the latest x86-urgent-for-linus git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-for-linus # HEAD: 06c8173eb92bbfc03a0fe8bb64315857d0badd06 x86/fpu/xsaves: Fix improper uses of __ex_table Misc fixes: EFI fixes, an Intel Quark fix, an asm fix and an FPU handling fix. out-of-topic modifications in x86-urgent-for-linus: ----------------------------------------------------- drivers/firmware/dmi_scan.c # 6d9ff4733172: firmware: dmi_scan: Fix dmi_ # ce204e9a4bd8: firmware: dmi_scan: Fix dmi drivers/firmware/efi/libstub/efi-stub-helper.c# 7ed620bb343f: efi/libstub: Fix boundary ch Thanks, Ingo ------------------> Andy Lutomirski (1): x86/asm/entry/64: Remove a bogus 'ret_from_fork' optimization Andy Shevchenko (1): x86/intel/quark: Select COMMON_CLK Ivan Khoronzhuk (2): firmware: dmi_scan: Fix dmi scan to handle "End of Table" structure firmware: dmi_scan: Fix dmi_len type Quentin Casasnovas (1): x86/fpu/xsaves: Fix improper uses of __ex_table Yinghai Lu (1): efi/libstub: Fix boundary checking in efi_high_alloc() arch/x86/Kconfig | 1 + arch/x86/include/asm/xsave.h | 28 ++++++++++---------------- arch/x86/kernel/entry_64.S | 13 +++++++----- drivers/firmware/dmi_scan.c | 17 ++++++++-------- drivers/firmware/efi/libstub/efi-stub-helper.c | 8 ++++---- 5 files changed, 33 insertions(+), 34 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index c2fb8a87dccb..b7d31ca55187 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -499,6 +499,7 @@ config X86_INTEL_QUARK depends on X86_IO_APIC select IOSF_MBI select INTEL_IMR + select COMMON_CLK ---help--- Select to include support for Quark X1000 SoC. Say Y here if you have a Quark based system such as the Arduino diff --git a/arch/x86/include/asm/xsave.h b/arch/x86/include/asm/xsave.h index 5fa9770035dc..c9a6d68b8d62 100644 --- a/arch/x86/include/asm/xsave.h +++ b/arch/x86/include/asm/xsave.h @@ -82,18 +82,15 @@ static inline int xsave_state_booting(struct xsave_struct *fx, u64 mask) if (boot_cpu_has(X86_FEATURE_XSAVES)) asm volatile("1:"XSAVES"\n\t" "2:\n\t" - : : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) + xstate_fault + : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) : "memory"); else asm volatile("1:"XSAVE"\n\t" "2:\n\t" - : : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) + xstate_fault + : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) : "memory"); - - asm volatile(xstate_fault - : "0" (0) - : "memory"); - return err; } @@ -112,18 +109,15 @@ static inline int xrstor_state_booting(struct xsave_struct *fx, u64 mask) if (boot_cpu_has(X86_FEATURE_XSAVES)) asm volatile("1:"XRSTORS"\n\t" "2:\n\t" - : : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) + xstate_fault + : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) : "memory"); else asm volatile("1:"XRSTOR"\n\t" "2:\n\t" - : : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) + xstate_fault + : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) : "memory"); - - asm volatile(xstate_fault - : "0" (0) - : "memory"); - return err; } @@ -149,9 +143,9 @@ static inline int xsave_state(struct xsave_struct *fx, u64 mask) */ alternative_input_2( "1:"XSAVE, - "1:"XSAVEOPT, + XSAVEOPT, X86_FEATURE_XSAVEOPT, - "1:"XSAVES, + XSAVES, X86_FEATURE_XSAVES, [fx] "D" (fx), "a" (lmask), "d" (hmask) : "memory"); @@ -178,7 +172,7 @@ static inline int xrstor_state(struct xsave_struct *fx, u64 mask) */ alternative_input( "1: " XRSTOR, - "1: " XRSTORS, + XRSTORS, X86_FEATURE_XSAVES, "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask) : "memory"); diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index 10074ad9ebf8..1d74d161687c 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S @@ -269,11 +269,14 @@ ENTRY(ret_from_fork) testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread? jz 1f - testl $_TIF_IA32, TI_flags(%rcx) # 32-bit compat task needs IRET - jnz int_ret_from_sys_call - - RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET - jmp ret_from_sys_call # go to the SYSRET fastpath + /* + * By the time we get here, we have no idea whether our pt_regs, + * ti flags, and ti status came from the 64-bit SYSCALL fast path, + * the slow path, or one of the ia32entry paths. + * Use int_ret_from_sys_call to return, since it can safely handle + * all of the above. + */ + jmp int_ret_from_sys_call 1: subq $REST_SKIP, %rsp # leave space for volatiles diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index c5f7b4e9eb6c..69fac068669f 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -78,7 +78,7 @@ static const char * __init dmi_string(const struct dmi_header *dm, u8 s) * We have to be cautious here. We have seen BIOSes with DMI pointers * pointing to completely the wrong place for example */ -static void dmi_table(u8 *buf, int len, int num, +static void dmi_table(u8 *buf, u32 len, int num, void (*decode)(const struct dmi_header *, void *), void *private_data) { @@ -93,12 +93,6 @@ static void dmi_table(u8 *buf, int len, int num, const struct dmi_header *dm = (const struct dmi_header *)data; /* - * 7.45 End-of-Table (Type 127) [SMBIOS reference spec v3.0.0] - */ - if (dm->type == DMI_ENTRY_END_OF_TABLE) - break; - - /* * We want to know the total length (formatted area and * strings) before decoding to make sure we won't run off the * table in dmi_decode or dmi_string @@ -108,13 +102,20 @@ static void dmi_table(u8 *buf, int len, int num, data++; if (data - buf < len - 1) decode(dm, private_data); + + /* + * 7.45 End-of-Table (Type 127) [SMBIOS reference spec v3.0.0] + */ + if (dm->type == DMI_ENTRY_END_OF_TABLE) + break; + data += 2; i++; } } static phys_addr_t dmi_base; -static u16 dmi_len; +static u32 dmi_len; static u16 dmi_num; static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c index 2fe195002021..f07d4a67fa76 100644 --- a/drivers/firmware/efi/libstub/efi-stub-helper.c +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c @@ -179,12 +179,12 @@ efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg, start = desc->phys_addr; end = start + desc->num_pages * (1UL << EFI_PAGE_SHIFT); - if ((start + size) > end || (start + size) > max) - continue; - - if (end - size > max) + if (end > max) end = max; + if ((start + size) > end) + continue; + if (round_down(end - size, align) < start) continue; ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [GIT PULL] x86 fixes @ 2009-12-31 12:03 Ingo Molnar 2009-12-31 12:56 ` Borislav Petkov 0 siblings, 1 reply; 3+ messages in thread From: Ingo Molnar @ 2009-12-31 12:03 UTC (permalink / raw) To: Linus Torvalds Cc: linux-kernel, H. Peter Anvin, Thomas Gleixner, Andrew Morton Linus, Please pull the latest x86-fixes-for-linus git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git x86-fixes-for-linus You'll get a conflict in arch/x86/include/asm/uv/uv_hub.h (you merged a v1 version of the patch from email - the conflicts are trivial, please pick my version). Thanks, Ingo --- arch/x86/boot/compressed/Makefile | 1 + arch/x86/include/asm/uv/uv_hub.h | 86 ++++++++++++++++++++---------------- arch/x86/kernel/amd_iommu_init.c | 10 ++++ arch/x86/kernel/apic/x2apic_uv_x.c | 12 +++--- arch/x86/kernel/process.c | 4 +- arch/x86/kernel/process_32.c | 14 +++--- arch/x86/kernel/process_64.c | 24 +++++----- arch/x86/mm/kmemcheck/error.c | 19 ++++---- arch/x86/tools/chkobjdump.awk | 16 +++++- drivers/char/agp/amd64-agp.c | 9 ++-- lib/dma-debug.c | 5 ++ 11 files changed, 118 insertions(+), 82 deletions(-) FUJITA Tomonori (1): x86/agp: Fix agp_amd64_init() initialization with CONFIG_GART_IOMMU enabled H. Peter Anvin (1): x86, compress: Force i386 instructions for the decompressor Ingo Molnar (1): Merge branch 'iommu/fixes' of git://git.kernel.org/.../joro/linux-2.6-iommu into x86/urgent Joerg Roedel (2): x86/amd-iommu: Fix initialization failure panic Merge branches 'dma-debug/fixes' and 'amd-iommu/fixes' into iommu/fixes Masami Hiramatsu (1): x86: Fix objdump version check in chkobjdump.awk for different formats. Mike Travis (1): x86: SGI UV: Fix writes to led registers on remote uv hubs Pekka Enberg (2): x86: Use KERN_DEFAULT log-level in __show_regs() x86, kmemcheck: Use KERN_WARNING for error reporting Shaun Ruffell (1): dma-debug: Do not add notifier when dma debugging is disabled. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [GIT PULL] x86 fixes 2009-12-31 12:03 [GIT PULL] " Ingo Molnar @ 2009-12-31 12:56 ` Borislav Petkov 2009-12-31 14:30 ` [GIT PULL, v2] " Ingo Molnar 0 siblings, 1 reply; 3+ messages in thread From: Borislav Petkov @ 2009-12-31 12:56 UTC (permalink / raw) To: Ingo Molnar Cc: Linus Torvalds, linux-kernel, H. Peter Anvin, Thomas Gleixner, Andrew Morton On Thu, Dec 31, 2009 at 01:03:22PM +0100, Ingo Molnar wrote: > Shaun Ruffell (1): > > dma-debug: Do not add notifier when dma debugging is disabled. Looks like that last one breaks powerpc allyesconfig builds: http://marc.info/?l=linux-next&m=126221673819746&w=2 -- Regards/Gruss, Boris. ^ permalink raw reply [flat|nested] 3+ messages in thread
* [GIT PULL, v2] x86 fixes 2009-12-31 12:56 ` Borislav Petkov @ 2009-12-31 14:30 ` Ingo Molnar 0 siblings, 0 replies; 3+ messages in thread From: Ingo Molnar @ 2009-12-31 14:30 UTC (permalink / raw) To: Borislav Petkov, Linus Torvalds, linux-kernel, H. Peter Anvin, Thomas Gleixner, Andrew Morton * Borislav Petkov <petkovbb@googlemail.com> wrote: > On Thu, Dec 31, 2009 at 01:03:22PM +0100, Ingo Molnar wrote: > > Shaun Ruffell (1): > > > > dma-debug: Do not add notifier when dma debugging is disabled. > > Looks like that last one breaks powerpc allyesconfig builds: > > http://marc.info/?l=linux-next&m=126221673819746&w=2 It's a build warning, not a broken build. Updated (v2) pull request below, with the fix for this. [diffstat manually constructed - i hope i got that right.] Thanks and a happy new year, Ingo Linus, Please pull the latest x86-fixes-for-linus-2 git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git x86-fixes-for-linus-2 Thanks, Ingo ------------------> arch/x86/boot/compressed/Makefile | 1 + arch/x86/include/asm/uv/uv_hub.h | 74 ++++++++++++++++-------------------- arch/x86/kernel/amd_iommu_init.c | 10 +++++ arch/x86/kernel/process.c | 4 +- arch/x86/kernel/process_32.c | 14 +++--- arch/x86/kernel/process_64.c | 24 ++++++------ arch/x86/mm/kmemcheck/error.c | 19 ++++----- arch/x86/tools/chkobjdump.awk | 16 ++++++- drivers/char/agp/amd64-agp.c | 9 ++-- lib/dma-debug.c | 8 +++- 10 files changed, 98 insertions(+), 81 deletions(-) FUJITA Tomonori (1): x86/agp: Fix agp_amd64_init() initialization with CONFIG_GART_IOMMU enabled H. Peter Anvin (1): x86, compress: Force i386 instructions for the decompressor Ingo Molnar (1): dma-debug: Fix bug causing build warning Joerg Roedel (1): x86/amd-iommu: Fix initialization failure panic Masami Hiramatsu (1): x86: Fix objdump version check in chkobjdump.awk for different formats. Mike Travis (1): x86: SGI UV: Fix writes to led registers on remote uv hubs Pekka Enberg (2): x86: Use KERN_DEFAULT log-level in __show_regs() x86, kmemcheck: Use KERN_WARNING for error reporting Shaun Ruffell (1): dma-debug: Do not add notifier when dma debugging is disabled. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-03-05 19:23 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-03-05 17:02 [GIT PULL] x86 fixes Ingo Molnar 2015-03-05 19:23 ` [GIT PULL v2] " Ingo Molnar -- strict thread matches above, loose matches on Subject: below -- 2009-12-31 12:03 [GIT PULL] " Ingo Molnar 2009-12-31 12:56 ` Borislav Petkov 2009-12-31 14:30 ` [GIT PULL, v2] " Ingo Molnar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).