MC SID register access is restricted for Guest VM. So, skip the SID override programming from the Guest VM. Signed-off-by: Sumit Gupta <sumitg@xxxxxxxxxx> --- drivers/memory/tegra/tegra186.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/memory/tegra/tegra186.c b/drivers/memory/tegra/tegra186.c index 1b3183951bfe..df441896b69d 100644 --- a/drivers/memory/tegra/tegra186.c +++ b/drivers/memory/tegra/tegra186.c @@ -10,6 +10,7 @@ #include <linux/of.h> #include <linux/of_platform.h> #include <linux/platform_device.h> +#include <asm/virt.h> #include <soc/tegra/mc.h> @@ -118,6 +119,11 @@ static int tegra186_mc_probe_device(struct tegra_mc *mc, struct device *dev) unsigned int i, index = 0; u32 sid; + if (!is_kernel_in_hyp_mode()) { + dev_dbg(mc->dev, "Register access not allowed\n"); + return 0; + } + if (!tegra_dev_iommu_get_stream_id(dev, &sid)) return 0; @@ -146,6 +152,11 @@ static int tegra186_mc_resume(struct tegra_mc *mc) #if IS_ENABLED(CONFIG_IOMMU_API) unsigned int i; + if (!is_kernel_in_hyp_mode()) { + dev_dbg(mc->dev, "Register access not allowed\n"); + return 0; + } + for (i = 0; i < mc->soc->num_clients; i++) { const struct tegra_mc_client *client = &mc->soc->clients[i]; -- 2.17.1