All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Rob Herring <robh@kernel.org>
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: PCI schema accepts unevaluated properties
Date: Wed, 27 Apr 2022 08:29:24 +0200	[thread overview]
Message-ID: <345716e9-5624-5ba0-09f0-46e9850c546c@linaro.org> (raw)
In-Reply-To: <CAL_JsqJ3FiBci1+8oSOHA6GQ8Q3HHM3QcY+GFg=+KVZEQAnb6A@mail.gmail.com>

On 27/04/2022 04:36, Rob Herring wrote:
> On Sat, Apr 23, 2022 at 5:46 AM Krzysztof Kozlowski
> <krzysztof.kozlowski@linaro.org> wrote:
>>
>> Hi Rob,
>>
>> Dmitry pointed out interesting issue when writing PCI schema. Consider
>> the patch for Exynos PCI schema (which includes SNPS schema and
>> unevaluatedProperties:false):
>> https://pastebin.ubuntu.com/p/4SzxVP4N3j/
>>
>> This passes `make dt_binding_check
>> DT_SCHEMA_FILES=Documentation/devicetree/bindings/pci/` without a
>> problem. It should not. The property is nowhere described, so
>> unevaluatedProperties should scream.
>>
>> Other bindings using unevaluated:false and some ref, also has this
>> issue. The additionalProperties:false (when there is no ref for other
>> schema) works correct.
> 
> This is because I never committed the fix for all this which explains the issue:
> 
>     dtschema: Strip 'additionalProperties: true' from schemas
> 
>     An 'additionalProperties: true' makes all properties evaluated, so an
>     'unevaluatedProperties: false' schema doesn't work when referencing a
>     schema with 'additionalProperties: true'.
> 
>     Really, 'additionalProperties: true' should be dropped, but it is used as
>     a flag for common schemas which are usually incomplete and included by
>     device specific schemas. Removing it would mean dropping the meta-schema
>     requiring either 'additionalProperties' or 'unevaluatedProperties'.
> 
>     Signed-off-by: Rob Herring <robh@kernel.org>
> 
> Since snps,dw-pcie.yaml defines 'additionalProperties: true',
> everything is evaluated...

Thanks for explanation.

