Message ID | 20230113201038.267449-1-bhupesh.sharma@linaro.org |
---|---|
State | New |
Headers | show |
Series | dt-bindings: qcom: geni-se: Fix '#address-cells' & '#size-cells' related dt-binding error | expand |
On 13/01/2023 21:10, Bhupesh Sharma wrote: > Fix the following '#address-cells' & '#size-cells' related > dt-binding error: > > $ make dtbs_check > > From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml > arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: geniqup@4ac0000: > #address-cells:0:0: 2 was expected > From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml Don't we want rather to unify the soc address range? Best regards, Krzysztof
On Sun, 15 Jan 2023 at 20:57, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote: > > On 13/01/2023 21:10, Bhupesh Sharma wrote: > > Fix the following '#address-cells' & '#size-cells' related > > dt-binding error: > > > > $ make dtbs_check > > > > From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml > > arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: geniqup@4ac0000: > > #address-cells:0:0: 2 was expected > > From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml > > Don't we want rather to unify the soc address range? Well, the assumption in the original dt-bindings was that every reg variable is 4 * u32 wide (as most new qcom SoCs set #address- and #size-cells to <2>). However, that is not the case for all of the SoCs. So, ideally we shouldn't set the "#address-cells" and "#size-cells": as const: 2 in the bindings. See as an example: https://www.kernel.org/doc/Documentation/devicetree/bindings/usb/usb-device.yaml Thanks.
On 16.01.2023 16:43, Bhupesh Sharma wrote: > On Mon, 16 Jan 2023 at 13:23, Krzysztof Kozlowski > <krzysztof.kozlowski@linaro.org> wrote: >> >> On 15/01/2023 22:33, Bhupesh Sharma wrote: >>> On Sun, 15 Jan 2023 at 20:57, Krzysztof Kozlowski >>> <krzysztof.kozlowski@linaro.org> wrote: >>>> >>>> On 13/01/2023 21:10, Bhupesh Sharma wrote: >>>>> Fix the following '#address-cells' & '#size-cells' related >>>>> dt-binding error: >>>>> >>>>> $ make dtbs_check >>>>> >>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml >>>>> arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: geniqup@4ac0000: >>>>> #address-cells:0:0: 2 was expected >>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml >>>> >>>> Don't we want rather to unify the soc address range? >>> >>> Well, the assumption in the original dt-bindings was that every reg >>> variable is 4 * u32 wide (as most new qcom SoCs set #address- and >>> #size-cells to <2>). However, that is not the case for all of the >>> SoCs. >> >> Hm, which device of that SoC cannot be used with address/size cells 2? > > As noted in the git log already the geniqup on sm6115 / sm4250 cannot > be used with address/size cells 2 (See: > https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sm6115.dtsi#L795) SM6115 (and pretty much every other arm64 msm platform newer than 8916) should be using addr/size-cells = 2 along with (dma-)ranges of 36 bit, as that's what their smmus use and otherwise some addresses may get cut off in translation, or so the story went with 845 N years ago.. We can either pursue this patch or I can submit the 2-cell-ification if you don't plan on adding more nodes shortly Konrad > >>> So, ideally we shouldn't set the "#address-cells" and "#size-cells": >>> as const: 2 in the bindings. >>> >>> See as an example: >>> https://www.kernel.org/doc/Documentation/devicetree/bindings/usb/usb-device.yaml >> >> >> How USB device - so entirely different device, not MMIO! - is related here? >> >> Best regards, >> Krzysztof >>
On 16.01.2023 17:02, Bhupesh Sharma wrote: > > On 1/16/23 9:24 PM, Konrad Dybcio wrote: >> >> >> On 16.01.2023 16:43, Bhupesh Sharma wrote: >>> On Mon, 16 Jan 2023 at 13:23, Krzysztof Kozlowski >>> <krzysztof.kozlowski@linaro.org> wrote: >>>> >>>> On 15/01/2023 22:33, Bhupesh Sharma wrote: >>>>> On Sun, 15 Jan 2023 at 20:57, Krzysztof Kozlowski >>>>> <krzysztof.kozlowski@linaro.org> wrote: >>>>>> >>>>>> On 13/01/2023 21:10, Bhupesh Sharma wrote: >>>>>>> Fix the following '#address-cells' & '#size-cells' related >>>>>>> dt-binding error: >>>>>>> >>>>>>> $ make dtbs_check >>>>>>> >>>>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml >>>>>>> arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: geniqup@4ac0000: >>>>>>> #address-cells:0:0: 2 was expected >>>>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml >>>>>> >>>>>> Don't we want rather to unify the soc address range? >>>>> >>>>> Well, the assumption in the original dt-bindings was that every reg >>>>> variable is 4 * u32 wide (as most new qcom SoCs set #address- and >>>>> #size-cells to <2>). However, that is not the case for all of the >>>>> SoCs. >>>> >>>> Hm, which device of that SoC cannot be used with address/size cells 2? >>> >>> As noted in the git log already the geniqup on sm6115 / sm4250 cannot >>> be used with address/size cells 2 (See: >>> https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sm6115.dtsi#L795) >> SM6115 (and pretty much every other arm64 msm platform newer than 8916) >> should be using addr/size-cells = 2 along with (dma-)ranges of 36 bit, as >> that's what their smmus use and otherwise some addresses may get cut off >> in translation, or so the story went with 845 N years ago.. We can either >> pursue this patch or I can submit the 2-cell-ification if you don't plan on >> adding more nodes shortly > > > Have you tested this combination on SM6115 like SoCs with various IPs? I have tried a few experiments in the past and not all IPs work well with 36-bit DMA ranges (atleast not on the boards I have). Can you list any specific examples? I've been using it for quite some time now and I see nothing wrong.. > > So, I think it might lead to more breakage (unless we are sure of a well-tested fix). A simpler patch to fix the dt-bindings looks more useful IMO. I'm not saying no, you just have to convince Krzysztof :D Konrad > > Thanks, > Bhupesh
On 1/16/23 9:35 PM, Konrad Dybcio <konrad.dybcio@linaro.org> wrote: > > > On 16.01.2023 17:02, Bhupesh Sharma wrote: > > > > On 1/16/23 9:24 PM, Konrad Dybcio wrote: > >> > >> > >> On 16.01.2023 16:43, Bhupesh Sharma wrote: > >>> On Mon, 16 Jan 2023 at 13:23, Krzysztof Kozlowski > >>> <krzysztof.kozlowski@linaro.org> wrote: > >>>> > >>>> On 15/01/2023 22:33, Bhupesh Sharma wrote: > >>>>> On Sun, 15 Jan 2023 at 20:57, Krzysztof Kozlowski > >>>>> <krzysztof.kozlowski@linaro.org> wrote: > >>>>>> > >>>>>> On 13/01/2023 21:10, Bhupesh Sharma wrote: > >>>>>>> Fix the following '#address-cells' & '#size-cells' related > >>>>>>> dt-binding error: > >>>>>>> > >>>>>>> $ make dtbs_check > >>>>>>> > >>>>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml > >>>>>>> arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: geniqup@4ac0000: > >>>>>>> #address-cells:0:0: 2 was expected > >>>>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml > >>>>>> > >>>>>> Don't we want rather to unify the soc address range? > >>>>> > >>>>> Well, the assumption in the original dt-bindings was that every reg > >>>>> variable is 4 * u32 wide (as most new qcom SoCs set #address- and > >>>>> #size-cells to <2>). However, that is not the case for all of the > >>>>> SoCs. > >>>> > >>>> Hm, which device of that SoC cannot be used with address/size cells 2? > >>> > >>> As noted in the git log already the geniqup on sm6115 / sm4250 cannot > >>> be used with address/size cells 2 (See: > >>> https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sm6115.dtsi#L795) > >> SM6115 (and pretty much every other arm64 msm platform newer than 8916) > >> should be using addr/size-cells = 2 along with (dma-)ranges of 36 bit, as > >> that's what their smmus use and otherwise some addresses may get cut off > >> in translation, or so the story went with 845 N years ago.. We can either > >> pursue this patch or I can submit the 2-cell-ification if you don't plan on > >> adding more nodes shortly > > > > > > Have you tested this combination on SM6115 like SoCs with various IPs? I have tried a few experiments in the past and not all IPs work well with 36-bit DMA ranges (atleast not on the boards I have). > Can you list any specific examples? I've been using it for > quite some time now and I see nothing wrong.. I remember seeing some issues with SDHC controller booting (uSD card use case) with sm6115, but I cannot find the appropriate dmesg right now. > > > > So, I think it might lead to more breakage (unless we are sure of a well-tested fix). A simpler patch to fix the dt-bindings looks more useful IMO. > I'm not saying no, you just have to convince Krzysztof :D :) Thanks, Bhupesh
On 16/01/2023 16:43, Bhupesh Sharma wrote: > On Mon, 16 Jan 2023 at 13:23, Krzysztof Kozlowski > <krzysztof.kozlowski@linaro.org> wrote: >> >> On 15/01/2023 22:33, Bhupesh Sharma wrote: >>> On Sun, 15 Jan 2023 at 20:57, Krzysztof Kozlowski >>> <krzysztof.kozlowski@linaro.org> wrote: >>>> >>>> On 13/01/2023 21:10, Bhupesh Sharma wrote: >>>>> Fix the following '#address-cells' & '#size-cells' related >>>>> dt-binding error: >>>>> >>>>> $ make dtbs_check >>>>> >>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml >>>>> arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: geniqup@4ac0000: >>>>> #address-cells:0:0: 2 was expected >>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml >>>> >>>> Don't we want rather to unify the soc address range? >>> >>> Well, the assumption in the original dt-bindings was that every reg >>> variable is 4 * u32 wide (as most new qcom SoCs set #address- and >>> #size-cells to <2>). However, that is not the case for all of the >>> SoCs. >> >> Hm, which device of that SoC cannot be used with address/size cells 2? > > As noted in the git log already the geniqup on sm6115 / sm4250 cannot > be used with address/size cells 2 (See: > https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sm6115.dtsi#L795) That's not relevant and not answering to my question. Address/size cells affect children, so not geniqup. address-cells 2 means you have everywhere 64 bit addresses, so which devices cannot work with such DTS? If you claim that geniqup and its children has some troubles - please point what troubles. The DTS and existing address/size cells have nothing to do with it. Best regards, Krzysztof
On Mon, Jan 16, 2023 at 08:10:40PM +0100, Krzysztof Kozlowski wrote: > On 16/01/2023 16:43, Bhupesh Sharma wrote: > > On Mon, 16 Jan 2023 at 13:23, Krzysztof Kozlowski > > <krzysztof.kozlowski@linaro.org> wrote: > >> > >> On 15/01/2023 22:33, Bhupesh Sharma wrote: > >>> On Sun, 15 Jan 2023 at 20:57, Krzysztof Kozlowski > >>> <krzysztof.kozlowski@linaro.org> wrote: > >>>> > >>>> On 13/01/2023 21:10, Bhupesh Sharma wrote: > >>>>> Fix the following '#address-cells' & '#size-cells' related > >>>>> dt-binding error: > >>>>> > >>>>> $ make dtbs_check > >>>>> > >>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml > >>>>> arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: geniqup@4ac0000: > >>>>> #address-cells:0:0: 2 was expected > >>>>> From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml > >>>> > >>>> Don't we want rather to unify the soc address range? > >>> > >>> Well, the assumption in the original dt-bindings was that every reg > >>> variable is 4 * u32 wide (as most new qcom SoCs set #address- and > >>> #size-cells to <2>). However, that is not the case for all of the > >>> SoCs. > >> > >> Hm, which device of that SoC cannot be used with address/size cells 2? If 1 cell does the job, then it should be allowed. I'd go a step farther and say # of cells should only be as big as needed and that's the address size of the children. > > > > As noted in the git log already the geniqup on sm6115 / sm4250 cannot > > be used with address/size cells 2 (See: > > https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sm6115.dtsi#L795) Why can't they use 2? Is it because you forgot 'dma-ranges' and you want to implicitly limit DMA to 32-bits? Unfortunately 'dma-ranges' is frequently omitted so we treat missing as 1:1 dma-ranges (i.e. empty). > > That's not relevant and not answering to my question. Address/size cells > affect children, so not geniqup. address-cells 2 means you have > everywhere 64 bit addresses, so which devices cannot work with such DTS? > If you claim that geniqup and its children has some troubles - please > point what troubles. The DTS and existing address/size cells have > nothing to do with it. > > Best regards, > Krzysztof >
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml index ab4df02052853..7ffce3b676641 100644 --- a/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml @@ -36,10 +36,10 @@ properties: maxItems: 2 "#address-cells": - const: 2 + enum: [ 1, 2 ] "#size-cells": - const: 2 + enum: [ 1, 2 ] ranges: true
Fix the following '#address-cells' & '#size-cells' related dt-binding error: $ make dtbs_check From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: geniqup@4ac0000: #address-cells:0:0: 2 was expected From schema: Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.org> --- Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)