<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/kernel/time, branch jb4.2.2_1.0.0-ga</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>Merge remote-tracking branch 'fsl-linux-sdk/imx_3.0.35' into imx_3.0.35_android</title>
<updated>2013-03-06T07:07:12+00:00</updated>
<author>
<name>guoyin.chen</name>
<email>guoyin.chen@freescale.com</email>
</author>
<published>2013-03-06T07:07:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4becc339ef23d54b39139a85bb6e33b7f27d67d1'/>
<id>4becc339ef23d54b39139a85bb6e33b7f27d67d1</id>
<content type='text'>
Conflicts:
	drivers/video/mxc/ldb.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/video/mxc/ldb.c
</pre>
</div>
</content>
</entry>
<entry>
<title>timer: fix the too many reries on the per-cpu event device</title>
<updated>2013-03-01T09:17:44+00:00</updated>
<author>
<name>Jason Liu</name>
<email>r64343@freescale.com</email>
</author>
<published>2013-02-25T11:55:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e83a0cfe4c5c2ab2045bc6d93b34323faafdcc4c'/>
<id>e83a0cfe4c5c2ab2045bc6d93b34323faafdcc4c</id>
<content type='text'>
There are so many retries happen on the per-cpu event device
when run the command 'cat /proc/timer_list', as following:

root@~$ cat /proc/timer_list
Timer List Version: v0.6
HRTIMER_MAX_CLOCK_BASES: 3
now at 3297691988044 nsecs

Tick Device: mode:     1
Per CPU device: 0
Clock Event Device: local_timer
 max_delta_ns:   8624432320
 min_delta_ns:   1000
 mult:           2138893713
 shift:          32
 mode:           3
 next_event:     3297700000000 nsecs
 set_next_event: twd_set_next_event
 set_mode:       twd_set_mode
 event_handler:  hrtimer_interrupt
 retries:        36383

the reason is that the local timer will stop when enter C3 state,
we need switch the local timer to bc timer when enter the state
and switch back when exit from the that state.The code is like this:

void arch_idle(void)
{
....
clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &amp;cpu);
enter_the_wait_mode();

clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &amp;cpu);
}

when the broadcast timer interrupt arrives(this interrupt just wakeup
the ARM, and ARM has no chance to handle it since local irq is disabled.
In fact it's disabled in cpu_idle() of arch/arm/kernel/process.c)

the broadcast timer interrupt will wake up the CPU and run:

clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &amp;cpu);    -&gt;
tick_broadcast_oneshot_control(...);
-&gt;
tick_program_event(dev-&gt;next_event, 1);
-&gt;
tick_dev_program_event(dev, expires, force);
-&gt;
for (i = 0;;) {
                int ret = clockevents_program_event(dev, expires, now);
                if (!ret || !force)
                        return ret;
                dev-&gt;retries++;
                ....
                now = ktime_get();
                expires = ktime_add_ns(now, dev-&gt;min_delta_ns);
}
clockevents_program_event(dev, expires, now);
        delta = ktime_to_ns(ktime_sub(expires, now));

        if (delta &lt;= 0)
                return -ETIME;
when the bc timer interrupt arrives,  which means the last local timer
expires too. so, clockevents_program_event will return -ETIME, which will
cause the dev-&gt;retries++ when retry to program the expired timer.

Even under the worst case, after the re-program the expired timer,
then CPU enter idle quickly before the re-progam timer expired,
it will make system ping-pang forever if no interrupt happen.

We have found the ping-pang issue during the video play-back test.
system will freeze and video not playing for sometime until other interrupt
occured to break the error condition.

The detailed information, please refer to the LKML:https://lkml.org/lkml/2013/2/20/216
which posted by Jason Liu.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Jason Liu &lt;r64343@freescale.com&gt;
Tested-by: Jason Liu &lt;r64343@freescale.com&gt;
Tested-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
Tested-by: Lorenzo Pieralisi &lt;lorenzo.pieralisi@arm.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are so many retries happen on the per-cpu event device
when run the command 'cat /proc/timer_list', as following:

root@~$ cat /proc/timer_list
Timer List Version: v0.6
HRTIMER_MAX_CLOCK_BASES: 3
now at 3297691988044 nsecs

