10 years agoedac: mpc85xx: fix MPC85xx dependency
Anton Vorontsov [Tue, 20 Jul 2010 20:24:27 +0000 (13:24 -0700)]
edac: mpc85xx: fix MPC85xx dependency

Since commit 5753c082f66eca5be81f6bda85c1718c5eea6ada ("powerpc/85xx:
Kconfig cleanup"), there is no MPC85xx Kconfig symbol anymore, so the
driver became non-selectable.

This patch fixes the issue by switching to PPC_85xx symbol.

Signed-off-by: Anton Vorontsov <>
Cc: Doug Thompson <>
Cc: Peter Tyser <>
Cc: Dave Jiang <>
Cc: Kumar Gala <>
Cc: <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agomm/vmscan.c: fix mapping use after free
Nick Piggin [Tue, 20 Jul 2010 20:24:25 +0000 (13:24 -0700)]
mm/vmscan.c: fix mapping use after free

We need lock_page_nosync() here because we have no reference to the
mapping when taking the page lock.

Signed-off-by: Nick Piggin <>
Reviewed-by: Johannes Weiner <>
Cc: Mel Gorman <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agoipc/sem.c: bugfix for semop() not reporting successful operation
Manfred Spraul [Tue, 20 Jul 2010 20:24:23 +0000 (13:24 -0700)]
ipc/sem.c: bugfix for semop() not reporting successful operation

The last change to improve the scalability moved the actual wake-up out of
the section that is protected by spin_lock(sma->sem_perm.lock).

This means that IN_WAKEUP can be in queue.status even when the spinlock is
acquired by the current task.  Thus the same loop that is performed when
queue.status is read without the spinlock acquired must be performed when
the spinlock is acquired.

Thanks to for noticing lack of the memory


[ clean up kerneldoc, checkpatch warning and whitespace]
Signed-off-by: Manfred Spraul <>
Reported-by: Luca Tettamanti <>
Tested-by: Luca Tettamanti <>
Reported-by: Christoph Lameter <>
Cc: Maciej Rutecki <>
Cc: KAMEZAWA Hiroyuki <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agoMerge git://
Linus Torvalds [Tue, 20 Jul 2010 15:22:15 +0000 (08:22 -0700)]
Merge git://

* git://
  ds2782_battery: Fix ds2782_get_capacity return value

10 years agoMerge branch 'shrinker' of git://
Linus Torvalds [Tue, 20 Jul 2010 03:18:24 +0000 (20:18 -0700)]
Merge branch 'shrinker' of git://git./linux/kernel/git/dgc/xfsdev

* 'shrinker' of git://
  xfs: track AGs with reclaimable inodes in per-ag radix tree
  xfs: convert inode shrinker to per-filesystem contexts
  mm: add context argument to shrinker callback

10 years agoMerge git://
Linus Torvalds [Tue, 20 Jul 2010 02:33:02 +0000 (19:33 -0700)]
Merge git://git./linux/kernel/git/mason/btrfs-unstable

* git://
  Btrfs: fix checks in BTRFS_IOC_CLONE_RANGE
  Btrfs: fix CLONE ioctl destination file size expansion to block boundary
  Btrfs: fix split_leaf double split corner case

10 years agoxfs: track AGs with reclaimable inodes in per-ag radix tree
Dave Chinner [Mon, 19 Jul 2010 23:43:39 +0000 (09:43 +1000)]
xfs: track AGs with reclaimable inodes in per-ag radix tree

When the filesystem grows to a large number of allocation groups,
the summing of recalimable inodes gets expensive. In many cases,
most AGs won't have any reclaimable inodes and so we are wasting CPU
time aggregating over these AGs. This is particularly important for
the inode shrinker that gets called frequently under memory

To avoid the overhead, track AGs with reclaimable inodes in the
per-ag radix tree so that we can find all the AGs with reclaimable
inodes via a simple gang tag lookup. This involves setting the tag
when the first reclaimable inode is tracked in the AG, and removing
the tag when the last reclaimable inode is removed from the tree.
Then the summation process becomes a loop walking the radix tree
summing AGs with the reclaim tag set.

This significantly reduces the overhead of scanning - a 6400 AG
filesystea now only uses about 25% of a cpu in kswapd while slab
reclaim progresses instead of being permanently stuck at 100% CPU
and making little progress. Clean filesystems filesystems will see
no overhead and the overhead only increases linearly with the number
of dirty AGs.

Signed-off-by: Dave Chinner <>
Reviewed-by: Christoph Hellwig <>
10 years agoxfs: convert inode shrinker to per-filesystem contexts
Dave Chinner [Mon, 19 Jul 2010 22:07:02 +0000 (08:07 +1000)]
xfs: convert inode shrinker to per-filesystem contexts

Now the shrinker passes us a context, wire up a shrinker context per
filesystem. This allows us to remove the global mount list and the
locking problems that introduced. It also means that a shrinker call
does not need to traverse clean filesystems before finding a
filesystem with reclaimable inodes.  This significantly reduces
scanning overhead when lots of filesystems are present.

Signed-off-by: Dave Chinner <>
Reviewed-by: Christoph Hellwig <>
10 years agoBtrfs: fix checks in BTRFS_IOC_CLONE_RANGE
Dan Rosenberg [Mon, 19 Jul 2010 20:58:20 +0000 (16:58 -0400)]
Btrfs: fix checks in BTRFS_IOC_CLONE_RANGE

1.  The BTRFS_IOC_CLONE and BTRFS_IOC_CLONE_RANGE ioctls should check
whether the donor file is append-only before writing to it.

2.  The BTRFS_IOC_CLONE_RANGE ioctl appears to have an integer
overflow that allows a user to specify an out-of-bounds range to copy
from the source file (if off + len wraps around).  I haven't been able
to successfully exploit this, but I'd imagine that a clever attacker
could use this to read things he shouldn't.  Even if it's not
exploitable, it couldn't hurt to be safe.

Signed-off-by: Dan Rosenberg <>
Signed-off-by: Chris Mason <>
10 years agoMerge branch 'x86-fixes-for-linus' of git://
Linus Torvalds [Mon, 19 Jul 2010 20:19:32 +0000 (13:19 -0700)]
Merge branch 'x86-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://
  x86, pci, mrst: Add extra sanity check in walking the PCI extended cap chain
  x86: Fix x2apic preenabled system with kexec
  x86: Force HPET readback_cmp for all ATI chipsets

10 years agoMerge branch 'kmemleak' of git://
Linus Torvalds [Mon, 19 Jul 2010 20:18:34 +0000 (13:18 -0700)]
Merge branch 'kmemleak' of git://git./linux/kernel/git/cmarinas/linux-2.6-cm

* 'kmemleak' of git://
  kmemleak: Add support for NO_BOOTMEM configurations
  kmemleak: Annotate false positive in init_section_page_cgroup()

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Mon, 19 Jul 2010 20:18:05 +0000 (13:18 -0700)]
Merge branch 'for-linus' of git://

* 'for-linus' of git://
  [S390] cio: fix potential overflow in chpid descriptor
  [S390] add missing device put
  [S390] dasd: use correct label location for diag fba disks

10 years agointel_scu_ipc: Oops/crash fixes
Sreedhara DS [Mon, 19 Jul 2010 08:37:42 +0000 (09:37 +0100)]
intel_scu_ipc: Oops/crash fixes

- fix reversing of command/sub arguments
- fix a crash if the i2c interface is called before the device is found

Signed-off-by: Sreedhara DS <>
Signed-off-by: Alan Cox <>
Signed-off-by: Linus Torvalds <>
10 years agoBtrfs: fix CLONE ioctl destination file size expansion to block boundary
Sage Weil [Sat, 12 Jun 2010 22:31:14 +0000 (22:31 +0000)]
Btrfs: fix CLONE ioctl destination file size expansion to block boundary

The CLONE and CLONE_RANGE ioctls round up the range of extents being
cloned to the block size when the range to clone extends to the end of file
(this is always the case with CLONE).  It was then using that offset when
extending the destination file's i_size.  Fix this by not setting i_size
beyond the originally requested ending offset.

This bug was introduced by a22285a6 (2.6.35-rc1).

Signed-off-by: Sage Weil <>
Signed-off-by: Chris Mason <>
10 years agoBtrfs: fix split_leaf double split corner case
Chris Mason [Wed, 7 Jul 2010 14:51:48 +0000 (10:51 -0400)]
Btrfs: fix split_leaf double split corner case

split_leaf was not properly balancing leaves when it was forced to
split a leaf twice.  This commit adds an extra push left and right
before forcing the double split in hopes of getting the slot where
we want to insert at either the start or end of the leaf.

If the extra pushes do work, then we are able to avoid splitting twice
and we keep the tree properly balanced.

Signed-off-by: Chris Mason <>
10 years agokmemleak: Add support for NO_BOOTMEM configurations
Catalin Marinas [Mon, 19 Jul 2010 10:54:15 +0000 (11:54 +0100)]
kmemleak: Add support for NO_BOOTMEM configurations

