From 8c6a41b9395b945f67aeb41d677a2de3cdc7261f Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Mon, 17 Feb 2014 08:36:46 -0500 Subject: [PATCH] Linux v3.14-rc3 - Disable debugging options. - Enable CONFIG_PPC_DENORMALIZATION (from Tony Breeds) --- ...t-unable-to-find-transceiver-message.patch | 61 ---------- config-armv7 | 1 + config-generic | 8 +- config-nodebug | 112 +++++++++--------- config-powerpc-generic | 2 +- config-x86-generic | 2 +- imx-hdmi-fix.patch | 93 --------------- kernel.spec | 27 ++--- sources | 3 +- ...ending-bit-when-switching-to-oneshot.patch | 88 -------------- 10 files changed, 72 insertions(+), 325 deletions(-) delete mode 100644 0001-usb-phy-Quiet-unable-to-find-transceiver-message.patch delete mode 100644 imx-hdmi-fix.patch delete mode 100644 tick-Clear-broadcast-pending-bit-when-switching-to-oneshot.patch diff --git a/0001-usb-phy-Quiet-unable-to-find-transceiver-message.patch b/0001-usb-phy-Quiet-unable-to-find-transceiver-message.patch deleted file mode 100644 index 797cccd36..000000000 --- a/0001-usb-phy-Quiet-unable-to-find-transceiver-message.patch +++ /dev/null @@ -1,61 +0,0 @@ -From fa08d92aa0b550b3db2b569a7a93de117c5b7542 Mon Sep 17 00:00:00 2001 -From: Felipe Balbi -Date: Mon, 27 Jan 2014 09:27:46 -0600 -Subject: [PATCH] usb: phy: move some error messages to debug - -the PHY layer is supposed to be optional, -considering some PHY have no control bus -for SW to poke around. - -After commit 1ae5799 (usb: hcd: Initialize -USB phy if needed) any HCD which didn't provide -a PHY driver would emit annoying error messages. - -In this patch we're decreasing those messages -to debugging only and we also add a PHY prefix -or use dev_dbg so we know where they're coming from. - -Reported-by: Josh Boyer -Signed-off-by: Felipe Balbi -Signed-off-by: Josh Boyer ---- - drivers/usb/phy/phy.c | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -diff --git a/drivers/usb/phy/phy.c b/drivers/usb/phy/phy.c -index e6f61e4..8afa813 100644 ---- a/drivers/usb/phy/phy.c -+++ b/drivers/usb/phy/phy.c -@@ -130,7 +130,7 @@ struct usb_phy *usb_get_phy(enum usb_phy_type type) - - phy = __usb_find_phy(&phy_list, type); - if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { -- pr_err("unable to find transceiver of type %s\n", -+ pr_debug("PHY: unable to find transceiver of type %s\n", - usb_phy_type_string(type)); - goto err0; - } -@@ -228,7 +228,7 @@ struct usb_phy *usb_get_phy_dev(struct device *dev, u8 index) - - phy = __usb_find_phy_dev(dev, &phy_bind_list, index); - if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { -- pr_err("unable to find transceiver\n"); -+ dev_dbg(dev, "unable to find transceiver\n"); - goto err0; - } - -@@ -424,10 +424,8 @@ int usb_bind_phy(const char *dev_name, u8 index, - unsigned long flags; - - phy_bind = kzalloc(sizeof(*phy_bind), GFP_KERNEL); -- if (!phy_bind) { -- pr_err("phy_bind(): No memory for phy_bind"); -+ if (!phy_bind) - return -ENOMEM; -- } - - phy_bind->dev_name = dev_name; - phy_bind->phy_dev_name = phy_dev_name; --- -1.8.5.3 - diff --git a/config-armv7 b/config-armv7 index c148a6708..2dad34cec 100644 --- a/config-armv7 +++ b/config-armv7 @@ -362,6 +362,7 @@ CONFIG_HW_RANDOM_MXC_RNGA=m CONFIG_CRYPTO_DEV_SAHARA=m CONFIG_RTC_DRV_SNVS=m # CONFIG_FB_MX3 is not set +# CONFIG_FB_IMX is not set CONFIG_SND_IMX_SOC=m CONFIG_SND_SOC_FSL_SSI=m diff --git a/config-generic b/config-generic index 775858cbb..3b4b1d542 100644 --- a/config-generic +++ b/config-generic @@ -1661,13 +1661,13 @@ CONFIG_B43_SDIO=y CONFIG_B43_BCMA=y # CONFIG_B43_BCMA_EXTRA is not set 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_FORCE_PIO is not set 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 @@ -3502,7 +3502,7 @@ CONFIG_USB_STORAGE_REALTEK=m CONFIG_REALTEK_AUTOPM=y CONFIG_USB_STORAGE_ENE_UB6250=m # CONFIG_USB_LIBUSUAL is not set -CONFIG_USB_UAS=m +# CONFIG_USB_UAS is not set # @@ -4570,7 +4570,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 9d4b2e91f..ee4842bfc 100644 --- a/config-nodebug +++ b/config-nodebug @@ -2,98 +2,98 @@ 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_WW_MUTEX_SLOWPATH=y -CONFIG_DEBUG_RT_MUTEXES=y -CONFIG_DEBUG_LOCK_ALLOC=y -CONFIG_PROVE_LOCKING=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_PROVE_RCU=y +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC 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_ACPI_DEBUG_FUNC_TRACE is not set -CONFIG_DEBUG_SG=y +# CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_PAGEALLOC is not set -CONFIG_DEBUG_WRITECOUNT=y -CONFIG_DEBUG_OBJECTS=y +# CONFIG_DEBUG_WRITECOUNT is not set +# 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_X86_PTDUMP 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_SYSCTL_SYSCALL_CHECK=y +# CONFIG_SYSCTL_SYSCALL_CHECK 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_PCI_DEFAULT_USE_CRS=y @@ -101,18 +101,18 @@ CONFIG_KGDB_KDB=y 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 @@ -123,7 +123,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-powerpc-generic b/config-powerpc-generic index bcc30fe75..9c0ad6011 100644 --- a/config-powerpc-generic +++ b/config-powerpc-generic @@ -361,7 +361,7 @@ CONFIG_RCU_FANOUT_LEAF=16 # CONFIG_SPAPR_TCE_IOMMU is not set # CONFIG_TRANSPARENT_HUGEPAGE is not set -# CONFIG_PPC_DENORMALISATION is not set +CONFIG_PPC_DENORMALISATION=y # CONFIG_MDIO_BUS_MUX_MMIOREG is not set # CONFIG_GPIO_ADNP is not set # CONFIG_MFD_SYSCON is not set diff --git a/config-x86-generic b/config-x86-generic index c44b81f3a..f6b3fa8c5 100644 --- a/config-x86-generic +++ b/config-x86-generic @@ -334,7 +334,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/imx-hdmi-fix.patch b/imx-hdmi-fix.patch deleted file mode 100644 index c7db416b4..000000000 --- a/imx-hdmi-fix.patch +++ /dev/null @@ -1,93 +0,0 @@ -Instead of redefining the enums, use the standard ones already -available to avoid the following build errors: - -drivers/staging/imx-drm/imx-hdmi.c:56:13: error: nested redefinition of ‘enum hdmi_colorimetry’ -drivers/staging/imx-drm/imx-hdmi.c:56:13: error: redeclaration of ‘enum hdmi_colorimetry’ -In file included from include/drm/drm_crtc.h:33:0, - from include/drm/drmP.h:710, - from drivers/staging/imx-drm/imx-hdmi.c:24: -include/linux/hdmi.h:48:6: note: originally defined here - -Signed-off-by: Sachin Kamat -Cc: Guennadi Liakhovetski -Cc: Fabio Estevam ---- -Only compile tested. ---- - drivers/staging/imx-drm/imx-hdmi.c | 22 +++++++++------------- - 1 file changed, 9 insertions(+), 13 deletions(-) - -diff --git a/drivers/staging/imx-drm/imx-hdmi.c b/drivers/staging/imx-drm/imx-hdmi.c -index f3a1f5e2e492..62ce0e86f14b 100644 ---- a/drivers/staging/imx-drm/imx-hdmi.c -+++ b/drivers/staging/imx-drm/imx-hdmi.c -@@ -16,6 +16,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -52,11 +53,6 @@ enum hdmi_datamap { - YCbCr422_12B = 0x12, - }; - --enum hdmi_colorimetry { -- ITU601, -- ITU709, --}; -- - enum imx_hdmi_devtype { - IMX6Q_HDMI, - IMX6DL_HDMI, -@@ -489,12 +485,12 @@ static void imx_hdmi_update_csc_coeffs(struct imx_hdmi *hdmi) - - if (is_color_space_conversion(hdmi)) { - if (hdmi->hdmi_data.enc_out_format == RGB) { -- if (hdmi->hdmi_data.colorimetry == ITU601) -+ if (hdmi->hdmi_data.colorimetry == HDMI_COLORIMETRY_ITU_601) - csc_coeff = &csc_coeff_rgb_out_eitu601; - else - csc_coeff = &csc_coeff_rgb_out_eitu709; - } else if (hdmi->hdmi_data.enc_in_format == RGB) { -- if (hdmi->hdmi_data.colorimetry == ITU601) -+ if (hdmi->hdmi_data.colorimetry == HDMI_COLORIMETRY_ITU_601) - csc_coeff = &csc_coeff_rgb_in_eitu601; - else - csc_coeff = &csc_coeff_rgb_in_eitu709; -@@ -1140,16 +1136,16 @@ static void hdmi_config_AVI(struct imx_hdmi *hdmi) - /* Set up colorimetry */ - if (hdmi->hdmi_data.enc_out_format == XVYCC444) { - colorimetry = HDMI_FC_AVICONF1_COLORIMETRY_EXTENDED_INFO; -- if (hdmi->hdmi_data.colorimetry == ITU601) -+ if (hdmi->hdmi_data.colorimetry == HDMI_COLORIMETRY_ITU_601) - ext_colorimetry = - HDMI_FC_AVICONF2_EXT_COLORIMETRY_XVYCC601; -- else /* hdmi->hdmi_data.colorimetry == ITU709 */ -+ else /*hdmi->hdmi_data.colorimetry == HDMI_COLORIMETRY_ITU_709*/ - ext_colorimetry = - HDMI_FC_AVICONF2_EXT_COLORIMETRY_XVYCC709; - } else if (hdmi->hdmi_data.enc_out_format != RGB) { -- if (hdmi->hdmi_data.colorimetry == ITU601) -+ if (hdmi->hdmi_data.colorimetry == HDMI_COLORIMETRY_ITU_601) - colorimetry = HDMI_FC_AVICONF1_COLORIMETRY_SMPTE; -- else /* hdmi->hdmi_data.colorimetry == ITU709 */ -+ else /*hdmi->hdmi_data.colorimetry == HDMI_COLORIMETRY_ITU_709*/ - colorimetry = HDMI_FC_AVICONF1_COLORIMETRY_ITUR; - ext_colorimetry = HDMI_FC_AVICONF2_EXT_COLORIMETRY_XVYCC601; - } else { /* Carries no data */ -@@ -1379,9 +1375,9 @@ static int imx_hdmi_setup(struct imx_hdmi *hdmi, struct drm_display_mode *mode) - (hdmi->vic == 21) || (hdmi->vic == 22) || - (hdmi->vic == 2) || (hdmi->vic == 3) || - (hdmi->vic == 17) || (hdmi->vic == 18)) -- hdmi->hdmi_data.colorimetry = ITU601; -+ hdmi->hdmi_data.colorimetry = HDMI_COLORIMETRY_ITU_601; - else -- hdmi->hdmi_data.colorimetry = ITU709; -+ hdmi->hdmi_data.colorimetry = HDMI_COLORIMETRY_ITU_709; - - if ((hdmi->vic == 10) || (hdmi->vic == 11) || - (hdmi->vic == 12) || (hdmi->vic == 13) || --- -1.7.9.5 diff --git a/kernel.spec b/kernel.spec index bbf4c3751..80cdeb02a 100644 --- a/kernel.spec +++ b/kernel.spec @@ -59,9 +59,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 2 +%define rcrev 3 # The git snapshot level -%define gitrev 4 +%define gitrev 0 # Set rpm version accordingly %define rpmversion 3.%{upstream_sublevel}.0 %endif @@ -122,7 +122,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} @@ -618,14 +618,6 @@ Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch #rhbz 993744 Patch25128: dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch -#rhbz 1057529 -Patch25188: 0001-usb-phy-Quiet-unable-to-find-transceiver-message.patch - -Patch25192: imx-hdmi-fix.patch - -#rhbz 1031296 -Patch25194: tick-Clear-broadcast-pending-bit-when-switching-to-oneshot.patch - #rhbz 1045755 Patch25195: cgroup-fixes.patch @@ -1273,14 +1265,6 @@ ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch #rhbz 993744 ApplyPatch dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch -# rhbz 1057529 -ApplyPatch 0001-usb-phy-Quiet-unable-to-find-transceiver-message.patch - -ApplyPatch imx-hdmi-fix.patch - -#rhbz 1031296 -ApplyPatch tick-Clear-broadcast-pending-bit-when-switching-to-oneshot.patch - #rhbz 1045755 ApplyPatch cgroup-fixes.patch @@ -2068,6 +2052,11 @@ fi # ||----w | # || || %changelog +* Mon Feb 17 2014 Josh Boyer - 3.14.0-0.rc3.git0.1 +- Linux v3.14-rc3 +- Disable debugging options. +- Enable CONFIG_PPC_DENORMALIZATION (from Tony Breeds) + * Fri Feb 14 2014 Josh Boyer - 3.14.0-0.rc2.git4.1 - Linux v3.14-rc2-342-g5e57dc8 - CVE-2014-0069 cifs: incorrect handling of bogus user pointers (rhbz 1064253 1062578) diff --git a/sources b/sources index 21e91b6d4..63c744845 100644 --- a/sources +++ b/sources @@ -1,4 +1,3 @@ 0ecbaf65c00374eb4a826c2f9f37606f linux-3.13.tar.xz 732d1952898b28d5ccc264cad77b0619 perf-man-3.13.tar.gz -8a746bf23f7c5c3a2f46eb649ab69fde patch-3.14-rc2.xz -62a49f71e456085057a829c904310188 patch-3.14-rc2-git4.xz +474f4588824074799c97bfdb026e113f patch-3.14-rc3.xz diff --git a/tick-Clear-broadcast-pending-bit-when-switching-to-oneshot.patch b/tick-Clear-broadcast-pending-bit-when-switching-to-oneshot.patch deleted file mode 100644 index a0d58cf4d..000000000 --- a/tick-Clear-broadcast-pending-bit-when-switching-to-oneshot.patch +++ /dev/null @@ -1,88 +0,0 @@ -On Mon, 10 Feb 2014, Thomas Gleixner wrote: -> On Mon, 10 Feb 2014, poma wrote: -> -> > [ 83.558551] [] amd_e400_idle+0x87/0x130 -> -> So this seems to happen only on AMD machines which use that e400 idle -> mode. I have no idea at the moment whats wrong there. I'll find one of -> those machines and try to reproduce. - -Found it. Patch below. - -Thanks, - - tglx ----- -Subject: tick: Clear broadcast pending bit when switching to oneshot -From: Thomas Gleixner -Date: Tue, 11 Feb 2014 14:35:40 +0100 - -AMD systems which use the C1E workaround in the amd_e400_idle routine -trigger the WARN_ON_ONCE in the broadcast code when onlining a CPU. - -The reason is that the idle routine of those AMD systems switches the -cpu into forced broadcast mode early on before the newly brought up -CPU can switch over to high resolution / NOHZ mode. The timer related -CPU1 bringup looks like this: - - clockevent_register_device(local_apic); - tick_setup(local_apic); - ... - idle() - tick_broadcast_on_off(FORCE); - tick_broadcast_oneshot_control(ENTER) - cpumask_set(cpu, broadcast_oneshot_mask); - halt(); - -Now the broadcast interrupt on CPU0 sets CPU1 in the -broadcast_pending_mask and wakes CPU1. So CPU1 continues: - - local_apic_timer_interrupt() - tick_handle_periodic(); - softirq() - tick_init_highres(); - cpumask_clr(cpu, broadcast_oneshot_mask); - - tick_broadcast_oneshot_control(ENTER) - WARN_ON(cpumask_test(cpu, broadcast_pending_mask); - -So while we remove CPU1 from the broadcast_oneshot_mask when we switch -over to highres mode, we do not clear the pending bit, which then -triggers the warning when we go back to idle. - -The reason why this is only visible on C1E affected AMD systems is -that the other machines enter the deep sleep states via -acpi_idle/intel_idle and exit the broadcast mode before executing the -remote triggered local_apic_timer_interrupt. So the pending bit is -already cleared when the switch over to highres mode is clearing the -oneshot mask. - -The solution is simple: Clear the pending bit together with the mask -bit when we switch over to highres mode. - -Reported-by: poma -Cc: stable@vger.kernel.org # 3.10+ -Signed-off-by: Thomas Gleixner ---- - kernel/time/tick-broadcast.c | 1 + - 1 file changed, 1 insertion(+) - -Index: linux-2.6/kernel/time/tick-broadcast.c -=================================================================== ---- linux-2.6.orig/kernel/time/tick-broadcast.c -+++ linux-2.6/kernel/time/tick-broadcast.c -@@ -756,6 +756,7 @@ out: - static void tick_broadcast_clear_oneshot(int cpu) - { - cpumask_clear_cpu(cpu, tick_broadcast_oneshot_mask); -+ cpumask_clear_cpu(cpu, tick_broadcast_pending_mask); - } - - static void tick_broadcast_init_next_event(struct cpumask *mask, - - --- -To unsubscribe from this list: send the line "unsubscribe linux-kernel" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html -Please read the FAQ at http://www.tux.org/lkml/ \ No newline at end of file