Tick Device: mode:     1
Per CPU device: 0
Clock Event Device: local_timer
 max_delta_ns:   8624432320
 min_delta_ns:   1000
 mult:           2138893713
 shift:          32
 mode:           3
 next_event:     3297700000000 nsecs
 set_next_event: twd_set_next_event
 set_mode:       twd_set_mode
 event_handler:  hrtimer_interrupt
 retries:        36383

the reason is that the local timer will stop when enter C3 state,
we need switch the local timer to bc timer when enter the state
and switch back when exit from the that state.The code is like this:

void arch_idle(void)
{
....
clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &amp;cpu);
enter_the_wait_mode();

clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &amp;cpu);
}

when the broadcast timer interrupt arrives(this interrupt just wakeup
the ARM, and ARM has no chance to handle it since local irq is disabled.
In fact it's disabled in cpu_idle() of arch/arm/kernel/process.c)

the broadcast timer interrupt will wake up the CPU and run:

clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &amp;cpu);    -&gt;
tick_broadcast_oneshot_control(...);
-&gt;
tick_program_event(dev-&gt;next_event, 1);
-&gt;
tick_dev_program_event(dev, expires, force);
-&gt;
for (i = 0;;) {
                int ret = clockevents_program_event(dev, expires, now);
                if (!ret || !force)
                        return ret;
                dev-&gt;retries++;
                ....
                now = ktime_get();
                expires = ktime_add_ns(now, dev-&gt;min_delta_ns);
}
clockevents_program_event(dev, expires, now);
        delta = ktime_to_ns(ktime_sub(expires, now));

        if (delta &lt;= 0)
                return -ETIME;
when the bc timer interrupt arrives,  which means the last local timer
expires too. so, clockevents_program_event will return -ETIME, which will
cause the dev-&gt;retries++ when retry to program the expired timer.

Even under the worst case, after the re-program the expired timer,
then CPU enter idle quickly before the re-progam timer expired,
it will make system ping-pang forever if no interrupt happen.

We have found the ping-pang issue during the video play-back test.
system will freeze and video not playing for sometime until other interrupt
occured to break the error condition.

