kernel weekly news – 02.04.2011

Posted: April 2, 2011 in kernel

Hello everyone and welcome to this week’s news! We have lots
to talk about, so let’s start!

-Ingo Molnar announces x86 updates, Artem Bityutskyi has mtd
changes for .39 (“Here are the MTD updates for 2.6.39. David Woodhouse is unable to take
care for the pull request right now for private reasons, so he asked
me do do this (I’m an active member of the MTD community).

The pull request contains one merge commit. The reason for this commit
is that the changes in the block tree broke the MTD tree compilation.
The block tree is already merged upstream. The MTD tree was published,
so re-basing it is not possible.

To fix the situation I did the following:
1. Pulled your tree to the mtd tree (for-linus-1 branch) with
–no-commit option.
2. Applied the compilation fix on top (the patch is below).
3. And committed the result.

I’ve also put the description to the merge commit which explains these
reasons. Hopefully this is acceptable. Note, in the e-mail David dropped
me (you was in CC) he did tell me to “NOT push back the results of that
merge”, but I did not really understand how could that work. Probably he
meant that I should send you the pull request which does not build plus
a separate build fix-up patch. If this is what you indeed expect, pleas,
let me know.

Most of the patches in the mtd tree are just small fixes and improvements.
But 2 things stand out:

1. The BCH ECC library which implements strong ECC codes which can
correct 4-bits per 512-bit chunks. This is important for modern NAND
flashes which become crappier and crappier and require stronger and
stronger ECC.
2. The mtdswap driver which implements swap on top of raw flash. “),
James Bottomley has some patches for the SCSi tree (merge window)
and David Miller has networking (“This should be the final round, and I believe all known major
regressions added by the routing rework are cured now.

1) Route insert compares metrics incorrectly, fix from Eric Dumazet.

2) Cache route source addresses need to rechecked in more circumstances,
and need to use the correct scope when they are being calculated.
With help from Julian Anastasov.

3) ip_route_newports() uses the wrong source and destination addresses
in lookup key. Fix from Steffen Klassert.

4) Fix race in qdisc throttling, from Eric Dumazet.

5) Fix rmmod crash in myri10ge, NAPI instances are not deleted. From
Stanislaw Gruszka.

6) Bonding rx_handle locking still allows races, fix from Jiri Pirko.

7) mlx4 driver updates from Yevgeny Petrilin.

8) iwlwifi forgets mutex unlock on error, from Dan Carpenter.

9) orinoco needs to hold scan_lock over a larger section of code, from
Joe Gunn.

10) Add some device IDs to rt2x00 wireless driver. From Peter Lemenkov.

11) rtlwifi uses wrong memset() arg order, fix from Ilia Mirkin.

12) Fix panic on AR2427 ath9k chips when connecting with AP, from
Mohammed Shafi Shajakhan.

13) When an IP address is assigned multiple times to an interface,
using different prefixes, we sometimes leave stale subnet routes
in the routing table when those addresses are deleted. Fix from
Julian Anastasov.

14) Bridge ipv6 multicast code needs to set destination address before
using it. Fix from Linus Lüssing.

15) TCP moderates congestion window during undo when it need not do
so, since undo means that recovery was false. Fix from Yuchung

16) __ip_dev_find() needs to handle to obscure case of allowing any
IP address on a loopback device subnet, fix by adding fallback
code which searches the local FIB table when an explicit device
address is not found in the hash table.

17) ip_rt_update_pmtu() does one too many inet_putpeer()’s resulting
in memory corruption and other problems. Fix from Eric Dumazet.

Please pull, thanks a lot!

The following changes since commit 40471856f2e38e9bfa8d605295e8234421110dd6:

Merge branch ‘nfs-for-2.6.39’ of git:// (2011-03-25 10:03:28 -0700)

are available in the git repository at: master”) and
SPARC changes.

-Greg Ungerer has m68knommu updates, while Dave Delvare updates the
hwmon tree (aimed at 2.6.39), Thomas Gleixner has a series of irq cleanups
for .39 and Takashi Iwai has sound subsystem fixes for -rc1 .

-Greg Kroah-Hartman, after a series of reviews, announces new stable versions
of the Linux kernel :, ,; the usual browsing
of the tree(s) cand be done with accesing this address:;a=summary

-Jens Axboe has block updates for .39, Kukjin Kim has Samsung fixes for -rc1,
on a similar note, Matthew Garrett has x86 platform driver updates for
2.6.39 , Tyler Hicks has a few fixes for the ecryptfs tree aimed at -rc1 and
Greg Kroah Hartman announces .

-Jesper Nilsson announces cris trivial fixes, ocfs2 changes are issued by
Joel Becker for -rc* kernels and Thomas Gleixner has updates for .39 :

 This is hopefully the last set of updates to the genirq code. It's
mostly helper functions which are necessary to cleanup the arch and
driver instances of irq chips and demux handlers fully.

The arm ns9xxx patch has been acked by Uwe.

The original cell patch has been ignored, so I put the cell private
handler into the core under a ifdef section which is selected by
cell. It's fully equivalent, but less code and allows me to remove the
old handle_IRQ_event() interface. I never liked the camel case :)