> 
> This fix needed schema fixes to land before I committed this, but it
> was the end of the year and I guess I forgot about it. Now, it looks
> like we have more to fix. :(  25 to be exact:
> 
> Documentation/devicetree/bindings/mfd/samsung,exynos5433-lpass.example.dtb:
> audio-subsystem@11400000: dma-controller@11420000: Unevaluated
> properties are not allowed ('#dma-channels', '#dma-requests',
> 'power-domains' were unexpected)

I'll fix the power-domains, but dma-channels/dma-requests should not
fail. This should be accepted through:
arm,pl330.yaml -> dma-controller.yaml -> dma-common.yaml

> Documentation/devicetree/bindings/mfd/samsung,exynos5433-lpass.example.dtb:
> dma-controller@11420000: Unevaluated properties are not allowed
> ('#dma-channels', '#dma-requests', 'power-domains' were unexpected)
> Documentation/devicetree/bindings/ufs/ti,j721e-ufs.example.dtb:
> ufs-wrapper@4e80000: ufs@4000: Unevaluated properties are not allowed
> ('power-domains' was unexpected)
> Documentation/devicetree/bindings/ufs/ti,j721e-ufs.example.dtb:
> ufs-wrapper@4e80000: ufs@4000: Unevaluated properties are not allowed
> ('power-domains' was unexpected)
> Documentation/devicetree/bindings/ufs/ti,j721e-ufs.example.dtb:
> ufs@4000: Unevaluated properties are not allowed ('power-domains' was
> unexpected)

I'll fix it.

> Documentation/devicetree/bindings/display/bridge/ingenic,jz4780-hdmi.example.dtb:
> hdmi@10180000: Unevaluated properties are not allowed ('ddc-i2c-bus'
> was unexpected)
> Documentation/devicetree/bindings/net/mctp-i2c-controller.example.dtb:
> i2c-mux: i2c@1: Unevaluated properties are not allowed
> ('mctp-controller' was unexpected)
> Documentation/devicetree/bindings/net/mediatek-dwmac.example.dtb:
> ethernet@1101c000: Unevaluated properties are not allowed
> ('power-domains' was unexpected)
> Documentation/devicetree/bindings/net/wireless/mediatek,mt76.example.dtb:
> wifi@18000000: Unevaluated properties are not allowed ('reset-names'
> was unexpected)
> Documentation/devicetree/bindings/net/cdns,macb.example.dtb:
> ethernet@ff0c0000: Unevaluated properties are not allowed
> ('#stream-id-cells' was unexpected)
> Documentation/devicetree/bindings/net/dsa/microchip,ksz.example.dtb:
> switch@0: Unevaluated properties are not allowed ('reg',
> 'spi-max-frequency' were unexpected)
> Documentation/devicetree/bindings/net/dsa/microchip,ksz.example.dtb:
> switch@1: Unevaluated properties are not allowed ('reg',
> 'spi-max-frequency' were unexpected)
> Documentation/devicetree/bindings/net/dsa/realtek.example.dtb:
> switch@29: Unevaluated properties are not allowed ('reg' was
> unexpected)
> Documentation/devicetree/bindings/pci/apple,pcie.example.dtb:
> pcie@690000000: Unevaluated properties are not allowed
> ('power-domains' was unexpected)
> Documentation/devicetree/bindings/pci/socionext,uniphier-pcie.example.dtb:
> pcie@66000000: Unevaluated properties are not allowed
> ('legacy-interrupt-controller' was unexpected)
> Documentation/devicetree/bindings/mtd/mxc-nand.example.dtb:
> nand-controller@d8000000: Unevaluated properties are not allowed
> ('nand-bus-width', 'nand-ecc-mode' were unexpected)
> Documentation/devicetree/bindings/mtd/ingenic,nand.example.dtb:
> nand-controller@1: Unevaluated properties are not allowed
> ('ingenic,nemc-tAS', 'ingenic,nemc-tAH', 'ingenic,nemc-tBP',
> 'ingenic,nemc-tAW', 'ingenic,nemc-tSTRV' were unexpected)
> Documentation/devicetree/bindings/mmc/brcm,sdhci-brcmstb.example.dtb:
> mmc@84b0000: Unevaluated properties are not allowed ('interrupt-names'
> was unexpected)
> Documentation/devicetree/bindings/mmc/brcm,sdhci-brcmstb.example.dtb:
> mmc@84b1000: Unevaluated properties are not allowed ('interrupt-names'
> was unexpected)
> Documentation/devicetree/bindings/usb/dwc3-xilinx.example.dtb: usb@0:
> usb@fe200000: Unevaluated properties are not allowed ('dma-coherent'
> was unexpected)
> Documentation/devicetree/bindings/usb/dwc3-xilinx.example.dtb:
> usb@fe200000: Unevaluated properties are not allowed ('dma-coherent'
> was unexpected)
> Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.example.dtb:
> flash@1: Unevaluated properties are not allowed ('rx-sample-delay-ns'
> was unexpected)
> Documentation/devicetree/bindings/spi/microchip,mpfs-spi.example.dtb:
> spi@20108000: Unevaluated properties are not allowed
> ('spi-max-frequency' was unexpected)
> Documentation/devicetree/bindings/spi/nvidia,tegra210-quad.example.dtb:
> flash@0: Unevaluated properties are not allowed
> ('nvidia,tx-clk-tap-delay', 'nvidia,rx-clk-tap-delay' were unexpected)

> Documentation/devicetree/bindings/spi/samsung,spi.example.dtb:
> audio-codec@0: Unevaluated properties are not allowed
> ('spi-max-frequency', 'controller-data' were unexpected)

I'll fix the audio-codec.

Best regards,
Krzysztof

  reply	other threads:[~2022-04-27  6:29 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-23 10:46 PCI schema accepts unevaluated properties Krzysztof Kozlowski
2022-04-27  2:36 ` Rob Herring
2022-04-27  6:29   ` Krzysztof Kozlowski [this message]
2022-04-27 14:53     ` Rob Herring
2022-04-27 15:04       ` Krzysztof Kozlowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=345716e9-5624-5ba0-09f0-46e9850c546c@linaro.org \
    --to=krzysztof.kozlowski@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.