With commits 08677214 and 59be5a8e, alloc_bootmem()/free_bootmem() and
friends use the early_res functions for memory management when
NO_BOOTMEM is enabled. This patch adds the kmemleak calls in the
corresponding code paths for bootmem allocations.

Signed-off-by: Catalin Marinas <>
Acked-by: Pekka Enberg <>
Acked-by: Yinghai Lu <>
Cc: H. Peter Anvin <>
10 years agokmemleak: Annotate false positive in init_section_page_cgroup()
Catalin Marinas [Mon, 19 Jul 2010 10:54:14 +0000 (11:54 +0100)]
kmemleak: Annotate false positive in init_section_page_cgroup()

The pointer to the page_cgroup table allocated in
init_section_page_cgroup() is stored in section->page_cgroup as (base -
pfn). Since this value does not point to the beginning or inside the
allocated memory block, kmemleak reports a false positive.

This was reported in as #16297.

Signed-off-by: Catalin Marinas <>
Reported-by: Adrien Dessemond <>
Reviewed-by: KAMEZAWA Hiroyuki <>
Cc: Pekka Enberg <>
Cc: Andrew Morton <>
10 years ago[S390] cio: fix potential overflow in chpid descriptor
Sebastian Ott [Mon, 19 Jul 2010 07:22:37 +0000 (09:22 +0200)]
[S390] cio: fix potential overflow in chpid descriptor

The length filed in the chsc response block (if valid)
has a value of n*(sizeof(chp_desc))+8 (for the response
block header). When we memcopied from the response block
to the actual descriptor we copied 8 bytes too much.
The bug was not revealed since the descriptor is embedded
in struct channel_path.
Since we only write one descriptor at a time ignore the
length value and use sizeof(*desc).

Signed-off-by: Sebastian Ott <>
Signed-off-by: Martin Schwidefsky <>
10 years ago[S390] add missing device put
Stefan Haberland [Mon, 19 Jul 2010 07:22:36 +0000 (09:22 +0200)]
[S390] add missing device put

The dasd_alias_show function does not return a device reference
in case the device is an alias.

Signed-off-by: Stefan Haberland <>
Signed-off-by: Martin Schwidefsky <>
10 years ago[S390] dasd: use correct label location for diag fba disks
Peter Oberparleiter [Mon, 19 Jul 2010 07:22:35 +0000 (09:22 +0200)]
[S390] dasd: use correct label location for diag fba disks

Partition boundary calculation fails for DASD FBA disks under the
following conditions:
- disk is formatted with CMS FORMAT with a blocksize of more than
  512 bytes
- all of the disk is reserved to a single CMS file using CMS RESERVE
- the disk is accessed using the DIAG mode of the DASD driver

Under these circumstances, the partition detection code tries to
read the CMS label block containing partition-relevant information
from logical block offset 1, while it is in fact located at physical
block offset 1.

Fix this problem by using the correct CMS label block location
depending on the device type as determined by the DASD SENSE ID

Signed-off-by: Peter Oberparleiter <>
Signed-off-by: Martin Schwidefsky <>
10 years agomm: add context argument to shrinker callback
Dave Chinner [Mon, 19 Jul 2010 04:56:17 +0000 (14:56 +1000)]
mm: add context argument to shrinker callback

The current shrinker implementation requires the registered callback
to have global state to work from. This makes it difficult to shrink
caches that are not global (e.g. per-filesystem caches). Pass the shrinker
structure to the callback so that users can embed the shrinker structure
in the context the shrinker needs to operate on and get back to it in the
callback via container_of().

Signed-off-by: Dave Chinner <>
Reviewed-by: Christoph Hellwig <>
10 years agoMerge branch 'x86/kprobes' of git://
Linus Torvalds [Sun, 18 Jul 2010 22:13:30 +0000 (15:13 -0700)]
Merge branch 'x86/kprobes' of git://git./linux/kernel/git/frob/linux-2.6-roland

* 'x86/kprobes' of git://
  x86: kprobes: fix swapped segment registers in kretprobe

10 years agox86: kprobes: fix swapped segment registers in kretprobe
Roland McGrath [Sat, 17 Jul 2010 01:17:12 +0000 (18:17 -0700)]
x86: kprobes: fix swapped segment registers in kretprobe

In commit f007ea26, the order of the %es and %ds segment registers
got accidentally swapped, so synthesized 'struct pt_regs' frames
have the two values inverted.  It's almost sure that these values
never matter, and that they also never differ.  But wrong is wrong.

