From ef70a722a73a35ef3d11febc5bed50dd489a2e1f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Feb 27 2016 11:31:21 +0000 Subject: Bring missed 4.4 ARMv7 fixes from F-23 kernel, Fix deferred nouveau module loading on tegra --- diff --git a/config-arm-generic b/config-arm-generic index 399bfaf..0831ea3 100644 --- a/config-arm-generic +++ b/config-arm-generic @@ -122,6 +122,7 @@ CONFIG_SND_SOC_ROCKCHIP_RT5645=m CONFIG_SND_SOC_ROCKCHIP_SPDIF=m CONFIG_REGULATOR_ACT8865=m CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ROCKCHIP_EFUSE=m # Tegra # CONFIG_TEGRA_AHB is not set @@ -167,6 +168,9 @@ CONFIG_ARM_MHU=m # CONFIG_PL320_MBOX is not set CONFIG_ARM_SCPI_PROTOCOL=m +# NVMem +CONFIG_NVMEM=m + # USB CONFIG_USB_OHCI_HCD_PLATFORM=m CONFIG_USB_EHCI_HCD_PLATFORM=m @@ -249,7 +253,7 @@ CONFIG_PINMUX=y CONFIG_PINCONF=y CONFIG_PINCTRL=y CONFIG_GENERIC_PINCONF=y -CONFIG_PINCTRL_SINGLE=m +CONFIG_PINCTRL_SINGLE=y #i2c CONFIG_I2C_ARB_GPIO_CHALLENGE=m diff --git a/config-armv7 b/config-armv7 index eaa6d4e..50c4cc5 100644 --- a/config-armv7 +++ b/config-armv7 @@ -349,6 +349,8 @@ CONFIG_QCOM_SMD_RPM=m CONFIG_QCOM_SMEM=m CONFIG_REGULATOR_QCOM_SMD_RPM=m # CONFIG_QCOM_SMEM is not set +CONFIG_QCOM_SMEM=m +CONFIG_QCOM_QFPROM=m # i.MX # CONFIG_MXC_DEBUG_BOARD is not set @@ -419,6 +421,7 @@ CONFIG_FB_MXS=m # CONFIG_FB_MX3 is not set # CONFIG_FB_IMX is not set CONFIG_TOUCHSCREEN_IMX6UL_TSC=m +CONFIG_NVMEM_IMX_OCOTP=m CONFIG_SND_IMX_SOC=m CONFIG_SND_SOC_FSL_ASOC_CARD=m diff --git a/config-armv7-generic b/config-armv7-generic index 285b4dc..23068c5 100644 --- a/config-armv7-generic +++ b/config-armv7-generic @@ -222,6 +222,7 @@ CONFIG_USB_MUSB_SUNXI=m CONFIG_CRYPTO_DEV_SUN4I_SS=m CONFIG_SND_SUN4I_CODEC=m CONFIG_SUNXI_RSB=m +CONFIG_NVMEM_SUNXI_SID=m # Exynos CONFIG_ARCH_EXYNOS3=y diff --git a/drm-nouveau-platform-Fix-deferred-probe.patch b/drm-nouveau-platform-Fix-deferred-probe.patch new file mode 100644 index 0000000..bae1dae --- /dev/null +++ b/drm-nouveau-platform-Fix-deferred-probe.patch @@ -0,0 +1,116 @@ +From patchwork Wed Feb 24 17:34:43 2016 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: drm/nouveau: platform: Fix deferred probe +From: Thierry Reding +X-Patchwork-Id: 587554 +Message-Id: <1456335283-22097-1-git-send-email-thierry.reding@gmail.com> +To: Ben Skeggs +Cc: Alexandre Courbot , Nicolas Chauvet , + dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org +Date: Wed, 24 Feb 2016 18:34:43 +0100 + +From: Thierry Reding + +The error cleanup paths aren't quite correct and will crash upon +deferred probe. + +Cc: stable@vger.kernel.org # v4.3+ +Signed-off-by: Thierry Reding +Reviewed-by: Ben Skeggs +Reviewed-by: Alexandre Courbot +--- + drivers/gpu/drm/nouveau/nouveau_platform.c | 2 +- + drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c | 40 ++++++++++++++++------ + 2 files changed, 30 insertions(+), 12 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nouveau_platform.c b/drivers/gpu/drm/nouveau/nouveau_platform.c +index 8a70cec59bcd..2dfe58af12e4 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_platform.c ++++ b/drivers/gpu/drm/nouveau/nouveau_platform.c +@@ -24,7 +24,7 @@ + static int nouveau_platform_probe(struct platform_device *pdev) + { + const struct nvkm_device_tegra_func *func; +- struct nvkm_device *device; ++ struct nvkm_device *device = NULL; + struct drm_device *drm; + int ret; + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c +index 7f8a42721eb2..e7e581d6a8ff 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c +@@ -252,32 +252,40 @@ nvkm_device_tegra_new(const struct nvkm_device_tegra_func *func, + + if (!(tdev = kzalloc(sizeof(*tdev), GFP_KERNEL))) + return -ENOMEM; +- *pdevice = &tdev->device; ++ + tdev->func = func; + tdev->pdev = pdev; + tdev->irq = -1; + + tdev->vdd = devm_regulator_get(&pdev->dev, "vdd"); +- if (IS_ERR(tdev->vdd)) +- return PTR_ERR(tdev->vdd); ++ if (IS_ERR(tdev->vdd)) { ++ ret = PTR_ERR(tdev->vdd); ++ goto free; ++ } + + tdev->rst = devm_reset_control_get(&pdev->dev, "gpu"); +- if (IS_ERR(tdev->rst)) +- return PTR_ERR(tdev->rst); ++ if (IS_ERR(tdev->rst)) { ++ ret = PTR_ERR(tdev->rst); ++ goto free; ++ } + + tdev->clk = devm_clk_get(&pdev->dev, "gpu"); +- if (IS_ERR(tdev->clk)) +- return PTR_ERR(tdev->clk); ++ if (IS_ERR(tdev->clk)) { ++ ret = PTR_ERR(tdev->clk); ++ goto free; ++ } + + tdev->clk_pwr = devm_clk_get(&pdev->dev, "pwr"); +- if (IS_ERR(tdev->clk_pwr)) +- return PTR_ERR(tdev->clk_pwr); ++ if (IS_ERR(tdev->clk_pwr)) { ++ ret = PTR_ERR(tdev->clk_pwr); ++ goto free; ++ } + + nvkm_device_tegra_probe_iommu(tdev); + + ret = nvkm_device_tegra_power_up(tdev); + if (ret) +- return ret; ++ goto remove; + + tdev->gpu_speedo = tegra_sku_info.gpu_speedo_value; + ret = nvkm_device_ctor(&nvkm_device_tegra_func, NULL, &pdev->dev, +@@ -285,9 +293,19 @@ nvkm_device_tegra_new(const struct nvkm_device_tegra_func *func, + cfg, dbg, detect, mmio, subdev_mask, + &tdev->device); + if (ret) +- return ret; ++ goto powerdown; ++ ++ *pdevice = &tdev->device; + + return 0; ++ ++powerdown: ++ nvkm_device_tegra_power_down(tdev); ++remove: ++ nvkm_device_tegra_remove_iommu(tdev); ++free: ++ kfree(tdev); ++ return ret; + } + #else + int diff --git a/kernel.spec b/kernel.spec index 60b3502..3c4768c 100644 --- a/kernel.spec +++ b/kernel.spec @@ -508,6 +508,8 @@ Patch456: arm64-acpi-drop-expert-patch.patch Patch457: ARM-tegra-usb-no-reset.patch +Patch458: drm-nouveau-platform-Fix-deferred-probe.patch + Patch460: mfd-wm8994-Ensure-that-the-whole-MFD-is-built-into-a.patch Patch463: arm-i.MX6-Utilite-device-dtb.patch @@ -1209,6 +1211,8 @@ ApplyPatch arm64-acpi-drop-expert-patch.patch ApplyPatch ARM-tegra-usb-no-reset.patch +ApplyPatch drm-nouveau-platform-Fix-deferred-probe.patch + ApplyPatch mfd-wm8994-Ensure-that-the-whole-MFD-is-built-into-a.patch ApplyPatch arm-i.MX6-Utilite-device-dtb.patch @@ -2185,6 +2189,10 @@ fi # # %changelog +* Sat Feb 27 2016 Peter Robinson 4.4.3-201 +- Bring missed 4.4 ARMv7 fixes from F-23 kernel +- Fix deferred nouveau module loading on tegra + * Fri Feb 26 2016 Laura Abbott - 4.4.3-200 - Linux v4.4.3