From patchwork Sun Mar 22 23:57:03 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 2037 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1774223868; bh=pHCa0daA6r1RIwWbXX0LtKo9b5JwANpfCgz4gkgP8CQ=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=E5g6VpUaiSWi/qc8/GTTpyWPqkKVHKrqpd1gBrOfWSQN/l8diM38NuZ/jvsMlmKel g1WNbac8mpe3t4U0v7EGl8YZenDOqo1pNp9xrJItUQuVFz9i1TF+lRW9ttaPFVp5vo WkTxoRjdIIgmaKNB245WCgUGZQ/7KEr56UypPNtQ2G3KXzPsTmWXuUrW+BAzIW3Z1q OgetXNCT22llajpVJIcEdrurhc+G0c8zkat3ktuzxPVND4ngPMJFbXhm3Q0wmvXIea Ap/cIFBucPKvetyX1l/eubbOv8y98dkOQUYfDKi9MncvTIBh3LOl/M3bf3wF16HNnC G5yQRjg44CFRA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 676D36A1EA for ; Sun, 22 Mar 2026 17:57:48 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id GqcmAH81-iRe for ; Sun, 22 Mar 2026 17:57:48 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1774223867; bh=pHCa0daA6r1RIwWbXX0LtKo9b5JwANpfCgz4gkgP8CQ=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=ITzlzCq8M3356Ltc494FvQWVoJquzmEa5zUCNObNs9ytsAU3f856CCvy9/vXy2ZkG B1o2QdwIOEwoO1g7TeQNRYVD1cDGB5Smz5p12/kMcu2vNy8I9jjMlSOJWpX5nU0Ns3 qDJHibE76ua66Ebt+towZlME84zggtKzn1WztXNOVkHfxAD84e4D/eYYcgqHbHTCOt EX1BPazK0e5AO1pu8gsuY5dwuutO2p30yroVinOcmrXWuFGgC4TS0xNMpPVPkUuHeE E2Qy5a04KMQ5w/MXAVuyM/ZJGl84e31VR5FXetu2zWHj3W9FVUObNCD83UCkpT/AYa 0eQZlt4Bj/+Aw== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 26DB86A1D7 for ; Sun, 22 Mar 2026 17:57:47 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1774223860; bh=oWKWoM0gTmREOTwOEIAAjq6Rgr8yKY/vj27SyArxnP0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HVM02utW+2oFPyrIdYt/i+ad6Lo2II07ZaxBjVY/JsrrBg2Q7Uo1sFEgd1xroIzma A74Apn/AXAcvsIN4wgcDNtsbepbybogj3+er0chWunzOd2K2YvMUeu/NvT/kw8P6/2 XubVP43vUGARWY37Vj209UFQ2L2ZJIWXvDV1uun1VGK04FBYtgrOH9ssRL1UYeLEJY gOzusCkgUxKiqlGAIv3htXQrrnq9oIsZPg8jKEZlFD8BoKsd6iW8m5sDzVxTOZGhJ/ t59MY2Qoj9xxUSjRki4Us3Z2iyyJHk7tVYhM3kG6nAqFKMOP0r/+Mu4C1YBOvLKuKS rZ65DJtL8WuRQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 273DC66F0C; Sun, 22 Mar 2026 17:57:40 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id cdd95yHeHLUY; Sun, 22 Mar 2026 17:57:40 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1774223859; bh=7mVWbhcpKXsW/BMc6YlZ7sYOqoxg3AYd1XqS13/c/TE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VkF+B2xoKr5EQA3suhLrENp/jQVXoZ2VEboWblQATH9xDVI3i/NLJRLontxT+9Qmi TXECRjRu2T5IAxNX9l4OwWO9ztHG8YgWDeE4BXTX7DRqtNODGMNhFJ5CwRCfb6NxXY 7pd7KU/i4Ow2OJrLrJGTLkBzEGhbvi629t8tzqxn6VSob16ujKuufa/SmU0mBdHo/U KIoFZIbdAuf+aYfvL3z7MmfaOs87cpkeG9sqN07M+aLQOG0tRlB8i8gYY/a00uEjJE XD7+rAjD4j7xK8nJIiTyqvcUbuqhS/Tq7YPCXrjz+6EJohSyGsolHSIO4j0ud+OLPY 4Yyr23YZBwfXg== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 82F5C6A1D7; Sun, 22 Mar 2026 17:57:39 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Sun, 22 Mar 2026 17:57:03 -0600 Message-ID: <20260322235719.1729267-6-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260322235719.1729267-1-sjg@u-boot.org> References: <20260322235719.1729267-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: GLVAFNWLQ3B3RPCFNFS5GYXYYND6DCKN X-Message-ID-Hash: GLVAFNWLQ3B3RPCFNFS5GYXYYND6DCKN X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 05/14] pxe: Allow the parser to suppress warning messages List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass The PXE parser prints informational messages like "Ignoring unknown command" and "Ignoring malformed menu command" unconditionally. This is useful during interactive boot, but not appropriate when parsing is done silently for metadata extraction, such as during bootflow scanning. Thread the pxe_context through parse_label() and parse_label_menu() so they can check ctx->quiet, and gate all three warning printf() calls on !ctx->quiet Set ctx->quiet in pxe_parse() since it is a non-interactive parsing API intended for callers that handle output themselves. Signed-off-by: Simon Glass --- boot/pxe_parse.c | 27 ++++++++++++++++----------- boot/pxe_utils.c | 1 + 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/boot/pxe_parse.c b/boot/pxe_parse.c index a33e40002e9..44cbb9aba86 100644 --- a/boot/pxe_parse.c +++ b/boot/pxe_parse.c @@ -498,8 +498,9 @@ static int parse_menu(struct pxe_context *ctx, char **c, struct pxe_menu *cfg, err = parse_sliteral(c, &cfg->bmp, limit); break; default: - printf("Ignoring malformed menu command: %.*s\n", - (int)(*c - s), s); + if (!ctx->quiet) + printf("Ignoring malformed menu command: %.*s\n", + (int)(*c - s), s); } free(t.val); if (err < 0) @@ -513,8 +514,9 @@ static int parse_menu(struct pxe_context *ctx, char **c, struct pxe_menu *cfg, /* * Handles parsing a 'menu line' when we're parsing a label. */ -static int parse_label_menu(char **c, struct pxe_menu *cfg, - struct pxe_label *label, const char *limit) +static int parse_label_menu(struct pxe_context *ctx, char **c, + struct pxe_menu *cfg, struct pxe_label *label, + const char *limit) { struct token t; char *s; @@ -536,8 +538,9 @@ static int parse_label_menu(char **c, struct pxe_menu *cfg, parse_sliteral(c, &label->menu, limit); break; default: - printf("Ignoring malformed menu command: %.*s\n", - (int)(*c - s), s); + if (!ctx->quiet) + printf("Ignoring malformed menu command: %.*s\n", + (int)(*c - s), s); } free(t.val); @@ -584,7 +587,8 @@ static int parse_label_kernel(char **c, struct pxe_label *label, * get some input we otherwise don't have a handler defined * for. */ -static int parse_label(char **c, struct pxe_menu *cfg, const char *limit) +static int parse_label(struct pxe_context *ctx, char **c, struct pxe_menu *cfg, + const char *limit) { struct token t; int len; @@ -614,7 +618,7 @@ static int parse_label(char **c, struct pxe_menu *cfg, const char *limit) err = 0; switch (t.type) { case T_MENU: - err = parse_label_menu(c, cfg, label, limit); + err = parse_label_menu(ctx, c, cfg, label, limit); break; case T_KERNEL: case T_LINUX: @@ -770,7 +774,7 @@ int parse_pxefile_top(struct pxe_context *ctx, char *p, const char *limit, err = parse_integer(&p, &cfg->timeout, limit); break; case T_LABEL: - err = parse_label(&p, cfg, limit); + err = parse_label(ctx, &p, cfg, limit); break; case T_DEFAULT: case T_ONTIMEOUT: @@ -806,8 +810,9 @@ int parse_pxefile_top(struct pxe_context *ctx, char *p, const char *limit, free(t.val); return 1; default: - printf("Ignoring unknown command: %.*s\n", - (int)(p - s), s); + if (!ctx->quiet) + printf("Ignoring unknown command: %.*s\n", + (int)(p - s), s); eol_or_eof(&p); } diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c index e5f1f3e46c2..f5f8e38de2e 100644 --- a/boot/pxe_utils.c +++ b/boot/pxe_utils.c @@ -1426,6 +1426,7 @@ struct pxe_context *pxe_parse(ulong addr, ulong size, const char *bootfile) free(ctx); return NULL; } + ctx->quiet = true; ctx->pxe_file_size = size; abuf_init_addr(&buf, addr, size);