The detailed information, please refer to the LKML:https://lkml.org/lkml/2013/2/20/216
which posted by Jason Liu.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Jason Liu &lt;r64343@freescale.com&gt;
Tested-by: Jason Liu &lt;r64343@freescale.com&gt;
Tested-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
Tested-by: Lorenzo Pieralisi &lt;lorenzo.pieralisi@arm.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge remote branch 'fsl-linux-sdk/imx_3.0.35' into imx_3.0.35_android</title>
<updated>2012-07-25T08:54:33+00:00</updated>
<author>
<name>Xinyu Chen</name>
<email>xinyu.chen@freescale.com</email>
</author>
<published>2012-07-25T08:54:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=10ca2f12149b8c3fde9af51da89736529892dc69'/>
<id>10ca2f12149b8c3fde9af51da89736529892dc69</id>
<content type='text'>
Conflicts:
	arch/arm/configs/imx6_defconfig
	arch/arm/configs/imx6_updater_defconfig
	arch/arm/configs/imx6s_defconfig
	arch/arm/include/asm/dma-mapping.h
	arch/arm/kernel/smp.c
	arch/arm/mach-mx6/Kconfig
	arch/arm/mach-mx6/board-mx6dl_arm2.h
	arch/arm/mach-mx6/board-mx6dl_sabresd.h
	arch/arm/mach-mx6/board-mx6q_arm2.c
	arch/arm/mach-mx6/board-mx6q_arm2.h
	arch/arm/mach-mx6/board-mx6q_sabreauto.c
	arch/arm/mach-mx6/board-mx6q_sabreauto.h
	arch/arm/mach-mx6/board-mx6q_sabrelite.c
	arch/arm/mach-mx6/board-mx6q_sabresd.c
	arch/arm/mach-mx6/board-mx6q_sabresd.h
	arch/arm/mach-mx6/board-mx6sl_arm2.c
	arch/arm/mach-mx6/board-mx6sl_arm2.h
	arch/arm/mach-mx6/board-mx6solo_sabreauto.h
	arch/arm/mach-mx6/bus_freq.c
	arch/arm/mach-mx6/clock.c
	arch/arm/mach-mx6/clock_mx6sl.c
	arch/arm/mach-mx6/cpu.c
	arch/arm/mach-mx6/crm_regs.h
	arch/arm/mach-mx6/devices-imx6q.h
	arch/arm/mach-mx6/devices.c
	arch/arm/mach-mx6/mx6_anatop_regulator.c
	arch/arm/mach-mx6/pcie.c
	arch/arm/mach-mx6/system.c
	arch/arm/mm/dma-mapping.c
	arch/arm/plat-mxc/devices/Makefile
	arch/arm/plat-mxc/devices/platform-imx-dcp.c
	arch/arm/plat-mxc/devices/platform-imx-ocotp.c
	arch/arm/plat-mxc/devices/platform-imx-rngb.c
	arch/arm/plat-mxc/devices/platform-mxc_hdmi.c
	arch/arm/plat-mxc/include/mach/devices-common.h
	arch/arm/plat-mxc/include/mach/esdhc.h
	arch/arm/plat-mxc/include/mach/iomux-mx6dl.h
	arch/arm/plat-mxc/include/mach/iomux-mx6q.h
	arch/arm/plat-mxc/include/mach/memory.h
	arch/arm/plat-mxc/include/mach/mx6.h
	arch/arm/plat-mxc/include/mach/mxc_edid.h
	arch/arm/plat-mxc/include/mach/mxc_hdmi.h
	arch/arm/plat-mxc/system.c
	drivers/Kconfig
	drivers/char/hw_random/fsl-rngc.c
	drivers/cpufreq/Makefile
	drivers/cpufreq/cpufreq_interactive.c
	drivers/crypto/Kconfig
	drivers/crypto/caam/caamalg.c
	drivers/crypto/caam/compat.h
	drivers/crypto/caam/ctrl.c
	drivers/crypto/caam/desc_constr.h
	drivers/crypto/caam/intern.h
	drivers/crypto/dcp.c
	drivers/dma/pch_dma.c
	drivers/input/keyboard/gpio_keys.c
	drivers/input/touchscreen/egalax_ts.c
	drivers/input/touchscreen/max11801_ts.c
	drivers/media/video/mxc/capture/Kconfig
	drivers/media/video/mxc/capture/adv7180.c
	drivers/media/video/mxc/capture/ipu_csi_enc.c
	drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c
	drivers/media/video/mxc/capture/ipu_prp_vf_sdc_bg.c
	drivers/media/video/mxc/capture/mxc_v4l2_capture.c
	drivers/media/video/mxc/capture/ov5640_mipi.c
	drivers/media/video/mxc/output/mxc_vout.c
	drivers/misc/Kconfig
	drivers/misc/Makefile
	drivers/mmc/card/block.c
	drivers/mmc/core/mmc.c
	drivers/mmc/host/mmci.c
	drivers/mmc/host/sdhci-esdhc-imx.c
	drivers/mmc/host/sdhci.c
	drivers/mmc/host/sdhci.h
	drivers/mxc/Kconfig
	drivers/mxc/Makefile
	drivers/mxc/asrc/mxc_asrc.c
	drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c
	drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c
	drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c
	drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h
	drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c
	drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c
	drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h
	drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h
	drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h
	drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
	drivers/mxc/ipu3/ipu_device.c
	drivers/mxc/vpu/mxc_vpu.c
	drivers/net/fec.c
	drivers/net/wireless/Makefile
	drivers/power/sabresd_battery.c
	drivers/regulator/core.c
	drivers/tty/serial/imx.c
	drivers/usb/core/hub.c
	drivers/usb/gadget/arcotg_udc.c
	drivers/usb/gadget/fsl_updater.c
	drivers/usb/gadget/inode.c
	drivers/usb/host/ehci-hub.c
	drivers/video/mxc/ldb.c
	drivers/video/mxc/mipi_dsi.c
	drivers/video/mxc/mxc_dispdrv.c
	drivers/video/mxc/mxc_dispdrv.h
	drivers/video/mxc/mxc_edid.c
	drivers/video/mxc/mxc_elcdif_fb.c
	drivers/video/mxc/mxc_ipuv3_fb.c
	drivers/video/mxc/mxc_spdc_fb.c
	drivers/video/mxc_hdmi.c
	drivers/watchdog/imx2_wdt.c
	fs/proc/base.c
	include/linux/mmc/host.h
	include/linux/mmc/sdhci.h
	include/linux/mxc_v4l2.h
	kernel/power/main.c
	sound/soc/codecs/mxc_hdmi.c
	sound/soc/codecs/mxc_spdif.c
	sound/soc/codecs/wm8962.c
	sound/soc/imx/Kconfig
	sound/soc/imx/Makefile
	sound/soc/imx/imx-cs42888.c
	sound/soc/imx/imx-esai.c
	sound/soc/imx/imx-wm8958.c
	sound/soc/imx/imx-wm8962.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	arch/arm/configs/imx6_defconfig
	arch/arm/configs/imx6_updater_defconfig
	arch/arm/configs/imx6s_defconfig
	arch/arm/include/asm/dma-mapping.h
	arch/arm/kernel/smp.c
	arch/arm/mach-mx6/Kconfig
	arch/arm/mach-mx6/board-mx6dl_arm2.h
	arch/arm/mach-mx6/board-mx6dl_sabresd.h
	arch/arm/mach-mx6/board-mx6q_arm2.c
	arch/arm/mach-mx6/board-mx6q_arm2.h
	arch/arm/mach-mx6/board-mx6q_sabreauto.c
	arch/arm/mach-mx6/board-mx6q_sabreauto.h
	arch/arm/mach-mx6/board-mx6q_sabrelite.c
	arch/arm/mach-mx6/board-mx6q_sabresd.c
	arch/arm/mach-mx6/board-mx6q_sabresd.h
	arch/arm/mach-mx6/board-mx6sl_arm2.c
	arch/arm/mach-mx6/board-mx6sl_arm2.h
	arch/arm/mach-mx6/board-mx6solo_sabreauto.h
	arch/arm/mach-mx6/bus_freq.c
	arch/arm/mach-mx6/clock.c
	arch/arm/mach-mx6/clock_mx6sl.c
	arch/arm/mach-mx6/cpu.c
	arch/arm/mach-mx6/crm_regs.h
	arch/arm/mach-mx6/devices-imx6q.h
	arch/arm/mach-mx6/devices.c
	arch/arm/mach-mx6/mx6_anatop_regulator.c
	arch/arm/mach-mx6/pcie.c
	arch/arm/mach-mx6/system.c
	arch/arm/mm/dma-mapping.c
	arch/arm/plat-mxc/devices/Makefile
	arch/arm/plat-mxc/devices/platform-imx-dcp.c
	arch/arm/plat-mxc/devices/platform-imx-ocotp.c
	arch/arm/plat-mxc/devices/platform-imx-rngb.c
	arch/arm/plat-mxc/devices/platform-mxc_hdmi.c
	arch/arm/plat-mxc/include/mach/devices-common.h
	arch/arm/plat-mxc/include/mach/esdhc.h
	arch/arm/plat-mxc/include/mach/iomux-mx6dl.h
	arch/arm/plat-mxc/include/mach/iomux-mx6q.h
	arch/arm/plat-mxc/include/mach/memory.h
	arch/arm/plat-mxc/include/mach/mx6.h
	arch/arm/plat-mxc/include/mach/mxc_edid.h
	arch/arm/plat-mxc/include/mach/mxc_hdmi.h
	arch/arm/plat-mxc/system.c
	drivers/Kconfig
	drivers/char/hw_random/fsl-rngc.c
	drivers/cpufreq/Makefile
	drivers/cpufreq/cpufreq_interactive.c
	drivers/crypto/Kconfig
	drivers/crypto/caam/caamalg.c
	drivers/crypto/caam/compat.h
	drivers/crypto/caam/ctrl.c
	drivers/crypto/caam/desc_constr.h
	drivers/crypto/caam/intern.h
	drivers/crypto/dcp.c
	drivers/dma/pch_dma.c
	drivers/input/keyboard/gpio_keys.c
	drivers/input/touchscreen/egalax_ts.c
	drivers/input/touchscreen/max11801_ts.c
	drivers/media/video/mxc/capture/Kconfig
	drivers/media/video/mxc/capture/adv7180.c
	drivers/media/video/mxc/capture/ipu_csi_enc.c
	drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c
	drivers/media/video/mxc/capture/ipu_prp_vf_sdc_bg.c
	drivers/media/video/mxc/capture/mxc_v4l2_capture.c
	drivers/media/video/mxc/capture/ov5640_mipi.c
	drivers/media/video/mxc/output/mxc_vout.c
	drivers/misc/Kconfig
	drivers/misc/Makefile
	drivers/mmc/card/block.c
	drivers/mmc/core/mmc.c
	drivers/mmc/host/mmci.c
	drivers/mmc/host/sdhci-esdhc-imx.c
	drivers/mmc/host/sdhci.c
	drivers/mmc/host/sdhci.h
	drivers/mxc/Kconfig
	drivers/mxc/Makefile
	drivers/mxc/asrc/mxc_asrc.c
	drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c
	drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c
	drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c
	drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h
	drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c
	drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c
	drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h
	drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h
	drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h
	drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
	drivers/mxc/ipu3/ipu_device.c
	drivers/mxc/vpu/mxc_vpu.c
	drivers/net/fec.c
	drivers/net/wireless/Makefile
	drivers/power/sabresd_battery.c
	drivers/regulator/core.c
	drivers/tty/serial/imx.c
	drivers/usb/core/hub.c
	drivers/usb/gadget/arcotg_udc.c
	drivers/usb/gadget/fsl_updater.c
	drivers/usb/gadget/inode.c
	drivers/usb/host/ehci-hub.c
	drivers/video/mxc/ldb.c
	drivers/video/mxc/mipi_dsi.c
	drivers/video/mxc/mxc_dispdrv.c
	drivers/video/mxc/mxc_dispdrv.h
	drivers/video/mxc/mxc_edid.c
	drivers/video/mxc/mxc_elcdif_fb.c
	drivers/video/mxc/mxc_ipuv3_fb.c
	drivers/video/mxc/mxc_spdc_fb.c
	drivers/video/mxc_hdmi.c
	drivers/watchdog/imx2_wdt.c
	fs/proc/base.c
	include/linux/mmc/host.h
	include/linux/mmc/sdhci.h
	include/linux/mxc_v4l2.h
	kernel/power/main.c
	sound/soc/codecs/mxc_hdmi.c
	sound/soc/codecs/mxc_spdif.c
	sound/soc/codecs/wm8962.c
	sound/soc/imx/Kconfig
	sound/soc/imx/Makefile
	sound/soc/imx/imx-cs42888.c
	sound/soc/imx/imx-esai.c
	sound/soc/imx/imx-wm8958.c
	sound/soc/imx/imx-wm8962.c
