From 2296e4a64733ab0d972c51b26cbaec734b11a5dd Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Fri, 20 Feb 2015 09:32:10 -0500 Subject: [PATCH] Linux v3.19-8975-g3d883483dc0a - Add patch to fix intermittent hangs in nouveau driver - Move mtpspi and related mods to kernel-core for VMWare guests (rhbz 1194612) --- KEYS-Add-a-system-blacklist-keyring.patch | 2 +- Kbuild-Add-an-option-to-enable-GCC-VTA.patch | 2 +- ...t-certificates-from-UEFI-Secure-Boot.patch | 2 +- config-armv7-generic | 1 + criu-no-expert.patch | 2 +- ...-the-loop-from-the-interrupt-handler.patch | 135 ++++++++++++++++++ filter-i686.sh | 2 +- filter-modules.sh | 2 +- kernel.spec | 15 +- ...-CPUMASK_OFFSTACK-usable-without-deb.patch | 2 +- ...dd-use_native_backlight-quirk-and-en.patch | 107 -------------- sources | 2 +- 12 files changed, 154 insertions(+), 120 deletions(-) create mode 100644 fifo-nv04-remove-the-loop-from-the-interrupt-handler.patch delete mode 100644 samsung-laptop-Add-use_native_backlight-quirk-and-en.patch diff --git a/KEYS-Add-a-system-blacklist-keyring.patch b/KEYS-Add-a-system-blacklist-keyring.patch index e4de4be56..9feb8e9b4 100644 --- a/KEYS-Add-a-system-blacklist-keyring.patch +++ b/KEYS-Add-a-system-blacklist-keyring.patch @@ -29,7 +29,7 @@ index 72665eb80692..2c7b80d31366 100644 + #endif /* _KEYS_SYSTEM_KEYRING_H */ diff --git a/init/Kconfig b/init/Kconfig -index 058e3671fa11..ee83b7c6856c 100644 +index f5dbc6d4261b..eca8ab59ae7f 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1734,6 +1734,15 @@ config SYSTEM_TRUSTED_KEYRING diff --git a/Kbuild-Add-an-option-to-enable-GCC-VTA.patch b/Kbuild-Add-an-option-to-enable-GCC-VTA.patch index d03ace314..c3f957b76 100644 --- a/Kbuild-Add-an-option-to-enable-GCC-VTA.patch +++ b/Kbuild-Add-an-option-to-enable-GCC-VTA.patch @@ -43,7 +43,7 @@ Signed-off-by: Josh Stone 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile -index dd8796caa239..edbbaccff485 100644 +index 19e256ae2679..376e8a456f72 100644 --- a/Makefile +++ b/Makefile @@ -706,7 +706,11 @@ KBUILD_CFLAGS += -fomit-frame-pointer diff --git a/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch b/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch index 05a3cd875..e5bc47083 100644 --- a/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch +++ b/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch @@ -42,7 +42,7 @@ index 706b16fa6de8..470e8dfcb517 100644 efi_guid_t guid; u64 table; diff --git a/init/Kconfig b/init/Kconfig -index ee83b7c6856c..3b9ecb2d12af 100644 +index eca8ab59ae7f..9a782b02e4d5 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1888,6 +1888,15 @@ config MODULE_SIG_ALL diff --git a/config-armv7-generic b/config-armv7-generic index a8a6dcd1f..761fd0224 100644 --- a/config-armv7-generic +++ b/config-armv7-generic @@ -232,6 +232,7 @@ CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW=y CONFIG_ARM_EXYNOS_CPUIDLE=y CONFIG_ARM_EXYNOS5_BUS_DEVFREQ=m # CONFIG_EXYNOS5420_MCPM not set +CONFIG_ARM_EXYNOS_CPUFREQ=m CONFIG_I2C_EXYNOS5=m CONFIG_I2C_S3C2410=m diff --git a/criu-no-expert.patch b/criu-no-expert.patch index 800b2e133..6c488570d 100644 --- a/criu-no-expert.patch +++ b/criu-no-expert.patch @@ -9,7 +9,7 @@ Upstream-status: Fedora mustard 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init/Kconfig b/init/Kconfig -index 3b9ecb2d12af..e2e09df716d1 100644 +index 9a782b02e4d5..d97b5032d4b0 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1135,7 +1135,7 @@ config DEBUG_BLK_CGROUP diff --git a/fifo-nv04-remove-the-loop-from-the-interrupt-handler.patch b/fifo-nv04-remove-the-loop-from-the-interrupt-handler.patch new file mode 100644 index 000000000..480ff9344 --- /dev/null +++ b/fifo-nv04-remove-the-loop-from-the-interrupt-handler.patch @@ -0,0 +1,135 @@ +From: Ben Skeggs +Date: Tue, 27 Jan 2015 15:09:39 +1000 +Subject: [PATCH] fifo/nv04: remove the loop from the interrupt handler + +Complete bong hit (and not the last...), the hardware will reassert the +interrupt to PMC if it's necessary. + +Also potentially harmful in the face of interrupts such as the non-stall +interrupt, which remain active in NV_PFIFO_INTR even when we don't care +about servicing it. + +It appears (hopefully, fdo#87244), that under certain loads, the methods +may pass quickly enough to hit the "100 spins and kill PFIFO" thing that +we had going on. Not ideal ;) + +Signed-off-by: Ben Skeggs +--- + drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c | 85 ++++++++++--------------- + 1 file changed, 35 insertions(+), 50 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c +index b038b6eb51db..043e4296084c 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c +@@ -502,72 +502,57 @@ nv04_fifo_intr(struct nvkm_subdev *subdev) + { + struct nvkm_device *device = nv_device(subdev); + struct nv04_fifo_priv *priv = (void *)subdev; +- uint32_t status, reassign; +- int cnt = 0; ++ u32 mask = nv_rd32(priv, NV03_PFIFO_INTR_EN_0); ++ u32 stat = nv_rd32(priv, NV03_PFIFO_INTR_0) & mask; ++ u32 reassign, chid, get, sem; + + reassign = nv_rd32(priv, NV03_PFIFO_CACHES) & 1; +- while ((status = nv_rd32(priv, NV03_PFIFO_INTR_0)) && (cnt++ < 100)) { +- uint32_t chid, get; +- +- nv_wr32(priv, NV03_PFIFO_CACHES, 0); +- +- chid = nv_rd32(priv, NV03_PFIFO_CACHE1_PUSH1) & priv->base.max; +- get = nv_rd32(priv, NV03_PFIFO_CACHE1_GET); ++ nv_wr32(priv, NV03_PFIFO_CACHES, 0); + +- if (status & NV_PFIFO_INTR_CACHE_ERROR) { +- nv04_fifo_cache_error(device, priv, chid, get); +- status &= ~NV_PFIFO_INTR_CACHE_ERROR; +- } ++ chid = nv_rd32(priv, NV03_PFIFO_CACHE1_PUSH1) & priv->base.max; ++ get = nv_rd32(priv, NV03_PFIFO_CACHE1_GET); + +- if (status & NV_PFIFO_INTR_DMA_PUSHER) { +- nv04_fifo_dma_pusher(device, priv, chid); +- status &= ~NV_PFIFO_INTR_DMA_PUSHER; +- } ++ if (stat & NV_PFIFO_INTR_CACHE_ERROR) { ++ nv04_fifo_cache_error(device, priv, chid, get); ++ stat &= ~NV_PFIFO_INTR_CACHE_ERROR; ++ } + +- if (status & NV_PFIFO_INTR_SEMAPHORE) { +- uint32_t sem; ++ if (stat & NV_PFIFO_INTR_DMA_PUSHER) { ++ nv04_fifo_dma_pusher(device, priv, chid); ++ stat &= ~NV_PFIFO_INTR_DMA_PUSHER; ++ } + +- status &= ~NV_PFIFO_INTR_SEMAPHORE; +- nv_wr32(priv, NV03_PFIFO_INTR_0, +- NV_PFIFO_INTR_SEMAPHORE); ++ if (stat & NV_PFIFO_INTR_SEMAPHORE) { ++ stat &= ~NV_PFIFO_INTR_SEMAPHORE; ++ nv_wr32(priv, NV03_PFIFO_INTR_0, NV_PFIFO_INTR_SEMAPHORE); + +- sem = nv_rd32(priv, NV10_PFIFO_CACHE1_SEMAPHORE); +- nv_wr32(priv, NV10_PFIFO_CACHE1_SEMAPHORE, sem | 0x1); ++ sem = nv_rd32(priv, NV10_PFIFO_CACHE1_SEMAPHORE); ++ nv_wr32(priv, NV10_PFIFO_CACHE1_SEMAPHORE, sem | 0x1); + +- nv_wr32(priv, NV03_PFIFO_CACHE1_GET, get + 4); +- nv_wr32(priv, NV04_PFIFO_CACHE1_PULL0, 1); +- } ++ nv_wr32(priv, NV03_PFIFO_CACHE1_GET, get + 4); ++ nv_wr32(priv, NV04_PFIFO_CACHE1_PULL0, 1); ++ } + +- if (device->card_type == NV_50) { +- if (status & 0x00000010) { +- status &= ~0x00000010; +- nv_wr32(priv, 0x002100, 0x00000010); +- } +- +- if (status & 0x40000000) { +- nv_wr32(priv, 0x002100, 0x40000000); +- nvkm_fifo_uevent(&priv->base); +- status &= ~0x40000000; +- } ++ if (device->card_type == NV_50) { ++ if (stat & 0x00000010) { ++ stat &= ~0x00000010; ++ nv_wr32(priv, 0x002100, 0x00000010); + } + +- if (status) { +- nv_warn(priv, "unknown intr 0x%08x, ch %d\n", +- status, chid); +- nv_wr32(priv, NV03_PFIFO_INTR_0, status); +- status = 0; ++ if (stat & 0x40000000) { ++ nv_wr32(priv, 0x002100, 0x40000000); ++ nvkm_fifo_uevent(&priv->base); ++ stat &= ~0x40000000; + } +- +- nv_wr32(priv, NV03_PFIFO_CACHES, reassign); + } + +- if (status) { +- nv_error(priv, "still angry after %d spins, halt\n", cnt); +- nv_wr32(priv, 0x002140, 0); +- nv_wr32(priv, 0x000140, 0); ++ if (stat) { ++ nv_warn(priv, "unknown intr 0x%08x\n", stat); ++ nv_mask(priv, NV03_PFIFO_INTR_EN_0, stat, 0x00000000); ++ nv_wr32(priv, NV03_PFIFO_INTR_0, stat); + } + +- nv_wr32(priv, 0x000100, 0x00000100); ++ nv_wr32(priv, NV03_PFIFO_CACHES, reassign); + } + + static int +-- +2.1.0 + diff --git a/filter-i686.sh b/filter-i686.sh index 430ccf72d..1f3f97270 100644 --- a/filter-i686.sh +++ b/filter-i686.sh @@ -9,6 +9,6 @@ # modifications to the overrides below. If something should be removed across # all arches, remove it in the default instead of per-arch. -driverdirs="atm auxdisplay bcma bluetooth fmc infiniband isdn leds media memstick message mfd mmc mtd nfc ntb pcmcia platform power ssb staging uio uwb" +driverdirs="atm auxdisplay bcma bluetooth fmc infiniband isdn leds media memstick mfd mmc mtd nfc ntb pcmcia platform power ssb staging uio uwb" singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs iscsi_tcp megaraid pmcraid qla1280 9pnet_rdma svcrdma xprtrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub hid-sensor-magn-3d hid-sensor-incl-3d hid-sensor-gyro-3d hid-sensor-iio-common hid-sensor-accel-3d hid-sensor-trigger hid-sensor-als hid-sensor-rotation target_core_user" diff --git a/filter-modules.sh b/filter-modules.sh index d5f56e5df..f02ec47be 100755 --- a/filter-modules.sh +++ b/filter-modules.sh @@ -14,7 +14,7 @@ # listed here. # Set the default dirs/modules to filter out -driverdirs="atm auxdisplay bcma bluetooth fmc iio infiniband isdn leds media memstick message mfd mmc mtd nfc ntb pcmcia platform power ssb staging uio uwb" +driverdirs="atm auxdisplay bcma bluetooth fmc iio infiniband isdn leds media memstick mfd mmc mtd nfc ntb pcmcia platform power ssb staging uio uwb" netdrvs="appletalk dsa hamradio ieee802154 irda ppp slip usb wireless" diff --git a/kernel.spec b/kernel.spec index fb56e10fe..538064429 100644 --- a/kernel.spec +++ b/kernel.spec @@ -69,7 +69,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 0 # The git snapshot level -%define gitrev 9 +%define gitrev 10 # Set rpm version accordingly %define rpmversion 3.%{upstream_sublevel}.0 %endif @@ -606,8 +606,6 @@ Patch26058: asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch #rhbz 1111138 Patch26059: i8042-Add-notimeout-quirk-for-Fujitsu-Lifebook-A544-.patch -#rhbz 1115713 -Patch26129: samsung-laptop-Add-use_native_backlight-quirk-and-en.patch #rhbz 1094948 Patch26131: acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch @@ -622,6 +620,8 @@ Patch26135: ASLR-fix-stack-randomization-on-64-bit-systems.patch #CVE-XXXX-XXXX rhbz 1189864 1192079 Patch26136: vhost-scsi-potential-memory-corruption.patch +Patch26137: fifo-nv04-remove-the-loop-from-the-interrupt-handler.patch + # git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel Patch30000: kernel-arm64.patch Patch30001: kernel-arm64-fix-psci-when-pg.patch @@ -1338,8 +1338,6 @@ ApplyPatch asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch #rhbz 1111138 ApplyPatch i8042-Add-notimeout-quirk-for-Fujitsu-Lifebook-A544-.patch -#rhbz 1115713 -ApplyPatch samsung-laptop-Add-use_native_backlight-quirk-and-en.patch #rhbz 1094948 ApplyPatch acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch @@ -1354,6 +1352,8 @@ ApplyPatch ASLR-fix-stack-randomization-on-64-bit-systems.patch #CVE-XXXX-XXXX rhbz 1189864 1192079 ApplyPatch vhost-scsi-potential-memory-corruption.patch +ApplyPatch fifo-nv04-remove-the-loop-from-the-interrupt-handler.patch + %if 0%{?aarch64patches} ApplyPatch kernel-arm64.patch %ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does. @@ -2212,6 +2212,11 @@ fi # # %changelog +* Fri Feb 20 2015 Josh Boyer - 3.20.0-0.rc0.git10.1 +- Linux v3.19-8975-g3d883483dc0a +- Add patch to fix intermittent hangs in nouveau driver +- Move mtpspi and related mods to kernel-core for VMWare guests (rhbz 1194612) + * Wed Feb 18 2015 Josh Boyer - 3.20.0-0.rc0.git9.1 - Linux v3.19-8784-gb2b89ebfc0f0 diff --git a/lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch b/lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch index ee8482b2e..b5b95c0b9 100644 --- a/lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch +++ b/lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch @@ -19,7 +19,7 @@ Signed-off-by: Josh Boyer 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Kconfig b/lib/Kconfig -index cb9758e0ba0c..8687e26fd8c8 100644 +index 87da53bb1fef..c767ba0cbab7 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -391,7 +391,8 @@ config CHECK_SIGNATURE diff --git a/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch b/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch deleted file mode 100644 index 39aa5fffa..000000000 --- a/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch +++ /dev/null @@ -1,107 +0,0 @@ -From: Hans de Goede -Date: Fri, 9 Jan 2015 14:51:21 +0100 -Subject: [PATCH] samsung-laptop: Add use_native_backlight quirk, and enable it - on some models - -Since kernel 3.14 the backlight control has been broken on various Samsung -Atom based netbooks. This has been bisected and this problem happens since -commit b35684b8fa94 ("drm/i915: do full backlight setup at enable time") - -This has been reported and discussed in detail here: -http://lists.freedesktop.org/archives/intel-gfx/2014-July/049395.html - -Unfortunately no-one has been able to fix this. This only affects Samsung -Atom netbooks, and the Linux kernel and the BIOS of those laptops have never -worked well together. All affected laptops already have a quirk to avoid using -the standard acpi-video interface and instead use the samsung specific SABI -interface which samsung-laptop uses. It seems that recent fixes to the i915 -driver have also broken backlight control through the SABI interface. - -The intel_backlight driver OTOH works fine, and also allows for finer grained -backlight control. So add a new use_native_backlight quirk, and replace the -broken_acpi_video quirk with this quirk for affected models. This new quirk -disables acpi-video as before and also stops samsung-laptop from registering -the SABI based samsung_laptop backlight interface, leaving only the working -intel_backlight interface. - -This commit enables this new quirk for 3 models which are known to be affected, -chances are that it needs to be used on other models too. - -BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1094948 # N145P -BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1115713 # N250P -Reported-by: Bertrik Sikken # N150P -Cc: stable@vger.kernel.org # 3.16 -Signed-off-by: Hans de Goede ---- - drivers/platform/x86/samsung-laptop.c | 20 +++++++++++++++++--- - 1 file changed, 17 insertions(+), 3 deletions(-) - -diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c -index ff765d8e1a09..ce364a41842a 100644 ---- a/drivers/platform/x86/samsung-laptop.c -+++ b/drivers/platform/x86/samsung-laptop.c -@@ -353,6 +353,7 @@ struct samsung_quirks { - bool broken_acpi_video; - bool four_kbd_backlight_levels; - bool enable_kbd_backlight; -+ bool use_native_backlight; - }; - - static struct samsung_quirks samsung_unknown = {}; -@@ -361,6 +362,10 @@ static struct samsung_quirks samsung_broken_acpi_video = { - .broken_acpi_video = true, - }; - -+static struct samsung_quirks samsung_use_native_backlight = { -+ .use_native_backlight = true, -+}; -+ - static struct samsung_quirks samsung_np740u3e = { - .four_kbd_backlight_levels = true, - .enable_kbd_backlight = true, -@@ -1507,7 +1512,7 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = { - DMI_MATCH(DMI_PRODUCT_NAME, "N150P"), - DMI_MATCH(DMI_BOARD_NAME, "N150P"), - }, -- .driver_data = &samsung_broken_acpi_video, -+ .driver_data = &samsung_use_native_backlight, - }, - { - .callback = samsung_dmi_matched, -@@ -1517,7 +1522,7 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = { - DMI_MATCH(DMI_PRODUCT_NAME, "N145P/N250P/N260P"), - DMI_MATCH(DMI_BOARD_NAME, "N145P/N250P/N260P"), - }, -- .driver_data = &samsung_broken_acpi_video, -+ .driver_data = &samsung_use_native_backlight, - }, - { - .callback = samsung_dmi_matched, -@@ -1557,7 +1562,7 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = { - DMI_MATCH(DMI_PRODUCT_NAME, "N250P"), - DMI_MATCH(DMI_BOARD_NAME, "N250P"), - }, -- .driver_data = &samsung_broken_acpi_video, -+ .driver_data = &samsung_use_native_backlight, - }, - { - .callback = samsung_dmi_matched, -@@ -1616,6 +1621,15 @@ static int __init samsung_init(void) - pr_info("Disabling ACPI video driver\n"); - acpi_video_unregister(); - } -+ -+ if (samsung->quirks->use_native_backlight) { -+ pr_info("Using native backlight driver\n"); -+ /* Tell acpi-video to not handle the backlight */ -+ acpi_video_dmi_promote_vendor(); -+ acpi_video_unregister(); -+ /* And also do not handle it ourselves */ -+ samsung->handle_backlight = false; -+ } - #endif - - ret = samsung_platform_init(samsung); --- -2.1.0 - diff --git a/sources b/sources index 016f87373..f8e7faf76 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ d3fc8316d4d4d04b65cbc2d70799e763 linux-3.19.tar.xz 15d8d2f97ce056488451a5bfb2944603 perf-man-3.19.tar.gz -af577efdd72c39570ba52854e2276d78 patch-3.19-git9.xz +d7783c6837600b2db12ff9bc603de6c0 patch-3.19-git10.xz