Signed-off-by: Roland McGrath <>
10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sun, 18 Jul 2010 22:05:22 +0000 (15:05 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/jbarnes/pci-2.6

* 'for-linus' of git://
  PCI: fall back to original BIOS BAR addresses

10 years agoMerge branch 'upstream-linus' of git://
Linus Torvalds [Sun, 18 Jul 2010 17:09:25 +0000 (10:09 -0700)]
Merge branch 'upstream-linus' of git://git./linux/kernel/git/jlbec/ocfs2

* 'upstream-linus' of git://
  ocfs2: Silence gcc warning in ocfs2_write_zero_page().
  jbd2/ocfs2: Fix block checksumming when a buffer is used in several transactions
  ocfs2/dlm: Remove BUG_ON from migration in the rare case of a down node
  ocfs2: Don't duplicate pages past i_size during CoW.
  ocfs2: tighten up strlen() checking
  ocfs2: Make xattr reflink work with new local alloc reservation.
  ocfs2: make xattr extension work with new local alloc reservation.
  ocfs2: Remove the redundant cpu_to_le64.
  ocfs2/dlm: don't access beyond bitmap size
  ocfs2: No need to zero pages past i_size.
  ocfs2: Zero the tail cluster when extending past i_size.
  ocfs2: When zero extending, do it by page.
  ocfs2: Limit default local alloc size within bitmap range.
  ocfs2: Move orphan scan work to ocfs2_wq.
  fs/ocfs2/dlm: Add missing spin_unlock

10 years agodrm/i915: add 'reclaimable' to i915 self-reclaimable page allocations
Linus Torvalds [Sun, 18 Jul 2010 16:44:37 +0000 (09:44 -0700)]
drm/i915: add 'reclaimable' to i915 self-reclaimable page allocations

The hibernate issues that got fixed in commit 985b823b9192 ("drm/i915:
fix hibernation since i915 self-reclaim fixes") turn out to have been
incomplete.  Vefa Bicakci tested lots of hibernate cycles, and without
the __GFP_RECLAIMABLE flag the system eventually fails to resume.

With the flag added, Vefa can apparently hibernate forever (or until he
gets bored running his automated scripts, whichever comes first).

The reclaimable flag was there originally, and was one of the flags that
were dropped (unintentionally) by commit 4bdadb978569 ("drm/i915:
Selectively enable self-reclaim") that introduced all these problems,
but I didn't want to just blindly add back all the flags in commit
985b823b9192, and it looked like __GFP_RECLAIM wasn't necessary.  It
clearly was.

I still suspect that there is some subtle reason we're missing that
causes the problems, but __GFP_RECLAIMABLE is certainly not wrong to use
in this context, and is what the code historically used.  And we have no
idea what the causes the corruption without it.

Reported-and-tested-by: M. Vefa Bicakci <>
Cc: Dave Airlie <>
Cc: Chris Wilson <>
Cc: KOSAKI Motohiro <>
Cc: Hugh Dickins <>
Signed-off-by: Linus Torvalds <>
10 years agox86, pci, mrst: Add extra sanity check in walking the PCI extended cap chain
Jacob Pan [Fri, 16 Jul 2010 18:58:26 +0000 (11:58 -0700)]
x86, pci, mrst: Add extra sanity check in walking the PCI extended cap chain

The fixed bar capability structure is searched in PCI extended
configuration space.  We need to make sure there is a valid capability
ID to begin with otherwise, the search code may stuck in a infinite
loop which results in boot hang.  This patch adds additional check for
cap ID 0, which is also invalid, and indicates end of chain.

End of chain is supposed to have all fields zero, but that doesn't
seem to always be the case in the field.

Suggested-by: "H. Peter Anvin" <>
Signed-off-by: Jacob Pan <>
Reviewed-by: Jesse Barnes <>
LKML-Reference: <>
Signed-off-by: H. Peter Anvin <>
10 years agox86: Fix x2apic preenabled system with kexec
Yinghai Lu [Thu, 15 Jul 2010 07:00:59 +0000 (00:00 -0700)]
x86: Fix x2apic preenabled system with kexec

Found one x2apic system kexec loop test failed
when CONFIG_NMI_WATCHDOG=y (old) or CONFIG_LOCKUP_DETECTOR=y (current tip)

first kernel can kexec second kernel, but second kernel can not kexec third one.

it can be duplicated on another system with BIOS preenabled x2apic.
First kernel can not kexec second kernel.

It turns out, when kernel boot with pre-enabled x2apic, it will not execute
disable_local_APIC on shutdown path.

when init_apic_mappings() is called in setup_arch, it will skip setting of
apic_phys when x2apic_mode is set. ( x2apic_mode is much early check_x2apic())
Then later, disable_local_APIC() will bail out early because !apic_phys.

So check !x2apic_mode in x2apic_mode in disable_local_APIC with !apic_phys.

another solution could be updating init_apic_mappings() to set apic_phys even
for preenabled x2apic system. Actually even for x2apic system, that lapic
address is mapped already in early stage.

BTW: is there any x2apic preenabled system with apicid of boot cpu > 255?

Signed-off-by: Yinghai Lu <>
LKML-Reference: <>
Acked-by: Suresh Siddha <>
Signed-off-by: H. Peter Anvin <>
10 years agoocfs2: Silence gcc warning in ocfs2_write_zero_page().
Joel Becker [Fri, 16 Jul 2010 20:32:33 +0000 (13:32 -0700)]
ocfs2: Silence gcc warning in ocfs2_write_zero_page().

ocfs2_write_zero_page() has a loop that won't ever be skipped, but gcc
doesn't know that.  Set ret=0 just to make gcc happy.

Signed-off-by: Joel Becker <>
10 years agoPCI: fall back to original BIOS BAR addresses
Bjorn Helgaas [Thu, 15 Jul 2010 15:41:42 +0000 (09:41 -0600)]
PCI: fall back to original BIOS BAR addresses

If we fail to assign resources to a PCI BAR, this patch makes us try the
original address from BIOS rather than leaving it disabled.

Linux tries to make sure all PCI device BARs are inside the upstream
PCI host bridge or P2P bridge apertures, reassigning BARs if necessary.
Windows does similar reassignment.

Before this patch, if we could not move a BAR into an aperture, we left
the resource unassigned, i.e., at address zero.  Windows leaves such BARs
at the original BIOS addresses, and this patch makes Linux do the same.

This is a bit ugly because we disable the resource long before we try to
reassign it, so we have to keep track of the BIOS BAR address somewhere.
For lack of a better place, I put it in the struct pci_dev.

I think it would be cleaner to attempt the assignment immediately when the
claim fails, so we could easily remember the original address.  But we
currently claim motherboard resources in the middle, after attempting to
claim PCI resources and before assigning new PCI resources, and changing
that is a fairly big job.


Reported-by: Andrew <>
Tested-by: Andrew <>
Signed-off-by: Bjorn Helgaas <>
Signed-off-by: Jesse Barnes <>
10 years agoMerge branch 'perf-fixes-for-linus' of git://
Linus Torvalds [Fri, 16 Jul 2010 18:26:33 +0000 (11:26 -0700)]
Merge branch 'perf-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'perf-fixes-for-linus' of git://
  tracing: Add alignment to syscall metadata declarations
  perf: Sync callchains with period based hits
  perf: Resurrect flat callchains
  perf: Version String fix, for fallback if not from git
  perf: Version String fix, using kernel version

10 years agoMerge git://
Linus Torvalds [Fri, 16 Jul 2010 15:23:10 +0000 (08:23 -0700)]
Merge git://git./linux/kernel/git/steve/gfs2-2.6-fixes

* git://
  GFS2: rename causes kernel Oops
  GFS2: BUG in gfs2_adjust_quota
  GFS2: Fix kernel NULL pointer dereference by dlm_astd
  GFS2: recovery stuck on transaction lock
  GFS2: O_TRUNC not working on stuffed files across cluster

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Fri, 16 Jul 2010 15:22:40 +0000 (08:22 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/dtor/input

* 'for-linus' of git://
  Input: w90p910_ts - fix call to setup_timer()
  Input: synaptics - fix wrong dimensions check
  Input: i8042 - mark stubs in i8042.h "static inline"

10 years agoInput: w90p910_ts - fix call to setup_timer()
Wan ZongShun [Fri, 16 Jul 2010 06:28:57 +0000 (23:28 -0700)]
Input: w90p910_ts - fix call to setup_timer()

No need to take address, w90p910_ts is already a pointer.

Signed-off-by: Wan ZongShun <>
Signed-off-by: Dmitry Torokhov <>
10 years agoMerge git://
Linus Torvalds [Fri, 16 Jul 2010 03:25:44 +0000 (20:25 -0700)]
Merge git://git./linux/kernel/git/herbert/crypto-2.6

* git://
  crypto: skcipher - avoid NULL dereference

10 years agojbd2/ocfs2: Fix block checksumming when a buffer is used in several transactions
Jan Kara [Wed, 14 Jul 2010 05:56:33 +0000 (07:56 +0200)]
jbd2/ocfs2: Fix block checksumming when a buffer is used in several transactions

OCFS2 uses t_commit trigger to compute and store checksum of the just
committed blocks. When a buffer has b_frozen_data, checksum is computed
for it instead of b_data but this can result in an old checksum being
written to the filesystem in the following scenario:

1) transaction1 is opened
2) handle1 is opened
3) journal_access(handle1, bh)
    - This sets jh->b_transaction to transaction1
4) modify(bh)
5) journal_dirty(handle1, bh)
6) handle1 is closed
7) start committing transaction1, opening transaction2
8) handle2 is opened
9) journal_access(handle2, bh)
    - This copies off b_frozen_data to make it safe for transaction1 to commit.
      jh->b_next_transaction is set to transaction2.
10) jbd2_journal_write_metadata() checksums b_frozen_data
11) the journal correctly writes b_frozen_data to the disk journal
12) handle2 is closed
    - There was no dirty call for the bh on handle2, so it is never queued for
      any more journal operation
13) Checkpointing finally happens, and it just spools the bh via normal buffer
writeback.  This will write b_data, which was never triggered on and thus
contains a wrong (old) checksum.

This patch fixes the problem by calling the trigger at the moment data is
frozen for journal commit - i.e., either when b_frozen_data is created by
do_get_write_access or just before we write a buffer to the log if
b_frozen_data does not exist. We also rename the trigger to t_frozen as
that better describes when it is called.

Signed-off-by: Jan Kara <>
Signed-off-by: Mark Fasheh <>
Signed-off-by: Joel Becker <>
10 years agoocfs2/dlm: Remove BUG_ON from migration in the rare case of a down node
Wengang Wang [Wed, 14 Jul 2010 14:38:21 +0000 (22:38 +0800)]
ocfs2/dlm: Remove BUG_ON from migration in the rare case of a down node

For migration, we are waiting for DLM_LOCK_RES_MIGRATING flag to be set
before sending DLM_MIG_LOCKRES_MSG message to the target. We are using
dlm_migration_can_proceed() for that purpose.  However, if the node is
down, dlm_migration_can_proceed() will also return "go ahead".  In this
rare case, the DLM_LOCK_RES_MIGRATING flag might not be set yet. Remove
the BUG_ON() that trips over this condition.

Signed-off-by: Wengang Wang <>
Signed-off-by: Joel Becker <>
10 years agoocfs2: Don't duplicate pages past i_size during CoW.
Tao Ma [Wed, 14 Jul 2010 03:19:32 +0000 (11:19 +0800)]
ocfs2: Don't duplicate pages past i_size during CoW.

During CoW, the pages after i_size don't contain valid data, so there's
no need to read and duplicate them.

Signed-off-by: Tao Ma <>
Signed-off-by: Joel Becker <>
10 years agox86: Force HPET readback_cmp for all ATI chipsets
Thomas Gleixner [Wed, 14 Jul 2010 19:36:27 +0000 (21:36 +0200)]
x86: Force HPET readback_cmp for all ATI chipsets

commit 30a564be (x86, hpet: Restrict read back to affected ATI
chipset) restricted the workaround for the HPET bug to SMX00
chipsets. This was reasonable as those were the only ones against
which we ever got a bug report.

Stephan Wolf reported now that this patch breaks his IXP400 based
machine. Though it's confirmed to work on other IXP400 based systems.

To error out on the safe side, we force the HPET readback workaround
for all ATI SMbus class chipsets.

Reported-by: Stephan Wolf <>
LKML-Reference: <alpine.LFD.2.00.1007142134140.3321@localhost.localdomain>
Signed-off-by: Thomas Gleixner <>
Tested-by: Stephan Wolf <>
Acked-by: Borislav Petkov <>
10 years agoGFS2: rename causes kernel Oops
Bob Peterson [Wed, 14 Jul 2010 22:12:26 +0000 (18:12 -0400)]
GFS2: rename causes kernel Oops

This patch fixes a kernel Oops in the GFS2 rename code.

The problem was in the way the gfs2 directory code was trying
to re-use sentinel directory entries.

In the failing case, gfs2's rename function was renaming a
file to another name that had the same non-trivial length.
The file being renamed happened to be the first directory
entry on the leaf block.

First, the rename code (gfs2_rename in ops_inode.c) found the
original directory entry and decided it could do its job by
simply replacing the directory entry with another.  Therefore
it determined correctly that no block allocations were needed.

Next, the rename code deleted the old directory entry prior to
replacing it with the new name.  Therefore, the soon-to-be
replaced directory entry was temporarily made into a directory
entry "sentinel" or a place holder at the start of a leaf block.