I really want to be able to remove the whole compat and deprecated
stuff now as the crap seems to come back faster than I can clean it
up. I've sent out patches to all archs which are not yet fully cleaned
up and I'm working to get the maintainers convinced to get through
with this for .39. The remaining queue of all arch/driver updates plus
the cleanup of the core code is going to remove another 1200 lines of
code on top of the already removed 800+. 

-Chris Mason has updates for btrfs aimed at 2.6.39 :

 Hi everyone,

The mirror is making me pay for a mistake in my push last
night.  I'm still waiting for it to update the mirrors with the correct
commits, so I've got the proper sha down below.

Linus, I've pushed out two branches for you, for-linus and

git:// for-linus

The correct top commit in for-linus: 08aca535a2150e951c6f1d882bea6ef1a1c31822

git:// for-linus-unmerged

The correct top commit in for-linus-unmerged: d9d04879321af570ea7285c6dad92d9c3cd108a1

The reason there are two is because there was a conflict in
fs/btrfs/volumes.c. Jens' unplugging code and the new btrfs fitrim
support were both changing the same code.  The merge isn't too bad, his
stuff was just removing the tests for an unplugging function, but I
wanted to provide a wrapped up merge commit just in case.

So, for-linus-unmerged is against 2.6.38, and for-linus is against your
git tree as of Friday.  The shortlog/diffstat below don't include the merge

This pull has per-file controls in btrfs for the compression and nocow
flags.  This goes in through the standard chattr interface, and Ted did
ack the new flags.

We also have support for the FITRIM ioctl, which will let us discard in
bulk.  It will be very interesting to compare the performance of online
discard vs bulk trim, and it is possible to run both at the same time.

There are also many error handling fixes, allocator performance fixes,
code cleanups, a switch to the new truncate handling code, and a few
other small fixes.  This might be the first pull in a long time without
the words ENOSPC in it, but I'm sure we've fixed that too. 

-David Miller has updates and fixes on the networking tree :

 1) Fix oops in RAW ipv4 when route doesn't exist.

2) Heap corruptions, missing length checks, in IRDA and ROSE.  From
   Dan Rosenberg and Ben Hutchings.

3) Fix FIB error return code checking regression, fix from Julian Anastasov.

4) Fix refression in ethtool ->set_flags() error returns for some
   network drivers, from Stanislaw Gruszka.

5) When we do async crypto, we don't take a reference while the transaction
   is "in flight" and thus can crash if the object is release meanwhile.
   Fix from Steffen Klassert.

6) Bug fixes to the new IPSEC extended replay window support, also
   from Steffen Klassert.

7) Bridge forgets to send out notifier when device address changes, from
   Stephen Hemminger.

8) Conver jme driver away from legacy PCI power management, from Rafael J.

9) GRO is ineffective on large page size configs because we don't put
   enough scatter gather elements into the SKB, from Anton Blanchard.

10) cxgb3 erroneously only applies irq coalescing settings to one queue,
    fix also from Anton Blanchard.

11) CAN fixes from Jan Altenberg, Marc Kleine-Budde, and Oliver Hartkopp.

12) mlx4_en driver loses promiscuous setting, fix from Herbert Xu.

Please pull, thanks a lot! 

-Wim van Sebroeck has few watchdog fixes :

 watchdog: softdog.c: enhancement to optionally invoke panic instead of reboot on timer expiry
    This is needed for determining the reason for failure when a softdog
    timeout occurs.
    We use softdog to watch for critical application failures and at the
    minimum a snapshot of the system would help to determine the cause.  In
    such a scenario the application could fail but there isn't a softlockup as
    such, hence the detect softlockup feature does not help.
    The patch adds a module parameter soft_panic which when set to 1 causes
    softdog to invoke panic instead of reboot when the softdog timer expires.
    By invoking panic we execute kdump if it is configured and the vmcore
    generated by kdump should provide atleast a minimal idea of the reason for

-Benjamin Herrenschmidt has updated the powerpc tree :

 Mostly some more fallout from the irq core rework, new syscalls wireup,
defconfig fixes and minor bits. The only feature-esque thing in there
would be me adding dma_mmap_coherent(), it fixes various audio devices
on our older non cache-coherent embedded platforms.

Freescale folks: I've manually added two patches to fix some FSL 8xx and
QE irq build problems caused by the upstream irq rework to the branch.
Please verify that it's all correct and if not send followup patches.