</pre>
</div>
</content>
</entry>
<entry>
<title>nohz: Remove "Switched to NOHz mode" debugging messages</title>
<updated>2012-07-20T05:37:58+00:00</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2011-08-23T11:20:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=956af4c27bb65489696a850e8ff541de24c58fcd'/>
<id>956af4c27bb65489696a850e8ff541de24c58fcd</id>
<content type='text'>
When performing cpu hotplug tests the kernel printk log buffer gets flooded
with pointless "Switched to NOHz mode..." messages. Especially when afterwards
analyzing a dump this might have removed more interesting stuff out of the
buffer.
Assuming that switching to NOHz mode simply works just remove the printk.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Link: http://lkml.kernel.org/r/20110823112046.GB2540@osiris.boeblingen.de.ibm.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When performing cpu hotplug tests the kernel printk log buffer gets flooded
with pointless "Switched to NOHz mode..." messages. Especially when afterwards
analyzing a dump this might have removed more interesting stuff out of the
buffer.
Assuming that switching to NOHz mode simply works just remove the printk.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Link: http://lkml.kernel.org/r/20110823112046.GB2540@osiris.boeblingen.de.ibm.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nohz: Remove "Switched to NOHz mode" debugging messages</title>
<updated>2012-05-24T01:19:04+00:00</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2011-08-23T11:20:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=28a8d09f134964e45d2c1f6f0b39ff651981388e'/>
<id>28a8d09f134964e45d2c1f6f0b39ff651981388e</id>
<content type='text'>
When performing cpu hotplug tests the kernel printk log buffer gets flooded
with pointless "Switched to NOHz mode..." messages. Especially when afterwards
analyzing a dump this might have removed more interesting stuff out of the
buffer.
Assuming that switching to NOHz mode simply works just remove the printk.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Link: http://lkml.kernel.org/r/20110823112046.GB2540@osiris.boeblingen.de.ibm.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When performing cpu hotplug tests the kernel printk log buffer gets flooded
with pointless "Switched to NOHz mode..." messages. Especially when afterwards
analyzing a dump this might have removed more interesting stuff out of the
buffer.
Assuming that switching to NOHz mode simply works just remove the printk.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Link: http://lkml.kernel.org/r/20110823112046.GB2540@osiris.boeblingen.de.ibm.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nohz: Fix stale jiffies update in tick_nohz_restart()</title>
<updated>2012-04-22T23:21:25+00:00</updated>
<author>
<name>Neal Cardwell</name>
<email>ncardwell@google.com</email>
</author>
<published>2012-03-27T19:09:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2ca8877b566438c293e4e54d39c959a9a847a77b'/>
<id>2ca8877b566438c293e4e54d39c959a9a847a77b</id>
<content type='text'>
commit 6f103929f8979d2638e58d7f7fda0beefcb8ee7e upstream.

