* [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
* [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
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).