Linus: I didn't wait for hera to sync to the mirrors before sending this
email (I usually do but I have to run and it's very slow today). 

-Under the title “Merge window closed – 2.6.39-rc1 out”. Linus announces
the latest and greatest :

 So 2.6.39-rc1 is out there, and the merge window is closed. I still
have to look over the cleancache pull request (which I got in plenty
of time, but decided that I want to review after the merge window
craziness is over), but other than that, we're done.

What to say about the merge window? It _feels_ like it was all
drivers, filesystems and irq cleanups. The dirstat backs up the
drivers part (65%), but claims that we had way more arch updates than
filesystem stuff (and the bulk of that is ARM, and while _some_ of
that was the irq conversions, most of it is just the normal board
churn). On the arch side, the first steps of unifying m68k and
m68knommu is a nice sign, let's see how that all pans out in the long
run. Oh, and there's the new unicore32 architecture.

Elsewhere, we had a fair amount of VFS cleanup, and also introduced
the "filehandle" interfaces (along with open(..,O_PATH)). Although
most people won't care.

Perhaps a bit more interesting to a larger part of the kernel
community is the new block device plugging model - it makes plugging a
per-thread thing and cleaned up the code considerably. It also avoids
lots of locking in a very hot path, and should generally be a really
good idea. That said, it also at one point ate XFS filesystems for
breakfast, but that's fixed and it's hopefully all good now.

Anything else? I'm sure I've forgotten something really exciting. But
on the whole I think this should be one of those "solid, boring
progress" releases.

Knock wood. I like boring.


-Thomas Gleixner announces irq fixes for 2.6.39-rc*, Andi Kleen
announces longterm kernel, which you can get here :,
and Benjamin Herrenschmidt announces updates (merge branch)
for the powerpc tree :

 Hi Linus !

Some more powerpc bits for you.

One is actually a change from Anton to the generic kexec to make a
function weak so powerpc can override it.

It has been around for ever, there were initial objections I think
mostly due to a misunderstanding of the problem.

Since then, it's been a deafening silence to our responses/expanations
and no answers from Eric so I think it should go in as the powerpc
counterpart that implements our version of that weak function is already
(and has been for a while as d72e063bb32c06c6c1cec14f6857b7c37ba62d7a)
and it fixes a real nasty bug.

The rest is a series of fixes to our CPU hotplug code that I've been
sitting on for a little while (by myself) and was originally thinking
about putting in for the next release.

I eventually changed my mind, there is no point in sitting on them any
longer since they fix some real issues on some machines (such as G5's
crashing on re-plug) and brings us in line with what other archs do for
setting up and re-initializing the idle threads.


-David Miller has updates on networking and sparc and Pekka Enberg
, in a mail titled “Native Linux KVM Tool”, announces, as the title
suggests, a native Linux kvm tool :P :

 Hi all,

We’re proud to announce the native Linux KVM tool!

The goal of this tool is to provide a clean, from-scratch, lightweight
KVM host tool implementation that can boot Linux guest images (just a
hobby, won't be big and professional like QEMU) with no BIOS
dependencies and with only the minimal amount of legacy device

Note that this is a development prototype for the time being: there's no
networking support and no graphics support, amongst other missing

It's great as a learning tool if you want to get your feet wet in
virtualization land: it's only 5 KLOC of clean C code that can already
boot a guest Linux image.

Right now it can boot a Linux image and provide you output via a serial
console, over the host terminal, i.e. you can use it to boot a guest
Linux image in a terminal or over ssh and log into the guest without
much guest or host side setup work needed.

1. To try out the tool, clone the git repository:

  git clone git://

or alternatively, if you already have a kernel source tree:

  git checkout -b kvm/tool
  git pull git://

2. Compile the tool:

  cd tools/kvm && make

3. Download a raw userspace image:

  wget && bunzip2

4. Build a kernel with CONFIG_VIRTIO_BLK=y and
CONFIG_SERIAL_8250_CONSOLE=y configuration options. Note: also make sure
you have CONFIG_EXT2_FS or CONFIG_EXT4_FS if you use the above image.

5. And finally, launch the hypervisor:

  ./kvm --image=linux-0.2.img --kernel=../../arch/x86/boot/bzImage

The tool has been written by Pekka Enberg, Cyrill Gorcunov, and Asias
He. Special thanks to Avi Kivity for his help on KVM internals and Ingo
Molnar for all-around support and encouragement!

See the following thread for original discussion for motivation of this


-Tejun Heo has a few updates for the x86 misc tree and John W. Linville
updates the wireless tree :

 Here is another batch of fixes intended for 2.6.39.  This round includes
a number of Bluetooth fixes.

On the Bluetooth front, we have a WARNING fix related to debugobjects, a
fix for L2CAP channel hang, a fix for an unlock without a lock, a fix to
check for LE connections before discarding data, a fix for
synchronization after HCI_RESET, an accounting fix for unacked frames,
and a device ID addition.

For wireless LANs, an iwlegacy fix to prevent a possible crash during a
firmware restart, a carl9170 fix to generate BlockAckReq if the
transmission of an AMPDU subframe fails (i.e. an interop fix), an
iwl3945 change to disable hw scan by default due to a number of related
problems, a related debug message change to avoid some confusion, a fix
for aggregation frame reordering, a cfg80211 fix to avoid
double-unlinking a BSS entry, a trio of NULL pointer deref fixes, an
ath9k fix to avoid a bus error during restart, a minstrel_ht fix to
avoid a crash when no supported MCS rates are found, and some new device
IDs for rt2x00.

Please let me know if there are problems! 

-Last minute entries : none this week.

-Have an enjoyable weekend! See you in a week!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s