3.9 Merge window part 1
The 3.9 merge window has gotten off to a relatively slow start, with a mere
1,200 non-merge change sets pulled into the mainline as of this writing.
The process may have been slowed a bit by a sporadic reboot problem that
crept in relatively early, and which has not yet been tracked down. Even
so, a number of significant changes have already found their way in for
3.9, with many more to follow.
Important user-visible changes include:
- Progress has been made toward the goal of eliminating the timer tick
while running in user space. The patches merged for 3.9 fix up the
CPU time accounting code, printk() subsystem, and irq_work
code to function without timer interrupts; further
work can be expected in future development cycles.
- A relatively simple scheduler
patch fixes the "bouncing cow problem," wherein, on a system with
more processors than running processes, those processes can wander
across the processors, yielding poor cache behavior.
For a "worst-case" tbench benchmark run, the result is a 15x
improvement in performance.
- The format of tracing events has been changed to remove some unused
padding. This change created problems
when it was first attempted in 2011, but it seems that the relevant
user-space programs have since been fixed (by moving them to the
libtraceevent library). It is worth trying again; smaller events
require less bandwidth as they are communicated to user space.
Anybody who observes any remaining problems
would do well to report them during the 3.9 development cycle.
- The ftrace tracing system has gained the ability to take a static
"snapshot" of the tracing buffer controllable via a debugfs file. See
ftrace.txt patch for documentation on how to use this feature.
- The perf bench utility has a new set of benchmarks intended to help
with the evaluation of NUMA balancing patches.
- perf stat has been augmented to include the ability to print
out information at a regular interval.
- New hardware support includes:
- Systems and processors:
The "Goldfish" virtual x86 platform used for Android development,
Technologic Systems TS-5500 single-board computers, and
SGI Ultraviolet System 3 systems.
Cypress PS/2 touchpads and
Cypress APA I2C trackpads.
ST-Ericsson AB8505, AB9540, and AB8540 pin controllers,
Maxim MAX6581, MAX6602, MAX6622,
MAX6636, MAX6689, MAX6693, MAX6694, MAX6697, MAX6698, and MAX6699
temperature sensor chips,
TI / Burr Brown INA209 power monitors,
TI LP8755 power management units,
NVIDIA Tegra114 pinmux controllers,
Allwinner A1X pin controllers,
ARM PL320 interprocessor communication mailboxes,
Calxeda Highbank CPU frequency controllers,
Freescale i.MX6Q CPU frequency controllers, and
Marvell Kirkwood CPU frequency controllers.
Changes visible to kernel developers include:
- The workqueue functions work_pending() and
delayed_work_pending() have been deprecated; users are being
changed throughout the kernel tree.
- The "regmap" API, which simplifies management of device register sets,
now supports a "no bus" mode if the driver supplies simple "read" and
"write" functions. Regmap has also gained asynchronous I/O support.
If the usual schedule holds, the 3.9 merge window should stay open until
approximately March 5. As usual, LWN will list the most significant
changes throughout the merge window; tune in next week for the next
to post comments)