From 0a8b8ae94082533d61502474ef5c96086739acbc Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Mon, 12 Jan 2015 11:36:21 -0500 Subject: [PATCH] Linux v3.19-rc4 - Disable debugging options. --- ...q-option-to-disable-secure-boot-mode.patch | 10 +- Kbuild-Add-an-option-to-enable-GCC-VTA.patch | 2 +- config-debug | 1 + config-generic | 6 +- config-nodebug | 113 +++++++++--------- config-x86-generic | 2 +- drm-i915-hush-check-crtc-state.patch | 2 +- kernel-arm64.patch | 7 +- kernel.spec | 22 ++-- ...dd-broken-acpi-video-quirk-for-NC210.patch | 39 ------ ...dd-use_native_backlight-quirk-and-en.patch | 4 +- sources | 3 +- x86-vdso-Use-asm-volatile-in-__getcpu.patch | 55 --------- 13 files changed, 83 insertions(+), 183 deletions(-) delete mode 100644 samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch delete mode 100644 x86-vdso-Use-asm-volatile-in-__getcpu.patch diff --git a/Add-sysrq-option-to-disable-secure-boot-mode.patch b/Add-sysrq-option-to-disable-secure-boot-mode.patch index ef8827fda..174227f93 100644 --- a/Add-sysrq-option-to-disable-secure-boot-mode.patch +++ b/Add-sysrq-option-to-disable-secure-boot-mode.patch @@ -215,15 +215,15 @@ index 387fa7d05c98..4b07e30b3279 100644 int unregister_sysrq_key(int key, struct sysrq_key_op *op); struct sysrq_key_op *__sysrq_get_key_op(int key); diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c -index 379650b984f8..070f29fefdc2 100644 +index f191bddf64b8..0cf8a7d49b91 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c -@@ -1924,7 +1924,7 @@ static int kdb_sr(int argc, const char **argv) - if (argc != 1) +@@ -1968,7 +1968,7 @@ static int kdb_sr(int argc, const char **argv) return KDB_ARGCOUNT; + kdb_trap_printk++; -- __handle_sysrq(*argv[1], false); -+ __handle_sysrq(*argv[1], SYSRQ_FROM_KERNEL); +- __handle_sysrq(*argv[1], check_mask); ++ __handle_sysrq(*argv[1], check_mask & SYSRQ_FROM_KERNEL); kdb_trap_printk--; return 0; diff --git a/Kbuild-Add-an-option-to-enable-GCC-VTA.patch b/Kbuild-Add-an-option-to-enable-GCC-VTA.patch index d043c6912..2d880a886 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 87f0c052b0ac..cd4645237d1c 100644 +index e41a3356abee..2b21fa6e6a27 100644 --- a/Makefile +++ b/Makefile @@ -706,7 +706,11 @@ KBUILD_CFLAGS += -fomit-frame-pointer diff --git a/config-debug b/config-debug index 28297d87e..fcc5aac03 100644 --- a/config-debug +++ b/config-debug @@ -100,6 +100,7 @@ CONFIG_QUOTA_DEBUG=y CONFIG_KGDB_KDB=y CONFIG_KDB_KEYBOARD=y +CONFIG_KDB_DEFAULT_ENABLE=0x1 CONFIG_KDB_CONTINUE_CATASTROPHIC=0 CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y diff --git a/config-generic b/config-generic index 58450cb30..ddbfdde23 100644 --- a/config-generic +++ b/config-generic @@ -1710,13 +1710,13 @@ CONFIG_B43_PCMCIA=y CONFIG_B43_SDIO=y CONFIG_B43_BCMA=y CONFIG_B43_BCMA_PIO=y -CONFIG_B43_DEBUG=y +# CONFIG_B43_DEBUG is not set CONFIG_B43_PHY_LP=y CONFIG_B43_PHY_N=y CONFIG_B43_PHY_HT=y CONFIG_B43_PHY_G=y CONFIG_B43LEGACY=m -CONFIG_B43LEGACY_DEBUG=y +# CONFIG_B43LEGACY_DEBUG is not set CONFIG_B43LEGACY_DMA=y CONFIG_B43LEGACY_PIO=y CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y @@ -4742,7 +4742,7 @@ CONFIG_PM_DEBUG=y # CONFIG_DPM_WATCHDOG is not set # revisit this in debug CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y -CONFIG_PM_TEST_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_RUNTIME=y # CONFIG_PM_OPP is not set # CONFIG_PM_AUTOSLEEP is not set diff --git a/config-nodebug b/config-nodebug index cea2d006b..01008d646 100644 --- a/config-nodebug +++ b/config-nodebug @@ -2,118 +2,119 @@ CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_DEBUG=y CONFIG_SND_PCM_XRUN_DEBUG=y -CONFIG_DEBUG_ATOMIC_SLEEP=y +# CONFIG_DEBUG_ATOMIC_SLEEP is not set -CONFIG_DEBUG_MUTEXES=y -CONFIG_DEBUG_RT_MUTEXES=y -CONFIG_DEBUG_LOCK_ALLOC=y -CONFIG_LOCK_TORTURE_TEST=m -CONFIG_PROVE_LOCKING=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_PROVE_RCU=y +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_PROVE_RCU is not set # CONFIG_PROVE_RCU_REPEATEDLY is not set -CONFIG_DEBUG_PER_CPU_MAPS=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set CONFIG_CPUMASK_OFFSTACK=y -CONFIG_CPU_NOTIFIER_ERROR_INJECT=m +# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set -CONFIG_FAULT_INJECTION=y -CONFIG_FAILSLAB=y -CONFIG_FAIL_PAGE_ALLOC=y -CONFIG_FAIL_MAKE_REQUEST=y -CONFIG_FAULT_INJECTION_DEBUG_FS=y -CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y -CONFIG_FAIL_IO_TIMEOUT=y -CONFIG_FAIL_MMC_REQUEST=y +# CONFIG_FAULT_INJECTION is not set +# CONFIG_FAILSLAB is not set +# CONFIG_FAIL_PAGE_ALLOC is not set +# CONFIG_FAIL_MAKE_REQUEST is not set +# CONFIG_FAULT_INJECTION_DEBUG_FS is not set +# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set +# CONFIG_FAIL_IO_TIMEOUT is not set +# CONFIG_FAIL_MMC_REQUEST is not set -CONFIG_LOCK_STAT=y +# CONFIG_LOCK_STAT is not set -CONFIG_DEBUG_STACK_USAGE=y +# CONFIG_DEBUG_STACK_USAGE is not set -CONFIG_ACPI_DEBUG=y +# CONFIG_ACPI_DEBUG is not set -CONFIG_DEBUG_SG=y -CONFIG_DEBUG_PI_LIST=y +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_PI_LIST is not set # CONFIG_PAGE_EXTENSION is not set # CONFIG_PAGE_OWNER is not set # CONFIG_DEBUG_PAGEALLOC is not set -CONFIG_DEBUG_OBJECTS=y +# CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_OBJECTS_SELFTEST is not set -CONFIG_DEBUG_OBJECTS_FREE=y -CONFIG_DEBUG_OBJECTS_TIMERS=y -CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +# CONFIG_DEBUG_OBJECTS_FREE is not set +# CONFIG_DEBUG_OBJECTS_TIMERS is not set +# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 CONFIG_X86_PTDUMP=y -CONFIG_ARM64_PTDUMP=y -CONFIG_EFI_PGT_DUMP=y +# CONFIG_ARM64_PTDUMP is not set +# CONFIG_EFI_PGT_DUMP is not set -CONFIG_CAN_DEBUG_DEVICES=y +# CONFIG_CAN_DEBUG_DEVICES is not set -CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set -CONFIG_DEBUG_NOTIFIERS=y +# CONFIG_DEBUG_NOTIFIERS is not set -CONFIG_DMA_API_DEBUG=y +# CONFIG_DMA_API_DEBUG is not set -CONFIG_MMIOTRACE=y +# CONFIG_MMIOTRACE is not set -CONFIG_DEBUG_CREDENTIALS=y +# CONFIG_DEBUG_CREDENTIALS is not set # off in both production debug and nodebug builds, # on in rawhide nodebug builds -CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set -CONFIG_EXT4_DEBUG=y +# CONFIG_EXT4_DEBUG is not set # CONFIG_XFS_WARN is not set -CONFIG_DEBUG_PERF_USE_VMALLOC=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set -CONFIG_JBD2_DEBUG=y +# CONFIG_JBD2_DEBUG is not set -CONFIG_NFSD_FAULT_INJECTION=y +# CONFIG_NFSD_FAULT_INJECTION is not set -CONFIG_DEBUG_BLK_CGROUP=y +# CONFIG_DEBUG_BLK_CGROUP is not set -CONFIG_DRBD_FAULT_INJECTION=y +# CONFIG_DRBD_FAULT_INJECTION is not set -CONFIG_ATH_DEBUG=y -CONFIG_CARL9170_DEBUGFS=y -CONFIG_IWLWIFI_DEVICE_TRACING=y +# CONFIG_ATH_DEBUG is not set +# CONFIG_CARL9170_DEBUGFS is not set +# CONFIG_IWLWIFI_DEVICE_TRACING is not set # CONFIG_RTLWIFI_DEBUG is not set -CONFIG_DEBUG_OBJECTS_WORK=y +# CONFIG_DEBUG_OBJECTS_WORK is not set -CONFIG_DMADEVICES_DEBUG=y -CONFIG_DMADEVICES_VDEBUG=y +# CONFIG_DMADEVICES_DEBUG is not set +# CONFIG_DMADEVICES_VDEBUG is not set CONFIG_PM_ADVANCED_DEBUG=y -CONFIG_CEPH_LIB_PRETTYDEBUG=y -CONFIG_QUOTA_DEBUG=y +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +# CONFIG_QUOTA_DEBUG is not set CONFIG_KGDB_KDB=y +CONFIG_KDB_DEFAULT_ENABLE=0x0 CONFIG_KDB_KEYBOARD=y CONFIG_KDB_CONTINUE_CATASTROPHIC=0 -CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y +# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set # CONFIG_PERCPU_TEST is not set -CONFIG_TEST_LIST_SORT=y +# CONFIG_TEST_LIST_SORT is not set # CONFIG_TEST_STRING_HELPERS is not set -CONFIG_DETECT_HUNG_TASK=y +# CONFIG_DETECT_HUNG_TASK is not set CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set -CONFIG_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024 # CONFIG_DEBUG_KMEMLEAK_TEST is not set CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y @@ -124,7 +125,7 @@ CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y # CONFIG_SPI_DEBUG is not set -CONFIG_X86_DEBUG_STATIC_CPU_HAS=y +# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set # CONFIG_SCHEDSTATS is not set # CONFIG_LATENCYTOP is not set diff --git a/config-x86-generic b/config-x86-generic index f6682a9a4..6acaaf3d6 100644 --- a/config-x86-generic +++ b/config-x86-generic @@ -346,7 +346,7 @@ CONFIG_SP5100_TCO=m # CONFIG_MEMTEST is not set # CONFIG_DEBUG_TLBFLUSH is not set -CONFIG_MAXSMP=y +# CONFIG_MAXSMP is not set CONFIG_HP_ILO=m diff --git a/drm-i915-hush-check-crtc-state.patch b/drm-i915-hush-check-crtc-state.patch index 329b59843..c1a2f9363 100644 --- a/drm-i915-hush-check-crtc-state.patch +++ b/drm-i915-hush-check-crtc-state.patch @@ -14,7 +14,7 @@ Upstream-status: http://lists.freedesktop.org/archives/intel-gfx/2013-November/0 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index fb3e3d429191..49e5d5f9fbe5 100644 +index e2af1383b179..75e00e38a2a0 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -10869,7 +10869,7 @@ check_crtc_state(struct drm_device *dev) diff --git a/kernel-arm64.patch b/kernel-arm64.patch index ee612731b..4c8c3290a 100644 --- a/kernel-arm64.patch +++ b/kernel-arm64.patch @@ -1509,7 +1509,7 @@ index f1dbca7..dbb3945 100644 static int __init cpu_psci_cpu_init(struct device_node *dn, unsigned int cpu) diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c -index b809911..e7bcbed 100644 +index 20fe2932ad0c..cf4ab5661088 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -43,6 +43,7 @@ @@ -1537,7 +1537,7 @@ index b809911..e7bcbed 100644 parse_early_param(); /* -@@ -398,18 +402,28 @@ void __init setup_arch(char **cmdline_p) +@@ -398,19 +402,29 @@ void __init setup_arch(char **cmdline_p) efi_init(); arm64_memblock_init(); @@ -1548,6 +1548,7 @@ index b809911..e7bcbed 100644 request_standard_resources(); efi_idmap_init(); + early_ioremap_reset(); - unflatten_device_tree(); - @@ -1570,7 +1571,7 @@ index b809911..e7bcbed 100644 smp_build_mpidr_hash(); #endif -@@ -564,3 +578,25 @@ const struct seq_operations cpuinfo_op = { +@@ -565,3 +579,25 @@ const struct seq_operations cpuinfo_op = { .stop = c_stop, .show = c_show }; diff --git a/kernel.spec b/kernel.spec index 935967514..892cb1378 100644 --- a/kernel.spec +++ b/kernel.spec @@ -67,9 +67,9 @@ Summary: The Linux kernel # The next upstream release sublevel (base_sublevel+1) %define upstream_sublevel %(echo $((%{base_sublevel} + 1))) # The rc snapshot level -%define rcrev 3 +%define rcrev 4 # The git snapshot level -%define gitrev 2 +%define gitrev 0 # Set rpm version accordingly %define rpmversion 3.%{upstream_sublevel}.0 %endif @@ -124,7 +124,7 @@ Summary: The Linux kernel # Set debugbuildsenabled to 1 for production (build separate debug kernels) # and 0 for rawhide (all kernels are debug kernels). # See also 'make debug' and 'make release'. -%define debugbuildsenabled 0 +%define debugbuildsenabled 1 # Want to build a vanilla kernel build without any non-upstream patches? %define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0} @@ -601,9 +601,6 @@ Patch21247: ath9k-rx-dma-stop-check.patch Patch22000: weird-root-dentry-name-debug.patch -# Patch series from Hans for various backlight and platform driver fixes -Patch26002: samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch - Patch26058: asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch #rhbz 1111138 @@ -614,9 +611,6 @@ Patch26092: xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch Patch26093: uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch Patch26094: uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch -#rhbz 1178975 -Patch26125: x86-vdso-Use-asm-volatile-in-__getcpu.patch - #rhbz 1124119 Patch26126: uas-Do-not-blacklist-ASM1153-disk-enclosures.patch Patch26127: uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch @@ -1336,9 +1330,6 @@ ApplyPatch criu-no-expert.patch #rhbz 892811 ApplyPatch ath9k-rx-dma-stop-check.patch -# Patch series from Hans for various backlight and platform driver fixes -ApplyPatch samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch - ApplyPatch asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch #rhbz 1111138 @@ -1349,9 +1340,6 @@ ApplyPatch xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch ApplyPatch uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch ApplyPatch uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch -#rhbz 1178975 -ApplyPatch x86-vdso-Use-asm-volatile-in-__getcpu.patch - #rhbz 1124119 ApplyPatch uas-Do-not-blacklist-ASM1153-disk-enclosures.patch ApplyPatch uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch @@ -2228,6 +2216,10 @@ fi # ||----w | # || || %changelog +* Mon Jan 12 2015 Josh Boyer - 3.19.0-0.rc4.git0.1 +- Linux v3.19-rc4 +- Disable debugging options. + * Mon Jan 12 2015 Josh Boyer - Backlight fixes for Samsung and Dell machines (rhbz 1094948 1115713) - Add various UAS quirks (rhbz 1124119) diff --git a/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch b/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch deleted file mode 100644 index 86870bb41..000000000 --- a/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch +++ /dev/null @@ -1,39 +0,0 @@ -From: Hans de Goede -Date: Mon, 2 Jun 2014 17:40:59 +0200 -Subject: [PATCH] samsung-laptop: Add broken-acpi-video quirk for NC210/NC110 - -Reported (and tested) here: -https://bugzilla.redhat.com/show_bug.cgi?id=861573 - -Bugzilla: 861573 -Upstream-status: Waiting for feedback from reporter - -Signed-off-by: Hans de Goede ---- - drivers/platform/x86/samsung-laptop.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c -index ff765d8e1a09..864290243e46 100644 ---- a/drivers/platform/x86/samsung-laptop.c -+++ b/drivers/platform/x86/samsung-laptop.c -@@ -1578,6 +1578,16 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = { - }, - .driver_data = &samsung_np740u3e, - }, -+ { -+ .callback = samsung_dmi_matched, -+ .ident = "NC210", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), -+ DMI_MATCH(DMI_PRODUCT_NAME, "NC210/NC110"), -+ DMI_MATCH(DMI_BOARD_NAME, "NC210/NC110"), -+ }, -+ .driver_data = &samsung_broken_acpi_video, -+ }, - { }, - }; - MODULE_DEVICE_TABLE(dmi, samsung_dmi_table); --- -2.1.0 - diff --git a/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch b/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch index 30f57302a..39aa5fffa 100644 --- a/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch +++ b/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch @@ -37,7 +37,7 @@ Signed-off-by: Hans de Goede 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c -index 864290243e46..477de0a9e1ee 100644 +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 { @@ -86,7 +86,7 @@ index 864290243e46..477de0a9e1ee 100644 }, { .callback = samsung_dmi_matched, -@@ -1626,6 +1631,15 @@ static int __init samsung_init(void) +@@ -1616,6 +1621,15 @@ static int __init samsung_init(void) pr_info("Disabling ACPI video driver\n"); acpi_video_unregister(); } diff --git a/sources b/sources index 3062a188b..717250b58 100644 --- a/sources +++ b/sources @@ -1,4 +1,3 @@ 9e854df51ca3fef8bfe566dbd7b89241 linux-3.18.tar.xz 813ccb96f0b379d656e57442c2587ca3 perf-man-3.18.tar.gz -63cb0c21a591edafb1032bdc689c9193 patch-3.19-rc3.xz -907f66df3a9e06bc914da2596ee3950a patch-3.19-rc3-git2.xz +7aa3aed1c5a65bb633e8c3e437ec0dfb patch-3.19-rc4.xz diff --git a/x86-vdso-Use-asm-volatile-in-__getcpu.patch b/x86-vdso-Use-asm-volatile-in-__getcpu.patch deleted file mode 100644 index 8cdf8e7c6..000000000 --- a/x86-vdso-Use-asm-volatile-in-__getcpu.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 1ddf0b1b11aa8a90cef6706e935fc31c75c406ba Mon Sep 17 00:00:00 2001 -From: Andy Lutomirski -Date: Sun, 21 Dec 2014 08:57:46 -0800 -Subject: x86, vdso: Use asm volatile in __getcpu - -In Linux 3.18 and below, GCC hoists the lsl instructions in the -pvclock code all the way to the beginning of __vdso_clock_gettime, -slowing the non-paravirt case significantly. For unknown reasons, -presumably related to the removal of a branch, the performance issue -is gone as of - -e76b027e6408 x86,vdso: Use LSL unconditionally for vgetcpu - -but I don't trust GCC enough to expect the problem to stay fixed. - -There should be no correctness issue, because the __getcpu calls in -__vdso_vlock_gettime were never necessary in the first place. - -Note to stable maintainers: In 3.18 and below, depending on -configuration, gcc 4.9.2 generates code like this: - - 9c3: 44 0f 03 e8 lsl %ax,%r13d - 9c7: 45 89 eb mov %r13d,%r11d - 9ca: 0f 03 d8 lsl %ax,%ebx - -This patch won't apply as is to any released kernel, but I'll send a -trivial backported version if needed. - -Fixes: 51c19b4f5927 x86: vdso: pvclock gettime support -Cc: stable@vger.kernel.org # 3.8+ -Cc: Marcelo Tosatti -Acked-by: Paolo Bonzini -Signed-off-by: Andy Lutomirski - -diff --git a/arch/x86/include/asm/vgtod.h b/arch/x86/include/asm/vgtod.h -index e7e9682..f556c48 100644 ---- a/arch/x86/include/asm/vgtod.h -+++ b/arch/x86/include/asm/vgtod.h -@@ -80,9 +80,11 @@ static inline unsigned int __getcpu(void) - - /* - * Load per CPU data from GDT. LSL is faster than RDTSCP and -- * works on all CPUs. -+ * works on all CPUs. This is volatile so that it orders -+ * correctly wrt barrier() and to keep gcc from cleverly -+ * hoisting it out of the calling function. - */ -- asm("lsl %1,%0" : "=r" (p) : "r" (__PER_CPU_SEG)); -+ asm volatile ("lsl %1,%0" : "=r" (p) : "r" (__PER_CPU_SEG)); - - return p; - } --- -cgit v0.10.2 -