Message ID | 1549390526-24246-39-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show
Return-Path: <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org> X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=<UNKNOWN>) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="d83chxxH"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43vDBG5y6qz9s7T for <incoming@patchwork.ozlabs.org>; Wed, 6 Feb 2019 05:48:54 +1100 (AEDT) Received: from localhost ([127.0.0.1]:37814 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>) id 1gr5m8-0003cS-Jq for incoming@patchwork.ozlabs.org; Tue, 05 Feb 2019 13:48:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36418) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <paolo.bonzini@gmail.com>) id 1gr5Gd-0002cS-W7 for qemu-devel@nongnu.org; Tue, 05 Feb 2019 13:16:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <paolo.bonzini@gmail.com>) id 1gr5Gc-00047r-BQ for qemu-devel@nongnu.org; Tue, 05 Feb 2019 13:16:19 -0500 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:37937) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from <paolo.bonzini@gmail.com>) id 1gr5Gb-0003zj-LO for qemu-devel@nongnu.org; Tue, 05 Feb 2019 13:16:17 -0500 Received: by mail-wr1-x441.google.com with SMTP id v13so4717969wrw.5 for <qemu-devel@nongnu.org>; Tue, 05 Feb 2019 10:16:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=2ZmDsNTvSqq9wAUp4eF9ynOF4kD3WulPOABTzSsTzHQ=; b=d83chxxHcF4/0EFbdxko1+Q0OykaoS8jm+a+XRCAB0UvJGGRqsEEaYxEZB62qxoGkK QEhX/PfvaYK9osqDZpW0u+/JSuGbhU/V/+BwYD+ccTJ82rkB2TG9myN0vMfIyZL8VP5R P5f/M5eE23EDHNHwvKBMvdcRpQimdb6vQ12BHmWDilognQGtFXC1VSfQLhAv4vYuaTWq c7ezRtzXuiTzoAeWrpGGJK8eHM0QYOKiR1DZ5TPqE0Sxo5C/v/UM2zF+4kfPxtN5m7m9 k1BujQSpK34wp+RTUXQJX0WHD92dyjNyqJ1ccXBtJL5nZCogwaFh2qlTVBpWQj1Iyx8U N2Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=2ZmDsNTvSqq9wAUp4eF9ynOF4kD3WulPOABTzSsTzHQ=; b=ebJC215RXEFFpFWHKYLnT4Rv38jf1ekjq9K1TaoJULlI1T7Qt98rMfyjjVCZD9PwZ9 GheIztL+6d2LWTOcT0ouY9EhLYKmGLiSbKrhfxxlCobPxb9AhRoX3GtFHEJIsd3nEYbA tC8KwX47nKikb251UuI7Dj8eIEZELnONTcUCVkmvqau+V3eMAqJUFdB0fzDvw7iOV7us FnzdyjD8Bs3eC7q1aqaoLhbWX23GbQzVIwqgIGnUmGCYZ59mOX2oFJiDS/6LnI5xlAl2 7dTDNnzrHcb915CbGa4FWZhHAbBl569UDoqV//3F97qymvBZuxBCko2HQSP70v1tEtXF Dh1w== X-Gm-Message-State: AHQUAuauTfxjThRU7oJwfUriohErpuKtCVW4R2q6wor62wRdQvadFmME 2Ve4KMOmPq790QnGYYRb54B9pI+B X-Google-Smtp-Source: AHgI3IYTEBUdP5HCtHlhVtsZ6K9bU+FQgLShZ/sddDcePkzefzU7pMuC8VZQsDboL5cz450NQIytUg== X-Received: by 2002:a5d:6187:: with SMTP id j7mr4707264wru.300.1549390567327; Tue, 05 Feb 2019 10:16:07 -0800 (PST) Received: from 640k.lan ([93.56.166.5]) by smtp.gmail.com with ESMTPSA id p5sm8931665wmh.16.2019.02.05.10.16.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Feb 2019 10:16:06 -0800 (PST) From: Paolo Bonzini <pbonzini@redhat.com> To: qemu-devel@nongnu.org Date: Tue, 5 Feb 2019 19:14:48 +0100 Message-Id: <1549390526-24246-39-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1549390526-24246-1-git-send-email-pbonzini@redhat.com> References: <1549390526-24246-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 Subject: [Qemu-devel] [PULL 38/76] i386: allow to load initrd below 4 GB for recent linux X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: <qemu-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <http://lists.nongnu.org/archive/html/qemu-devel/> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Cc: "Michael S. Tsirkin" <mst@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>, Li Zhijian <lizhijian@cn.fujitsu.com>, Richard Henderson <rth@twiddle.net> Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org> |
Series |
[PULL,01/76] vhost-user-test: use g_cond_broadcast
|
expand
|
diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 9664822..7d8f351 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1299,7 +1299,26 @@ static void load_linux(PCMachineState *pcms, #endif /* highest address for loading the initrd */ - if (protocol >= 0x203) { + if (protocol >= 0x20c && + lduw_p(header+0x236) & XLF_CAN_BE_LOADED_ABOVE_4G) { + /* + * Linux has supported initrd up to 4 GB for a very long time (2007, + * long before XLF_CAN_BE_LOADED_ABOVE_4G which was added in 2013), + * though it only sets initrd_max to 2 GB to "work around bootloader + * bugs". Luckily, QEMU firmware(which does something like bootloader) + * has supported this. + * + * It's believed that if XLF_CAN_BE_LOADED_ABOVE_4G is set, initrd can + * be loaded into any address. + * + * In addition, initrd_max is uint32_t simply because QEMU doesn't + * support the 64-bit boot protocol (specifically the ext_ramdisk_image + * field). + * + * Therefore here just limit initrd_max to UINT32_MAX simply as well. + */ + initrd_max = UINT32_MAX; + } else if (protocol >= 0x203) { initrd_max = ldl_p(header+0x22c); } else { initrd_max = 0x37ffffff;