Fix tick_nohz_restart() to not use a stale ktime_t "now" value when
calling tick_do_update_jiffies64(now).

If we reach this point in the loop it means that we crossed a tick
boundary since we grabbed the "now" timestamp, so at this point "now"
refers to a time in the old jiffy, so using the old value for "now" is
incorrect, and is likely to give us a stale jiffies value.

In particular, the first time through the loop the
tick_do_update_jiffies64(now) call is always a no-op, since the
caller, tick_nohz_restart_sched_tick(), will have already called
tick_do_update_jiffies64(now) with that "now" value.

Note that tick_nohz_stop_sched_tick() already uses the correct
approach: when we notice we cross a jiffy boundary, grab a new
timestamp with ktime_get(), and *then* update jiffies.

Signed-off-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Cc: Ben Segall &lt;bsegall@google.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Link: http://lkml.kernel.org/r/1332875377-23014-1-git-send-email-ncardwell@google.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 6f103929f8979d2638e58d7f7fda0beefcb8ee7e upstream.

Fix tick_nohz_restart() to not use a stale ktime_t "now" value when
calling tick_do_update_jiffies64(now).

If we reach this point in the loop it means that we crossed a tick
boundary since we grabbed the "now" timestamp, so at this point "now"
refers to a time in the old jiffy, so using the old value for "now" is
incorrect, and is likely to give us a stale jiffies value.

In particular, the first time through the loop the
tick_do_update_jiffies64(now) call is always a no-op, since the
caller, tick_nohz_restart_sched_tick(), will have already called
tick_do_update_jiffies64(now) with that "now" value.

Note that tick_nohz_stop_sched_tick() already uses the correct
approach: when we notice we cross a jiffy boundary, grab a new
timestamp with ktime_get(), and *then* update jiffies.

Signed-off-by: Neal Cardwell &lt;ncardwell@google.com&gt;
Cc: Ben Segall &lt;bsegall@google.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Link: http://lkml.kernel.org/r/1332875377-23014-1-git-send-email-ncardwell@google.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>ntp: Fix integer overflow when setting time</title>
<updated>2012-04-02T16:27:09+00:00</updated>
<author>
<name>Sasha Levin</name>
<email>levinsasha928@gmail.com</email>
</author>
<published>2012-03-15T16:36:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d16d493a1c1079e4e065ee6070b2413add846719'/>
<id>d16d493a1c1079e4e065ee6070b2413add846719</id>
<content type='text'>
commit a078c6d0e6288fad6d83fb6d5edd91ddb7b6ab33 upstream.

'long secs' is passed as divisor to div_s64, which accepts a 32bit
divisor. On 64bit machines that value is trimmed back from 8 bytes
back to 4, causing a divide by zero when the number is bigger than
(1 &lt;&lt; 32) - 1 and all 32 lower bits are 0.

Use div64_long() instead.

Signed-off-by: Sasha Levin &lt;levinsasha928@gmail.com&gt;
Cc: johnstul@us.ibm.com
Link: http://lkml.kernel.org/r/1331829374-31543-2-git-send-email-levinsasha928@gmail.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit a078c6d0e6288fad6d83fb6d5edd91ddb7b6ab33 upstream.

'long secs' is passed as divisor to div_s64, which accepts a 32bit
divisor. On 64bit machines that value is trimmed back from 8 bytes
back to 4, causing a divide by zero when the number is bigger than
(1 &lt;&lt; 32) - 1 and all 32 lower bits are 0.

