[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAE9FiQUndrTZYk+JS09PUYg4Od1VLz_CDikp2DftXSrUraH1bw@mail.gmail.com>
Date: Sat, 13 Jul 2013 14:48:18 -0700
From: Yinghai Lu <yinghai@...nel.org>
To: Daniel Drake <dsd@...top.org>
Cc: Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>,
"the arch/x86 maintainers" <x86@...nel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
pgf@...top.org, Andres Salomon <dilinger@...ued.net>
Subject: Re: [PATCH] x86: don't clear olpc_ofw_header when sentinel is detected
On Sat, Jul 13, 2013 at 9:26 AM, Daniel Drake <dsd@...top.org> wrote:
> OpenFirmware doesn't quite follow the protocol described in boot.txt
> and the kernel has detected this through use of the sentinel value
> in boot_params. OFW does zero out almost all of the stuff that it should
> do, but not the sentinel.
>
> This causes the kernel to clear olpc_ofw_header, which breaks x86 OLPC
> support.
>
> We will fix OpenFirmware. However, it would be nice if we could maintain
> Linux compatibility with old firmware versions. To do that, we just have
> to avoid zeroing out olpc_ofw_header.
>
> OFW does not write to any other parts of the header that are being zapped
> by the sentinel-detection code, and all users of olpc_ofw_header are
> somewhat protected through checking for the OLPC_OFW_SIG magic value
> before using it. So this should not cause any problems for anyone.
>
> Signed-off-by: Daniel Drake <dsd@...top.org>
> ---
> arch/x86/include/asm/bootparam_utils.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/include/asm/bootparam_utils.h b/arch/x86/include/asm/bootparam_utils.h
> index 653668d..4a8cb8d 100644
> --- a/arch/x86/include/asm/bootparam_utils.h
> +++ b/arch/x86/include/asm/bootparam_utils.h
> @@ -35,9 +35,9 @@ static void sanitize_boot_params(struct boot_params *boot_params)
> */
> if (boot_params->sentinel) {
> /* fields in boot_params are left uninitialized, clear them */
> - memset(&boot_params->olpc_ofw_header, 0,
> + memset(&boot_params->ext_ramdisk_image, 0,
> (char *)&boot_params->efi_info -
> - (char *)&boot_params->olpc_ofw_header);
> + (char *)&boot_params->ext_ramdisk_image);
> memset(&boot_params->kbd_status, 0,
> (char *)&boot_params->hdr -
> (char *)&boot_params->kbd_status);
> --
> 1.8.1.4
Acked-by: Yinghai Lu <yinghai@...nel.org>
also need to
Cc: <stable@...r.kerne.org> v3.9+
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists