All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Lendacky <thomas.lendacky@amd.com>
To: "H. Peter Anvin" <hpa@zytor.com>, x86@kernel.org
Cc: Peter Zijlstra <peterz@infradead.org>,
	linux-kernel@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	Tomeu Vizoso <tomeu@tomeuvizoso.net>
Subject: Re: [PATCH] x86/boot: Fix boot failure when SMP MP-table is based at 0
Date: Mon, 6 Nov 2017 16:01:10 -0600	[thread overview]
Message-ID: <17a1c480-d0aa-b272-7ca3-5dd2cf2fd7dc@amd.com> (raw)
In-Reply-To: <ee912340-4b16-2b62-7e92-66dfb4a28ef8@zytor.com>

On 11/6/2017 3:41 PM, H. Peter Anvin wrote:
> On 11/06/17 12:17, Tom Lendacky wrote:
>> When crosvm is used to boot a kernel as a VM, the SMP MP-table is found
>> at physical address 0x0. This causes mpf_base to be set to 0 and a
>> subsequent "if (!mpf_base)" check in default_get_smp_config() results in
>> the MP-table not being parsed.  Further into the boot this results in an
>> oops when attempting a read_apic_id().
>>
>> Add a boolean variable that is set to true when the MP-table is found.
>> Use this variable for testing if the MP-table was found so that even a
>> value of 0 for mpf_base will result in continued parsing of the MP-table.
>>
>> Reported-by: Tomeu Vizoso <tomeu@tomeuvizoso.net>
>> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
> 
> Ahem... did anyone ever tell you that this is an epicly bad idea on your
> part?  The low megabyte of physical memory has very special meaning on
> x86, and deviating from the standard use of this memory is a *very*
> dangerous thing to do, and imposing on the kernel a "fake null pointer"
> requirement that exists only for the convenience of your particular
> brokenness is not okay.
> 
> 	-hpa

That was my initial thought... what was something doing down at the start
of memory.  But when I looked at default_find_smp_config() it specifically
scans the bottom 1K for a an MP-table signature. I was hoping to get some
feedback as to whether this would really be an acceptable thing to do. So
I'm good with this patch being rejected, but the change I made in

5997efb96756 ("x86/boot: Use memremap() to map the MPF and MPC data")

does break something that was working before.

Thanks,
Tom

> 

  reply	other threads:[~2017-11-06 22:01 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-06 20:17 [PATCH] x86/boot: Fix boot failure when SMP MP-table is based at 0 Tom Lendacky
2017-11-06 20:25 ` Tom Lendacky
2017-11-06 21:41 ` H. Peter Anvin
2017-11-06 22:01   ` Tom Lendacky [this message]
2017-11-06 23:00     ` Tom Lendacky
2017-11-16 11:40       ` Borislav Petkov
2017-11-08  8:37     ` Tomeu Vizoso
2017-11-16  9:16       ` Tomeu Vizoso
2017-11-16  9:20         ` Tomeu Vizoso
2017-11-17 13:03     ` Thomas Gleixner
2017-11-17 15:25 ` [tip:x86/urgent] " tip-bot for Tom Lendacky

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=17a1c480-d0aa-b272-7ca3-5dd2cf2fd7dc@amd.com \
    --to=thomas.lendacky@amd.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=tomeu@tomeuvizoso.net \
    --cc=x86@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.