Use div64_long() instead.

Signed-off-by: Sasha Levin &lt;levinsasha928@gmail.com&gt;
Cc: johnstul@us.ibm.com
Link: http://lkml.kernel.org/r/1331829374-31543-2-git-send-email-levinsasha928@gmail.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'android-3.0' into imx_3.0.15_android</title>
<updated>2012-02-02T08:58:05+00:00</updated>
<author>
<name>Xinyu Chen</name>
<email>xinyu.chen@freescale.com</email>
</author>
<published>2012-02-02T08:58:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=599a980adc5c2ba32f6aedcd87640b781d347d1f'/>
<id>599a980adc5c2ba32f6aedcd87640b781d347d1f</id>
<content type='text'>
Conflicts:
	drivers/misc/Kconfig
	drivers/misc/Makefile
	drivers/net/wireless/Makefile
	kernel/power/main.c
	sound/soc/soc-core.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/misc/Kconfig
	drivers/misc/Makefile
	drivers/net/wireless/Makefile
	kernel/power/main.c
	sound/soc/soc-core.c
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "clockevents: Set noop handler in clockevents_exchange_device()"</title>
<updated>2012-01-03T18:42:00+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-12-30T21:24:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ef7386b5de11f6269eaf072c5ef522d2a43172c2'/>
<id>ef7386b5de11f6269eaf072c5ef522d2a43172c2</id>
<content type='text'>
commit 3b87487ac5008072f138953b07505a7e3493327f upstream.

This reverts commit de28f25e8244c7353abed8de0c7792f5f883588c.

It results in resume problems for various people. See for example

  http://thread.gmane.org/gmane.linux.kernel/1233033
  http://thread.gmane.org/gmane.linux.kernel/1233389
  http://thread.gmane.org/gmane.linux.kernel/1233159
  http://thread.gmane.org/gmane.linux.kernel/1227868/focus=1230877

and the fedora and ubuntu bug reports

  https://bugzilla.redhat.com/show_bug.cgi?id=767248
  https://bugs.launchpad.net/ubuntu/+source/linux/+bug/904569

which got bisected down to the stable version of this commit.

Reported-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Reported-by: Phil Miller &lt;mille121@illinois.edu&gt;
Reported-by: Philip Langdale &lt;philipl@overt.org&gt;
Reported-by: Tim Gardner &lt;tim.gardner@canonical.com&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 3b87487ac5008072f138953b07505a7e3493327f upstream.

This reverts commit de28f25e8244c7353abed8de0c7792f5f883588c.

It results in resume problems for various people. See for example

  http://thread.gmane.org/gmane.linux.kernel/1233033
  http://thread.gmane.org/gmane.linux.kernel/1233389
  http://thread.gmane.org/gmane.linux.kernel/1233159
  http://thread.gmane.org/gmane.linux.kernel/1227868/focus=1230877

and the fedora and ubuntu bug reports

  https://bugzilla.redhat.com/show_bug.cgi?id=767248
  https://bugs.launchpad.net/ubuntu/+source/linux/+bug/904569

which got bisected down to the stable version of this commit.

Reported-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Reported-by: Phil Miller &lt;mille121@illinois.edu&gt;
Reported-by: Philip Langdale &lt;philipl@overt.org&gt;
Reported-by: Tim Gardner &lt;tim.gardner@canonical.com&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>alarmtimers: Fix time comparison</title>
<updated>2011-12-21T20:57:34+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-12-05T20:20:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=612e5dbc550f30c787e40b958d351720e72091c6'/>
<id>612e5dbc550f30c787e40b958d351720e72091c6</id>
<content type='text'>
commit c9c024b3f3e07d087974db4c0dc46217fff3a6c0 upstream.

The expiry function compares the timer against current time and does
not expire the timer when the expiry time is &gt;= now. That's wrong. If
the timer is set for now, then it must expire.

Make the condition expiry &gt; now for breaking out the loop.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: John Stultz &lt;john.stultz@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c9c024b3f3e07d087974db4c0dc46217fff3a6c0 upstream.

The expiry function compares the timer against current time and does
not expire the timer when the expiry time is &gt;= now. That's wrong. If
the timer is set for now, then it must expire.

Make the condition expiry &gt; now for breaking out the loop.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: John Stultz &lt;john.stultz@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
</feed>
