The memory region allocated using dma_alloc_attr with no kernel mapping attribute set would still be a part of the linear kernel map. Any access to this region by the application processor after assigning it to the remote Q6 will result in a XPU violation. Fix this by replacing the dynamically allocated memory region with a no-map carveout and unmap the modem metadata memory region before passing control to the remote Q6. The addition of the carveout and memunmap is required only on SoCs that mandate memory protection before transferring control to Q6, hence the driver falls back to dynamic memory allocation in the absence of the modem metadata carveout. Relevant discussions on the mailing list: https://lore.kernel.org/lkml/20221114110329.68413-1-manivannan.sadhasivam@xxxxxxxxxx/ Depends on: https://patchwork.kernel.org/project/linux-arm-msm/cover/20221124184333.133911-1-krzysztof.kozlowski@xxxxxxxxxx/ Reported-by: Amit Pundir <amit.pundir@xxxxxxxxxx> https://people.linaro.org/~amit.pundir/linaro-sid-developer-dragonboard-845c-569/6.1-rc4_defconfig Reproduced with ^^ defconfig SDM845 SoCs Sibi Sankar (4): arm64: dts: qcom: Introduce a carveout for modem metadata dt-bindings: remoteproc: qcom: sc7180: Update memory-region requirements dt-bindings: remoteproc: qcom: q6v5: Update memory region requirements remoteproc: qcom_q6v5_mss: Use a carveout to authenticate modem headers .../bindings/remoteproc/qcom,q6v5.txt | 29 ++++++- .../remoteproc/qcom,sc7180-mss-pil.yaml | 3 +- .../remoteproc/qcom,sc7280-mss-pil.yaml | 3 +- .../boot/dts/qcom/msm8996-xiaomi-common.dtsi | 6 ++ arch/arm64/boot/dts/qcom/msm8996.dtsi | 9 ++ arch/arm64/boot/dts/qcom/msm8998.dtsi | 9 ++ arch/arm64/boot/dts/qcom/sc7180-idp.dts | 7 +- arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 7 +- .../dts/qcom/sc7280-herobrine-lte-sku.dtsi | 7 +- arch/arm64/boot/dts/qcom/sdm845.dtsi | 9 ++ drivers/remoteproc/qcom_q6v5_mss.c | 85 +++++++++++++------ 11 files changed, 142 insertions(+), 32 deletions(-) -- 2.17.1