Lastly, it went to re-add the replacement directory entry in
that leaf block.  However, when gfs2_dirent_find_space was
looking for space in the leaf block, it used the wrong value
for the sentinel.  That threw off its calculations so later
it decides it can't really re-use the sentinel and therefore
must allocate a new leaf block.  But because it previously decided
to re-use the directory entry, it didn't waste the time to
grab a new block allocation for the inode.  Therefore, the
inode's i_alloc pointer was still NULL and it crashes trying to
reference it.

In the case of sentinel directory entries, the entire dirent is
reused, not just the "free space" portion of it, and therefore
the function gfs2_dirent_find_space should use the value 0
rather than GFS2_DIRENT_SIZE(0) for the actual dirent size.

Fixing this calculation enables the reproducer programs to work

Signed-off-by: Bob Peterson <>
Signed-off-by: Steven Whitehouse <>
10 years agoGFS2: BUG in gfs2_adjust_quota
Abhijith Das [Sun, 4 Jul 2010 05:33:24 +0000 (01:33 -0400)]
GFS2: BUG in gfs2_adjust_quota

HighMem pages on i686 do not get mapped to the buffer_heads and this was
causing a NULL pointer dereference when we were trying to memset page buffers
to zero.
We now use zero_user() that kmaps the page and directly manipulates page data.
This patch also fixes a boundary condition that was incorrect.

Signed-off-by: Abhi Das <>
Signed-off-by: Steven Whitehouse <>
10 years agoGFS2: Fix kernel NULL pointer dereference by dlm_astd
Bob Peterson [Thu, 17 Jun 2010 20:45:37 +0000 (16:45 -0400)]
GFS2: Fix kernel NULL pointer dereference by dlm_astd

This patch fixes a problem in an error path when looking
up dinodes.  There are two sister-functions, gfs2_inode_lookup
and gfs2_process_unlinked_inode.  Both functions acquire and
hold the i_iopen glock for the dinode being looked up. The last
thing they try to do is hold the i_gl glock for the dinode.
If that glock fails for some reason, the error path was
incorrectly calling gfs2_glock_put for the i_iopen glock twice.
This resulted in the glock being prematurely freed.  The
"minimum hold time" usually kept the glock in memory, but the
lock interface to dlm (aka lock_dlm) freed its memory for the
glock.  In some circumstances, it would cause dlm's dlm_astd daemon
to try to call the bast function for the freed lock_dlm memory,
which resulted in a NULL pointer dereference.

Signed-off-by: Bob Peterson <>
Signed-off-by: Steven Whitehouse <>
10 years agoGFS2: recovery stuck on transaction lock
Bob Peterson [Wed, 23 Jun 2010 15:44:47 +0000 (11:44 -0400)]
GFS2: recovery stuck on transaction lock

This patch fixes bugzilla bug #590878: GFS2: recovery stuck on
transaction lock.  We set the frozen flag on the glock when we receive
a completion that cannot be delivered due to blocked locks. At that
point we check to see whether the first waiting holder has the noexp
flag set. If the noexp lock is queued later, then we need to unfreeze
the glock at that point in time, namely, in the glock work function.

This patch was originally written by Steve Whitehouse, but since
he's on holiday, I'm submitting it.  It's been well tested with a
complex recovery test called revolver.

Signed-off-by: Steve Whitehouse <>
Signed-off-by: Bob Peterson <>
10 years agoGFS2: O_TRUNC not working on stuffed files across cluster
Bob Peterson [Thu, 24 Jun 2010 23:15:09 +0000 (19:15 -0400)]
GFS2: O_TRUNC not working on stuffed files across cluster

This patch replaces a statement that got dropped out by accident.
Without the patch, truncates on stuffed (very small) files cause
those files to have an unpredictable size.

Signed-off-by: Bob Peterson <>
Signed-off-by: Steven Whitehouse <>
10 years agoMerge
Linus Torvalds [Thu, 15 Jul 2010 00:28:13 +0000 (17:28 -0700)]

  ARM: 6226/1: fix kprobe bug in ldr instruction emulation
  ARM: Update mach-types
  ARM: lockdep: fix unannotated irqs-on
  ARM: 6184/2: ux500: use neutral PRCMU base
  ARM: 6212/1: atomic ops: add memory constraints to inline asm
  ARM: 6211/1: atomic ops: fix register constraints for atomic64_add_unless
  ARM: 6210/1: Do not rely on reset defaults of L2X0_AUX_CTRL

10 years agoMerge branch 'lmb-to-memblock' of git://
Linus Torvalds [Thu, 15 Jul 2010 00:27:44 +0000 (17:27 -0700)]
Merge branch 'lmb-to-memblock' of git://git./linux/kernel/git/benh/powerpc

* 'lmb-to-memblock' of git://
  lmb: rename to memblock

10 years agoMerge branch 'merge' of git://
Linus Torvalds [Thu, 15 Jul 2010 00:27:29 +0000 (17:27 -0700)]
Merge branch 'merge' of git://git./linux/kernel/git/benh/powerpc

* 'merge' of git://
  powerpc/fsl-booke: Fix address issue when using relocatable kernels
  powerpc/cpm1: Mark micropatch code/data static and __init
  powerpc/cpm1: Fix build with various CONFIG_*_UCODE_PATCH combinations
  powerpc/cpm: Reintroduce global spi_pram struct (fixes build issue)

10 years agoARM: 6226/1: fix kprobe bug in ldr instruction emulation
Nicolas Pitre [Wed, 14 Jul 2010 04:21:22 +0000 (05:21 +0100)]
ARM: 6226/1: fix kprobe bug in ldr instruction emulation

From: Bin Yang <>

Signed-off-by: Bin Yang <>
Signed-off-by: Nicolas Pitre <>
Signed-off-by: Russell King <>
10 years agoInput: synaptics - fix wrong dimensions check
Takashi Iwai [Wed, 14 Jul 2010 16:32:46 +0000 (09:32 -0700)]
Input: synaptics - fix wrong dimensions check

The commit 83ba9ea8a04b72dfee2515428c15e7414ba4fc61 ommitted the return
line for the old synaptics model accidentally.  This resulted in a wrong
check, namely, the dimensions are checked for the old devices that don't
support the query properly.

This patch adds the return line back.

Signed-off-by: Takashi Iwai <>
Signed-off-by: Dmitry Torokhov <>
10 years agolmb: rename to memblock
Yinghai Lu [Mon, 12 Jul 2010 04:36:09 +0000 (14:36 +1000)]
lmb: rename to memblock

via following scripts

      FILES=$(find * -type f | grep -vE 'oprofile|[^K]config')

      sed -i \
        -e 's/lmb/memblock/g' \
        -e 's/LMB/MEMBLOCK/g' \

      for N in $(find . -name lmb.[ch]); do
        M=$(echo $N | sed 's/lmb/memblock/g')
        mv $N $M

and remove some wrong change like lmbench and dlmb etc.

also move memblock.c from lib/ to mm/

Suggested-by: Ingo Molnar <>
Acked-by: "H. Peter Anvin" <>
Acked-by: Benjamin Herrenschmidt <>
Acked-by: Linus Torvalds <>
Signed-off-by: Yinghai Lu <>
Signed-off-by: Benjamin Herrenschmidt <>
10 years agoMerge branch 'x86-fixes-for-linus' of git://
Linus Torvalds [Wed, 14 Jul 2010 00:31:11 +0000 (17:31 -0700)]
Merge branch 'x86-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://
  input: i8042 - add runtime check in x86's i8042_platform_init
  Revert "Input: fixup X86_MRST selects"
  Revert "Input: do not force selecting i8042 on Moorestown"
  x86, mrst: Add i8042_detect API for Moorestwon platform
  x86: Add i8042 pre-detection hook to x86_platform_ops
  x86, platform: Export x86_platform to modules

10 years agoMerge branch 'kvm-updates/2.6.35' of git://
Linus Torvalds [Wed, 14 Jul 2010 00:30:49 +0000 (17:30 -0700)]
Merge branch 'kvm-updates/2.6.35' of git://git./virt/kvm/kvm

* 'kvm-updates/2.6.35' of git://
  KVM: MMU: flush remote tlbs when overwriting spte with different pfn
  KVM: VMX: Fix host MSR_KERNEL_GS_BASE corruption

10 years agoLinux 2.6.35-rc5 v2.6.35-rc5
Linus Torvalds [Mon, 12 Jul 2010 21:55:33 +0000 (14:55 -0700)]
Linux 2.6.35-rc5

10 years agoMerge branch 'arm/defconfig/reduced-v2.6.35-rc1' of git://
Linus Torvalds [Mon, 12 Jul 2010 21:47:01 +0000 (14:47 -0700)]
Merge branch 'arm/defconfig/reduced-v2.6.35-rc1' of git://

* 'arm/defconfig/reduced-v2.6.35-rc1' of git://
  ARM: reduce defconfigs

This is a big change, but results in no loss of information, despite us
losing almost 200k lines:

 177 files changed, 652 insertions(+), 194157 deletions(-)

and Grant Likely thinks powerpc can also use the same reduction

