Size: 22954
Comment: ARM, ACPI
|
Size: 17945
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Released unknow, 2007 ([http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.21-rc5 full SCM git log]) |
|
Line 4: | Line 6: |
2.6.21 improves the virtualization features merged in 2.6.20 with VMI (http://lwn.net/Articles/175706), a paravirtualization interface that will be used by Vmware (and maybe -probably not- Xen) software. KVM does get initial paravirtualization along with live migration and host suspend/resume support (http://lwn.net/Articles/223839). 2.6.21 also gets a tickless idle loop mechanism called "Dynticks" (http://lwn.net/Articles/223185), a feature built in top of "clockevents" which unifies the timer handling and brings true high-resolution timers. Other features are: bigger kernel command-line, optional ZONE_DMA; support for the PA SEMI PWRficient CPU, for a Cell-based "celleb" architecture from Toshiba, better PS3 support: support for NFS IPv6, IPv4 <-> IPv6 IPSEC tunneling support, UFS2 write support, kprobes for PPC32, kexec and oprofile for ARM, public key encription for ecryptfs, Fcrypt and Camilla cipher algorithms, NAT port randomization, audit lockdown mode, many new drivers and many other small improvements. | |
Line 6: | Line 9: |
=== Dynamic kernel command-line === Current implementation stores a static command-line buffer allocated to COMMAND_LINE_SIZE size. Most architectures stores two copies of this buffer, one for future reference and one for parameter parsing. Current kernel command-line size for most architecture is much too small for module parameters, video settings, initramfs paramters and much more. The problem is that setting COMMAND_LINE_SIZE to a grater value, allocates static buffers. In order to allow a greater command-line size, these buffers should be dynamically allocated or marked as init disposable buffers, so unused memory can be released. This patch renames the static saved_command_line variable into boot_command_line adding __initdata attribute, so that it can be disposed after initialization. This rename is required so applications that use saved_command_line will not be affected by this change. It reintroduces saved_command_line as dynamically allocated buffer to match the data in boot_command_line. It also mark secondary command-line buffer as __initdata, and copies it to dynamically allocated static_command_line buffer components may hold reference to it after initialization. * Dynamic kernel command-line: m68k [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=187959f31e92cde16b274f0b61dfaca3a8b14089 (commit)] * Dynamic kernel command-line: um [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=19bf7e7a414711dec0058556feda778105798f99 (commit)] * Dynamic kernel command-line: common [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=30d7e0d466b3ac0b5ef77e4062bf9385f0d72270 (commit)] * Dynamic kernel command-line: m32r [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3561794d80843588ed8b47fffb20e2dcd9c40ff3 (commit)] * Dynamic kernel command-line: sparc64 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=383464c0fb067f5beb96e28ff376d2280808dd54 (commit)] * Dynamic kernel command-line: alpha [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3c253ca0f0930b767a5d6ac0c1b3c6f5619e28f9 (commit)] * Dynamic kernel command-line: sh64 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3e42ff6c65cf40caa1f6ca51a4c3d552803e0957 (commit)] * Dynamic kernel command-line: mips [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=43cd34645d3bf35cbaa68f28b85d12d0b9e08ab9 (commit)] * Dynamic kernel command-line: i386 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4e498b66104af914ef04d6e7fbbbc13a4f7c936e (commit)] * Dynamic kernel command-line: sh [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=53c82622c2db808c015953336faecefc0ebf29bc (commit)] * Dynamic kernel command-line: h8300 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5ff625904cd4e41d70bc01e6683cbb58f312f709 (commit)] * Dynamic kernel command-line: arm26 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=64d5a70f956071f8434f403d44835a4895abb78e (commit)] * Dynamic kernel command-line: parisc [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=668f9931c812224ab2a6d57cdf2f0ec3865b68d2 * Dynamic kernel command-line: v850 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=712f77b5659208b43c925e1b28c4f44891c4d94f (commit)] * Dynamic kernel command-line: fixups [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7a3a06d0e158fc82a6bf13e18439285c7791d2b8 (commit)] * Dynamic kernel command-line: cris [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=87e1f9c6dcb4829fd8a68a3af87098cee8ef955b (commit)] * Dynamic kernel command-line: frv [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9c00f7613249b3b42782a226308353a4033c11c3 (commit)] * Dynamic kernel command-line: ia64 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a8d91b8477aa433ee0131b031d782411976e1726 (commit)] * Dynamic kernel command-line: x86_64 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=adf48856db47f4f0f661f2f4b7004890408135cf (commit)] * Dynamic kernel command-line: powerpc [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b8757b21f7628c57cb20e55be324fdef283a56e9 (commit)] * Dynamic kernel command-line: avr32 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bf4352c0fc82e6dadfa7eea506c19dea0106baac (commit)] * Dynamic kernel command-line: ppc [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bf71cecbe4282fbb8ec035a7199fa4aca64db54c (commit)] * Dynamic kernel command-line: arm [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cd81899a7d9e77ffd5280b10d0413fb241b18388 (commit)] * Dynamic kernel command-line: xtensa [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d3e9cceafd9c886561f602bcdcb03efd96e187ab (commit)] * Dynamic kernel command-line: s390 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e06b1a3513bdd897e3c37c98ed7b16fa237dcb63 (commit)] * Dynamic kernel command-line: m68knommu [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f2a09e19cae45b7dfa4b72d70182b5bc9afa2ddb (commit)] * Dynamic kernel command-line: sparc [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=08e7ca11eed86acde42ee97b9392faa10f9c70d1 (commit)] |
=== VMI (Virtual Machine Interface) === VMI is a virtualization feature built in top of the ''paravirt_ops'' paravirtualization implementation introduced in [http://kernelnewbies.org/Linux_2_6_20 2.6.20]. Paravirtualizated kernels need to be modified to run under a hypervisor. The goal of VMI is to become the common paravirtualization interface for hypervisors like Xen and Vmware. Vmware will certainly use VMI; Xen was going to use VMI but they may develop their own VMI-like interface. Any hypervisor can use VMI by providing a (GPLed) ROM; the ROM describes how the low-level VMI kernel must use the hypervisor. A VMI-enabled kernel can also boot on bare hardware and no hypervisor with no performance impact [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9226d125d94c7e4964dd41cc5e9ca2ff84091d01 (commit 1] [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8b15114434998a78aa50f8559d69c7a400cff267 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ae5da273fe3352febd38658d8d34484cbcfb3423 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7b3552024380f306a6c50d5105d18d9d4258fa4e 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c119ecce894120790903ef535dac3e105f3d6cde 5], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7ce0bcfd1667736f1293cff845139bbee53186de 6], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bbab4f3bb7f528d2b8ccb5de9ae5f6ff3fb29684 7], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=90736e20e3805dd1ffff60e4750495944956cd44 8)] More details about VMI can be found in this LWN article: "[http://lwn.net/Articles/175706/ The VMI virtualization interface]" |
Line 37: | Line 17: |
=== KVM updates === KVM does evolve at a very fast pace, due to its clean design. This release (KVM-15) brings many new features: |
|
Line 38: | Line 20: |
=== Stuff === | * Initial paravirtualization support, which has [http://lkml.org/lkml/2007/1/5/205 much faster] performance * Live migration (the guest continues running even while being migrated) support. It's possible to migrate a guest from a Intel CPU to an AMD CPU * Host Suspend/resume support * CPU hotplug support - a useful feature for data centers, where you can add/remove CPUs according to the load * A stable userspace interface Recommended LWN article: [http://lwn.net/Articles/223839/ "KVM-15"] [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=102d8325a1d2f266d3d0a03fdde948544e72c12d (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=02e235bc8eebf8a6fef10d46479b3c18f3e9c4f2 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c21415e84334af679630f6450ceb8929a5234fad 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=774c47f1d78e373a6bd2964f4e278d1ce26c21cb 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=59ae6c6b87711ceb2d1ea5f9e08bb13aee947a29 5)] |
Line 41: | Line 31: |
== Various core changes == * KVM * Add hypercall host support for svm [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=02e235bc8eebf8a6fef10d46479b3c18f3e9c4f2 (commit)] * KVM: add MSR based hypercall API [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=102d8325a1d2f266d3d0a03fdde948544e72c12d (commit)] This adds a special MSR based hypercall API to KVM. This is to be used by paravirtual kernels and virtual drivers. * KVM: Add a global list of all virtual machines [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=133de9021d2988f3fbdad84c2d26484c7a757526 (commit)] This will allow us to iterate over all vcpus and see which cpus they are running on. * KVM: Wire up hypercall handlers to a central arch-independent location [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=270fd9b96f5fcb7df15d3ca6166545d4aa0f3ee9 (commit)] |
=== Dynticks and Clockevents === Recommended LWN article: [http://lwn.net/Articles/223185/ "Clockevents and dyntick"] |
Line 50: | Line 34: |
* KVM: Host suspend/resume support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=59ae6c6b87711ceb2d1ea5f9e08bb13aee947a29 (commit)] Add the necessary callbacks to suspend and resume a host running kvm. This is just a repeat of the cpu hotplug/unplug work. * KVM: cpu hotplug support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=774c47f1d78e373a6bd2964f4e278d1ce26c21cb (commit)] On hotplug, we execute the hardware extension enable sequence. On unplug, we decache any vcpus that last ran on the exiting cpu, and execute the hardware extension disable sequence. * KVM: VMX: add vcpu_clear() [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8d0be2b3bf4a55606967d7d84e56c52521e94333 (commit)] Like the inline code it replaces, this function decaches the vmcs from the cpu it last executed on. in addition: - vcpu_clear() works if the last cpu is also the cpu we're running on - it is faster on larger smps by virtue of using smp_call_function_single() Includes fix from Ingo Molnar. * KVM: Add host hypercall support for vmx [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c21415e84334af679630f6450ceb8929a5234fad (commit)] |
(This feature touches a lot of low-level x86 code, so regressions are possible. If you have problems with 2.6.1, please [http://bugzilla.kernel.org report it]) Clockevents is a building block of dynticks. A example of a clock devices is the device which makes timer interrupts. The handling of those devices was made in the architecture-specific code, so there wasn't an unified way of using those devices. The clockevents patch unifies the clockdevice handling so the kernel can use the timer capabilities of those devices in a unified manner. This also allows to implement true high-resolution timers. Dynticks (aka: dynamic ticks) it's a configurable feature for x86 32bits (x86-64 and ARM support is already done but not ready for this release; PPC and MIPS support are in the works) that changes the heart of the mechanism that allow a system to implement multitasking. To know what dyntick does, first you should know some basics: Traditionally, multitasking is implemented thanks to a timer interrupt that is configured to fire N times in a second. Firing this interrupt causes a call to the operative system's process scheduler routines. Then, the scheduler decides what process should run next, the process that was running before the timer interrupt was fired, or another process. This is how true multitasking is implemented in all the general-purpose operative systems, it's also what stops processes from being able to monopolize the CPU time: The timer interrupt will be fired regardless of what the process is doing and the operative system will be able to stop it. N (the number of times the timer interrupt is fired in each second, aka 'HZ') is a hardcoded compile-time architecture-dependent constant. For Linux 2.4 (and Windows), HZ=100 (the timer interrupt fires 100 times per second). 2.6 increased HZ to 1000, for several reasons: 100 was the HZ value that x86 had been using since forever, and it didn't really had a lot of sense in modern CPUs that runs much faster: Higher HZ means smaller process time slices, which improves the minimum latency and interactivity. The downside is higher timer overhead (negligible in modern hardware, although some server-oriented distros package kernels with HZ=100 because of minor performance gains) and high pitch noises in some systems due to low-quality, cheap capacitators Anyway, the issue is that the timer is fired HZ times in every second - even if the system is doing nothing. Dynticks is a feature that stops the system from waking up HZ times per second. When the system is entering the idle loop it disables the periodic timer interrupt, and programs the timer to fire the next time a timer event is needed. This means your system will be 'disabled' while there's nothing to do (unless a interrupt happens - ej: a incoming packet through your network). For now, dynticks does just that. However, this infrastructure will allow to create a innovative power-saving feature: When dynticks is in "tickless" mode and the system is waiting for the timer interrupt, the power-saving feature of modern CPUs will be used. This can save a few W when the laptop is idle. Dynticks also adds some nice configurable debugging features: /proc/timer_list prints all the pending timers, allowing developers to check if their program is doing something wrong when it should be doing nothing, /proc/timer_stat, in the other hand, collects some timer statistics, allowing to detect the source of commonly-programmed timers. |
Line 61: | Line 45: |
[http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f4304ab21513b834c8fe3403927c60c2b81a72d7 (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=92c7e00254b2d0efc1e36ac3e45474ce1871b6b2 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5d8b34fdcb384161552d01ee8f34af5ff11f9684 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1cfd68496e53f7be09a3c1358d1d389004217541 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fd064b9b7770d5c7705bf9542950c7bd81c30f98 5], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c9cb2e3d7c9178ab75d0942f96abb3abe0369906 6], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3c8aa39d7c445ae2612b6b626f76f077e7a7ab0d 7], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=303e967ff90a9d19ad3f8c9028ccbfa7f408fbb3 8], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dd3629b5e5f03dde6d8a17bb798bcb0ba6c3f579 9], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5cfb6de7cd7c8f04655c9d23533ca506647beace 10], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3434933b17fa64adddf83059603c61296f6e1ee2 11], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=169a0abbe32813af4904cc1605c0f7ea0534f77b 12], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d66bea57e779cd592657cca6e61345ae899b78d9 13], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e05d723f98595b2f4d368f63636a997d98703304 14], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d316c57ff6bfad9557462b9100f25c6260d2b774 15], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=906568c9c668ff994f4078932ec6ae1e3950d1af 16], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f8381cba04ba8173fd5a2b8e5cd8b3290ee13a98 17], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=79bf2bb335b85db25d27421c798595a2fa2a0e82 18], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e9e2cdb412412326c4827fc78ba27f410d837e6e 19], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d36b49b91065dbfa305c5a66010b3497c741eee0 20], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=741673473a5b26497d5390f38d478362e27e22ad 21], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f8b5035b9abd01b52ec6416f0c6bade7e603742c 22], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d40891e75fc1f646dce57d5d3bd1349a6aaf7a0e 23], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=54cdfdb47f73b5af3d1ebb0f1e383efbe70fde9e 24], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8bfd9a7a229b5f3d3eda5d7d45c2eebec5b4ba16 25], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=289f480af87e45f7a6de6ba9b4c061c2e259fe98 26], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=82f67cd9fca8c8762c15ba7ed0d5747588c1e221 27], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=88ad0bf6890505cbd9ca1dbb79944a27b5c8697d 28)] | |
Line 62: | Line 47: |
=== ASoC === The [http://www.rpsys.net/openzaurus/patches/alsa/info.html ASoC (ALSA System on Chip) layer] has been added to the ALSA sound system. Its aim is to provide improved support for sound processors on embedded systems. The ASoC core is designed to allow reuse of codec drivers on other platforms, reuse of platform specific audio DMA and DAI drivers on different machines, easy I2S/PCM digital audio interface configuration between codec and SoC, and allow machines to add controls and operations to the audio subsystem. e.g. volume control for speaker amp. |
|
Line 63: | Line 50: |
To achieve all this, ASoC splits an embedded audio system into 3 components: 1. Codec driver: The codec driver is platform independent and contains audio controls, audio interface capabilities, codec dapm and codec IO functions 2. Platform driver: The platform driver contains the audio dma engine and audio interface drivers (e.g. I2S, AC97, PCM) for that platform. 3. Machine driver: The machine driver handles any machine specific controls and audio events. i.e. turning on an amp at start of playback. | |
Line 64: | Line 52: |
It includes a dynamic power management subsystem, designed to allow portable and handheld Linux devices to use the minimum amount of power within the audio subsystem at all times. It is independent of other kernel PM and as such, can easily co-exist with the other PM systems. DAPM is also completely transparent to all user space applications as all power switching is done within the ASoC core. No code changes or recompiling are required for user space applications. DAPM makes power switching decisions based upon any audio stream (capture/playback) activity and audio mixer settings within the device. | |
Line 65: | Line 54: |
== Architecture-specific changes == * i386 * ARM * Add support for SMDK2443 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=285f4930f239d95cb8d4fdf45a52870d744bed8f (commit)] * Add ARM11 (ARMv6) UP oprofile support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2d9e1ae06d8f0bb187ea083fabab2dfb6f589270 (commit)] * AACI record support on Versatile platform [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=41762b8ca9e16c7443d8348ec53daddbe940cdcc (commit)] * Add support for the RealView/EB MPCore revC platform [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4b17244c133689ad0cbdca37ce3e15068f120428 (commit)] * AT91: Add support for AT91SAM9263 processor [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b2c6561605da4802886cafe96432b8e2968e9edc (commit)] * AT91: Define Timer/Counter clocks. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c177a1e75a07237efe1f68fbf430892fdf2bb868 (commit)] Define the Timer/Counter Unit clocks on the AT91RM9200, AT91SAM9260 and AT91SAM9261 processors. Original patch from David Brownell. * [ARM] oprofile: add ARM11 core support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c265a762aa196de11f38f6f44cc817329f32a813 (commit)] Add basic support for the ARM11 profiling hardware. This is shared between the ARM11 UP and ARM11 SMP oprofile support code. * [ARM] 4137/1: Add kexec support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c587e4a6a4d808fd2a1c4e7fb2d5a3a31e300d23 (commit)] Add kexec support to ARM. Improvements like commandline handling could be made but this patch gives basic functional support. It uses the next available syscall number, 347. Once the syscall number is known, userspace support will be finalised/submitted to kexec-tools, various patches already exist. Originally based on a patch by Maxim Syrchin but updated and forward ported by various people. |
A number of platform and codec drivers for ASoC have been merged as well. |
Line 84: | Line 56: |
* [ARM] 4214/2: S3C2410: Add Armzone QT2410 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c6184e271db4948d4f6e07f271abeb8697a80eba (commit)] Add support for the Armzone QT2410 system, with basic peripheral support for TFT display, SPI and LEDs. * [ARM] 4143/1: AT91: Prepare for AT91SAM9263 support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d0760b3bc8ff9b34e3e2e166e2102548a24751b4 (commit)] The Atmel AT91SAM9263 processor includes many more integrated peripherals than Atmel's previous ARM9-based AT91 processors, so this has necessitated a few changes to the core AT91 support. These changes are: * The system peripheral I/O region we remap has increased from 0xFFFA0000..0xFFFFFFFF to 0xFFF78000..0xFFFFFFFF. * The increased I/O region forces changes to entry-macro.S and debug-macro.S due to ARM's limited immediate offset addressing modes. * Maximum number of GPIO banks increases to 5. * 2 MMC controllers so the board-setup code needs to specify which controller it wishes to use when calling at91_add_device_mmc(). Original patch from Nicolas Ferre. * [ARM] 4047/1: Add initial board support for Contec Hypercontrol Micro9 boards. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d941caa2537a01653704a8c1148d330a3b2755f1 (commit)] Contec Micro9 (H/M/L) boards based on Cirrus Logic ep93xx (ep9315/ep9307/ep9302). * [ARM] 4203/1: S3C2443: use S3C2412 nand driver [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d9c0ebbda522b64607cd2b0064b9bb040c53bcaf (commit)] Use the S3C2412 nand driver for the S3C2443 as it is register compatible. * [ARM] 4198/2: S3C2443: arch/arm/mach-s3c2443 and related support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e4d06e39530559513c7e335ef7ca4675f8146220 (commit)] Add arch/arm/mach-s3c2443 for support of the Samsung S3C2443 SoC This patch adds the core CPU support, clock framework, times and initial IRQ support, as well as adding the directory into the build tree. * [ARM] 4146/1: AT91: Support for AT91SAM9263-EK board. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e6d92e6397634ac7d2e80b16c52f0dfab9b673b4 (commit)] Add support for the Atmel AT91SAM9263-EK board. Original patch from Nicolas Ferre. * [ARM] 4192/1: AT91: Support for AT91SAM9XE processors. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f7eee89b2a4b4c233acde621005a814da0eb46d6 (commit)] Add support for the Atmel AT91SAM9XE range of processors. These are basically AT91SAM9260's with different amounts of internal SRAM and Flash. We make use of the existing AT91SAM9260 support, but just perform run-time detection of the size of the internal SRAM. Original patch from Nicolas Ferre. * [ARM] 4221/1: S3C2443: DMA support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f8271e57569d1a2e7061f1754a5bb797a13b302d (commit)] Add initialisation and mappings for S3C2443 DMA system * [ARM] oprofile: add ARM11 SMP support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=10c03f69680e9e2acd8a9409a230aef37295ac49 (commit)] Add the glue for ARM11 SMP oprofile support, which also supports the performance monitor in the coherency unit. == Filesystems == * eCryptfs * xattr flags and mount options. Introduces the ability to store cryptographic metadata into an lower file extended attribute rather than the lower file header region. The two new nmount options are: ecryptfs_xattr_metadata; when set, newly created files will have their cryptographic metadata stored in the extended attribute region of the file rather than the header; and ecryptfs_encrypted_view; when set this option causes eCryptfs to present applications a view of encrypted files as if the cryptographic metadata were stored in the file header, whether the metadata is actually stored in the header or in the extended attributes[http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=17398957aa0a05ef62535060b41d103590dcc533 (commit)] * Public key transport mechanism [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=88b4a07e6610f4c93b08b0bb103318218db1e9f6 (commit)] * Generalize metadata read/write [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dd2a3b7ad98f8482cae481cad89dfed5eee48365 (commit)] * Public key; packet management [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dddfa461fc8951f9b5f951c13565b6cac678635a (commit)] * Encrypted passthrough [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e77a56ddceeec87575a13a60fc1a394af6a1f4bc (commit)] * OCFS2: == Networking == == Various subsystems == === Software suspend === === Crypto === * Add the Camellia cipher algorithm. Camellia is a symmetric key block cipher developed jointly at NTT and Mitsubishi Electric Corporation [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d64beac050914de6fe6565741b39905ecd5994b7 (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=02ab5a7056bd8441ba6ae8ba8662d4296c202ecb 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=04ac7db3f23d98abe5d3c91d21b0e45fc09e74ea 3)] * [CRYPTO] tcrypt: Added test vectors for sha384/sha512 [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a28091ae170cd06695bf461905c5b97a165633ba (commit)] This patch adds tests for SHA384 HMAC and SHA512 HMAC to the tcrypt module. Test data was taken from RFC4231. This patch is a follow-up to the discovery (bug 7646) that the kernel SHA384 HMAC implementation was not generating proper SHA384 HMACs. * [CRYPTO] api: Allow multiple frontends per backend [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=27d2a3300755387d2fec231d37944907ff992ce8 (commit)] This patch adds support for multiple frontend types for each backend algorithm by passing the type and mask through to the backend type init function. * [CRYPTO] api: Use structs for cipher/compression [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=78a1fe4f242cbe6b4578e072b75e171b92745afa (commit)] Now that all cipher/compression users have switched over to the new allocation scheme, we can get rid of the compatility defines and use proper structs for them. * [CRYPTO] fcrypt: Add FCrypt from RxRPC [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=90831639a65592d6d3dc888dc3341f54ebf932e6 (commit)] Add a crypto module to provide FCrypt encryption as used by RxRPC. * [CRYPTO] pcbc: Add Propagated CBC template [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=91652be5d1b901673a8e926455f0ed146cfaa588 (commit)] Add PCBC crypto template support as used by RxRPC. == Drivers == === Graphics === === ACPI === * ACPI: bay: new driver adding removable drive bay support [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=01b57e73728880b787c85e27ad06c249412813b1 (commit)] * ACPI: keep track of timer broadcasting [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=169a0abbe32813af4904cc1605c0f7ea0534f77b (commit)] This is a preperatory patch for highres/dyntick: - replace the big #ifdef ARCH_APICTIMER_STOPS_ON_C3 hackery by functions - remove the double switch in the power verify function (in the worst case we switched ipi to apic and 20usec later apic to ipi) - keep track of the the state which stops local APIC timer * ACPI: asus_acpi: Add support for Asus Z81SP [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1c0f0575fd02a3996f09cac2ef29c4cc5c2d279d (commit)] Adds support in asus_acpi for the Asus Z81SP laptop. This preserves all old functionality when improperly detected as well as enabling Bluetooth support. * ACPICA: Add support for DMAR table [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2502fffb1958da66fa50a475081cb6827acdd9f3 (commit)] Implement support for ACPI DMAR table (DMA Remapping Table) in header files and disassembler. * ACPI: Adds backlight sysfs support for acpi video driver. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2f3d000a133f68250635f14f6caf24d32d358090 (commit)] Adds backlight sysfs support for acpi video driver. * ACPI: fix missing include for UP [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3434933b17fa64adddf83059603c61296f6e1ee2 (commit)] apic.h does not get included on UP compiles. That way the APICTIMER_STOPS_ON_C3 is not there and UP boxen have no support for timer broadcasting. This was never noticed, because the lapic timer is only used for profiling on UP. * ACPICA: Removed all 16-bit support. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=59fa85057e12ff135df54266722b2064c418fc05 (commit)] Support for 16-bit ACPICA has been completely removed since it is no longer necessary and it clutters the code. All 16-bit macros, types, and conditional compiles have been removed, cleaning up and simplifying the code across the entire subsystem. DOS support is no longer needed since the Linux firmware kit is now available. * ACPI: remove motherboard driver (redundant with PNP system driver) [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5eca338fb510af78eee5372ff6a3525768ab913f (commit)] The PNP system board driver (drivers/pnp/system.c) contains all the same functionality, so we don't need the ACPI version. Previously, a motherboard device would be claimed by *both* the ACPI and PNP drivers, resulting in stuff like this in /proc/ioports: 1200-121f : motherboard <-- from drivers/acpi/motherboard.c 1200-121f : pnp 00:0d <-- from drivers/pnp/system.c Make sure to enable CONFIG_PNP (and CONFIG_PNPACPI) to include the PNP system board driver. * ACPI: hotkey: remove driver, per feature-removal-schedule.txt [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5ee6edbcde4d3b14e4e03d4b331df1099a34aa8d (commit)] * asus-laptop: add base driver [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=85091b718969be7b8e6f795af7e264b8afcd7a6d (commit)] Adds the new driver and make ASUS_LAPTOP and ACPI_ASUS incompatible. It may be strange to use ASUS_CREATE_DEVICE_ATTR and ASUS_SET_DEVICE_ATTR now, but these macro will be very usefull in next patchs. ASUS_HANDLE and ASUS_HANDLE_INIT comes from IBM_HANDLE and IBM_HANDLE_INIT, with some modification, and will also be used in next patchs. * sony-laptop: create from sony_acpi [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=91fbc1d311c1b8b71203b96f1a0629da7360eb4c (commit)] Move drivers/acpi/sony_acpi.c to drivers/misc/sony-laptop.c with all the necessary configuration. The SONY_LAPTOP config option substitutes the old ACPI_SONY and is 'default n' now. * ACPICA: minimal patch to integrate new tables into Linux [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ad71860a17ba33eb0e673e9e2cf5ba0d8e3e3fdd (commit)] * ACPICA: Implement simplified Table Manager [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f3d2e7865c816258c699ff965768e46b50d536d3 (commit)] The Table Manager component has been completely redesigned and reimplemented. The new design is much simpler, and reduces the overall code and data size of the kernel-resident ACPICA by approximately 5%. Also, it is now possible to obtain the ACPI tables very early during kernel initialization, even before dynamic memory management is initialized. * ACPI: convert to sysfs framework [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f883d9db008deb20d4969c26475100cec2b7f6f8 (commit)] Setup new sysfs framework 1. Remove /sys/firmware/acpi 2. Add ACPI device in device tree. File "eject" for every device that has _EJ0 method is moved from /sys/firmware to /sys/devices. Operation on this file is exactly the same as before. i.e. echo 1 to "eject" will cause hot removal of this device. Corresponding changes should be made in userspace for hot removal. |
[http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=596ce32b74dccf53ef59cc9ba2e95a2a34ba921c (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5a8ec343c5ba1e78ba23bebd9ad4b23f39c50828 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6297027629a9349301e08442b67deb9783a5e984 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6e24dd9310b66d6f500a81ee320a8babec529573 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=734c2d4bb7cfccaab79923331efc7422e4e76a8a 5], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=73f40dc1e147b41eb74bc92ff62bb65cb3260eff 6], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=75b41027662e29822746342865fa8abd941d2604 7], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7f137ab673124ee0a210ab5b74c1f7234d6145fa 8], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7fb290d03af69bfca5876573ac0eada40bd4e292 9], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=808db4a4512bedd45b62de255f7eedb5d5b788b9 10], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8dafc0fb49b903c4e7262b2622bef8342345c700 11], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=97952f601e939278df1194bac56b9755338ee7c1 12], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a1eb4b3caf3abd0d1a8474f07d29959e1879bb29 13], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a3288176de3fdd439d9bca0a0b9ca749c12ac5ac 14], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a71a468a50f1385855e28864e26251b02df829bb 15], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a8f5d0a5d02cda0183c6e68d6a66d4c6641149a9 16], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=abadfc928a27e1cf27c834e8e29e6b1f64ca2d55 17], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b36d61d45654104c04ff71055ef09c696fea5f89 18], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b41bf38a4323a32ec4890c74818c4a3d2661fe6c 19], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c8044274c7f1e269975b2bd55d057ceb7708e929 20], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cb4c048b9306555ccbdb97eaf7922624664b0eb1 21], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cbe83b1795feea33803dc89fce18b2b98abbcc9b 22], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d3d35adc79aa2e48e8177a9506e9bcb5eebba406 23], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d928b25a89c3154fe6d0e62a83f51c5b621aa099 24], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=db2a416556af0313db028147e4a22fef6f214f2f 25], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dbc6b6ad767c86907db373e85139b0e975ba7599 26], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=eaff2ae702f937020bfde96eea552caae3815784 27], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=eb1a6af39b70375d93ed25e7c916f64463e00614 28], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f11a96d5cd94202479e603f9dfaff6e92f342135 29], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ff9abf5b0a655b59d59ea61aec5be6285bf3ac30 30], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0cbbec0984f10f216ed8332e0d39ac93cbe33a0b 31], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=10c5cf30446fe91b7173436b75c4f00dfb4cd9f8 32], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=171eb8f81d7b0706c1085d272e4955251ed9f05f 33], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1b49cb987030c09ca763c1dabd5c5e33f669e530 34], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2b97eabc09f42d0f63e8053636e34e1afa0d604e 35], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3e7cc3d3d1c435f83533b8bf2cf1833855be2901 36], [http:// |
Released unknow, 2007 ([http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.21-rc5 full SCM git log])
Short overview (for news sites, etc)
2.6.21 improves the virtualization features merged in 2.6.20 with VMI (http://lwn.net/Articles/175706), a paravirtualization interface that will be used by Vmware (and maybe -probably not- Xen) software. KVM does get initial paravirtualization along with live migration and host suspend/resume support (http://lwn.net/Articles/223839). 2.6.21 also gets a tickless idle loop mechanism called "Dynticks" (http://lwn.net/Articles/223185), a feature built in top of "clockevents" which unifies the timer handling and brings true high-resolution timers. Other features are: bigger kernel command-line, optional ZONE_DMA; support for the PA SEMI PWRficient CPU, for a Cell-based "celleb" architecture from Toshiba, better PS3 support: support for NFS IPv6, IPv4 <-> IPv6 IPSEC tunneling support, UFS2 write support, kprobes for PPC32, kexec and oprofile for ARM, public key encription for ecryptfs, Fcrypt and Camilla cipher algorithms, NAT port randomization, audit lockdown mode, many new drivers and many other small improvements.
Important things (AKA: ''the cool stuff'')
VMI (Virtual Machine Interface)
VMI is a virtualization feature built in top of the paravirt_ops paravirtualization implementation introduced in [http://kernelnewbies.org/Linux_2_6_20 2.6.20].
Paravirtualizated kernels need to be modified to run under a hypervisor. The goal of VMI is to become the common paravirtualization interface for hypervisors like Xen and Vmware. Vmware will certainly use VMI; Xen was going to use VMI but they may develop their own VMI-like interface. Any hypervisor can use VMI by providing a (GPLed) ROM; the ROM describes how the low-level VMI kernel must use the hypervisor. A VMI-enabled kernel can also boot on bare hardware and no hypervisor with no performance impact [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9226d125d94c7e4964dd41cc5e9ca2ff84091d01 (commit 1] [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8b15114434998a78aa50f8559d69c7a400cff267 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ae5da273fe3352febd38658d8d34484cbcfb3423 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7b3552024380f306a6c50d5105d18d9d4258fa4e 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c119ecce894120790903ef535dac3e105f3d6cde 5], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7ce0bcfd1667736f1293cff845139bbee53186de 6], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bbab4f3bb7f528d2b8ccb5de9ae5f6ff3fb29684 7], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=90736e20e3805dd1ffff60e4750495944956cd44 8)]
More details about VMI can be found in this LWN article: "[http://lwn.net/Articles/175706/ The VMI virtualization interface]"
KVM updates
KVM does evolve at a very fast pace, due to its clean design. This release (KVM-15) brings many new features:
Initial paravirtualization support, which has [http://lkml.org/lkml/2007/1/5/205 much faster] performance
- Live migration (the guest continues running even while being migrated) support. It's possible to migrate a guest from a Intel CPU to an AMD CPU
- Host Suspend/resume support
- CPU hotplug support - a useful feature for data centers, where you can add/remove CPUs according to the load
- A stable userspace interface
Recommended LWN article: [http://lwn.net/Articles/223839/ "KVM-15"]
[http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=102d8325a1d2f266d3d0a03fdde948544e72c12d (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=02e235bc8eebf8a6fef10d46479b3c18f3e9c4f2 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c21415e84334af679630f6450ceb8929a5234fad 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=774c47f1d78e373a6bd2964f4e278d1ce26c21cb 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=59ae6c6b87711ceb2d1ea5f9e08bb13aee947a29 5)]
Dynticks and Clockevents
Recommended LWN article: [http://lwn.net/Articles/223185/ "Clockevents and dyntick"]
(This feature touches a lot of low-level x86 code, so regressions are possible. If you have problems with 2.6.1, please [http://bugzilla.kernel.org report it])
Clockevents is a building block of dynticks. A example of a clock devices is the device which makes timer interrupts. The handling of those devices was made in the architecture-specific code, so there wasn't an unified way of using those devices. The clockevents patch unifies the clockdevice handling so the kernel can use the timer capabilities of those devices in a unified manner. This also allows to implement true high-resolution timers.
Dynticks (aka: dynamic ticks) it's a configurable feature for x86 32bits (x86-64 and ARM support is already done but not ready for this release; PPC and MIPS support are in the works) that changes the heart of the mechanism that allow a system to implement multitasking. To know what dyntick does, first you should know some basics: Traditionally, multitasking is implemented thanks to a timer interrupt that is configured to fire N times in a second. Firing this interrupt causes a call to the operative system's process scheduler routines. Then, the scheduler decides what process should run next, the process that was running before the timer interrupt was fired, or another process. This is how true multitasking is implemented in all the general-purpose operative systems, it's also what stops processes from being able to monopolize the CPU time: The timer interrupt will be fired regardless of what the process is doing and the operative system will be able to stop it.
N (the number of times the timer interrupt is fired in each second, aka 'HZ') is a hardcoded compile-time architecture-dependent constant. For Linux 2.4 (and Windows), HZ=100 (the timer interrupt fires 100 times per second). 2.6 increased HZ to 1000, for several reasons: 100 was the HZ value that x86 had been using since forever, and it didn't really had a lot of sense in modern CPUs that runs much faster: Higher HZ means smaller process time slices, which improves the minimum latency and interactivity. The downside is higher timer overhead (negligible in modern hardware, although some server-oriented distros package kernels with HZ=100 because of minor performance gains) and high pitch noises in some systems due to low-quality, cheap capacitators
Anyway, the issue is that the timer is fired HZ times in every second - even if the system is doing nothing. Dynticks is a feature that stops the system from waking up HZ times per second. When the system is entering the idle loop it disables the periodic timer interrupt, and programs the timer to fire the next time a timer event is needed. This means your system will be 'disabled' while there's nothing to do (unless a interrupt happens - ej: a incoming packet through your network). For now, dynticks does just that. However, this infrastructure will allow to create a innovative power-saving feature: When dynticks is in "tickless" mode and the system is waiting for the timer interrupt, the power-saving feature of modern CPUs will be used. This can save a few W when the laptop is idle. Dynticks also adds some nice configurable debugging features: /proc/timer_list prints all the pending timers, allowing developers to check if their program is doing something wrong when it should be doing nothing, /proc/timer_stat, in the other hand, collects some timer statistics, allowing to detect the source of commonly-programmed timers.
[http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f4304ab21513b834c8fe3403927c60c2b81a72d7 (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=92c7e00254b2d0efc1e36ac3e45474ce1871b6b2 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5d8b34fdcb384161552d01ee8f34af5ff11f9684 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1cfd68496e53f7be09a3c1358d1d389004217541 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fd064b9b7770d5c7705bf9542950c7bd81c30f98 5], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c9cb2e3d7c9178ab75d0942f96abb3abe0369906 6], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3c8aa39d7c445ae2612b6b626f76f077e7a7ab0d 7], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=303e967ff90a9d19ad3f8c9028ccbfa7f408fbb3 8], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dd3629b5e5f03dde6d8a17bb798bcb0ba6c3f579 9], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5cfb6de7cd7c8f04655c9d23533ca506647beace 10], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3434933b17fa64adddf83059603c61296f6e1ee2 11], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=169a0abbe32813af4904cc1605c0f7ea0534f77b 12], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d66bea57e779cd592657cca6e61345ae899b78d9 13], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e05d723f98595b2f4d368f63636a997d98703304 14], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d316c57ff6bfad9557462b9100f25c6260d2b774 15], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=906568c9c668ff994f4078932ec6ae1e3950d1af 16], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f8381cba04ba8173fd5a2b8e5cd8b3290ee13a98 17], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=79bf2bb335b85db25d27421c798595a2fa2a0e82 18], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e9e2cdb412412326c4827fc78ba27f410d837e6e 19], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d36b49b91065dbfa305c5a66010b3497c741eee0 20], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=741673473a5b26497d5390f38d478362e27e22ad 21], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f8b5035b9abd01b52ec6416f0c6bade7e603742c 22], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d40891e75fc1f646dce57d5d3bd1349a6aaf7a0e 23], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=54cdfdb47f73b5af3d1ebb0f1e383efbe70fde9e 24], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8bfd9a7a229b5f3d3eda5d7d45c2eebec5b4ba16 25], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=289f480af87e45f7a6de6ba9b4c061c2e259fe98 26], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=82f67cd9fca8c8762c15ba7ed0d5747588c1e221 27], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=88ad0bf6890505cbd9ca1dbb79944a27b5c8697d 28)]
ASoC
The [http://www.rpsys.net/openzaurus/patches/alsa/info.html ASoC (ALSA System on Chip) layer] has been added to the ALSA sound system. Its aim is to provide improved support for sound processors on embedded systems. The ASoC core is designed to allow reuse of codec drivers on other platforms, reuse of platform specific audio DMA and DAI drivers on different machines, easy I2S/PCM digital audio interface configuration between codec and SoC, and allow machines to add controls and operations to the audio subsystem. e.g. volume control for speaker amp.
To achieve all this, ASoC splits an embedded audio system into 3 components: 1. Codec driver: The codec driver is platform independent and contains audio controls, audio interface capabilities, codec dapm and codec IO functions 2. Platform driver: The platform driver contains the audio dma engine and audio interface drivers (e.g. I2S, AC97, PCM) for that platform. 3. Machine driver: The machine driver handles any machine specific controls and audio events. i.e. turning on an amp at start of playback.
It includes a dynamic power management subsystem, designed to allow portable and handheld Linux devices to use the minimum amount of power within the audio subsystem at all times. It is independent of other kernel PM and as such, can easily co-exist with the other PM systems. DAPM is also completely transparent to all user space applications as all power switching is done within the ASoC core. No code changes or recompiling are required for user space applications. DAPM makes power switching decisions based upon any audio stream (capture/playback) activity and audio mixer settings within the device.
A number of platform and codec drivers for ASoC have been merged as well.
[http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=596ce32b74dccf53ef59cc9ba2e95a2a34ba921c (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5a8ec343c5ba1e78ba23bebd9ad4b23f39c50828 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6297027629a9349301e08442b67deb9783a5e984 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6e24dd9310b66d6f500a81ee320a8babec529573 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=734c2d4bb7cfccaab79923331efc7422e4e76a8a 5], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=73f40dc1e147b41eb74bc92ff62bb65cb3260eff 6], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=75b41027662e29822746342865fa8abd941d2604 7], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7f137ab673124ee0a210ab5b74c1f7234d6145fa 8], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7fb290d03af69bfca5876573ac0eada40bd4e292 9], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=808db4a4512bedd45b62de255f7eedb5d5b788b9 10], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8dafc0fb49b903c4e7262b2622bef8342345c700 11], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=97952f601e939278df1194bac56b9755338ee7c1 12], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a1eb4b3caf3abd0d1a8474f07d29959e1879bb29 13], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a3288176de3fdd439d9bca0a0b9ca749c12ac5ac 14], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a71a468a50f1385855e28864e26251b02df829bb 15], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a8f5d0a5d02cda0183c6e68d6a66d4c6641149a9 16], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=abadfc928a27e1cf27c834e8e29e6b1f64ca2d55 17], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b36d61d45654104c04ff71055ef09c696fea5f89 18], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b41bf38a4323a32ec4890c74818c4a3d2661fe6c 19], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c8044274c7f1e269975b2bd55d057ceb7708e929 20], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cb4c048b9306555ccbdb97eaf7922624664b0eb1 21], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cbe83b1795feea33803dc89fce18b2b98abbcc9b 22], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d3d35adc79aa2e48e8177a9506e9bcb5eebba406 23], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d928b25a89c3154fe6d0e62a83f51c5b621aa099 24], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=db2a416556af0313db028147e4a22fef6f214f2f 25], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dbc6b6ad767c86907db373e85139b0e975ba7599 26], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=eaff2ae702f937020bfde96eea552caae3815784 27], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=eb1a6af39b70375d93ed25e7c916f64463e00614 28], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f11a96d5cd94202479e603f9dfaff6e92f342135 29], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ff9abf5b0a655b59d59ea61aec5be6285bf3ac30 30], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0cbbec0984f10f216ed8332e0d39ac93cbe33a0b 31], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=10c5cf30446fe91b7173436b75c4f00dfb4cd9f8 32], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=171eb8f81d7b0706c1085d272e4955251ed9f05f 33], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1b49cb987030c09ca763c1dabd5c5e33f669e530 34], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2b97eabc09f42d0f63e8053636e34e1afa0d604e 35], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3e7cc3d3d1c435f83533b8bf2cf1833855be2901 36], [http://