From patchwork Fri Apr 28 19:18:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1775130 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=JCIgwKkQ; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Q7MsJ0nVVz23tZ for ; Sat, 29 Apr 2023 05:21:08 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id E754C863A5; Fri, 28 Apr 2023 21:19:11 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="JCIgwKkQ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 2C7DC8603D; Fri, 28 Apr 2023 21:18:59 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x135.google.com (mail-il1-x135.google.com [IPv6:2607:f8b0:4864:20::135]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 1002085FE8 for ; Fri, 28 Apr 2023 21:18:56 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x135.google.com with SMTP id e9e14a558f8ab-32ad8ca1e69so522565ab.3 for ; Fri, 28 Apr 2023 12:18:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1682709524; x=1685301524; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HgWIwQklHzUNMG+PsNkthjrHHZaZM8U6fCF7KXPKaGQ=; b=JCIgwKkQxFmqLmjquWqpEUx86UIo6tJH3plQuUDJec8FKTxjW3Wx8yI/FCaWRVEa4w 8SUg8JjQUsQ9BSAVtznvZBKhmP8iVHukz41Rq9r5k0ghqqXJY3srMjf5E8+8JMIjlhSV ICEN+GUdL0i+bPICf5KgH5WatArEEuZ9XQLyI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682709524; x=1685301524; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HgWIwQklHzUNMG+PsNkthjrHHZaZM8U6fCF7KXPKaGQ=; b=ktlu4Eczeli1iHYP67/vE6UVQ1gwKyYX8aG0TRVqCqjSQZ7g1C1evMBjQBzlFr5t1f uDfdbHEo2EFyXfxZxLN5Z8cKuIBke7nJlyhpOrK3PmR8kR/siPn7zXBJgVjFNhlDY1e2 jBiE5uhgwODrJHlxMPdXv8usbQh+DgAXA8p24DSqg4tqau9kaFct+QeOWPeXihEuFDPN 28HP0zEpXbcWJv7GtHSpdtm2Dt3Q4g9SqFvoO/8ZZ1yK99kgs4VmRZFHu89Yu9JdpGkb OaE8+OC3qAm3gzRQjJXFXGA6PtHitLN6n07LZQtjoNrM7ia89rKzYMBvRVMyrUe92kIN edew== X-Gm-Message-State: AC+VfDyHdrnu7kNGVk6pIuTvEPl5aPAKwGiz8vHk33732opNv+UHUhI4 GgwpzEgf6R84/dWEi4aqDigYAGhxBqZQjwWILCM= X-Google-Smtp-Source: ACHHUZ6Rz356g7T+pX/wNCgx8NxRI0MW3gw9qAY52GfWVrgdEc5cIUvfQ8fQidl2UUt+rvrWauQ2Qg== X-Received: by 2002:a92:dc4c:0:b0:32b:5e:e22a with SMTP id x12-20020a92dc4c000000b0032b005ee22amr4095061ilq.17.1682709524157; Fri, 28 Apr 2023 12:18:44 -0700 (PDT) Received: from kea.bld.corp.google.com ([2620:15c:183:200:9261:21dc:edb:e426]) by smtp.gmail.com with ESMTPSA id l12-20020a0566380d8c00b0041407c67451sm1698811jaj.165.2023.04.28.12.18.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Apr 2023 12:18:43 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Tom Rini , Simon Glass , Bin Meng Subject: [PATCH 15/18] x86: zimage: Export the function to obtain the cmdline Date: Fri, 28 Apr 2023 13:18:15 -0600 Message-ID: <20230428191819.3070393-11-sjg@chromium.org> X-Mailer: git-send-email 2.40.1.495.gc816e09b53d-goog In-Reply-To: <20230428191819.3070393-1-sjg@chromium.org> References: <20230428191819.3070393-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Allow reading the command line from a zimage, so that it can be recorded in the bootflow. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- arch/x86/include/asm/zimage.h | 10 ++++++++++ arch/x86/lib/zimage.c | 11 ++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/zimage.h b/arch/x86/include/asm/zimage.h index 966d7224eb1..9ad74dc0b94 100644 --- a/arch/x86/include/asm/zimage.h +++ b/arch/x86/include/asm/zimage.h @@ -89,4 +89,14 @@ void zimage_dump(struct boot_params *base_ptr); int zboot_start(ulong addr, ulong size, ulong initrd, ulong initrd_size, ulong base, char *cmdline); +/* + * zimage_get_kernel_version() - Get the version string from a kernel + * + * @params: boot_params pointer + * @kernel_base: base address of kernel + * Return: Kernel version as a NUL-terminated string + */ +const char *zimage_get_kernel_version(struct boot_params *params, + void *kernel_base); + #endif diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c index 540d4d888bc..062e3d3e315 100644 --- a/arch/x86/lib/zimage.c +++ b/arch/x86/lib/zimage.c @@ -181,7 +181,7 @@ static int setup_device_tree(struct setup_header *hdr, const void *fdt_blob) return 0; } -static const char *get_kernel_version(struct boot_params *params, +const char *zimage_get_kernel_version(struct boot_params *params, void *kernel_base) { struct setup_header *hdr = ¶ms->hdr; @@ -189,10 +189,14 @@ static const char *get_kernel_version(struct boot_params *params, const char *s, *end; bootproto = get_boot_protocol(hdr, false); + log_debug("bootproto %x, hdr->setup_sects %x\n", bootproto, + hdr->setup_sects); if (bootproto < 0x0200 || hdr->setup_sects < 15) return NULL; /* sanity-check the kernel version in case it is missing */ + log_debug("hdr->kernel_version %x, str at %p\n", hdr->kernel_version, + kernel_base + hdr->kernel_version + 0x200); for (s = kernel_base + hdr->kernel_version + 0x200, end = s + 0x100; *s; s++) { if (!isprint(*s)) @@ -239,7 +243,7 @@ struct boot_params *load_zimage(char *image, unsigned long kernel_size, log_debug("Using boot protocol version %x.%02x\n", (bootproto & 0xff00) >> 8, bootproto & 0xff); - version = get_kernel_version(params, image); + version = zimage_get_kernel_version(params, image); if (version) printf("Linux kernel version %s\n", version); else @@ -728,7 +732,8 @@ void zimage_dump(struct boot_params *base_ptr) print_num("Real mode switch", hdr->realmode_swtch); print_num("Start sys seg", hdr->start_sys_seg); print_num("Kernel version", hdr->kernel_version); - version = get_kernel_version(base_ptr, (void *)state.bzimage_addr); + version = zimage_get_kernel_version(base_ptr, + (void *)state.bzimage_addr); if (version) printf(" @%p: %s\n", version, version); print_num("Type of loader", hdr->type_of_loader);