Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp857189imj; Fri, 15 Feb 2019 07:58:09 -0800 (PST) X-Google-Smtp-Source: AHgI3IbFcD3jmKaoCBAmUsK5rINdF+CTMSXRzedbkDGSpDxNxeIFAz7ZDSX13aaI3Ysx3Lhb538O X-Received: by 2002:a17:902:9884:: with SMTP id s4mr10375504plp.1.1550246289276; Fri, 15 Feb 2019 07:58:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550246289; cv=none; d=google.com; s=arc-20160816; b=U8xZyvlkhU53CkKo+atu0ROhS0yb7wfdDkxGuTo4f9k+61xRBLzbk4lAIRyhiWnjqJ 0SC6BWElOYPb6BaFXzzmk1McGxQ4vDrjXMonzFpsmHju94rz1BdQIVvVhOeYSGLHrLK8 JxTj6xEfTEOn7NFz0C3JwAqgsuLcaaXCowWlAIekj/fBi6kj/Q7wQJln6zoI7fE74z1s 2poSSxESIhjskpSuCrbTGoJlzkKIlUJ7mNnRhTe8ZK55R4WTlV2JtnlYqVRFxiDBSXkF zRmvWnt92hqxcdRQWGmwe3+Ps6JjOwEHRNqrtoSQOP6IWeJQ5RnV3kusKN0ReKiF99+e gpmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=ZXm5+/gsOXGIPIhmQii8U4FW92DPwvJV91xcsb7t5do=; b=sq9ZHwrhpJkOE2KEDDJO1FGwSargSVxOS4SQ+z3Fmgl3YCuFZObKmZ0gkbzhfohKSd i0/3NFIeKSazxLDL3AKGle+CeIClfmO45sktBMMGWD/BdN0v0QKH2QlgvpvdC/1ERCU6 Lok0yaa16pXbN0VxTUJgyYYWjza5lCHNqJVGbCkgPffZGDX98vIa6xxSB/zHGlSPJocs drl1AzEVNyxNfpguTvx4TGtIVPrfxmsraX+yFJLVsWPVnyS7jyk+66yruC8BrP2pDUr1 hLLbM8gxoH4N26/qAqQT6fKGtMkDZxM3LgcBpNEuWHefX4h9aPe0s05+FvmEXmvnPxhv 88ZA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=JU3uVxN3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p7si5538528pgh.84.2019.02.15.07.57.53; Fri, 15 Feb 2019 07:58:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=JU3uVxN3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405337AbfBOJuA (ORCPT + 99 others); Fri, 15 Feb 2019 04:50:00 -0500 Received: from mail-ot1-f67.google.com ([209.85.210.67]:33831 "EHLO mail-ot1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726881AbfBOJt7 (ORCPT ); Fri, 15 Feb 2019 04:49:59 -0500 Received: by mail-ot1-f67.google.com with SMTP id 98so15619228oty.1 for ; Fri, 15 Feb 2019 01:49:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ZXm5+/gsOXGIPIhmQii8U4FW92DPwvJV91xcsb7t5do=; b=JU3uVxN3pLK2/fLiCMb0TOILOhsBwJxc0+b4YwDYHin4Qtz89WA738OWYrYbvdFrTT GSCFiGi3BSL3Dzy69gl/KML0E2LmvGwCjERlHEWF/AZrT5GCdBZ30/+v5edLaTvhoKGg qc3XnNGuENyL+XhbviDiuETh68IEQLHTExtzUYN7qd3becGeQYsUb4NIXuh2M6v3Dvz4 834SySmZaIeCNuJEhuPzKr/cU3X/OEu1oNuS2OsQYYwchO32VvYP1H/uccR0jRqcKxcC vAlTLEBzV3rEC62sOnRafU+TFN8tEcCqNxc9Y0I7mfYQNoZcD1LXtNPKGDpaUSsFgkV4 9CNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ZXm5+/gsOXGIPIhmQii8U4FW92DPwvJV91xcsb7t5do=; b=jvJ01Y+u0RBWaChjFZ4DI/rnLgQZXaRxs5MnVGvTo8VbDuCDcTFr/WbsYwnI+1fzDJ Ue22RuUaoJW2CXAbI80bPJL9m2hQ5mHp5Wyg2LqJ4dLDvozPIFZvZ751beuPtXJzbJA5 ojAJKRVUpn5++WlHICg6WAmLI+BfRrNfP2WaMZn9ARCIIEI7yHCIDHpk7EIBQP48bZ4h rGFTJ+azatEW00EXeq3jnf2k6nuaWjrF2YLMsEXcnLLXlRtiL8ti42RqM9VOwjP4Bu/Z 7YTNrv6sPyjkdApps3UTYCfnPMHCzV0qms3HvXS/71EsCEzu9Fv3BHwGwRaN+WT+2xHC W7xg== X-Gm-Message-State: AHQUAuYUQ5/AM5pT1VgKtP2Qu8M0Y9Tipw7B0aQ2sjLA7qqJVZLhDWsh jAGAfbm6QH9Jeq/0PxKWZ5iqccDGBUsDBaWGUWrQmA== X-Received: by 2002:a9d:6401:: with SMTP id h1mr5031198otl.230.1550224197655; Fri, 15 Feb 2019 01:49:57 -0800 (PST) MIME-Version: 1.0 References: <20190212185305.112847-1-brendanhiggins@google.com> <20190212185305.112847-2-brendanhiggins@google.com> <4cb7ca12-ce60-7516-b7eb-aef08f607acc@gmail.com> In-Reply-To: From: Brendan Higgins Date: Fri, 15 Feb 2019 01:49:45 -0800 Message-ID: Subject: Re: [PATCH v1 1/1] of: unittest: unflatten device tree on UML when testing To: Frank Rowand Cc: Rob Herring , Luis Chamberlain , devicetree , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 14, 2019 at 6:48 PM Frank Rowand wrote: > > On 2/14/19 5:26 PM, Brendan Higgins wrote: > > On Thu, Feb 14, 2019 at 4:10 PM Frank Rowand wrote: > >> > >> On 2/12/19 10:53 AM, Brendan Higgins wrote: > >>> UML supports enabling OF, and is useful for running the device tree > >>> tests, so add support for unflattening device tree blobs so we can > >>> actually use it. > >>> > >>> Signed-off-by: Brendan Higgins > >>> --- > >>> drivers/of/unittest.c | 3 +++ > >>> 1 file changed, 3 insertions(+) > >>> > >>> diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c > >>> index 84427384654d5..effa4e2b9d992 100644 > >>> --- a/drivers/of/unittest.c > >>> +++ b/drivers/of/unittest.c > >>> @@ -2527,6 +2527,9 @@ static int __init of_unittest(void) > >>> } > >>> of_node_put(np); > >>> > >>> + if (IS_ENABLED(CONFIG_UML)) > >>> + unflatten_device_tree(); > >>> + > >>> pr_info("start of unittest - you will see error messages\n"); > >>> of_unittest_check_tree_linkage(); > >>> of_unittest_check_phandles(); > >>> > >> > >> (Insert my usual disclaimer that I am clueless about UML, I still need to learn > >> about it...) > >> > >> This does not look correct to me. > >> > >> A few lines earlier in of_unittest(), the live devicetree needs to exist for > >> unittest_data_data() and a few of_*() functions to succeed. So it seems > >> that the unflatten_device_tree() for uml should be at the beginning of > >> of_unittest(). > > > > It is true that other functions ahead of it depend on the presence of > > a device tree, but an unflattened tree does get linked in somewhere > > else. Despite that, this is needed for overlay_base_root. I got > > similar behavior if you don't link in a flattened device tree on x86. > > Thus, the order in which you call them doesn't actually seem to > > matter. I found no difference from changing the order in UML myself. > > > > Without my patch we get the following error, > > ### dt-test ### FAIL of_unittest_overlay_high_level():2372 > > overlay_base_root not initialized > > ### dt-test ### end of unittest - 219 passed, 1 failed > > > > With my patch we get: > > ### dt-test ### end of unittest - 224 passed, 0 failed > > Thanks for reporting both the failure and the success cases, > that helps me understand a little bit better. > > If instead of the above patch, if you add the following (untested, > not even compile tested) to the beginning of of_unittest(): > > if (IS_ENABLED(CONFIG_UML)) > unittest_unflatten_overlay_base(); > > does that also result in a good test result of: > > ### dt-test ### end of unittest - 224 passed, 0 failed Yep, I just tried it. It works as you suspected. > > I think I need to find some time to build and boot a UML kernel soon. It's really no big deal, just copy the .config I sent and build with `make ARCH=um` then you "boot" the kernel with `./linux` (note this will mess up your terminal settings); that's it! (Shameless plug: you can also try it out with the KUnit patchset with `./tools/testing/kunit/kunit.py --timeout=30 --jobs=12 --defconfig`, which builds the kernel with a pretty similar config, boots the kernel, and then parses the output for you. ;-) ) > > My current _guess_ is that the original problem was not a failure to > unflatten any present devicetree in UML but instead that the UML > kernel does not call unflatten_device_tree() and thus fails to > indirectly call unittest_unflatten_overlay_base(), which is > called by unflatten_device_tree(). I think you are right. Sorry for not noticing this before making my change. Since it was pretty much the only architecture (the only one I care about) that does not unflatten DT, I assumed that was the problem. I didn't put too much thought into it after that point beyond making sure that it did what I wanted. > > unittest_unflatten_overlay_base() is an unfortunate wart that I > added, but I don't have a better alternative yet. Hey, I get it. No worries. In any case, it seems like unittest_unflatten_overlay_base() is the right function to call there. I will send out patch. Do you want me to send a patch on top of this one, or do you want to revert this one and for me to send a v2 follow up to this patch? I don't care either way, whatever you guys prefer. Cheers