Re: [PATCH v2 2/3] arm64: dts: qcom: sc7280: Move video-firmware to chrome-common

From: Luca Weiss
Date: Fri Dec 01 2023 - 04:33:13 EST


On Tue Nov 28, 2023 at 9:14 AM CET, Vikash Garodia wrote:
>
> On 11/24/2023 9:26 PM, Luca Weiss wrote:
> > On Fri Nov 24, 2023 at 2:35 PM CET, Vikash Garodia wrote:
> >>
> >>
> >> On 11/24/2023 6:23 PM, Dmitry Baryshkov wrote:
> >>> On Fri, 24 Nov 2023 at 14:30, Vikash Garodia <quic_vgarodia@xxxxxxxxxxx> wrote:
> >>>>
> >>>> On 11/24/2023 5:05 PM, Luca Weiss wrote:
> >>>>> On Fri Nov 24, 2023 at 7:38 AM CET, Vikash Garodia wrote:
> >>>>>>
> >>>>>> On 11/22/2023 7:50 PM, Luca Weiss wrote:
> >>>>>>> On Wed Nov 22, 2023 at 2:17 PM CET, Vikash Garodia wrote:
> >>>>>>>>
> >>>>>>>> On 10/2/2023 7:50 PM, Luca Weiss wrote:
> >>>>>>>>> If the video-firmware node is present, the venus driver assumes we're on
> >>>>>>>>> a system that doesn't use TZ for starting venus, like on ChromeOS
> >>>>>>>>> devices.
> >>>>>>>>>
> >>>>>>>>> Move the video-firmware node to chrome-common.dtsi so we can use venus
> >>>>>>>>> on a non-ChromeOS devices.
> >>>>>>>>>
> >>>>>>>>> At the same time also disable the venus node by default in the dtsi,
> >>>>>>>>> like it's done on other SoCs.
> >>>>>>>>>
> >>>>>>>>> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>
> >>>>>>>>> Signed-off-by: Luca Weiss <luca.weiss@xxxxxxxxxxxxx>
> >>>>>>>>> ---
> >>>>>>>>> arch/arm64/boot/dts/qcom/sc7280-chrome-common.dtsi | 8 ++++++++
> >>>>>>>>> arch/arm64/boot/dts/qcom/sc7280.dtsi | 6 ++----
> >>>>>>>>> 2 files changed, 10 insertions(+), 4 deletions(-)
> >>>>>>>>>
> >>>>>>>>> diff --git a/arch/arm64/boot/dts/qcom/sc7280-chrome-common.dtsi b/arch/arm64/boot/dts/qcom/sc7280-chrome-common.dtsi
> >>>>>>>>> index 5d462ae14ba1..cd491e46666d 100644
> >>>>>>>>> --- a/arch/arm64/boot/dts/qcom/sc7280-chrome-common.dtsi
> >>>>>>>>> +++ b/arch/arm64/boot/dts/qcom/sc7280-chrome-common.dtsi
> >>>>>>>>> @@ -104,6 +104,14 @@ &scm {
> >>>>>>>>> dma-coherent;
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> +&venus {
> >>>>>>>>> + status = "okay";
> >>>>>>>>> +
> >>>>>>>>> + video-firmware {
> >>>>>>>>> + iommus = <&apps_smmu 0x21a2 0x0>;
> >>>>>>>>> + };
> >>>>>>>>> +};
> >>>>>>>>> +
> >>>>>>>>> &watchdog {
> >>>>>>>>> status = "okay";
> >>>>>>>>> };
> >>>>>>>>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> >>>>>>>>> index 66f1eb83cca7..fa53f54d4675 100644
> >>>>>>>>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
> >>>>>>>>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> >>>>>>>>> @@ -3740,6 +3740,8 @@ venus: video-codec@aa00000 {
> >>>>>>>>> <&apps_smmu 0x2184 0x20>;
> >>>>>> 0x2184 is a secure SID. I think qcm6490-fairphone-fp5.dts needs to override the
> >>>>>> iommus property as well to retain only the non secure SID i.e 0x2180 ? I am
> >>>>>> seeing below crash
> >>>>>>
> >>>>>> Call trace:
> >>>>>> [ 47.663593] qcom_smmu_write_s2cr+0x64/0xa4
> >>>>>> [ 47.663616] arm_smmu_attach_dev+0x120/0x284
> >>>>>> [ 47.663647] __iommu_attach_device+0x24/0xf8
> >>>>>> [ 47.676845] __iommu_device_set_domain+0x70/0xd0
> >>>>>> [ 47.681632] __iommu_group_set_domain_internal+0x60/0x1b4
> >>>>>> [ 47.687218] iommu_setup_default_domain+0x358/0x418
> >>>>>> [ 47.692258] __iommu_probe_device+0x3e4/0x404
> >>>>>>
> >>>>>> Could you please reconfirm if Video SID 0x2184 (and mask) is allowed by the
> >>>>>> qcm6490-fairphone-fp5 hardware having TZ ?
> >>>>>
> >>>>> Hi,
> >>>>>
> >>>>> On FP5 it seems it's no problem to have both SIDs in there, probe and
> >>>>> using venus appears to work fine.
> >>>>>
> >>>>> Are you using different firmware than QCM6490.LA.3.0 on the device where
> >>>>> you tested this?
> >>>> I was testing this on RB3 board which uses firmware [1].
> >>>
> >>> There is something wrong here.
> >>>
> >>> RB3 board uses venus-5.2
> >>> RB5 board uses vpu-1.0
> >>> Only sc7280 uses vpu-2.0
> >>
> >> Tested on QCM6490 IDP board, which is QCOM internal board similar to RB3 gen2.
> >
> > In any case, I don't know much about the venus & iommu setup here. I can
> > try removing the 0x2184 SID and test if venus still works on FP5.
>
> Please remove 0x2184 SID and confirm specifically encoder works. This SID is for
> encoder.
>
> > Also should the chromebooks keep that iommu entry or not?
> Chrome-common can have 0x2184 since its no-TZ based solution. So in sc7280.dtsi,
> you can keep the default SID i.e 0x2180 (with respective mask) and in
> chrome-common, we can override the iommus property with 0x2180 and 0x2184.

Hi Vikash,

I'm moving 0x2184 to chrome-common in v3 but I couldn't test venus
encoding myself since I just don't know *how* to test it.

Would be nice if you could share how you test venus (decoding &
encoding) since seemingly nobody (at least in the postmarketOS
community) seems to know how to test/use it properly. See also
https://wiki.postmarketos.org/wiki/Hardware_video_acceleration

Regards
Luca

>
> Regards,
> Vikash
>
> > Regards
> > Luca
> >
> >>
> >>>>
> >>>> Regards,
> >>>> Vikash
> >>>>
> >>>> [1]
> >>>> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/qcom/vpu-2.0
> >>>>
> >>>>>>
> >>>>>>>>> memory-region = <&video_mem>;
> >>>>>>>>>
> >>>>>>>>> + status = "disabled";
> >>>>>>>>> +
> >>>>>>>>> video-decoder {
> >>>>>>>>> compatible = "venus-decoder";
> >>>>>>>>> };
> >>>>>>>>> @@ -3748,10 +3750,6 @@ video-encoder {
> >>>>>>>>> compatible = "venus-encoder";
> >>>>>>>>> };
> >>>>>>>>>
> >>>>>>>>> - video-firmware {
> >>>>>>>>> - iommus = <&apps_smmu 0x21a2 0x0>;
> >>>>>>>>> - };
> >>>>>>>>> -
> >>>>>>>>> venus_opp_table: opp-table {
> >>>>>>>>> compatible = "operating-points-v2";
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>> Changes look good. Is this tested on SC7280 ?
> >>>>>>>
> >>>>>>> Hi Vikash,
> >>>>>>>
> >>>>>>> I didn't test it myself on sc7280 (just qcm6490-fp5) but dtx_diff
> >>>>>>> reports no differences except for status = okay property being added, so
> >>>>>>> there should be no change on those boards. See below.
> >>>>>>>
> >>>>>>> Regards
> >>>>>>> Luca
> >>>>>>
> >>>>>> I tested on SC7280 (herobrine) and all good.
> >>>>>
> >>>>> Great, thanks!
> >>>>>
> >>>>> Regards
> >>>>> Luca
> >>>>>
> >>>>>>
> >>>>>> Regards,
> >>>>>> Vikash
> >>>>>
> >>>>
> >>>
> >>>
> >