From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C190CA9EB6 for ; Wed, 23 Oct 2019 11:28:22 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6D3672064A for ; Wed, 23 Oct 2019 11:28:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6D3672064A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.crashing.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 46yp5q4ShMzDqQQ for ; Wed, 23 Oct 2019 22:28:15 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=permerror (SPF Permanent Error: Unknown mechanism found: ip:192.40.192.88/32) smtp.mailfrom=kernel.crashing.org (client-ip=63.228.1.57; helo=gate.crashing.org; envelope-from=segher@kernel.crashing.org; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=kernel.crashing.org Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 46ynxh31PVzDqGW for ; Wed, 23 Oct 2019 22:21:10 +1100 (AEDT) Received: from gate.crashing.org (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.14.1/8.14.1) with ESMTP id x9NBL4kp032285; Wed, 23 Oct 2019 06:21:04 -0500 Received: (from segher@localhost) by gate.crashing.org (8.14.1/8.14.1/Submit) id x9NBL27C032274; Wed, 23 Oct 2019 06:21:02 -0500 X-Authentication-Warning: gate.crashing.org: segher set sender to segher@kernel.crashing.org using -f Date: Wed, 23 Oct 2019 06:21:02 -0500 From: Segher Boessenkool To: "Oliver O'Halloran" Subject: Re: [PATCH] powerpc/boot: Fix the initrd being overwritten under qemu Message-ID: <20191023112102.GN28442@gate.crashing.org> References: <20191023013635.2512-1-oohall@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20191023013635.2512-1-oohall@gmail.com> User-Agent: Mutt/1.4.2.3i X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexey Kardashevskiy , linuxppc-dev@lists.ozlabs.org, stable@vger.kernel.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Wed, Oct 23, 2019 at 12:36:35PM +1100, Oliver O'Halloran wrote: > When booting under OF the zImage expects the initrd address and size to be > passed to it using registers r3 and r4. SLOF (guest firmware used by QEMU) > currently doesn't do this so the zImage is not aware of the initrd > location. This can result in initrd corruption either though the zImage > extracting the vmlinux over the initrd, or by the vmlinux overwriting the > initrd when relocating itself. > > QEMU does put the linux,initrd-start and linux,initrd-end properties into > the devicetree to vmlinux to find the initrd. We can work around the SLOF > bug by also looking those properties in the zImage. This is not a bug. What boot protocol requires passing the initrd start and size in GPR3, GPR4? The CHRP binding (what SLOF implements) requires passing two zeroes here. And ePAPR requires passing the address of a device tree and a zero, plus something in GPR6 to allow distinguishing what it does. As Alexey says, initramfs works just fine, so please use that? initrd was deprecated when this code was written already. Segher