* [PATCH] x86: fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline
@ 2010-08-25 5:44 Hugh Dickins
2010-08-25 6:30 ` Borislav Petkov
2010-08-25 7:13 ` [tip:x86/urgent] x86, mm: Fix " tip-bot for Hugh Dickins
0 siblings, 2 replies; 5+ messages in thread
From: Hugh Dickins @ 2010-08-25 5:44 UTC (permalink / raw)
To: H. Peter Anvin
Cc: Linus Torvalds, Andrew Morton, Joerg Roedel, Borislav Petkov, x86,
linux-kernel
rc2 kernel crashes when booting second cpu on this CONFIG_VMSPLIT_2G_OPT
laptop: whereas cloning from kernel to low mappings pgd range does need
to limit by both KERNEL_PGD_PTRS and KERNEL_PGD_BOUNDARY, cloning kernel
pgd range itself must not be limited by the smaller KERNEL_PGD_BOUNDARY.
Signed-off-by: Hugh Dickins <hughd@google.com>
---
arch/x86/kernel/trampoline.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- 2.6.36-rc2/arch/x86/kernel/trampoline.c.0 2010-08-22 18:56:44.000000000 -0700
+++ linux/arch/x86/kernel/trampoline.c 2010-08-24 22:11:08.000000000 -0700
@@ -45,8 +45,7 @@ void __init setup_trampoline_page_table(
/* Copy kernel address range */
clone_pgd_range(trampoline_pg_dir + KERNEL_PGD_BOUNDARY,
swapper_pg_dir + KERNEL_PGD_BOUNDARY,
- min_t(unsigned long, KERNEL_PGD_PTRS,
- KERNEL_PGD_BOUNDARY));
+ KERNEL_PGD_PTRS);
/* Initialize low mappings */
clone_pgd_range(trampoline_pg_dir,
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86: fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline
2010-08-25 5:44 [PATCH] x86: fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline Hugh Dickins
@ 2010-08-25 6:30 ` Borislav Petkov
2010-08-25 7:06 ` H. Peter Anvin
2010-08-25 7:13 ` [tip:x86/urgent] x86, mm: Fix " tip-bot for Hugh Dickins
1 sibling, 1 reply; 5+ messages in thread
From: Borislav Petkov @ 2010-08-25 6:30 UTC (permalink / raw)
To: Hugh Dickins
Cc: H. Peter Anvin, Linus Torvalds, Andrew Morton, Roedel, Joerg,
x86@kernel.org, linux-kernel@vger.kernel.org
From: Hugh Dickins <hughd@google.com>
Date: Wed, Aug 25, 2010 at 01:44:12AM -0400
> rc2 kernel crashes when booting second cpu on this CONFIG_VMSPLIT_2G_OPT
> laptop: whereas cloning from kernel to low mappings pgd range does need
> to limit by both KERNEL_PGD_PTRS and KERNEL_PGD_BOUNDARY, cloning kernel
> pgd range itself must not be limited by the smaller KERNEL_PGD_BOUNDARY.
Yep, makes sense.
In looking around for other swapper_pg_dir manipulations, there's this
piece in <arch/x86/kernel/reboot.c:machine_real_restart()>:
/* Remap the kernel at virtual address zero, as well as offset zero
from the kernel segment. This assumes the kernel segment starts at
virtual address PAGE_OFFSET. */
memcpy(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY,
sizeof(swapper_pg_dir [0]) * KERNEL_PGD_PTRS);
and we're cloning to low mappings here but still take KERNEL_PGD_PTRS.
In the CONFIG_VMSPLIT_2G_OPT case, KERNEL_PGD_BOUNDARY and
KERNEL_PGD_PTRS are 480 and 544, respectively, and IINM, and we end up
overwriting the virtual mappings beginning at PAGE_OFFSET.
I guess this doesn't matter on reboot or am I missing something else?
>
> Signed-off-by: Hugh Dickins <hughd@google.com>
Acked-by: Borislav Petkov <borislav.petkov@amd.com>
> ---
>
> arch/x86/kernel/trampoline.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> --- 2.6.36-rc2/arch/x86/kernel/trampoline.c.0 2010-08-22 18:56:44.000000000 -0700
> +++ linux/arch/x86/kernel/trampoline.c 2010-08-24 22:11:08.000000000 -0700
> @@ -45,8 +45,7 @@ void __init setup_trampoline_page_table(
> /* Copy kernel address range */
> clone_pgd_range(trampoline_pg_dir + KERNEL_PGD_BOUNDARY,
> swapper_pg_dir + KERNEL_PGD_BOUNDARY,
> - min_t(unsigned long, KERNEL_PGD_PTRS,
> - KERNEL_PGD_BOUNDARY));
> + KERNEL_PGD_PTRS);
>
> /* Initialize low mappings */
> clone_pgd_range(trampoline_pg_dir,
>
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
General Managers: Alberto Bozzo, Andrew Bowd
Registration: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86: fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline
2010-08-25 6:30 ` Borislav Petkov
@ 2010-08-25 7:06 ` H. Peter Anvin
2010-08-25 7:13 ` Borislav Petkov
0 siblings, 1 reply; 5+ messages in thread
From: H. Peter Anvin @ 2010-08-25 7:06 UTC (permalink / raw)
To: Borislav Petkov
Cc: Hugh Dickins, Linus Torvalds, Andrew Morton, Roedel, Joerg,
x86@kernel.org, linux-kernel@vger.kernel.org
On 08/24/2010 11:30 PM, Borislav Petkov wrote:
> From: Hugh Dickins <hughd@google.com>
> Date: Wed, Aug 25, 2010 at 01:44:12AM -0400
>
>> rc2 kernel crashes when booting second cpu on this CONFIG_VMSPLIT_2G_OPT
>> laptop: whereas cloning from kernel to low mappings pgd range does need
>> to limit by both KERNEL_PGD_PTRS and KERNEL_PGD_BOUNDARY, cloning kernel
>> pgd range itself must not be limited by the smaller KERNEL_PGD_BOUNDARY.
>
> Yep, makes sense.
>
> In looking around for other swapper_pg_dir manipulations, there's this
> piece in <arch/x86/kernel/reboot.c:machine_real_restart()>:
>
> /* Remap the kernel at virtual address zero, as well as offset zero
> from the kernel segment. This assumes the kernel segment starts at
> virtual address PAGE_OFFSET. */
> memcpy(swapper_pg_dir, swapper_pg_dir + KERNEL_PGD_BOUNDARY,
> sizeof(swapper_pg_dir [0]) * KERNEL_PGD_PTRS);
>
> and we're cloning to low mappings here but still take KERNEL_PGD_PTRS.
>
> In the CONFIG_VMSPLIT_2G_OPT case, KERNEL_PGD_BOUNDARY and
> KERNEL_PGD_PTRS are 480 and 544, respectively, and IINM, and we end up
> overwriting the virtual mappings beginning at PAGE_OFFSET.
>
> I guess this doesn't matter on reboot or am I missing something else?
>
It doesn't matter on reboot, but the right thing would be to switch to
the trampoline page table here. Same with suspend.
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [tip:x86/urgent] x86, mm: Fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline
2010-08-25 5:44 [PATCH] x86: fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline Hugh Dickins
2010-08-25 6:30 ` Borislav Petkov
@ 2010-08-25 7:13 ` tip-bot for Hugh Dickins
1 sibling, 0 replies; 5+ messages in thread
From: tip-bot for Hugh Dickins @ 2010-08-25 7:13 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, hughd, tglx
Commit-ID: b7d460897739e02f186425b7276e3fdb1595cea7
Gitweb: http://git.kernel.org/tip/b7d460897739e02f186425b7276e3fdb1595cea7
Author: Hugh Dickins <hughd@google.com>
AuthorDate: Tue, 24 Aug 2010 22:44:12 -0700
Committer: H. Peter Anvin <hpa@zytor.com>
CommitDate: Tue, 24 Aug 2010 23:05:17 -0700
x86, mm: Fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline
rc2 kernel crashes when booting second cpu on this CONFIG_VMSPLIT_2G_OPT
laptop: whereas cloning from kernel to low mappings pgd range does need
to limit by both KERNEL_PGD_PTRS and KERNEL_PGD_BOUNDARY, cloning kernel
pgd range itself must not be limited by the smaller KERNEL_PGD_BOUNDARY.
Signed-off-by: Hugh Dickins <hughd@google.com>
LKML-Reference: <alpine.LSU.2.00.1008242235120.2515@sister.anvils>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
arch/x86/kernel/trampoline.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/trampoline.c b/arch/x86/kernel/trampoline.c
index a874495..e2a5952 100644
--- a/arch/x86/kernel/trampoline.c
+++ b/arch/x86/kernel/trampoline.c
@@ -45,8 +45,7 @@ void __init setup_trampoline_page_table(void)
/* Copy kernel address range */
clone_pgd_range(trampoline_pg_dir + KERNEL_PGD_BOUNDARY,
swapper_pg_dir + KERNEL_PGD_BOUNDARY,
- min_t(unsigned long, KERNEL_PGD_PTRS,
- KERNEL_PGD_BOUNDARY));
+ KERNEL_PGD_PTRS);
/* Initialize low mappings */
clone_pgd_range(trampoline_pg_dir,
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] x86: fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline
2010-08-25 7:06 ` H. Peter Anvin
@ 2010-08-25 7:13 ` Borislav Petkov
0 siblings, 0 replies; 5+ messages in thread
From: Borislav Petkov @ 2010-08-25 7:13 UTC (permalink / raw)
To: H. Peter Anvin
Cc: Hugh Dickins, Linus Torvalds, Andrew Morton, Roedel, Joerg,
x86@kernel.org, linux-kernel@vger.kernel.org
From: "H. Peter Anvin" <hpa@zytor.com>
Date: Wed, Aug 25, 2010 at 03:06:34AM -0400
> It doesn't matter on reboot, but the right thing would be to switch to
> the trampoline page table here. Same with suspend.
Yeah, I do that in my other patch (http://lkml.org/lkml/2010/8/24/61)
which adds the initial_page_table and keeps swapper_pg_dir clear of low
mappings. I'll add Hugh's fix there too and will start testing to see
what happens :).
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
General Managers: Alberto Bozzo, Andrew Bowd
Registration: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-08-25 7:14 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-25 5:44 [PATCH] x86: fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline Hugh Dickins
2010-08-25 6:30 ` Borislav Petkov
2010-08-25 7:06 ` H. Peter Anvin
2010-08-25 7:13 ` Borislav Petkov
2010-08-25 7:13 ` [tip:x86/urgent] x86, mm: Fix " tip-bot for Hugh Dickins
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.