The python script that did the reduction looks like this:

    #! /usr/bin/env python
    # vim: set fileencoding=utf-8 :
    # Copyright (C) 2010 by Uwe Kleine-König <>

    import re
    import subprocess
    import os
    import sys

    # This prevents including a timestamp in the .config which makes comparing a
    # bit easier.
    os.environ['KCONFIG_NOTIMESTAMP'] = 'Yes, please'

    # XXX: get these using getopt
    kernel_tree = '' # os.path.join(os.environ['HOME'], 'gsrc', 'linux-2.6')
    arch = 'arm'
    target = sys.argv[1]
    defconfig_src = os.path.join(kernel_tree, 'arch/%s/configs/%s' % (arch, target))

    subprocess.check_call(['make', '-s', 'ARCH=%s' % arch, target])
    origconfig = list(open('.config'))
    config = list(origconfig)
    config_size = os.stat('.config').st_size

    i = 0

    while i < len(config):
        print 'test for %r' % config[i]
        defconfig = open(defconfig_src, 'w')
        defconfig.writelines(config[i + 1:])
        subprocess.check_call(['make', '-s', 'ARCH=%s' % arch, target])
        if os.stat('.config').st_size == config_size and list(open('.config')) == origconfig:
            del config[i]
            i += 1

    defconfig = open(defconfig_src, 'w')

which is pretty self-explanatory.

Acked-by: Nicolas Pitre <>
Acked-by: Russell King <>
Acked-by: Grant Likely <>
Signed-off-by: Linus Torvalds <>
10 years agoMerge branch 'fix/hda' of git://
Linus Torvalds [Mon, 12 Jul 2010 21:44:43 +0000 (14:44 -0700)]
Merge branch 'fix/hda' of git://git./linux/kernel/git/tiwai/sound-2.6

* 'fix/hda' of git://
  ALSA: hda - Restore cleared pin controls on resume

10 years agoMerge branch 'v4l_for_2.6.35' of git://
Linus Torvalds [Mon, 12 Jul 2010 21:44:19 +0000 (14:44 -0700)]
Merge branch 'v4l_for_2.6.35' of git://git./linux/kernel/git/mchehab/linux-2.6

