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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5FA9C19F2B for ; Fri, 29 Jul 2022 07:47:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235143AbiG2Hrm (ORCPT ); Fri, 29 Jul 2022 03:47:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54096 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235168AbiG2HrW (ORCPT ); Fri, 29 Jul 2022 03:47:22 -0400 Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com [IPv6:2607:f8b0:4864:20::830]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6612B41D11 for ; Fri, 29 Jul 2022 00:46:35 -0700 (PDT) Received: by mail-qt1-x830.google.com with SMTP id bz13so2789800qtb.7 for ; Fri, 29 Jul 2022 00:46:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7a2a0ZLCLii8uN3XM9tRZ1FUmDJCQ4nEqHpPYUeU1zY=; b=lCPqwpRvt/NnqR0ZT0novgznUAPcweloyzGT0IX8/zddycJU89DRSkB+oFLmpschbb AkOOCugD++rl8invHxWlDbFHzH8HTaPpZKFS6ukn5qn99+sIxSsBCdYHxmvU7yJKMsQ5 aez4q352RrBSNOY21itFbb9FZZI6D/LvMFP+NIILvGnwCRbA65H7Xi8rDX0eXbACPKFw 6pZRXhOV4Fzz+0R7CNHkko+GrjeC6IeVy9+j/DSjULjgFRyLf6lsall7TMJ+14sFanqX XfrYyWQUvAhw6+CGY4+8NtqnN/pvbyi4su/WbLZgnrXTOs1Fp5YN/WDYwT0fWHx2HFKb k6gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7a2a0ZLCLii8uN3XM9tRZ1FUmDJCQ4nEqHpPYUeU1zY=; b=BnQa8GIH+Cv15eMzmDlKJy5EcRh1NqwkCfD89XqM9mLJxu++tccxAQ88Oypfbb1f42 qUSjq1/yZiRivpsqBv9DcgC6MQTCKAUHBTK9WBYnJAXuIUX3sFJsv3DyrwiA70igYZvS 1uV/rwDWgSRgNQC6hg3ZLl8+P92FYsTNeDheZ93gOFOJ8hjmkUx41JNFxfFJ4VL5fVDI B29I4uD0QZzq0mMbFOPa+eMnUTBJyycVj1/2tslNFzWyjX78aDUNK5qVQ4H5C0kMi3uG fj+l+A0orSbExvFMaDZfeHxlkgA3zm/sQ8FW2BDqzykzpGidrgjIG4oJiuV3XaFrY+xS TlSw== X-Gm-Message-State: AJIora+ja4iX9ztgCs6FgggivOXbxo2dwo0Qy8yxeBtMfWDAYHrnQod9 hYaOqvJW4nd9o+UWxg1x5qZtPSGL1t6Z68bosjZTLA== X-Google-Smtp-Source: AGRyM1t17J23zmT/KYA0kbJ3uBVjWNhg+kTZLWesv1/WiyxQ4ejCi05swyXT+0SsIdppg6OYNtteLB+rxLJ8PcETGrg= X-Received: by 2002:ac8:5942:0:b0:31f:39f6:aba7 with SMTP id 2-20020ac85942000000b0031f39f6aba7mr2229638qtz.295.1659080792592; Fri, 29 Jul 2022 00:46:32 -0700 (PDT) MIME-Version: 1.0 References: <20220727100615.638072-1-dmitry.baryshkov@linaro.org> In-Reply-To: From: Dmitry Baryshkov Date: Fri, 29 Jul 2022 10:46:21 +0300 Message-ID: Subject: Re: [PATCH] kbuild: take into account DT_SCHEMA_FILES changes while checking dtbs To: Masahiro Yamada Cc: Rob Herring , Michal Marek , Nick Desaulniers , Linux Kbuild mailing list , "linux-kernel@vger.kernel.org" , Krzysztof Kozlowski , Bjorn Andersson , linux-arm-msm Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On Fri, 29 Jul 2022 at 10:05, Masahiro Yamada wrote: > > On Fri, Jul 29, 2022 at 3:53 PM Dmitry Baryshkov > wrote: > > > > On Fri, 29 Jul 2022 at 08:55, Masahiro Yamada wrote: > > > > > > On Thu, Jul 28, 2022 at 2:36 AM Rob Herring wrote: > > > > > > > > On Wed, Jul 27, 2022 at 4:06 AM Dmitry Baryshkov > > > > wrote: > > > > > > > > > > It is useful to be able to recheck dtbs files against a limited set of > > > > > DT schema files. This can be accomplished by using differnt > > > > > DT_SCHEMA_FILES argument values while rerunning make dtbs_check. However > > > > > for some reason if_changed_rule doesn't pick up the rule_dtc changes > > > > > (and doesn't retrigger the build). > > > > > > > > > > Fix this by changing if_changed_rule to if_changed_dep and squashing DTC > > > > > and dt-validate into a single new command. Then if_changed_dep triggers > > > > > on DT_SCHEMA_FILES changes and reruns the build/check. > > > > > > > > > > Signed-off-by: Dmitry Baryshkov > > > > > --- > > > > > scripts/Makefile.lib | 14 ++++++-------- > > > > > 1 file changed, 6 insertions(+), 8 deletions(-) > > > > > > > > > > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib > > > > > index c88b98b5dc44..3df470289382 100644 > > > > > --- a/scripts/Makefile.lib > > > > > +++ b/scripts/Makefile.lib > > > > > @@ -383,17 +383,15 @@ DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m) > > > > > DT_BINDING_DIR := Documentation/devicetree/bindings > > > > > DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.json > > > > > > > > > > -quiet_cmd_dtb_check = CHECK $@ > > > > > - cmd_dtb_check = $(DT_CHECKER) $(DT_CHECKER_FLAGS) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@ || true > > > > > +quiet_cmd_dtb = DTC/CHECK $@ > > > > > > > > This is supposed to be 7 chars or less. DTCCHK or DTC_CHK perhaps. Or > > > > always do just 'DTC'. I can fixup when applying. > > > > > > > > I'll give it a few days for other comments. > > > > > > > > > > > > When you change DT_SCHEMA_FILES, re-running dt-validate should be enough. > > > You do not need to re-run dtc. > > > > > > I guess the strangeness comes from the fact that you are trying to do the > > > two different things in a single rule. > > > > The issue is that with the current rules the dt-validate isn't > > re-executed on DT_SCHEMA_FILES changes. Thus comes my proposal. > > Correct. > > What I said is like this. > > # touch the timestamp file, %.dtb.checked > $(obj)/%.dtb.checked: $(obj)/%.dtb $(DT_TMP_SCHEMA) FORCE > $(call if_changed_rule,dtb_check) > > $(obj)/%.dtb: $(src)/%.dts $(DTC) $FORCE > $(call if_changed_rule,dtc) > > $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE > $(call if_changed_dep,dtc) > > > With the dtc/check split, we can avoid unneeded regeneration of > %.dtb when DT_TMP_SCHEMA or DT_SCHEMA_FILES is > changed. > > > One drawback is we track %.dtb.checked and and %.dtb separately, > so something like 53182e81f47d4ea0c727c49ad23cb782173ab849 > may come back. It's up to you and Rob, but I'd really prefer a simpler solution here. Regenerating dtbs sounds like a minor pain compared to hacking the top-level Makefile again. What I really like is that if one has CHECK_DTBS=y (for whatever reason), he can not generate dtb without validation. > BTW, we do not check %.dtbo, why? > > At least, 53182e81f47d4ea0c727c49ad23cb782173ab849 > was trying to check %.dtbo The commit ef8795f3f1ce ("dt-bindings: kbuild: Use DTB files for validation") separated .dtb and .dtbo paths. dt-validate is not prepared to be executed on top of the .dtbo file. And this is quite logical. The dtbo is an overlay, a patch. So it doesn't have to follow the schema on its own. We should probably make sure that multi-dtb files generated via fdtoverlay are also validated, but it can go in a separate commit. -- With best wishes Dmitry