All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Christian König" <christian.koenig@amd.com>
To: <mingo@kernel.org>, <hpa@zytor.com>,
	<linux-kernel@vger.kernel.org>, <yinghai@kernel.org>,
	<tglx@linutronix.de>, <hpa@linux.intel.com>,
	<christian.koenig@amd.com>
Cc: tip-bot for Yinghai Lu <tipbot@zytor.com>,
	<linux-tip-commits@vger.kernel.org>
Subject: Re: [tip:x86/urgent] x86, range: fix missing merge during add range
Date: Sun, 19 May 2013 15:44:30 +0200	[thread overview]
Message-ID: <5198D73E.1010602@amd.com> (raw)
In-Reply-To: <tip-fbe06b7bae7c9cf6ab05168fce5ee93b2f4bae7c@git.kernel.org>

Am 17.05.2013 21:12, schrieb tip-bot for Yinghai Lu:
> Commit-ID:  fbe06b7bae7c9cf6ab05168fce5ee93b2f4bae7c
> Gitweb:     http://git.kernel.org/tip/fbe06b7bae7c9cf6ab05168fce5ee93b2f4bae7c
> Author:     Yinghai Lu <yinghai@kernel.org>
> AuthorDate: Fri, 17 May 2013 11:49:10 -0700
> Committer:  H. Peter Anvin <hpa@linux.intel.com>
> CommitDate: Fri, 17 May 2013 11:49:10 -0700
>
> x86, range: fix missing merge during add range
>
> Christian found v3.9 does not work with E350 with EFI is enabled.
>
> [    1.658832] Trying to unpack rootfs image as initramfs...
> [    1.679935] BUG: unable to handle kernel paging request at ffff88006e3fd000
> [    1.686940] IP: [<ffffffff813661df>] memset+0x1f/0xb0
> [    1.692010] PGD 1f77067 PUD 1f7a067 PMD 61420067 PTE 0
>
> but early memtest report all memory could be accessed without problem.
>
> early page table is set in following sequence:
> [    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
> [    0.000000] init_memory_mapping: [mem 0x6e600000-0x6e7fffff]
> [    0.000000] init_memory_mapping: [mem 0x6c000000-0x6e5fffff]
> [    0.000000] init_memory_mapping: [mem 0x00100000-0x6bffffff]
> [    0.000000] init_memory_mapping: [mem 0x6e800000-0x6ea07fff]
> but later efi_enter_virtual_mode try set mapping again wrongly.
> [    0.010644] pid_max: default: 32768 minimum: 301
> [    0.015302] init_memory_mapping: [mem 0x640c5000-0x6e3fcfff]
> that means it fails with pfn_range_is_mapped.
>
> It turns out that we have a bug in add_range_with_merge and it does not
> merge range properly when new add one fill the hole between two exsiting
> ranges. In the case when [mem 0x00100000-0x6bffffff] is the hole between
> [mem 0x00000000-0x000fffff] and [mem 0x6c000000-0x6e7fffff].
>
> Fix the add_range_with_merge by calling itself recursively.
>
> Reported-by: "Christian König" <christian.koenig@amd.com>
> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
> Link: http://lkml.kernel.org/r/CAE9FiQVofGoSk7q5-0irjkBxemqK729cND4hov-1QCBJDhxpgQ@mail.gmail.com
> Cc: <stable@vger.kernel.org> v3.9
> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>

Tested-by: Christian König <christian.koenig@amd.com>

> ---
>   kernel/range.c | 8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/range.c b/kernel/range.c
> index 071b0ab..eb911db 100644
> --- a/kernel/range.c
> +++ b/kernel/range.c
> @@ -48,9 +48,11 @@ int add_range_with_merge(struct range *range, int az, int nr_range,
>   		final_start = min(range[i].start, start);
>   		final_end = max(range[i].end, end);
>   
> -		range[i].start = final_start;
> -		range[i].end =  final_end;
> -		return nr_range;
> +		/* clear it and add it back for further merge */
> +		range[i].start = 0;
> +		range[i].end =  0;
> +		return add_range_with_merge(range, az, nr_range,
> +			final_start, final_end);
>   	}
>   
>   	/* Need to add it: */
>



  reply	other threads:[~2013-05-19 14:01 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-15  9:46 3.9 breaks EFI boot on E350 Christian König
2013-05-15 14:46 ` Yinghai Lu
2013-05-15 15:20   ` Christian König
2013-05-15 20:57     ` Yinghai Lu
2013-05-16  9:41       ` Christian König
2013-05-16 12:49         ` Christian König
2013-05-16 15:17           ` Yinghai Lu
2013-05-16 15:23             ` Christian König
2013-05-16 15:42               ` Yinghai Lu
2013-05-17  9:43                 ` Christian König
2013-05-17 17:54                   ` Yinghai Lu
2013-05-17 19:12                     ` [tip:x86/urgent] x86, range: fix missing merge during add range tip-bot for Yinghai Lu
2013-05-19 13:44                       ` Christian König [this message]
2013-05-19 13:45                     ` 3.9 breaks EFI boot on E350 Christian König

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5198D73E.1010602@amd.com \
    --to=christian.koenig@amd.com \
    --cc=hpa@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tipbot@zytor.com \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.