* 'v4l_for_2.6.35' of git://
  V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers
  V4L/DVB: v4l: mem2mem_testdev: fix g_fmt NULL pointer dereference
  V4L/DVB: uvcvideo: Power line frequency control doesn't support GET_MIN/MAX/RES
  V4L/DVB: ivtv: Add delay to ensure the decoder always restarts with a blank screen
  V4L/DVB: Documentation: Add the Philips FQ1236 MK5 to video4linux/CARDLIST.tuner
  V4L/DVB: tveeprom: Add an entry for tuner code 168: a TCL M30WTP-4N-E tuner
  V4L/DVB: tuner: Add a definition for the Philips FQ1236 MK5 NTSC tuner
  V4L/DVB: OMAP_VOUT: fix: Module params were not working through bootargs
  V4L/DVB: OMAP_VOUT: fix: Replaced dma-sg with dma-contig
  V4L/DVB: OMAP_VOUT:Build FIX: Rebased against latest DSS2 changes

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Mon, 12 Jul 2010 21:42:21 +0000 (14:42 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/jikos/hid

* 'for-linus' of git://
  HID: Send Report ID when numbered reports are sent over the control endpoint.
  HID: Enable HID_QUIRK_MULTI_INPUT for Retro Adaptor
  HID: add support for CH Eclipse yoke
  HID: eliminate a double lock in debug code
  HID: ntrig: add support for new firwmare versions
  HID: check for HID_QUIRK_IGNORE during probing
  HID: roccat: fix modules interdependencies

10 years agoMAINTAINERS: fix EDAC-I7CORE file patterns
Joe Perches [Mon, 12 Jul 2010 20:45:49 +0000 (17:45 -0300)]
MAINTAINERS: fix EDAC-I7CORE file patterns

File patterns are one per line.
Fixed include file location.

Signed-off-by: Joe Perches <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Mauro Carvalho Chehab <>
Signed-off-by: Linus Torvalds <>
10 years agoocfs2: tighten up strlen() checking
Dan Carpenter [Sat, 10 Jul 2010 14:33:36 +0000 (16:33 +0200)]
ocfs2: tighten up strlen() checking

This function is only called from one place and it's like this:
dlm_register_domain(conn->cc_name, dlm_key, &fs_version);

The "conn->cc_name" is 64 characters long.  If strlen(conn->cc_name)
were equal to O2NM_MAX_NAME_LEN (64) that would be a bug because
strlen() doesn't count the NULL character.

In fact, if you look how O2NM_MAX_NAME_LEN is used, it mostly describes
64 character buffers.  The only exception is nd_name from struct

Anyway I looked into it and in this case the domain string comes from
osb->uuid_str in ocfs2_setup_osb_uuid().  That's 32 characters and NULL
which easily fits into O2NM_MAX_NAME_LEN.  This patch doesn't change how
the code works, but I think it makes the code a little cleaner.

Signed-off-by: Dan Carpenter <>
Signed-off-by: Joel Becker <>
10 years agoocfs2: Make xattr reflink work with new local alloc reservation.
Tao Ma [Fri, 9 Jul 2010 06:53:12 +0000 (14:53 +0800)]
ocfs2: Make xattr reflink work with new local alloc reservation.

The new reservation code in local alloc has add the limitation
that the caller should handle the case that the local alloc
doesn't give use enough contiguous clusters. It make the old
xattr reflink code broken.

So this patch udpate the xattr reflink code so that it can
handle the case that local alloc give us one cluster at a time.

Signed-off-by: Tao Ma <>
Signed-off-by: Joel Becker <>
10 years agoocfs2: make xattr extension work with new local alloc reservation.
Tao Ma [Fri, 9 Jul 2010 06:53:11 +0000 (14:53 +0800)]
ocfs2: make xattr extension work with new local alloc reservation.

The old ocfs2_xattr_extent_allocation is too optimistic about
the clusters we can get. So actually if the file system is
too fragmented, ocfs2_add_clusters_in_btree will return us
with EGAIN and we need to allocate clusters once again.

So this patch change it to a while loop so that we can allocate
clusters until we reach clusters_to_add.

Signed-off-by: Tao Ma <>
Signed-off-by: Joel Becker <>
10 years agoocfs2: Remove the redundant cpu_to_le64.
Tao Ma [Thu, 8 Jul 2010 03:11:11 +0000 (11:11 +0800)]
ocfs2: Remove the redundant cpu_to_le64.

In ocfs2_block_group_alloc, we set c_blkno by bg->bg_blkno.
But actually bg->bg_blkno is already changed to little endian
in ocfs2_block_group_fill. So remove the extra cpu_to_le64.

Reported-by: Marcos Matsunaga <>
Signed-off-by: Tao Ma <>
Signed-off-by: Joel Becker <>
10 years agoocfs2/dlm: don't access beyond bitmap size
Wengang Wang [Wed, 30 Jun 2010 12:23:30 +0000 (20:23 +0800)]
ocfs2/dlm: don't access beyond bitmap size

dlm->recovery_map is defined as
unsigned long recovery_map[BITS_TO_LONGS(O2NM_MAX_NODES)];

We should treat O2NM_MAX_NODES as the bit map size in bits.
This patches fixes a bit operation that takes O2NM_MAX_NODES + 1 as bitmap size.

Signed-off-by: Wengang Wang <>
Signed-off-by: Joel Becker <>
10 years agoocfs2: No need to zero pages past i_size.
Joel Becker [Sat, 3 Jul 2010 00:20:27 +0000 (17:20 -0700)]
ocfs2: No need to zero pages past i_size.

When ocfs2 fills a hole, it does so by allocating clusters.  When a
cluster is larger than the write, ocfs2 must zero the portions of the
cluster outside of the write.  If the clustersize is smaller than a
pagecache page, this is handled by the normal pagecache mechanisms, but
when the clustersize is larger than a page, ocfs2's write code will zero
the pages adjacent to the write.  This makes sure the entire cluster is
zeroed correctly.

Currently ocfs2 behaves exactly the same when writing past i_size.
However, this means ocfs2 is writing zeroed pages for portions of a new
cluster that are beyond i_size.  The page writeback code isn't expecting
this.  It treats all pages past the one containing i_size as left behind
due to a previous truncate operation.

Thankfully, ocfs2 calculates the number of pages it will be working on
up front.  The rest of the write code merely honors the original
calculation.  We can simply trim the number of pages to only cover the
actual file data.

Signed-off-by: Joel Becker <>
10 years agoARM: Update mach-types
Russell King [Mon, 12 Jul 2010 20:10:16 +0000 (21:10 +0100)]
ARM: Update mach-types

Signed-off-by: Russell King <>
10 years agoKVM: MMU: flush remote tlbs when overwriting spte with different pfn
Xiao Guangrong [Wed, 30 Jun 2010 08:04:06 +0000 (16:04 +0800)]
KVM: MMU: flush remote tlbs when overwriting spte with different pfn

After remove a rmap, we should flush all vcpu's tlb

Signed-off-by: Xiao Guangrong <>
Signed-off-by: Marcelo Tosatti <>
10 years agoHID: Send Report ID when numbered reports are sent over the control endpoint.
Alan Ott [Wed, 30 Jun 2010 13:50:36 +0000 (09:50 -0400)]
HID: Send Report ID when numbered reports are sent over the control endpoint.

The Report ID wasn't sent as part of the payload for reports which were sent
over the control endpoint. This is required by section 8.1 of the HID spec.

Signed-off-by: Alan Ott <>
Signed-off-by: Jiri Kosina <>
10 years agoV4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers
Laurent Pinchart [Sat, 10 Jul 2010 19:13:05 +0000 (16:13 -0300)]
V4L/DVB: uvc: Fix multiple symbols definitions with UVC gadget and host drivers

The UVC gadget driver borrowed code from the UVC host driver without
changing the symbol names. This results in a namespace clash with
multiple definitions of several symbols when compiling both drivers in
the kernel.

Make all generic UVC functions and variables static in the UVC gadget
driver, as the symbols are not referenced outside of the gadget driver.
Rename the uvc_trace_param global variable to uvc_gadget_trace_param.

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Mauro Carvalho Chehab <>
10 years agoMerge branch 'hwmon-for-linus' of git://
Linus Torvalds [Sun, 11 Jul 2010 20:35:34 +0000 (13:35 -0700)]
Merge branch 'hwmon-for-linus' of git://git./linux/kernel/git/jdelvare/staging

* 'hwmon-for-linus' of git://
  hwmon: Fix autoloading of fschmd on recent Fujitsu machines
  hwmon: (coretemp) Properly label the sensors
  hwmon: (coretemp) Skip duplicate CPU entries
  hwmon: (it87) Fix in7 on IT8720F
  hwmon: (k8temp) Fix temperature reporting for ASB1 processor revisions

10 years agoMerge branch 'i2c-for-linus' of git://
Linus Torvalds [Sun, 11 Jul 2010 20:32:55 +0000 (13:32 -0700)]
Merge branch 'i2c-for-linus' of git://git./linux/kernel/git/jdelvare/staging

* 'i2c-for-linus' of git://
  i2c/mips: Fix error return codes from Sibyte i2c bus driver
  i2c: Fix probability check

10 years agoHID: Enable HID_QUIRK_MULTI_INPUT for Retro Adaptor
Peter Edwards [Sun, 11 Jul 2010 16:45:50 +0000 (17:45 +0100)]
HID: Enable HID_QUIRK_MULTI_INPUT for Retro Adaptor

Patch for linux-2.6.35-rc4 mainline kernel to enable Paul Qureshi's
Retro Adapter [], an open source USB
device which allows controllers and joysticks from classic computers
and consoles to work on modern PCs, to appear as two separate devices
under Linux.
Signed-off-by: Peter Edwards <>
Acked-by: Paul Qureshi <>
Signed-off-by: Jiri Kosina <>
10 years agoHID: add support for CH Eclipse yoke
Jonathan Rockway [Sat, 3 Jul 2010 07:59:01 +0000 (02:59 -0500)]
HID: add support for CH Eclipse yoke

This USB flight yoke needs the NOGET quirk, like most of CH's other
products. This patch adds that.

Signed-off-by: Jonathan Rockway <>
Signed-off-by: Jiri Kosina <>
10 years agopowerpc/fsl-booke: Fix address issue when using relocatable kernels
Matthew McClintock [Tue, 29 Jun 2010 19:42:07 +0000 (14:42 -0500)]
powerpc/fsl-booke: Fix address issue when using relocatable kernels

When booting a relocatable kernel it needs to jump to the correct
start address, which for BookE parts is usually unchanged
regardless of the physical memory offset.

Recent changes cause problems with how we calculate the start
address, it was always adding the RMO into the start address
which is incorrect. This patch only adds in the RMO offset
if we are in the kexec code path, as it needs the RMO to work

Instead of adding the RMO offset in in the common code path, we
can just set r6 to the RMO offset in the kexec code path instead
of to zero, and finally perform the masking in the common code

Signed-off-by: Matthew McClintock <>
Signed-off-by: Kumar Gala <>
10 years agopowerpc/cpm1: Mark micropatch code/data static and __init
Anton Vorontsov [Thu, 8 Jul 2010 17:16:16 +0000 (21:16 +0400)]
powerpc/cpm1: Mark micropatch code/data static and __init

This saves runtime memory and fixes lots of sparse warnings like this:

    CHECK   arch/powerpc/sysdev/micropatch.c
  arch/powerpc/sysdev/micropatch.c:27:6: warning: symbol 'patch_2000'
  was not declared. Should it be static?
  arch/powerpc/sysdev/micropatch.c:146:6: warning: symbol 'patch_2f00'
  was not declared. Should it be static?

Signed-off-by: Anton Vorontsov <>
Signed-off-by: Kumar Gala <>
10 years agopowerpc/cpm1: Fix build with various CONFIG_*_UCODE_PATCH combinations
Anton Vorontsov [Thu, 8 Jul 2010 17:16:14 +0000 (21:16 +0400)]
powerpc/cpm1: Fix build with various CONFIG_*_UCODE_PATCH combinations

Warnings are treated as errors for arch/powerpc code, so build fails

    CC      arch/powerpc/sysdev/micropatch.o
  cc1: warnings being treated as errors
  arch/powerpc/sysdev/micropatch.c: In function 'cpm_load_patch':
  arch/powerpc/sysdev/micropatch.c:630: warning: unused variable 'smp'
  make[1]: *** [arch/powerpc/sysdev/micropatch.o] Error 1


  CC      arch/powerpc/sysdev/micropatch.o
  cc1: warnings being treated as errors
  arch/powerpc/sysdev/micropatch.c: In function 'cpm_load_patch':
  arch/powerpc/sysdev/micropatch.c:629: warning: unused variable 'spp'
  arch/powerpc/sysdev/micropatch.c:628: warning: unused variable 'iip'
  make[1]: *** [arch/powerpc/sysdev/micropatch.o] Error 1

This patch fixes these issues by introducing proper #ifdefs.

Cc: <> [ .33, .34 ]
Signed-off-by: Anton Vorontsov <>
Signed-off-by: Kumar Gala <>
10 years agopowerpc/cpm: Reintroduce global spi_pram struct (fixes build issue)
Anton Vorontsov [Thu, 8 Jul 2010 17:16:10 +0000 (21:16 +0400)]
powerpc/cpm: Reintroduce global spi_pram struct (fixes build issue)

spi_t was removed in commit 644b2a680ccc51a9ec4d6beb12e9d47d2dee98e2
("powerpc/cpm: Remove SPI defines and spi structs"), the commit assumed
that spi_t isn't used anywhere outside of the spi_mpc8xxx driver. But
it appears that the struct is needed for micropatch code. So, let's
reintroduce the struct.

Fixes the following build issue:

    CC      arch/powerpc/sysdev/micropatch.o
  micropatch.c: In function 'cpm_load_patch':
  micropatch.c:629: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
  micropatch.c:629: error: 'spp' undeclared (first use in this function)
  micropatch.c:629: error: (Each undeclared identifier is reported only once
  micropatch.c:629: error: for each function it appears in.)

Reported-by: LEROY Christophe <>
Reported-by: Tony Breeds <>
Cc: <> [ .33, .34 ]
Signed-off-by: Anton Vorontsov <>
Signed-off-by: Kumar Gala <>
10 years agoARM: lockdep: fix unannotated irqs-on
Russell King [Sat, 10 Jul 2010 09:10:18 +0000 (10:10 +0100)]
ARM: lockdep: fix unannotated irqs-on

CPU: Testing write buffer coherency: ok
------------[ cut here ]------------
WARNING: at kernel/lockdep.c:3145 check_flags+0xcc/0x1dc()
Modules linked in:
[<c0035120>] (unwind_backtrace+0x0/0xf8) from [<c0355374>] (dump_stack+0x20/0x24)
[<c0355374>] (dump_stack+0x20/0x24) from [<c0060c04>] (warn_slowpath_common+0x58/0x70)
[<c0060c04>] (warn_slowpath_common+0x58/0x70) from [<c0060c3c>] (warn_slowpath_null+0x20/0x24)
[<c0060c3c>] (warn_slowpath_null+0x20/0x24) from [<c008f224>] (check_flags+0xcc/0x1dc)
[<c008f224>] (check_flags+0xcc/0x1dc) from [<c00945dc>] (lock_acquire+0x50/0x140)
[<c00945dc>] (lock_acquire+0x50/0x140) from [<c0358434>] (_raw_spin_lock+0x50/0x88)
[<c0358434>] (_raw_spin_lock+0x50/0x88) from [<c00fd114>] (set_task_comm+0x2c/0x60)
[<c00fd114>] (set_task_comm+0x2c/0x60) from [<c007e184>] (kthreadd+0x30/0x108)
[<c007e184>] (kthreadd+0x30/0x108) from [<c0030104>] (kernel_thread_exit+0x0/0x8)
---[ end trace 1b75b31a2719ed1c ]---
possible reason: unannotated irqs-on.
irq event stamp: 3
hardirqs last  enabled at (2): [<c0059bb0>] finish_task_switch+0x48/0xb0
hardirqs last disabled at (3): [<c002f0b0>] ret_slow_syscall+0xc/0x1c
softirqs last  enabled at (0): [<c005f3e0>] copy_process+0x394/0xe5c
softirqs last disabled at (0): [<(null)>] (null)

Fix this by ensuring that the lockdep interrupt state is manipulated in
the appropriate places.  We essentially treat userspace as an entirely
separate environment which isn't relevant to lockdep (lockdep doesn't
monitor userspace.)  We don't tell lockdep that IRQs will be enabled
in that environment.

