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 Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1AAC0C433F5 for ; Wed, 27 Apr 2022 19:48:32 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8F50E83B9F; Wed, 27 Apr 2022 21:48:20 +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="jrXDLrE0"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 688A8810FC; Wed, 27 Apr 2022 21:48:18 +0200 (CEST) Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) (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 C88CF83B74 for ; Wed, 27 Apr 2022 21:48: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=sjg@chromium.org Received: by mail-wr1-x42b.google.com with SMTP id i5so3887321wrc.13 for ; Wed, 27 Apr 2022 12:48:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DqA74o+OxWvzWD0JwVMPHvPHLhpjE4FYkQBxCN6CEvc=; b=jrXDLrE0BccGVQOl0ABJmAEhpW2IKs7JDMsYo2uE5ylRf0NXkykuXZSGSCzJSTA8PS kSiG4TyKUSK3emP2/PB+4cWuDtKeO1hsi4hdsPrJc945XA+IIDQ5VhtDY1AlxzKEPYht 7v5vNTTbTIAsegRiFPZ7eC/nwCv0HhktjqDxg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DqA74o+OxWvzWD0JwVMPHvPHLhpjE4FYkQBxCN6CEvc=; b=00iZv9y/CKN4B6ZEdaqvN3I39CQDYk0V1jpGsNrMH+UELGpNO/MAY/DYojgBxR5AgL N+KVDzNkqFMyq7TOLCUPfKLLIjObPbRBgndX0JlF/b0hb+55mHbBW8iCzibm84PRvyyy vHHje3+tANPY5SU2OA9VH7Lryxu5vbwIrpdIvgxQsiVjVMbii3wMRAPCZC54lxtn66Cl Ns+pX6CY6X/y4SeyHzX3rINo7tChcquUQzs8XuFk3emECNpv+UAeV5c7dc6j3S9AftU4 8ZiC/wbZEiWVyufCXY0SNhf3pxBdG+76ByeXtybmfiJlCu/m+GXnM+9q1s3oU6tQfh1j ZqaA== X-Gm-Message-State: AOAM531ubX2dZfBeL68DrEuhU2EDnFlX8YIBdfNaFeW25oFrxO16gqeN ChKTaoeUR9xw79I00IgEecGZGjWSd57aRnT/ X-Google-Smtp-Source: ABdhPJwaMPFXp2LtteTioNApsLd4/Ppj6oZwItowYN27WZlSzX7HaqySdkpSJBIFHbyGkroq2vIbgg== X-Received: by 2002:a05:6000:223:b0:20a:db3a:e761 with SMTP id l3-20020a056000022300b0020adb3ae761mr13635653wrz.43.1651088891065; Wed, 27 Apr 2022 12:48:11 -0700 (PDT) Received: from sjg1.roam.corp.google.com (246.45-246-81.adsl-static.isp.belgacom.be. [81.246.45.246]) by smtp.gmail.com with ESMTPSA id d13-20020adfc08d000000b0020ad7b380d3sm10477207wrf.6.2022.04.27.12.48.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 12:48:10 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Philippe Reynes , Marek Vasut , Tom Rini , Simon Glass , Heinrich Schuchardt , Ilias Apalodimas Subject: [PATCH 2/2] sandbox: Avoid binman error when run without device tree Date: Wed, 27 Apr 2022 13:47:57 -0600 Message-Id: <20220427194757.90810-2-sjg@chromium.org> X-Mailer: git-send-email 2.36.0.464.gb9c8b46e94-goog In-Reply-To: <20220427194757.90810-1-sjg@chromium.org> References: <20220427194757.90810-1-sjg@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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.5 at phobos.denx.de X-Virus-Status: Clean With sandbox, U-Boot can be run without a device tree (i.e. no -d or -T parameter). In this case an empty device tree is created for convenience. With a recent change this causes an error due to the missing '/binman' node. Add this node to avoid the problem, as well as a test that U-Boot can be run without a device tree. Fixes: 059df5624b ("arch: Kconfig: imply BINMAN for SANDBOX") Fixes: https://source.denx.de/u-boot/u-boot/-/issues/11 Signed-off-by: Simon Glass --- arch/sandbox/cpu/cpu.c | 27 ++++++++++++++++++++++++++- test/py/tests/test_help.py | 14 ++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c index ff0fa8a6853..7a82798c36d 100644 --- a/arch/sandbox/cpu/cpu.c +++ b/arch/sandbox/cpu/cpu.c @@ -291,6 +291,31 @@ void invalidate_dcache_range(unsigned long start, unsigned long stop) { } +/** + * setup_auto_tree() - Set up a basic device tree to allow sandbox to work + * + * This is used when no device tree is provided. It creates a simple tree with + * just a /binman node. + * + * @blob: Place to put the created device tree + * Returns: 0 on success, -ve FDT error code on failure + */ +static int setup_auto_tree(void *blob) +{ + int err; + + err = fdt_create_empty_tree(blob, 256); + if (err) + return err; + + /* Create a /binman node in case CONFIG_BINMAN is enabled */ + err = fdt_add_subnode(blob, 0, "binman"); + if (err < 0) + return err; + + return 0; +} + void *board_fdt_blob_setup(int *ret) { struct sandbox_state *state = state_get_current(); @@ -303,7 +328,7 @@ void *board_fdt_blob_setup(int *ret) blob = map_sysmem(CONFIG_SYS_FDT_LOAD_ADDR, 0); *ret = 0; if (!state->fdt_fname) { - err = fdt_create_empty_tree(blob, 256); + err = setup_auto_tree(blob); if (!err) goto done; printf("Unable to create empty FDT: %s\n", fdt_strerror(err)); diff --git a/test/py/tests/test_help.py b/test/py/tests/test_help.py index d50295e5bd0..03b9d91c117 100644 --- a/test/py/tests/test_help.py +++ b/test/py/tests/test_help.py @@ -2,7 +2,21 @@ # Copyright (c) 2015 Stephen Warren # Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. +import pytest + def test_help(u_boot_console): """Test that the "help" command can be executed.""" u_boot_console.run_command('help') + +@pytest.mark.boardspec('sandbox') +def test_help_no_devicetree(u_boot_console): + try: + cons = u_boot_console + cons.restart_uboot_with_flags([], use_dtb=False) + cons.run_command('help') + output = cons.get_spawn_output().replace('\r', '') + assert 'print command description/usage' in output + finally: + # Restart afterward to get the normal device tree back + u_boot_console.restart_uboot() -- 2.36.0.464.gb9c8b46e94-goog