kernel weekly news – 02.07.2011

Posted: July 2, 2011 in kernel

Hello everyone! Let’s start this week’s and month’s
post with

– a patch from Mel Gorman regarding kswapd eating up 100%
CPU time when highest zone is small :

 During allocator-intensive workloads, kswapd will be woken frequently
causing free memory to oscillate between the high and min watermark.
This is expected behaviour.  Unfortunately, if the highest zone is
small, a problem occurs.

This seems to happen most with recent sandybridge laptops but it's
probably a co-incidence as some of these laptops just happen to have
a small Normal zone. The reproduction case is almost always during
copying large files that kswapd pegs at 100% CPU until the file is
deleted or cache is dropped.

The problem is mostly down to sleeping_prematurely() keeping kswapd
awake when the highest zone is small and unreclaimable and compounded
by the fact we shrink slabs even when not shrinking zones causing a lot
of time to be spent in shrinkers and a lot of memory to be reclaimed.

Patch 1 corrects sleeping_prematurely to check the zones matching
	the classzone_idx instead of all zones.

Patch 2 avoids shrinking slab when we are not shrinking a zone.

Patch 3 notes that sleeping_prematurely is checking lower zones against
	a high classzone which is not what allocators or balance_pgdat()
	is doing leading to an artifical believe that kswapd should be
	still awake.

Patch 4 notes that when balance_pgdat() gives up on a high zone that the
	decision is not communicated to sleeping_prematurely()

This problem affects 3.0-rc4 and for certain and is expected
to affect 2.6.39 as well. If accepted, they need to go to -stable to
be picked up by distros. This series is against 3.0-rc4. I've cc'd
people that reported similar problems recently to see if they still
suffer from the problem and if this fixes it. 

-Next, Shawn Guo proposes a 5-piece patch for imx51 babbage boards
support, John W. Linville has a wireless pull request (well,
wireless-related :P ) – mostly fixes for wi-fi and bluetooth- ,
Keith Packard has a few minor fixes for drm-intel in the
form of a pull request, Takashi Iwai also has a pull request,
but for the sound subsystem and Thomas Gleixner has timer
fixes for 3.0 (3 fixes – pull request) .

-Paul Gortmaker announces the release of kernel
(longterm), Rafael J. Wysocki lists the reported regressions
3.0-rc4 -> 2.6.39 , a list of which you can find here : ,
Martin Schwidefsky has s390 updates in the form of a
pull request and Stefan Bader announces
(longterm) .

-Jiri Kosina updates hid (pull request), Alex Elder announces
an xfs update for 3.0-rc5 (git pull), Lars-Peter Clausen
has a patchset adding Analog Devices ADAV801 and ADAV803
audio codec support, Chris Ball has a pull request announcing
small regression fixes for mmc, intended for -rc5 and Linus
announces 3.0-rc5 :

 Nothing terribly exciting here.

The most noteworthy thing may be that only about a quarter of the
changes are in drivers, filesystem changes actually account for more
(40%): btrfs, cifs, ext4, jbd2, nfs are all present and accounted for.

On the driver side, there's some gpu updates, infiniband, mmc, sound
and some SCSI target fixes.

And the normal random smattering of changes all around. Like some
long-standing compile failure (admittedly you need to enable some
esoteric resource counting options and disable NUMA to trigger it, but
still). I think there's a few more lurking in staging, with fixes yet
to be merged.

The appended shortlog is fairly readable.


-Keng-Yu Lin adds a patch for the ideapads regarding a pm issue,
Vivek Goyal has a 8-piece patchset solving cgroups issues in blk-throttle,
Greg Kroah-Hartman has pull requests for tty/serial, usb and driver-core,
Keith Packard comes again with drm-intel fixes (git pull), Mimi Zohar
has ecryptfs-keys fixes in a pull request, Alan Cox has a 29-piece
patchset for GMA500 and Jean Delvare has a small i2c fixset (pull).

-Avi Kivity comes with a pull request for kvm (just one fix :),
Wu Fengguang has improvements to fs-writeback (patch), Philipp Reisner
targets -rc6 with his pull request for drbd and Mimi Zohar has
16 piece patchset related to EVM :

 Discretionary Access Control(DAC) and Mandatory Access Control(MAC) can
protect the integrity of a running system from unauthorized changes. When
these protections are not running, such as when booting a malicious OS,
mounting the disk under a different operating system, or physically moving
the disk to another system, an "offline" attack is free to read and write
file data/metadata.

Extended Verification Module(EVM) detects offline tampering of the security
extended attributes (e.g. security.selinux, security.SMACK64, security.ima),
which is the basis for LSM permission decisions and, with the IMA-appraisal
patchset, integrity appraisal decisions. This patchset provides the framework
and an initial method to detect offline tampering of the security extended
attributes.  The initial method maintains an HMAC-sha1 across a set of
security extended attributes, storing the HMAC as the extended attribute
'security.evm'. To verify the integrity of an extended attribute, EVM exports
evm_verifyxattr(), which re-calculates the HMAC and compares it with the
version stored in 'security.evm'.  Other methods of validating the integrity
of a file's metadata will be posted separately (eg. EVM-digital-signatures).