Instead, when creating kernel threads (which is a rare event compared
to entering/leaving userspace) we have to update the lockdep state.  Do
this by starting threads with IRQs disabled, and in the kthread helper,
tell lockdep that IRQs are enabled, and enable them.

This provides lockdep with a consistent view of the current IRQ state
in kernel space.

This also revert portions of 0d928b0b616d1c5c5fe76019a87cba171ca91633
which didn't fix the problem.

Tested-by: Ming Lei <>
Signed-off-by: Russell King <>
10 years agoi2c/mips: Fix error return codes from Sibyte i2c bus driver
Guenter Roeck [Sat, 10 Jul 2010 07:42:47 +0000 (09:42 +0200)]
i2c/mips: Fix error return codes from Sibyte i2c bus driver

Sibyte i2c bus driver returns non-descriptive error values.
Update to return error values as defined in Documentation/i2c/fault-codes.

Signed-off-by: Guenter Roeck <>
Signed-off-by: Jean Delvare <>
10 years agoi2c: Fix probability check
Jean Delvare [Sat, 10 Jul 2010 07:42:46 +0000 (09:42 +0200)]
i2c: Fix probability check

The new unified probing function differs from the original code, and
the preliminary test whether probing is possible must be updated

Signed-off-by: Jean Delvare <>
10 years agotracing: Add alignment to syscall metadata declarations
Steven Rostedt [Fri, 9 Jul 2010 19:41:44 +0000 (15:41 -0400)]
tracing: Add alignment to syscall metadata declarations