Although an offline attack can bypass DAC/MAC protection mechanisms and write
file data/metadata, if the disk, or VM, is subsequently remounted under the
EVM + DAC/MAC (+ IMA-appraisal) protected OS, then the TPM-calculated HMAC of
the file's metadata won't be valid.  Therefore, IMA + MAC/DAC + EVM
(+ IMA-appraisal) can protect system integrity online, detect offline tampering,
and prevent tampered files from being accessed.

While this patchset does authenticate the security xattrs, and
cryptographically binds them to the inode, coming extensions will bind other
directory and inode metadata for more complete protection.  To help simplify
the review and upstreaming process, each extension will be posted separately
(eg. IMA-appraisal, IMA-digital-signatures (including module checking),
IMA-appraisal-directory).  For a general overview of the proposed Linux
integrity subsystem, refer to Dave Safford's whitepaper:

Much appreciation to Dave Hansen, Serge Hallyn, and Matt Helsley for
reviewing the original patches. 

-Dave Airlie has a single radeon fix, Mark Brown has a 8-piece patchset
with regmap fixes, as explained below :

 [This revision of the series has some minor updates to the SPI code.]

Many I2C and SPI based devices implement register maps on top of the raw
wire interface.  This is generally done in a very standard fashion by
devices, resulting in a lot of very similar code in drivers.  For some
time now ASoC has factored this code out into the subsystem but that's
only useful for audio devices.  The intention with this series is to
generalise the concept so that it can be used throughout the kernel.

It's not intended that this be suitable for all devices - some devices
have things that are hard to generalise like registers with variable
size and paging which are hard to support genericly.  At the minute the
code is focused on the common cases.  It is likely that the same code
could be used with other buses with similar properties to I2C and SPI.

Currently only physical I/O is handled, the intention is that once this
support has been reviewed and merged the generic register cache code
that ASoC includes will also be factored out too.  For devices with read
heavy workloads (especially those that need a lot of read/modify/write
cycles) or which don't support read at all this can provide a useful
performance improvement and for sparse register maps there's a lot of
benefit in relatively complex cache code.

I'm not entirely happy with the implementation currently but am fairly
happy with the external interfaces.

A semi-random set of driver conversions have been included in the series
with various degrees of testing including the subsystem wide ASoC code.
Far more drivers could use the code, these have mostly just been done as
samples in a minimally invasive fashion.

There's a git branch at:

   git:// for-next

but due to various -next dependencies this does not currently include
all of the patches posted here.  I've also created a regmap-asoc branch
there which merges current ASoC code with the regmap code. 

, Paul Mundt has rmobile and sh fixes for 3.0-rc6, Wim Van Sebroeck
updates watchdog (pull request), David Miller updates networking
(“1) Bridge flooding fix from Herbert Xu.

2) ip_rt_bug can trigger in certain TPROXY situations, fix
from Julian Anastasov.

3) Fix bluetooth L2CAP security check, from Luiz Augusto von Dentz.

4) zlib inflate buffer alloc can result in order-4 allocation, use
vmalloc instead.

5) ipv6 UDP checks wrong variable for non-blocking condition, fix
from Xufeng Zhang.

6) If UDP recvmsg ends up retrying, we need to clear the MSG_TRUNC
flag as the next packet we’re going to try might fit. Fix
from Xufeng Zhang.

7) Fix OOPS in rionet_remove, from Yinglin Luan.

8) Packet length calculation fixes in the ipv4 output path from
Steffen Klassert.

9) Fix Kconfig deps for netconsole, from Randy Dunlap.

10) CAN Kconfig files were using “default Y” instead of “default y”,
fix from marc Kleine-Budde. “) and John W. Linville has
wireless updates :

 Here is a batch of fixes intended for 3.0.  Arik gives us a fix for a
potential NULL dereference in mac80211.  Emmanuel gives us a fix for a
regression introduced by "iwlagn: support multiple TBs per command" that
can corrupt memory.  Eugene (and Bob) gives a memory leak fix for ath5k.
Evgeni gives us a preprocessor-related fix that makes modinfo output
make more sense for iwlagn.  Johannes gives us a trio of fixes, all
isolated to the bowels of iwlagn.  I overlayed a fixup on top of one of
Johannes's patches, since there was some confusion between DMA and PCI
API usage.  Finally, Rajkumar gives us an ath9k fix to ensure the chip
is properly awakened even if there is no active interface when the
resume occurs. 

-That’s all folks! See you next week!

  1. jam says:

    I installed F15 in my laptop, the only way to get anything but a black screen was to use nomodesetting, but would boot to gnome failback. Because I upgraded from F14, I had the last F14 kernel in it, which boots OK and givse me gnomeshell. I’ve tried to get in touch with anyone that works with the Fedora kernel to talk about this, but nobody is interested.

    • dmaxel says:

      Are you using the proprietary AMD drivers? That is probably why you A) needed to use nomodeset to get something to show up, and B) will not be installed on the new kernel in an upgrade. You need to go ahead and boot into the newer kernel, ignore that it’s using Failsafe, and install the drivers for that kernel.

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