For some reason if we declare a static variable and then assign it
later, and the assignment contains a __attribute__((__aligned__(#))),
some versions of gcc will ignore it.

This caused the syscall meta data to not be compact in its section
and caused a kernel oops when the section was being read.

The fix for these versions of gcc seems to be to add the aligned
attribute to the declaration as well.

This fixes the BZ regression:

Reported-by: Zeev Tarantov <>
Tested-by: Zeev Tarantov <>
Acked-by: Frederic Weisbecker <>
LKML-Reference: <>
Signed-off-by: Steven Rostedt <>
10 years agohwmon: Fix autoloading of fschmd on recent Fujitsu machines
Jean Delvare [Fri, 9 Jul 2010 14:22:51 +0000 (16:22 +0200)]
hwmon: Fix autoloading of fschmd on recent Fujitsu machines

Fujitsu slightly changed the DMI strings in their recent machines,
(for example the D2778) and this breaks the automatic loading of the
needed fschmd driver. Being more tolerant on string comparison fixes
the issue.

This closes bug #15634:

Signed-off-by: Jean Delvare <>
Tested-by: Sergey Spiridonov <>
Cc: Hans de Goede <>
10 years agohwmon: (coretemp) Properly label the sensors
Jean Delvare [Fri, 9 Jul 2010 14:22:51 +0000 (16:22 +0200)]
hwmon: (coretemp) Properly label the sensors

Don't assume that CPU entry number and core ID always match. It
worked in the simple cases (single CPU, no HT) but fails on
multi-CPU systems.

Signed-off-by: Jean Delvare <>
Acked-by: Huaxu Wan <>
10 years agohwmon: (coretemp) Skip duplicate CPU entries
Jean Delvare [Fri, 9 Jul 2010 14:22:49 +0000 (16:22 +0200)]
hwmon: (coretemp) Skip duplicate CPU entries

On hyper-threaded CPUs, each core appears twice in the CPU list. Skip
the second entry to avoid duplicate sensors.

Signed-off-by: Jean Delvare <>
Acked-by: Huaxu Wan <>
10 years agohwmon: (it87) Fix in7 on IT8720F
Jean Delvare [Fri, 9 Jul 2010 14:22:48 +0000 (16:22 +0200)]
hwmon: (it87) Fix in7 on IT8720F

The IT8720F has no VIN7 pin, so VCCH should always be routed
internally to VIN7 with an internal divider. Curiously, there still
is a configuration bit to control this, which means it can be set
incorrectly. And even more curiously, many boards out there are
improperly configured, even though the IT8720F datasheet claims that
the internal routing of VCCH to VIN7 is the default setting. So we
force the internal routing in this case.

It turns out that all boards with the wrong setting are from Gigabyte,
so I suspect a BIOS bug. But it's easy enough to workaround in the
driver, so let's do it.

Signed-off-by: Jean Delvare <>
Cc: Jean-Marc Spaggiari <>
10 years agohwmon: (k8temp) Fix temperature reporting for ASB1 processor revisions
Andreas Herrmann [Fri, 9 Jul 2010 14:22:47 +0000 (16:22 +0200)]
hwmon: (k8temp) Fix temperature reporting for ASB1 processor revisions

Reported temperature for ASB1 CPUs is too high.
Add ASB1 CPU revisions (these are also non-desktop variants) to the
list of CPUs for which the temperature fixup is not required.

Example: (from LENOVO ThinkPad Edge 13, 01972NG, system was idle)

  Current kernel reports

  $ sensors
  Adapter: PCI adapter
  Core0 Temp:  +74.0 C
  Core0 Temp:  +70.0 C
  Core1 Temp:  +69.0 C
  Core1 Temp:  +70.0 C

  With this patch I have

  $ sensors
  Adapter: PCI adapter
  Core0 Temp:  +54.0 C
  Core0 Temp:  +51.0 C
  Core1 Temp:  +48.0 C
  Core1 Temp:  +49.0 C

Cc: [.32.x .33.x, .34.x]
Cc: Rudolf Marek <>
Signed-off-by: Andreas Herrmann <>
Signed-off-by: Jean Delvare <>
10 years agoARM: 6184/2: ux500: use neutral PRCMU base
Linus Walleij [Wed, 23 Jun 2010 06:59:48 +0000 (07:59 +0100)]
ARM: 6184/2: ux500: use neutral PRCMU base

The MTU wallclock timing fix-up patch was hardwired to the DB8500
causing a regression. This makes it work on the DB5500 as well.

Signed-off-by: Linus Walleij <>
Signed-off-by: Russell King <>
10 years agoARM: 6212/1: atomic ops: add memory constraints to inline asm
Will Deacon [Thu, 8 Jul 2010 09:59:16 +0000 (10:59 +0100)]
ARM: 6212/1: atomic ops: add memory constraints to inline asm

Currently, the 32-bit and 64-bit atomic operations on ARM do not
include memory constraints in the inline assembly blocks. In the
case of barrier-less operations [for example, atomic_add], this
means that the compiler may constant fold values which have actually
been modified by a call to an atomic operation.

This issue can be observed in the atomic64_test routine in
<kernel root>/lib/atomic64_test.c:

00000000 <test_atomic64>:
   0: e1a0c00d  mov ip, sp
   4: e92dd830  push {r4, r5, fp, ip, lr, pc}
   8: e24cb004  sub fp, ip, #4
   c: e24dd008  sub sp, sp, #8
  10: e24b3014  sub r3, fp, #20
  14: e30d000d  movw r0, #53261 ; 0xd00d
  18: e3011337  movw r1, #4919 ; 0x1337
  1c: e34c0001  movt r0, #49153 ; 0xc001
  20: e34a1aa3  movt r1, #43683 ; 0xaaa3
  24: e16300f8  strd r0, [r3, #-8]!
  28: e30c0afe  movw r0, #51966 ; 0xcafe
  2c: e30b1eef  movw r1, #48879 ; 0xbeef
  30: e34d0eaf  movt r0, #57007 ; 0xdeaf
  34: e34d1ead  movt r1, #57005 ; 0xdead
  38: e1b34f9f  ldrexd r4, [r3]
  3c: e1a34f90  strexd r4, r0, [r3]
  40: e3340000  teq r4, #0
  44: 1afffffb  bne 38 <test_atomic64+0x38>
  48: e59f0004  ldr r0, [pc, #4] ; 54 <test_atomic64+0x54>
  4c: e3a0101e  mov r1, #30
  50: ebfffffe  bl 0 <__bug>
  54: 00000000  .word 0x00000000

The atomic64_set (0x38-0x44) writes to the atomic64_t, but the
compiler doesn't see this, assumes the test condition is always
false and generates an unconditional branch to __bug. The rest of the
test is optimised away.

This patch adds suitable memory constraints to the atomic operations on ARM
to ensure that the compiler is informed of the correct data hazards. We have
to use the "Qo" constraints to avoid hitting the GCC anomaly described at , where the compiler
makes assumptions about the writeback in the addressing mode used by the
inline assembly. These constraints forbid the use of auto{inc,dec} addressing
modes, so it doesn't matter if we don't use the operand exactly once.

Reviewed-by: Nicolas Pitre <>
Signed-off-by: Will Deacon <>
Signed-off-by: Russell King <>
10 years agoARM: 6211/1: atomic ops: fix register constraints for atomic64_add_unless
Will Deacon [Thu, 8 Jul 2010 09:58:06 +0000 (10:58 +0100)]
ARM: 6211/1: atomic ops: fix register constraints for atomic64_add_unless

The atomic64_add_unless function compares an atomic variable with
a given value and, if they are not equal, adds another given value
to the atomic variable. The function returns zero if the addition
did not occur and non-zero otherwise.

On ARM, the return value is initialised to 1 in C code. Inline assembly
code then performs the atomic64_add_unless operation, setting the
return value to 0 iff the addition does not occur. This means that
when the addition *does* occur, the value of ret must be preserved
across the inline assembly and therefore requires a "+r" constraint
rather than the current one of "=&r".

Thanks to Nicolas Pitre for helping to spot this.

Reviewed-by: Nicolas Pitre <>
Signed-off-by: Will Deacon <>
Signed-off-by: Russell King <>
10 years agoARM: 6210/1: Do not rely on reset defaults of L2X0_AUX_CTRL
Sascha Hauer [Thu, 8 Jul 2010 07:36:21 +0000 (08:36 +0100)]
ARM: 6210/1: Do not rely on reset defaults of L2X0_AUX_CTRL

On i.MX35 the L2X0_AUX_CTRL register does not have sensible reset
default values. Allow them to be overwritten with the aux_val/aux_mask
arguments passed to l2x0_init().

Signed-off-by: Sascha Hauer <>
Acked-by: Catalin Marinas <>
Signed-off-by: Russell King <>
10 years agoALSA: hda - Restore cleared pin controls on resume
Takashi Iwai [Mon, 5 Jul 2010 14:50:13 +0000 (16:50 +0200)]
ALSA: hda - Restore cleared pin controls on resume

Many codecs now clear the pin controls at suspend via snd_hda_shutup_pins()
for reducing the click noise at power-off.  But this leaves some pins
uninitialized, and they'll be never recovered after resume.

This patch adds the proper recovery of cleared pin controls on resume.
Also it adds a check of bus->shutdown so that pins won't be cleared at
module unloading.

Reference: Kernel bug 16339

Cc: <>
Signed-off-by: Takashi Iwai <>
10 years agoIB/qib: Use request_firmware() to load SD7220 firmware
Ben Hutchings [Thu, 1 Jul 2010 20:37:20 +0000 (20:37 +0000)]
IB/qib: Use request_firmware() to load SD7220 firmware

Extract the microcode for the QLogic QLE7220 series IB HCA and use the
kernel microcode request facility to load the microcode.  This
supports Debian Linux's requirements to separate microcode which
doesn't have open source code available from the device driver.

Signed-off-by: Ben Hutchings <>
Signed-off-by: Roland Dreier <>
10 years agoocfs2: Zero the tail cluster when extending past i_size.
Joel Becker [Thu, 1 Jul 2010 22:13:31 +0000 (15:13 -0700)]
ocfs2: Zero the tail cluster when extending past i_size.

ocfs2's allocation unit is the cluster.  This can be larger than a block
or even a memory page.  This means that a file may have many blocks in
its last extent that are beyond the block containing i_size.  There also
may be more unwritten extents after that.

When ocfs2 grows a file, it zeros the entire cluster in order to ensure
future i_size growth will see cleared blocks.  Unfortunately,
block_write_full_page() drops the pages past i_size.  This means that
ocfs2 is actually leaking garbage data into the tail end of that last
cluster.  This is a bug.

We adjust ocfs2_write_begin_nolock() and ocfs2_extend_file() to detect
when a write or truncate is past i_size.  They will use
ocfs2_zero_extend() to ensure the data is properly zeroed.

Older versions of ocfs2_zero_extend() simply zeroed every block between
i_size and the zeroing position.  This presumes three things:

1) There is allocation for all of these blocks.
2) The extents are not unwritten.
3) The extents are not refcounted.

(1) and (2) hold true for non-sparse filesystems, which used to be the
only users of ocfs2_zero_extend().  (3) is another bug.

Since we're now using ocfs2_zero_extend() for sparse filesystems as
well, we teach ocfs2_zero_extend() to check every extent between
i_size and the zeroing position.  If the extent is unwritten, it is
ignored.  If it is refcounted, it is CoWed.  Then it is zeroed.

Signed-off-by: Joel Becker <>
10 years agoocfs2: When zero extending, do it by page.
Joel Becker [Tue, 6 Jul 2010 21:36:06 +0000 (14:36 -0700)]
ocfs2: When zero extending, do it by page.

ocfs2_zero_extend() does its zeroing block by block, but it calls a
function named ocfs2_write_zero_page().  Let's have
ocfs2_write_zero_page() handle the page level.  From
ocfs2_zero_extend()'s perspective, it is now page-at-a-time.

Signed-off-by: Joel Becker <>
10 years agoV4L/DVB: v4l: mem2mem_testdev: fix g_fmt NULL pointer dereference
Pawel Osciak [Tue, 22 Jun 2010 08:38:41 +0000 (05:38 -0300)]
V4L/DVB: v4l: mem2mem_testdev: fix g_fmt NULL pointer dereference

Calling g_fmt before s_fmt resulted in a NULL pointer dereference as no
default formats were being selected on probe.

Reported-by: Németh Márton <>
Signed-off-by: Pawel Osciak <>
Signed-off-by: Kyungmin Park <>
Signed-off-by: Mauro Carvalho Chehab <>
10 years agoV4L/DVB: uvcvideo: Power line frequency control doesn't support GET_MIN/MAX/RES
Laurent Pinchart [Mon, 5 Jul 2010 18:24:39 +0000 (15:24 -0300)]
V4L/DVB: uvcvideo: Power line frequency control doesn't support GET_MIN/MAX/RES

Issuing a GET_MIN request on the power line frequency control times out
on at least the Apple iSight. As the UVC specification doesn't list
GET_MIN/MAX/RES as supported on that control, remove them from the
uvc_ctrls array.

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Mauro Carvalho Chehab <>
10 years agoV4L/DVB: ivtv: Add delay to ensure the decoder always restarts with a blank screen
Ian Armstrong [Sun, 20 Jun 2010 18:12:28 +0000 (15:12 -0300)]
V4L/DVB: ivtv: Add delay to ensure the decoder always restarts with a blank screen

Add a short delay when stopping the decoder, allowing it to settle and
preventing some unexpected interaction with other firmware commands.

Signed-off-by: Ian Armstrong <>
Tested-by: Martin Dauskardt <>
Signed-off-by: Andy Walls <>
Signed-off-by: Mauro Carvalho Chehab <>
10 years agoV4L/DVB: Documentation: Add the Philips FQ1236 MK5 to video4linux/CARDLIST.tuner
Andy Walls [Fri, 18 Jun 2010 01:24:09 +0000 (22:24 -0300)]
V4L/DVB: Documentation: Add the Philips FQ1236 MK5 to video4linux/CARDLIST.tuner

Signed-off-by: Andy Walls <>
Signed-off-by: Mauro Carvalho Chehab <>
10 years agoV4L/DVB: tveeprom: Add an entry for tuner code 168: a TCL M30WTP-4N-E tuner
Andy Walls [Sat, 12 Jun 2010 23:24:24 +0000 (20:24 -0300)]
V4L/DVB: tveeprom: Add an entry for tuner code 168: a TCL M30WTP-4N-E tuner

Hauppauge EEPROM tuner code 168 has recently shown up on HVR-1600 TV
capture cards supported by the cx18 driver.  This change allows analog
tuner type autodetection to succeed for these cards.

Information for decoding tuner code 168 was provided by Hauppauge.

Signed-off-by: Andy Walls <>
Signed-off-by: Mauro Carvalho Chehab <>
10 years agoV4L/DVB: tuner: Add a definition for the Philips FQ1236 MK5 NTSC tuner
Andy Walls [Sat, 12 Jun 2010 23:20:36 +0000 (20:20 -0300)]
V4L/DVB: tuner: Add a definition for the Philips FQ1236 MK5 NTSC tuner

Signed-off-by: Andy Walls <>
Signed-off-by: Mauro Carvalho Chehab <>
10 years agoV4L/DVB: OMAP_VOUT: fix: Module params were not working through bootargs
Vaibhav Hiremath [Thu, 27 May 2010 11:17:09 +0000 (08:17 -0300)]
V4L/DVB: OMAP_VOUT: fix: Module params were not working through bootargs

Signed-off-by: Vaibhav Hiremath <>
Signed-off-by: Muralidharan Karicheri <>
Signed-off-by: Mauro Carvalho Chehab <>