10 years agoMerge branch 'tracing/hw-branch-tracing' into tracing/core
Ingo Molnar [Thu, 7 May 2009 09:18:34 +0000 (11:18 +0200)]
Merge branch 'tracing/hw-branch-tracing' into tracing/core

Merge reason: this topic is ready for upstream now. It passed
              Oleg's review and Andrew had no further mm/*
              objections/observations either.

Signed-off-by: Ingo Molnar <>
10 years agoMerge branch 'linus' into tracing/core
Ingo Molnar [Thu, 7 May 2009 09:17:13 +0000 (11:17 +0200)]
Merge branch 'linus' into tracing/core

Merge reason: tracing/core was on a .30-rc1 base and was missing out on
              on a handful of tracing fixes present in .30-rc5-almost.

Signed-off-by: Ingo Molnar <>
10 years agotracing/events: fix concurrent access to ftrace_events list, fix
Li Zefan [Thu, 7 May 2009 07:11:15 +0000 (15:11 +0800)]
tracing/events: fix concurrent access to ftrace_events list, fix

In filter_add_subsystem_pred() we should release event_mutex before
calling filter_free_subsystem_preds(), since both functions hold

[ Impact: fix deadlock when writing invalid pred into subsystem filter ]

Signed-off-by: Li Zefan <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agotracing/filters: support for operator reserved characters in strings
Frederic Weisbecker [Sun, 3 May 2009 01:03:57 +0000 (03:03 +0200)]
tracing/filters: support for operator reserved characters in strings

When we set a filter for an event, such as:

echo "name == my_lock_name" > \

then the following order of token type is parsed:

- space
- operator
- parentheses
- operand

Because the operators and parentheses have a higher precedence
than the operand characters, which is normal, then we can't
use any string containing such special characters:


To get this support and also avoid ambiguous intepretation from
the parser or the human, we can do it using double quotes so that
we keep the usual languages habits.

Then after this patch you can still declare string condition like

echo name == myname

But if you want to compare against a string containing an operator
character, you can use double quotes:

echo 'name == "&myname"'

Don't forget to include the whole expression into single quotes or
the double ones will be eaten by echo.

[ Impact: support strings with special characters for tracing filters ]

Cc: Tom Zanussi <>
Cc: Steven Rostedt <>
Cc: Li Zefan <>
Cc: Zhaolei <>
Signed-off-by: Frederic Weisbecker <>
10 years agotracing/filters: support for filters of dynamic sized arrays
Frederic Weisbecker [Sun, 3 May 2009 00:48:52 +0000 (02:48 +0200)]
tracing/filters: support for filters of dynamic sized arrays

Currently the filtering infrastructure supports well the
numeric types and fixed sized array types.

But the recently added __string() field uses a specific
indirect offset mechanism which requires a specific
predicate. Until now it wasn't supported.

This patch adds this support and implies very few changes,
only a new predicate is needed, the management of this specific
field can be done through the usual string helpers in the
filtering infrastructure.

[ Impact: support all kinds of strings in the tracing filters ]

Cc: Tom Zanussi <>
Cc: Steven Rostedt <>
Cc: Li Zefan <>
Cc: Zhaolei <>
Signed-off-by: Frederic Weisbecker <>
10 years agotracing: add hierarchical enabling of events
Steven Rostedt [Thu, 7 May 2009 02:52:15 +0000 (22:52 -0400)]
tracing: add hierarchical enabling of events

With the current event directory, you can only enable individual events.
The file debugfs/tracing/set_event is used to be able to enable or
disable several events at once. But that can still be awkward.

This patch adds hierarchical enabling of events. That is, each directory
in debugfs/tracing/events has an "enable" file. This file can enable
or disable all events within the directory and below.

 # echo 1 > /debugfs/tracing/events/enable

will enable all events.

 # echo 1 > /debugfs/tracing/events/sched/enable

will enable all events in the sched subsystem.

 # echo 1 > /debugfs/tracing/events/enable
 # echo 0 > /debugfs/tracing/events/irq/enable

will enable all events, but then disable just the irq subsystem events.

When reading one of these enable files, there are four results:

 0 - all events this file affects are disabled
 1 - all events this file affects are enabled
 X - there is a mixture of events enabled and disabled
 ? - this file does not affect any event

Signed-off-by: Steven Rostedt <>
10 years agotracing: reset ring buffer when removing modules with events
Steven Rostedt [Thu, 7 May 2009 01:54:09 +0000 (21:54 -0400)]
tracing: reset ring buffer when removing modules with events

Li Zefan found that there's a race using the event ids of events and
modules. When a module is loaded, an event id is incremented. We only
have 16 bits for event ids (65536) and there is a possible (but highly
unlikely) race that we could load and unload a module that registers
events so many times that the event id counter overflows.

When it overflows, it then restarts and goes looking for available
ids. An id is available if it was added by a module and released.

The race is if you have one module add an id, and then is removed.
Another module loaded can use that same event id. But if the old module
still had events in the ring buffer, the new module's call back would
get bogus data.  At best (and most likely) the output would just be
garbage. But if the module for some reason used pointers (not recommended)
then this could potentially crash.

The safest thing to do is just reset the ring buffer if a module that
registered events is removed.

[ Impact: prevent unpredictable results of event id overflows ]

Reported-by: Li Zefan <>
LKML-Reference: <>
Signed-off-by: Steven Rostedt <>
10 years agotracing: update sample with TRACE_INCLUDE_FILE
Steven Rostedt [Thu, 7 May 2009 01:20:39 +0000 (21:20 -0400)]
tracing: update sample with TRACE_INCLUDE_FILE

When creating trace events for ftrace, the header file with the TRACE_EVENT
macros must also have a macro called TRACE_SYSTEM. This macro describes
the name of the system the TRACE_EVENTS are defined for. It also doubles
as a way for the define_trace.h file to include the file that included

For example:

in irq.h

 #define TRACE_SYSTEM irq


 #include <trace/define_trace.h>

The define_trace will use TRACE_SYSTEM to include irq.h. But if the name
of the trace system does not match the name of the trace header file,
one can override it with:

Which will change define_trace.h to inclued foo_trace.h instead of foo.h

The sample comments this, but people that use the sample code will more
likely use the code and not read the comments. This patch changes the
sample code to use the TRACE_INCLUDE_FILE to better show developers how to
use it.

[ Impact: make sample less confusing to developers ]

Reported-by: Christoph Hellwig <>
Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: change test to be more latency friendly
Steven Rostedt [Wed, 6 May 2009 22:36:59 +0000 (18:36 -0400)]
ring-buffer: change test to be more latency friendly

The ring buffer benchmark/test runs a producer for 10 seconds.
This is done with preemption and interrupts enabled. But if the kernel
is not compiled with CONFIG_PREEMPT, it basically stops everything
but interrupts for 10 seconds.

Although this is just a test and is not for production, this attribute
can be quite annoying. It can also spawn badness elsewhere.

This patch solves the issues by calling "cond_resched" when the system
is not compiled with CONFIG_PREEMPT. It also keeps track of the time
spent to call cond_resched such that it does not go against the
time calculations. That is, if the task schedules away, the time scheduled
out is removed from the test data. Note, this only works for non PREEMPT
because we do not know when the task is scheduled out if we have PREEMPT

[ Impact: prevent test from stopping the world for 10 seconds ]

Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: make moving the tail page a separate function
Steven Rostedt [Wed, 6 May 2009 19:30:07 +0000 (15:30 -0400)]
ring-buffer: make moving the tail page a separate function

Ingo Molnar thought the code would be cleaner if we used a function call
instead of a goto for moving the tail page. After implementing this,
it seems that gcc still inlines the result and the output is pretty much
the same. Since this is considered a cleaner approach, might as well
implement it.

[ Impact: code clean up ]

Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: check for failed allocation in ring buffer benchmark
Steven Rostedt [Wed, 6 May 2009 16:40:51 +0000 (12:40 -0400)]
ring-buffer: check for failed allocation in ring buffer benchmark

The result of the allocation of the ring buffer read page in the
ring buffer bench mark does not check the return to see if a page
was actually allocated. This patch fixes that.

[ Impact: avoid NULL dereference ]

Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: remove unneeded conditional in rb_reserve_next
Steven Rostedt [Wed, 6 May 2009 14:26:45 +0000 (10:26 -0400)]
ring-buffer: remove unneeded conditional in rb_reserve_next

The code in __rb_reserve_next checks on page overflow if it is the
original commiter and then resets the page back to the original
setting.  Although this is fine, and the code is correct, it is
a bit fragil. Some experimental work I did breaks it easily.

The better and more robust solution is to have all commiters that
overflow the page, simply subtract what they added.

[ Impact: more robust ring buffer account management ]

Signed-off-by: Steven Rostedt <>
10 years agotracing: small trave_events sample Makefile cleanup
Christoph Hellwig [Wed, 6 May 2009 10:33:38 +0000 (12:33 +0200)]
tracing: small trave_events sample Makefile cleanup

Use -I$(src) to add the current directory the include path.

[ Impact: cleanup ]

Signed-off-by: Christoph Hellwig <>
Acked-by: Steven Rostedt <>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <>
10 years agotracing: trace_output.c, fix false positive compiler warning
Jaswinder Singh Rajput [Wed, 6 May 2009 10:15:45 +0000 (15:45 +0530)]
tracing: trace_output.c, fix false positive compiler warning

This compiler warning:

  CC      kernel/trace/trace_output.o
 kernel/trace/trace_output.c: In function ‘register_ftrace_event’:
 kernel/trace/trace_output.c:544: warning: ‘list’ may be used uninitialized in this function

Is wrong as 'list' is always initialized - but GCC (4.3.2) does not
recognize this relationship properly.

Work around the warning by initializing the variable to NULL.

[ Impact: fix false positive compiler warning ]

Signed-off-by: Jaswinder Singh Rajput <>
Acked-by: Steven Rostedt <>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <>
10 years agoblktrace: from-sector redundant in trace_block_remap
Alan D. Brunelle [Mon, 4 May 2009 20:35:08 +0000 (16:35 -0400)]
blktrace: from-sector redundant in trace_block_remap

Remove redundant from-sector parameter: it's /always/ the bio's sector
passed in.

[ Impact: cleanup ]

Signed-off-by: Alan D. Brunelle <>
Reviewed-by: Li Zefan <>
Reviewed-by: KOSAKI Motohiro <>
Cc: Jens Axboe <>
Cc: Arnaldo Carvalho de Melo <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agoblktrace: correct remap names
Alan D. Brunelle [Mon, 4 May 2009 20:27:26 +0000 (16:27 -0400)]
blktrace: correct remap names

This attempts to clarify names utilized during block I/O remap
operations (partition, volume manager). It correctly matches up the
/from/ information for both device & sector. This takes in the concept
from Kosaki Motohiro and extends it to include better naming for the
"device_from" field.

[ Impact: cleanup ]

Signed-off-by: Alan D. Brunelle <>
Reviewed-by: Li Zefan <>
Reviewed-by: KOSAKI Motohiro <>
Cc: Jens Axboe <>
Cc: Arnaldo Carvalho de Melo <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agotracepoint: trace_sched_migrate_task(): remove parameter
Mathieu Desnoyers [Tue, 5 May 2009 08:49:59 +0000 (16:49 +0800)]
tracepoint: trace_sched_migrate_task(): remove parameter

The orig_cpu parameter in trace_sched_migrate_task() is not necessary,
it can be got by using task_cpu(p) in the probe.

[ Impact: micro-optimization ]

Signed-off-by: Mathieu Desnoyers <>
[ modified from Mathieu's patch. The original patch is at: ]
Signed-off-by: Xiao Guangrong <>
Cc: Li Zefan <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agotracing/events: fix concurrent access to ftrace_events list
Li Zefan [Wed, 6 May 2009 02:33:45 +0000 (10:33 +0800)]
tracing/events: fix concurrent access to ftrace_events list

A module will add/remove its trace events when it gets loaded/unloaded, so
the ftrace_events list is not "const", and concurrent access needs to be

This patch thus fixes races between loading/unloding modules and read
'available_events' or read/write 'set_event', etc.

Below shows how to reproduce the race:

 # for ((; ;)) { cat /mnt/tracing/available_events; } > /dev/null &
 # for ((; ;)) { insmod trace-events-sample.ko; rmmod sample; } &

After a while:

BUG: unable to handle kernel paging request at 0010011c
IP: [<c1080f27>] t_next+0x1b/0x2d
Call Trace:
 [<c10c90e6>] ? seq_read+0x217/0x30d
 [<c10c8ecf>] ? seq_read+0x0/0x30d
 [<c10b4c19>] ? vfs_read+0x8f/0x136
 [<c10b4fc3>] ? sys_read+0x40/0x65
 [<c1002a68>] ? sysenter_do_call+0x12/0x36

[ Impact: fix races when concurrent accessing ftrace_events list ]

Signed-off-by: Li Zefan <>
Acked-by: Steven Rostedt <>
Acked-by: Frederic Weisbecker <>
Cc: Tom Zanussi <>
Cc: Peter Zijlstra <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agotracing/events: fix memory leak when unloading module
Li Zefan [Wed, 6 May 2009 02:33:04 +0000 (10:33 +0800)]
tracing/events: fix memory leak when unloading module

When unloading a module, memory allocated by init_preds() and
trace_define_field() is not freed.

[ Impact: fix memory leak ]

Signed-off-by: Li Zefan <>
Acked-by: Frederic Weisbecker <>
Acked-by: Steven Rostedt <>
Cc: Tom Zanussi <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agotracing/events: make SAMPLE_TRACE_EVENTS default to n
Li Zefan [Wed, 6 May 2009 02:32:32 +0000 (10:32 +0800)]
tracing/events: make SAMPLE_TRACE_EVENTS default to n

Normally a config should be default to n. This patch also makes the
sample module-only, like SAMPLE_MARKERS and SAMPLE_TRACEPOINTS.

[ Impact: don't build trace event sample by default ]

Signed-off-by: Li Zefan <>
Acked-by: Steven Rostedt <>
Acked-by: Frederic Weisbecker <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agotracing/events: don't say hi when loading the trace event sample
Li Zefan [Wed, 6 May 2009 02:32:13 +0000 (10:32 +0800)]
tracing/events: don't say hi when loading the trace event sample

The sample is useful for testing, and I'm using it. But after
loading the module, it keeps saying hi every 10 seconds, this may
be disturbing.

Also Steven said commenting out the "hi" helped in causing races. :)

[ Impact: make testing a bit easier ]

Signed-off-by: Li Zefan <>
Acked-by: Steven Rostedt <>
Acked-by: Frederic Weisbecker <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agoring-buffer: add benchmark and tester
Steven Rostedt [Wed, 6 May 2009 02:47:18 +0000 (22:47 -0400)]
ring-buffer: add benchmark and tester

This patch adds code that can benchmark the ring buffer as well as
test it. This code can be compiled into the kernel (not recommended)
or as a module.

A separate ring buffer is used to not interfer with other users, like
ftrace. It creates a producer and a consumer (option to disable creation
of the consumer) and will run for 10 seconds, then sleep for 10 seconds
and then repeat.

While running, the producer will write 10 byte loads into the ring
buffer with just putting in the current CPU number. The reader will
continually try to read the buffer. The reader will alternate from reading
the buffer via event by event, or by full pages.

The output is a pr_info, thus it will fill up the syslogs.

  Starting ring buffer hammer
  End ring buffer hammer
  Time:     9000349 (usecs)
  Overruns: 12578640
  Read:     5358440  (by events)
  Entries:  0
  Total:    17937080
  Missed:   0
  Hit:      17937080
  Entries per millisec: 1993
  501 ns per entry
  Sleeping for 10 secs
  Starting ring buffer hammer
  End ring buffer hammer
  Time:     9936350 (usecs)
  Overruns: 0
  Read:     28146644  (by pages)
  Entries:  74
  Total:    28146718
  Missed:   0
  Hit:      28146718
  Entries per millisec: 2832
  353 ns per entry
  Sleeping for 10 secs

Time:      is the time the test ran
Overruns:  the number of events that were overwritten and not read
Read:      the number of events read (either by pages or events)
Entries:   the number of entries left in the buffer
                 (the by pages will only read full pages)
Total:     Entries + Read + Overruns
Missed:    the number of entries that failed to write
Hit:       the number of entries that were written

The above example shows that it takes ~353 nanosecs per entry when
there is a reader, reading by pages (and no overruns)

The event by event reader slowed the producer down to 501 nanosecs.

[ Impact: see how changes to the ring buffer affect stability and performance ]

Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: move big if statement down
Steven Rostedt [Wed, 6 May 2009 01:16:11 +0000 (21:16 -0400)]
ring-buffer: move big if statement down

In the hot path of the ring buffer "__rb_reserve_next" there's a big
if statement that does not even return back to the work flow.


if (cross to next page) {

[ lots of code ]


more code;

The condition is even the unlikely path, although we do not denote it
with an unlikely because gcc is fine with it. The condition is true when
the write crosses a page boundary, and we need to start at a new page.

Having this if statement makes it hard to read, but calling another
function to do the work is also not appropriate, because we are using a lot
of variables that were set before the if statement, and we do not want to
send them as parameters.

This patch changes it to a goto:


if (cross to next page)
goto next_page;

more code;



[ lots of code]

This makes the code easier to understand, and a bit more obvious.

The output from gcc is practically identical. For some reason, gcc decided
to use different registers when I switched it to a goto. But other than that,
the logic is the same.

[ Impact: easier to read code ]

Signed-off-by: Steven Rostedt <>
10 years agoMerge branch 'drm-linus' of git://
Linus Torvalds [Wed, 6 May 2009 00:02:05 +0000 (17:02 -0700)]
Merge branch 'drm-linus' of git://git./linux/kernel/git/airlied/drm-2.6

* 'drm-linus' of git://
  drm/r128: fix r128 ioremaps to use ioremap_wc.
  drm: cleanup properly in drm_get_dev() failure paths
  drm: clean the map list before destroying the hash table
  drm: remove unreachable code in drm_sysfs.c
  drm: add control node checks missing from kms merge
  drm/kms: don't try to shortcut drm mode set function
  drm/radeon: bump minor version for occlusion queries support

10 years agotracing: use proper export symbol for tracing api
Steven Rostedt [Tue, 5 May 2009 23:22:53 +0000 (19:22 -0400)]
tracing: use proper export symbol for tracing api

When adding the EXPORT_SYMBOL to some of the tracing API, I accidently
used EXPORT_SYMBOL instead of EXPORT_SYMBOL_GPL. This patch fixes
that mistake.

[ Impact: export the tracing code only for GPL modules ]

Reported-by: Christoph Hellwig <>
Signed-off-by: Steven Rostedt <>
10 years agoftrace: use .sched.text, not .text.sched in
Tim Abbott [Fri, 1 May 2009 00:06:11 +0000 (20:06 -0400)]
ftrace: use .sched.text, not .text.sched in

The only references in the kernel to the .text.sched section are in  Since the code it has is intended to be example code
it should refer to real kernel sections.  So change it to .sched.text

[ Impact: consistency in comments ]

Signed-off-by: Tim Abbott <>
LKML-Reference: <>
Acked-by: Sam Ravnborg <>
Signed-off-by: Steven Rostedt <>
10 years agodrm/r128: fix r128 ioremaps to use ioremap_wc.
Dave Airlie [Tue, 5 May 2009 23:04:52 +0000 (09:04 +1000)]
drm/r128: fix r128 ioremaps to use ioremap_wc.

This should allow r128 to start working again since PAT changes.

taken from F-11 kernel.

Signed-off-by: Dave Airlie <>
10 years agoMerge branch 'release' of git://
Linus Torvalds [Tue, 5 May 2009 22:48:03 +0000 (15:48 -0700)]
Merge branch 'release' of git://git./linux/kernel/git/aegl/linux-2.6

* 'release' of git://
  [IA64] xen_domu_defconfig: fix build issues/warnings

10 years agoIgnore madvise(MADV_WILLNEED) for hugetlbfs-backed regions
Mel Gorman [Tue, 5 May 2009 15:37:17 +0000 (16:37 +0100)]
Ignore madvise(MADV_WILLNEED) for hugetlbfs-backed regions

madvise(MADV_WILLNEED) forces page cache readahead on a range of memory
backed by a file.  The assumption is made that the page required is
order-0 and "normal" page cache.

On hugetlbfs, this assumption is not true and order-0 pages are
allocated and inserted into the hugetlbfs page cache.  This leaks
hugetlbfs page reservations and can cause BUGs to trigger related to
corrupted page tables.

This patch causes MADV_WILLNEED to be ignored for hugetlbfs-backed

Signed-off-by: Mel Gorman <>
Signed-off-by: Linus Torvalds <>
10 years agoring-buffer: disable writers when resetting buffers
Steven Rostedt [Sat, 2 May 2009 00:26:54 +0000 (20:26 -0400)]
ring-buffer: disable writers when resetting buffers

As a precaution, it is best to disable writing to the ring buffers
when reseting them.

[ Impact: prevent weird things if write happens during reset ]

Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: have read page swap increment counter with page entries
Steven Rostedt [Fri, 1 May 2009 23:40:05 +0000 (19:40 -0400)]
ring-buffer: have read page swap increment counter with page entries

In the swap page ring buffer code that is used by the ftrace splice code,
we scan the page to increment the counter of entries read.

With the number of entries already in the page we simply need to add it.

[ Impact: speed up reading page from ring buffer ]

Signed-off-by: Steven Rostedt <>
10 years agoMerge branch 'timers/urgent' of git://
Linus Torvalds [Tue, 5 May 2009 19:09:38 +0000 (12:09 -0700)]
Merge branch 'timers/urgent' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'timers/urgent' of git://
  clockevents: prevent endless loop in tick_handle_periodic()

10 years agoMerge branch 'irq/urgent' of git://
Linus Torvalds [Tue, 5 May 2009 19:09:27 +0000 (12:09 -0700)]
Merge branch 'irq/urgent' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'irq/urgent' of git://
  Revert "genirq: assert that irq handlers are indeed running in hardirq context"

10 years agoMerge branch 'sched-fixes-for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 19:08:40 +0000 (12:08 -0700)]
Merge branch 'sched-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'sched-fixes-for-linus' of git://
  sched: account system time properly

10 years agoMerge branch 'core-fixes-for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 19:08:20 +0000 (12:08 -0700)]
Merge branch 'core-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'core-fixes-for-linus' of git://
  kernel/posix-cpu-timers.c: fix sparse warning
  dma-debug: remove broken dma memory leak detection for 2.6.30
  locking: Documentation: lockdep-design.txt, fix note of state bits

10 years agoMerge branch 'tracing-fixes-for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 19:08:02 +0000 (12:08 -0700)]
Merge branch 'tracing-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'tracing-fixes-for-linus' of git://
  tracing: x86, mmiotrace: fix range test
  tracing: fix ref count in splice pages

10 years agoMerge branch 'x86-fixes-for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 19:07:21 +0000 (12:07 -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: show number of core_siblings instead of thread_siblings in /proc/cpuinfo
  amd-iommu: fix iommu flag masks
  x86: initialize io_bitmap_base on 32bit
  x86: gettimeofday() vDSO: fix segfault when tv == NULL

10 years agoMerge git://
Linus Torvalds [Tue, 5 May 2009 19:06:54 +0000 (12:06 -0700)]
Merge git://git./linux/kernel/git/sam/kbuild-fixes

* git://
  kbuild, modpost: fix unexpected non-allocatable warning with mips
  kbuild, modpost: fix "unexpected non-allocatable" warning with SUSE gcc
  kbuild, modpost: fix unexpected non-allocatable section when cross compiling

10 years ago[IA64] xen_domu_defconfig: fix build issues/warnings
Jan Beulich [Tue, 5 May 2009 12:57:52 +0000 (13:57 +0100)]
[IA64] xen_domu_defconfig: fix build issues/warnings

- drivers/xen/events.c did not compile
- xen_setup_hook caused a modpost section warning
- the use of u64 (instead of unsigned long long) together with a %llu
  in drivers/xen/balloon.c caused a compiler warning

Signed-off-by: Jan Beulich <>
Signed-off-by: Tony Luck <>
10 years agoring-buffer: record page entries in buffer page descriptor
Steven Rostedt [Fri, 1 May 2009 22:44:45 +0000 (18:44 -0400)]
ring-buffer: record page entries in buffer page descriptor

Currently, when the ring buffer writer overflows the buffer and must
write over non consumed data, we increment the overrun counter by
reading the entries on the page we are about to overwrite. This reads
the entries one by one.

This is not very effecient. This patch adds another entry counter
into each buffer page descriptor that keeps track of the number of
entries on the page. Now on overwrite, the overrun counter simply
needs to add the number of entries that is on the page it is about
to overwrite.

[ Impact: speed up of ring buffer in overwrite mode ]

Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: convert cpu buffer entries to local_t
Steven Rostedt [Fri, 1 May 2009 00:49:44 +0000 (20:49 -0400)]
ring-buffer: convert cpu buffer entries to local_t

The entries counter in cpu buffer is not atomic. It can be updated by
other interrupts or from another CPU (readers).

But making entries into "atomic_t" causes an atomic operation that can
hurt performance. Instead we convert it to a local_t that will increment
a counter with a local CPU atomic operation (if the arch supports it).

Instead of fighting with readers and overwrites that decrement the counter,
I added a "read" counter. Every time a reader reads an entry it is

We already have a overrun counter and with that, the entries counter and
the read counter, we can calculate the total number of entries in the
buffer with:

  (entries - overrun) - read

As long as the total number of entries in the ring buffer is less than
the word size, this will work. But since the entries counter was previously
a long, this is no different than what we had before.

Thanks to Andrew Morton for pointing out in the first version that
atomic_t does not replace unsigned long. I switched to atomic_long_t
even though it is signed. A negative count is most likely a bug.

[ Impact: keep accurate count of cpu buffer entries ]

Signed-off-by: Steven Rostedt <>
10 years agotracing: export stats of ring buffers to userspace
Steven Rostedt [Wed, 29 Apr 2009 22:03:45 +0000 (18:03 -0400)]
tracing: export stats of ring buffers to userspace

This patch adds stats to the ftrace ring buffers:

 # cat /debugfs/tracing/per_cpu/cpu0/stats
 entries: 42360
 overrun: 30509326
 commit overrun: 0
 nmi dropped: 0

Where entries are the total number of data entries in the buffer.

overrun is the number of entries not consumed and were overwritten by
the writer.

commit overrun is the number of entries dropped due to nested writers
wrapping the buffer before the initial writer finished the commit.

nmi dropped is the number of entries dropped due to the ring buffer
lock being held when an nmi was going to write to the ring buffer.
Note, this field will be meaningless and will go away when the ring
buffer becomes lockless.

[ Impact: let userspace know what is happening in the ring buffers ]

Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: add counters for commit overrun and nmi dropped entries
Steven Rostedt [Wed, 29 Apr 2009 17:43:37 +0000 (13:43 -0400)]
ring-buffer: add counters for commit overrun and nmi dropped entries

The WARN_ON in the ring buffer when a commit is preempted and the
buffer is filled by preceding writes can happen in normal operations.
The WARN_ON makes it look like a bug, not to mention, because
it does not stop tracing and calls printk which can also recurse, this
is prone to deadlock (the WARN_ON is not in a position to recurse).

This patch removes the WARN_ON and replaces it with a counter that
can be retrieved by a tracer. This counter is called commit_overrun.

While at it, I added a nmi_dropped counter to count any time an NMI entry
is dropped because the NMI could not take the spinlock.

[ Impact: prevent deadlock by printing normal case warning ]

Signed-off-by: Steven Rostedt <>
10 years agoring-buffer: export symbols
Steven Rostedt [Tue, 5 May 2009 05:15:24 +0000 (01:15 -0400)]
ring-buffer: export symbols

I'm adding a module to do a series of tests on the ring buffer as well
as benchmarks. This module needs to have more of the ring buffer API
exported. There's nothing wrong with reading the ring buffer from a

[ Impact: allow modules to read pages from the ring buffer ]

Signed-off-by: Steven Rostedt <>
10 years agoMerge branch 'i2c-for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 15:27:14 +0000 (08:27 -0700)]
Merge branch 'i2c-for-linus' of git://

* 'i2c-for-linus' of git://
  i2c-algo-pca: Let PCA9564 recover from unacked data byte (state 0x30)
  i2c-algo-bit: Fix timeout test
  i2c: Timeouts off by 1

10 years agoMerge git://
Linus Torvalds [Tue, 5 May 2009 15:26:10 +0000 (08:26 -0700)]
Merge git://git./linux/kernel/git/davem/net-2.6

* git:// (30 commits)
  e1000: fix virtualization bug
  bonding: fix alb mode locking regression
  Bluetooth: Fix issue with sysfs handling for connections
  usbnet: CDC EEM support (v5)
  tcp: Fix tcp_prequeue() to get correct rto_min value
  ehea: fix invalid pointer access
  ne2k-pci: Do not register device until initialized.
  Subject: [PATCH] br2684: restore net_dev initialization
  net: Only store high 16 bits of kernel generated filter priorities
  virtio_net: Fix function name typo
  virtio_net: Cleanup command queue scatterlist usage
  bonding: correct the cleanup in bond_create()
  virtio: add missing include to virtio_net.h
  smsc95xx: add support for LAN9512 and LAN9514
  smsc95xx: configure LED outputs
  netconsole: take care of NETDEV_UNREGISTER event
  xt_socket: checks for the state of nf_conntrack
  bonding: bond_slave_info_query() fix
  cxgb3: fixing gcc 4.4 compiler warning: suggest parentheses around operand of ‘!’
  netfilter: use likely() in xt_info_rdlock_bh()

10 years agoMerge branch 'merge' of git://
Linus Torvalds [Tue, 5 May 2009 15:25:37 +0000 (08:25 -0700)]
Merge branch 'merge' of git://git./linux/kernel/git/benh/powerpc

* 'merge' of git://
  powerpc: Fix setting of oprofile cpu type
  powerpc: Update MPC5xxx and Xilinx Virtex maintainer entries
  powerpc adjust oprofile_cpu_type version 3

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 15:24:41 +0000 (08:24 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/jmorris/security-testing-2.6

* 'for-linus' of git://
  selinux: Fix send_sigiotask hook

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 15:23:42 +0000 (08:23 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/ericvh/v9fs

* 'for-linus' of git://
  net/9p: handle correctly interrupted 9P requests
  net/9p: return error when p9_client_stat fails
  net/9p: set correct stat size when sending Twstat messages

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 15:23:16 +0000 (08:23 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/drzeus/mmc

* 'for-linus' of git://
  mvsdio: fix CONFIG_PM=y build
  mmci: fix crash with debug enabled
  sdhci: catch ADMA errors
  mmc: increase power up delay
  sdhci-pci: bad error handling in probe function
  mmc_block: be prepared for oversized requests

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Tue, 5 May 2009 15:22:55 +0000 (08:22 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/tiwai/sound-2.6

* 'for-linus' of git://
  ASoC: Remove BROKEN from mpc5200 kconfig
  ASoC: TWL4030: Fix gain control for earpiece amplifier
  ALSA: pcm core - Avoid jiffies check for devices with BATCH flag
  ALSA: Add missing SNDRV_PCM_INFO_BATCH flag to some drivers
  ALSA: indigo-express: add missing 64KHz flags
  ASoC: Set the MPC5200 i2s driver to BROKEN status.
  ASoC: Fix logic in WM8350 master clocking check

10 years agoi2c-algo-pca: Let PCA9564 recover from unacked data byte (state 0x30)
Enrik Berkhan [Tue, 5 May 2009 06:39:25 +0000 (08:39 +0200)]
i2c-algo-pca: Let PCA9564 recover from unacked data byte (state 0x30)

Currently, the i2c-algo-pca driver does nothing if the chip enters state
0x30 (Data byte in I2CDAT has been transmitted; NOT ACK has been
received).  Thus, the i2c bus connected to the controller gets stuck

I have seen this kind of error on a custom board in certain load
situations most probably caused by interference or noise.

A possible reaction is to let the controller generate a STOP condition.
This is documented in the PCA9564 data sheet (2006-09-01) and the same
is done for other NACK states as well.

Further, state 0x38 isn't handled completely, either. Try to do another
START in this case like the data sheet says. As this couldn't be tested,
I've added a comment to try to reset the chip if the START doesn't help
as suggested by Wolfram Sang.

Signed-off-by: Enrik Berkhan <>
Reviewed-by: Wolfram Sang <>
Signed-off-by: Jean Delvare <>
10 years agoi2c-algo-bit: Fix timeout test
Dave Airlie [Tue, 5 May 2009 06:39:24 +0000 (08:39 +0200)]
i2c-algo-bit: Fix timeout test

When fetching DDC using i2c algo bit, we were often seeing timeouts
before getting valid EDID on a retry. The VESA spec states 2ms is the
DDC timeout, so when this translates into 1 jiffie and we are close
to the end of the time period, it could return with a timeout less than

Change this code to use time_after instead of time_after_eq.

Signed-off-by: Dave Airlie <>
Signed-off-by: Jean Delvare <>
10 years agoi2c: Timeouts off by 1
Roel Kluin [Tue, 5 May 2009 06:39:24 +0000 (08:39 +0200)]
i2c: Timeouts off by 1

with while (timeout++ < MAX_TIMEOUT); timeout reaches MAX_TIMEOUT + 1
after the loop, so the tests below are off by one.

Signed-off-by: Roel Kluin <>
Signed-off-by: Jean Delvare <>
10 years agoMerge branch 'master' of git://
David S. Miller [Tue, 5 May 2009 04:31:29 +0000 (21:31 -0700)]
Merge branch 'master' of git://git./linux/kernel/git/holtmann/bluetooth-2.6

10 years agoe1000: fix virtualization bug
Jesse Brandeburg [Mon, 4 May 2009 11:19:42 +0000 (11:19 +0000)]
e1000: fix virtualization bug

a recent fix to e1000 (commit 15b2bee2) caused KVM/QEMU/VMware based
virtualized e1000 interfaces to begin failing when resetting.

This is because the driver in a virtual environment doesn't
get to run instructions *AT ALL* when an interrupt is asserted.
The interrupt code runs immediately and this recent bug fix
allows an interrupt to be possible when the interrupt handler
will reject it (due to the new code), when being called from
any path in the driver that holds the E1000_RESETTING flag.

the driver should use the __E1000_DOWN flag instead of the
__E1000_RESETTING flag to prevent interrupt execution
while reconfiguring the hardware.

Signed-off-by: Jesse Brandeburg <>
Signed-off-by: Jeff Kirsher <>
Signed-off-by: David S. Miller <>
10 years agobonding: fix alb mode locking regression
Jay Vosburgh [Mon, 4 May 2009 09:03:37 +0000 (09:03 +0000)]
bonding: fix alb mode locking regression

Fix locking issue in alb MAC address management; removed
incorrect locking and replaced with correct locking.  This bug was
introduced in commit 059fe7a578fba5bbb0fdc0365bfcf6218fa25eb0
("bonding: Convert locks to _bh, rework alb locking for new locking")

Bug reported by Paul Smith <>, who also
tested the fix.

Signed-off-by: Jay Vosburgh <>
Signed-off-by: David S. Miller <>
10 years agoselinux: Fix send_sigiotask hook
Stephen Smalley [Mon, 4 May 2009 19:43:18 +0000 (15:43 -0400)]
selinux: Fix send_sigiotask hook

The CRED patch incorrectly converted the SELinux send_sigiotask hook to
use the current task SID rather than the target task SID in its
permission check, yielding the wrong permission check.  This fixes the
hook function.  Detected by the ltp selinux testsuite and confirmed to
correct the test failure.

Signed-off-by: Stephen Smalley <>
Signed-off-by: James Morris <>
10 years agoproc: avoid information leaks to non-privileged processes
Jake Edge [Mon, 4 May 2009 18:51:14 +0000 (12:51 -0600)]
proc: avoid information leaks to non-privileged processes

By using the same test as is used for /proc/pid/maps and /proc/pid/smaps,
only allow processes that can ptrace() a given process to see information
that might be used to bypass address space layout randomization (ASLR).
These include eip, esp, wchan, and start_stack in /proc/pid/stat as well
as the non-symbolic output from /proc/pid/wchan.

ASLR can be bypassed by sampling eip as shown by the proof-of-concept
code at As part of a presentation
( esp and wchan were
also noted as possibly usable information leaks as well.  The
start_stack address also leaks potentially useful information.

Cc: Stable Team <>
Signed-off-by: Jake Edge <>
Acked-by: Arjan van de Ven <>
Acked-by: "Eric W. Biederman" <>
Signed-off-by: Linus Torvalds <>
10 years agoBluetooth: Fix issue with sysfs handling for connections
Marcel Holtmann [Sun, 3 May 2009 01:24:06 +0000 (18:24 -0700)]
Bluetooth: Fix issue with sysfs handling for connections

Due to a semantic changes in flush_workqueue() the current approach of
synchronizing the sysfs handling for connections doesn't work anymore. The
whole approach is actually fully broken and based on assumptions that are
no longer valid.

With the introduction of Simple Pairing support, the creation of low-level
ACL links got changed. This change invalidates the reason why in the past
two independent work queues have been used for adding/removing sysfs
devices. The adding of the actual sysfs device is now postponed until the
host controller successfully assigns an unique handle to that link. So
the real synchronization happens inside the controller and not the host.

The only left-over problem is that some internals of the sysfs device
handling are not initialized ahead of time. This leaves potential access
to invalid data and can cause various NULL pointer dereferences. To fix
this a new function makes sure that all sysfs details are initialized
when an connection attempt is made. The actual sysfs device is only
registered when the connection has been successfully established. To
avoid a race condition with the registration, the check if a device is
registered has been moved into the removal work.

As an extra protection two flush_work() calls are left in place to
make sure a previous add/del work has been completed first.

Based on a report by Marc Pignat <>

Signed-off-by: Marcel Holtmann <>
Tested-by: Justin P. Mattock <>
Tested-by: Roger Quadros <>
Tested-by: Marc Pignat <>
10 years agousbnet: CDC EEM support (v5)
Omar Laazimani [Mon, 4 May 2009 19:01:43 +0000 (12:01 -0700)]
usbnet: CDC EEM support (v5)

This introduces a CDC Ethernet Emulation Model (EEM) host side
driver to support USB EEM devices.

EEM is different from the Ethernet Control Model (ECM) currently
supported by the "CDC Ethernet" driver.  One key difference is
that it doesn't require of USB interface alternate settings to
manage interface state; some maldesigned hardware can't handle
that part of USB.  It also avoids a separate USB interface for
control and status updates.

[ fix skb leaks, add rx packet
checks, improve fault handling, EEM conformance updates, cleanup ]

Signed-off-by: Omar Laazimani <>
Signed-off-by: David Brownell <>
Signed-off-by: David S. Miller <>
10 years agox86: show number of core_siblings instead of thread_siblings in /proc/cpuinfo
Andreas Herrmann [Mon, 4 May 2009 18:28:59 +0000 (20:28 +0200)]
x86: show number of core_siblings instead of thread_siblings in /proc/cpuinfo

Commit 7ad728f98162cb1af06a85b2a5fc422dddd4fb78
(cpumask: x86: convert cpu_sibling_map/cpu_core_map to cpumask_var_t)
changed the output of /proc/cpuinfo for siblings:

Example on an AMD Phenom:

  physical id   : 0
  siblings : 1
  core id    : 3
  cpu cores  : 4

Before that commit it was:

  physical id : 0
  siblings : 4
  core id    : 3
  cpu cores  : 4

Instead of cpu_core_mask it now uses cpu_sibling_mask to count siblings.
This is due to the following hunk of above commit:

|  --- a/arch/x86/kernel/cpu/proc.c
|  +++ b/arch/x86/kernel/cpu/proc.c
|  @@ -14,7 +14,7 @@ static void show_cpuinfo_core(struct seq_file *m, struct cpuinf
|          if (c->x86_max_cores * smp_num_siblings > 1) {
|                  seq_printf(m, "physical id\t: %d\n", c->phys_proc_id);
|                  seq_printf(m, "siblings\t: %d\n",
|  -                          cpus_weight(per_cpu(cpu_core_map, cpu)));
|  +                          cpumask_weight(cpu_sibling_mask(cpu)));
|                  seq_printf(m, "core id\t\t: %d\n", c->cpu_core_id);
|                  seq_printf(m, "cpu cores\t: %d\n", c->booted_cores);
|                  seq_printf(m, "apicid\t\t: %d\n", c->apicid);

This was a mistake, because the impact line shows that this side-effect
was not anticipated:

   Impact: reduce per-cpu size for CONFIG_CPUMASK_OFFSTACK=y

So revert the respective hunk to restore the old behavior.

[ Impact: fix sibling-info regression in /proc/cpuinfo ]

Signed-off-by: Andreas Herrmann <>
Cc: Rusty Russell <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agotcp: Fix tcp_prequeue() to get correct rto_min value
Satoru SATOH [Mon, 4 May 2009 18:11:01 +0000 (11:11 -0700)]
tcp: Fix tcp_prequeue() to get correct rto_min value

tcp_prequeue() refers to the constant value (TCP_RTO_MIN) regardless of
the actual value might be tuned. The following patches fix this and make
tcp_prequeue get the actual value returns from tcp_rto_min().

Signed-off-by: Satoru SATOH <>
Signed-off-by: David S. Miller <>
10 years agoehea: fix invalid pointer access
Hannes Hering [Mon, 4 May 2009 18:06:37 +0000 (11:06 -0700)]
ehea: fix invalid pointer access

This patch fixes an invalid pointer access in case the receive queue
holds no pointer to the next skb when the queue is empty.

Signed-off-by: Hannes Hering <>
Signed-off-by: Jan-Bernd Themann <>
Signed-off-by: David S. Miller <>
10 years agoMerge branch 'fix/misc' into for-linus
Takashi Iwai [Mon, 4 May 2009 14:06:58 +0000 (16:06 +0200)]
Merge branch 'fix/misc' into for-linus

* fix/misc:
  ALSA: indigo-express: add missing 64KHz flags

10 years agoMerge branch 'fix/asoc' into for-linus
Takashi Iwai [Mon, 4 May 2009 14:06:43 +0000 (16:06 +0200)]
Merge branch 'fix/asoc' into for-linus

* fix/asoc:
  ASoC: Remove BROKEN from mpc5200 kconfig
  ASoC: TWL4030: Fix gain control for earpiece amplifier
  ASoC: Set the MPC5200 i2s driver to BROKEN status.
  ASoC: Fix logic in WM8350 master clocking check

10 years agoMerge branch 'fix/pcm-jiffies-check' into for-linus
Takashi Iwai [Mon, 4 May 2009 14:06:37 +0000 (16:06 +0200)]
Merge branch 'fix/pcm-jiffies-check' into for-linus

* fix/pcm-jiffies-check:
  ALSA: pcm core - Avoid jiffies check for devices with BATCH flag
  ALSA: Add missing SNDRV_PCM_INFO_BATCH flag to some drivers

10 years agoASoC: Remove BROKEN from mpc5200 kconfig
Takashi Iwai [Mon, 4 May 2009 14:03:21 +0000 (16:03 +0200)]
ASoC: Remove BROKEN from mpc5200 kconfig

The regression was fixed by commit
3e5b50165fd0be080044586f43fcdd460ed27610, so no need to mark this
driver as BROKEN.

Signed-off-by: Takashi Iwai <>
10 years agoMerge branch 'fix/pcm-jiffies-check' into fix/asoc
Takashi Iwai [Mon, 4 May 2009 14:00:16 +0000 (16:00 +0200)]
Merge branch 'fix/pcm-jiffies-check' into fix/asoc

10 years agoamd-iommu: fix iommu flag masks
Joerg Roedel [Mon, 4 May 2009 09:44:38 +0000 (11:44 +0200)]
amd-iommu: fix iommu flag masks

The feature bits should be set via bitmasks, not via feature IDs.

[ Impact: fix feature enabling in newer IOMMU versions ]

Signed-off-by: Joerg Roedel <>
LKML-Reference: <>
Signed-off-by: Ingo Molnar <>
10 years agokbuild, modpost: fix unexpected non-allocatable warning with mips
Sam Ravnborg [Mon, 4 May 2009 11:05:26 +0000 (13:05 +0200)]
kbuild, modpost: fix unexpected non-allocatable warning with mips

mips emit the following debug sections:
.mdebug* and .pdr

They were included in the check for non-allocatable section
and caused modpost to warn.

Manuel Lauss suggested to fix this by adding the relevant
sections to the list of sections we do not check.

Signed-off-by: Sam Ravnborg <>
Reported-by: Manuel Lauss <>
10 years agokbuild, modpost: fix "unexpected non-allocatable" warning with SUSE gcc
Sam Ravnborg [Sun, 3 May 2009 20:17:37 +0000 (22:17 +0200)]
kbuild, modpost: fix "unexpected non-allocatable" warning with SUSE gcc

Jean reported that he saw one warning for each module like the one below:
WARNING: arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.o (.comment.SUSE.OPTs): unexpected non-allocatable section.

The warning appeared with the improved version of the
check of the flags in the sections.

That check already ignored sections named ".comment" - but SUSE store
additional info in the comment section and has named it in a SUSE
specific way. Therefore modpost failed to ignore the section.

The fix is to extend the pattern so we ignore all sections
that start with the name ".comment.".

Signed-off-by: Sam Ravnborg <>
Reported-by: Jean Delvare <>
Tested-by: Jean Delvare <>
10 years agokbuild, modpost: fix unexpected non-allocatable section when cross compiling
Anders Kaseorg [Sun, 3 May 2009 20:02:55 +0000 (22:02 +0200)]
kbuild, modpost: fix unexpected non-allocatable section when cross compiling

The missing TO_NATIVE(sechdrs[i].sh_flags) was causing many
unexpected non-allocatable section warnings when cross-compiling
for an architecture with a different endianness.

Fix endianness of all the fields in the ELF header and
section headers, not just some of them so we are not
hit by this anohter time.

Signed-off-by: Anders Kaseorg <>
Reported-by: Sean MacLennan <>
Tested-by: Sean MacLennan <>
Signed-off-by: Sam Ravnborg <>
10 years agomvsdio: fix CONFIG_PM=y build
Rabin Vincent [Mon, 20 Apr 2009 18:44:54 +0000 (00:14 +0530)]
mvsdio: fix CONFIG_PM=y build

Fix usage of obsolete parameters and functions in the driver's PM

Signed-off-by: Rabin Vincent <>
Acked-by: Nicolas Pitre <>
Signed-off-by: Pierre Ossman <>
10 years agommci: fix crash with debug enabled
Rabin Vincent [Fri, 17 Apr 2009 03:14:19 +0000 (08:44 +0530)]
mmci: fix crash with debug enabled

If MMC debugging is enabled, the mmci driver oopses because the DBG
macro uses host->mmc before it is set.  Set it earlier.

Signed-off-by: Rabin Vincent <>
Signed-off-by: Pierre Ossman <>
10 years agosdhci: catch ADMA errors
Pierre Ossman [Fri, 10 Apr 2009 21:55:42 +0000 (23:55 +0200)]
sdhci: catch ADMA errors

We forgot to add the ADMA error bit to the list of data interrupts.

Signed-off-by: Pierre Ossman <>
10 years agommc: increase power up delay
José M. Fernández [Tue, 10 Mar 2009 01:21:21 +0000 (02:21 +0100)]
mmc: increase power up delay

The TI controller on Toshiba Tecra M5 needs more time to power up or
the cards will init incorrectly or not at all.

Signed-off-by: José M. Fernández <>
Signed-off-by: Pierre Ossman <>
10 years agosdhci-pci: bad error handling in probe function
Dan Carpenter [Fri, 10 Apr 2009 21:31:10 +0000 (23:31 +0200)]
sdhci-pci: bad error handling in probe function

The goto unmap is too early, we haven't allocated host or done the

Found by smatch (

[ Second error path fix by Pierre Ossman ]

Signed-off-by: Dan Carpenter <>
Signed-off-by: Pierre Ossman <>
10 years agommc_block: be prepared for oversized requests
Pierre Ossman [Fri, 10 Apr 2009 15:52:57 +0000 (17:52 +0200)]
mmc_block: be prepared for oversized requests

The block layer does not support very low sector count restrictions
so we need to be prepared to handle bigger requests than we can send
directly to the controller.

Problem found by Manuel Lauss.

Signed-off-by: Pierre Ossman <>
10 years agoNFS: Close page_mkwrite() races
Trond Myklebust [Fri, 24 Apr 2009 21:32:22 +0000 (17:32 -0400)]
NFS: Close page_mkwrite() races

Follow up to Nick Piggin's patches to ensure that nfs_vm_page_mkwrite
returns with the page lock held, and sets the VM_FAULT_LOCKED flag.


Signed-off-by: Trond Myklebust <>
Signed-off-by: Linus Torvalds <>
10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sat, 2 May 2009 23:52:50 +0000 (16:52 -0700)]
Merge branch 'for-linus' of git://

* 'for-linus' of git://
  xfs: fix getbmap vs mmap deadlock
  xfs: a couple getbmap cleanups
  xfs: add more checks to superblock validation
  xfs_file_last_byte() needs to acquire ilock

10 years agoMove dtc and libfdt sources from arch/powerpc/boot to scripts/dtc
David Gibson [Thu, 30 Apr 2009 05:25:53 +0000 (15:25 +1000)]
Move dtc and libfdt sources from arch/powerpc/boot to scripts/dtc

The powerpc kernel always requires an Open Firmware like device tree
to supply device information.  On systems without OF, this comes from
a flattened device tree blob.  This blob is usually generated by dtc,
a tool which compiles a text description of the device tree into the
flattened format used by the kernel.  Sometimes, the bootwrapper makes
small changes to the pre-compiled device tree blob (e.g. filling in
the size of RAM).  To do this it uses the libfdt library.

Because these are only used on powerpc, the code for both these tools
is included under arch/powerpc/boot (these were imported and are
periodically updated from the upstream dtc tree).

However, the microblaze architecture, currently being prepared for
merging to mainline also uses dtc to produce device tree blobs.  A few
other archs have also mentioned some interest in using dtc.
Therefore, this patch moves dtc and libfdt from arch/powerpc into
scripts, where it can be used by any architecture.

The vast bulk of this patch is a literal move, the rest is adjusting
the various Makefiles to use dtc and libfdt correctly from their new

Signed-off-by: David Gibson <>
Signed-off-by: Linus Torvalds <>
10 years agoMerge branch 'upstream-linus' of git://
Linus Torvalds [Sat, 2 May 2009 23:50:46 +0000 (16:50 -0700)]
Merge branch 'upstream-linus' of git://git./linux/kernel/git/jlbec/configfs

* 'upstream-linus' of git://
  configfs: Fix Trivial Warning in fs/configfs/symlink.c

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sat, 2 May 2009 23:48:32 +0000 (16:48 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/bart/ide-2.6

* 'for-linus' of git://
  ide-cd: fix REQ_QUIET tests in cdrom_decode_status

Fix up trivial conflicts in include/linux/blkdev.h

10 years agoMerge
Linus Torvalds [Sat, 2 May 2009 23:40:20 +0000 (16:40 -0700)]

* (45 commits)
  [ARM] 5489/1: ARM errata: Data written to the L2 cache can be overwritten with stale data
  [ARM] 5490/1: ARM errata: Processor deadlock when a false hazard is created
  [ARM] 5487/1: ARM errata: Stale prediction on replaced interworking branch
  [ARM] 5488/1: ARM errata: Invalidation of the Instruction Cache operation can fail
  davinci: DM644x: NAND: update partitioning
  davinci: update DM644x support in preparation for more SoCs
  davinci: DM644x: rename board file
  davinci: update pin-multiplexing support
  davinci: serial: generalize for more SoCs
  davinci: DM355 IRQ Definitions
  davinci: DM646x: add interrupt number and priorities
  davinci: PSC: Clear bits in MDCTL reg before setting new bits
  davinci: gpio bugfixes
  davinci: add EDMA driver
  davinci: timers: use clk_get_rate()
  [ARM] pxa/littleton: add missing da9034 touchscreen support
  [ARM] pxa/zylonite: configure GPIO18/19 correctly, used by 2 GPIO expanders
  [ARM] pxa/zylonite: fix the issue of unused SDATA_IN_1 pin get AC97 not working
  [ARM] pxa: make ads7846 on corgi and spitz to sync on HSYNC
  [ARM] pxa: remove unused CPU_FREQ_PXA Kconfig symbol

10 years agoMerge branch 'x86-mce-for-linus' of git://
Linus Torvalds [Sat, 2 May 2009 23:38:30 +0000 (16:38 -0700)]
Merge branch 'x86-mce-for-linus' of git://git./linux/kernel/git/x86/linux-2.6-tip

* 'x86-mce-for-linus' of git://
  x86, mce: fix boot logging logic
  x86, mce: make polling timer interval per CPU

10 years agoMerge git://
Linus Torvalds [Sat, 2 May 2009 23:36:34 +0000 (16:36 -0700)]
Merge git://git./linux/kernel/git/jejb/scsi-rc-fixes-2.6

* git:// (53 commits)
  [SCSI] libosd: OSD2r05: on-the-wire changes for latest OSD2 revision 5.
  [SCSI] libosd: OSD2r05: OSD_CRYPTO_KEYID_SIZE will grow 20 => 32 bytes
  [SCSI] libosd: OSD2r05: Prepare for rev5 attribute list changes
  [SCSI] libosd: fix potential ERR_PTR dereference in osd_initiator.c
  [SCSI] mpt2sas : bump driver version to
  [SCSI] mpt2sas: fix hotplug event processing
  [SCSI] mpt2sas : release diagnotic buffers prior host reset
  [SCSI] mpt2sas : Broadcast Primative AEN bug fix
  [SCSI] mpt2sas : Identify Dell series-7 adapters at driver load time
  [SCSI] mpt2sas : driver name needs to be in the MPT2IOCINFO ioctl
  [SCSI] mpt2sas : running out of message frames
  [SCSI] mpt2sas : fix oops when firmware sends large sense buffer size
  [SCSI] mpt2sas : the sanity check in base_interrupt needs to be on dword boundary
  [SCSI] mpt2sas : unique ioctl magic number
  [SCSI] fix sign extension with 1.5TB usb-storage LBD=y
  [SCSI] ipr: Fix sleeping function called with interrupts disabled
  [SCSI] fcoe: fip: add multicast filter to receive FIP advertisements.
  [SCSI] libfc: Fix compilation warnings with allmodconfig
  [SCSI] fcoe: fix spelling typos and bad comments
  [SCSI] fcoe: don't export functions that are internal to fcoe

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sat, 2 May 2009 23:35:45 +0000 (16:35 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/dtor/input

* 'for-linus' of git://
  Input: document the multi-touch (MT) protocol
  Input: add detailed multi-touch finger data report protocol
  Input: allow certain EV_ABS events to bypass all filtering
  Input: bcm5974 - add documentation for the driver
  Input: bcm5974 - augment debug information
  Input: bcm5974 - Add support for the Macbook 5 (Unibody)
  Input: bcm5974 - add quad-finger tapping
  Input: bcm5974 - prepare for a new trackpad header type
  Input: appletouch - fix DMA to/from stack buffer
  Input: wacom - fix TabletPC touch bug
  Input: lifebook - add DMI entry for Fujitsu B-2130
  Input: ALPS - add signature for Toshiba Satellite Pro M10
  Input: elantech - make sure touchpad is really in absolute mode
  Input: elantech - provide a workaround for jumpy cursor on firmware 2.34
  Input: ucb1400 - use disable_irq_nosync() in irq handler
  Input: tsc2007 - use disable_irq_nosync() in irq handler
  Input: sa1111ps2 - use disable_irq_nosync() in irq handlers
  Input: omap-keypad - use disable_irq_nosync() in irq handler

10 years agoSUNRPC: Fix the problem of EADDRNOTAVAIL syslog floods on reconnect
Trond Myklebust [Tue, 21 Apr 2009 21:18:20 +0000 (17:18 -0400)]
SUNRPC: Fix the problem of EADDRNOTAVAIL syslog floods on reconnect


If the port gets into a TIME_WAIT state, then we cannot reconnect without
binding to a new port.

Tested-by: Petr Vandrovec <>
Tested-by: Jean Delvare <>
Signed-off-by: Trond Myklebust <>
Signed-off-by: Linus Torvalds <>
10 years agoMerge branch 'master' of git://
Linus Torvalds [Sat, 2 May 2009 23:33:56 +0000 (16:33 -0700)]
Merge branch 'master' of git://git./linux/kernel/git/sam/kbuild-fixes

* 'master' of git://
  kbuild, modpost: Check the section flags, to catch missing "ax"/"aw"
  kbuild: fix comment in modpost.c
  kbuild: fix scripts/setlocalversion with git
  kbuild: fix Module.markers permission error under cygwin
  docs: also clean index.html
  kbuild: remove a tag file before it is regenerated
  kbuild: "make prepare" should be "make modules_prepare"
  kbuild: clean Module.markers and modules.order for out-of-tree modules
  avr32: drop unused CLEAN_FILES

10 years agoMerge branch 'upstream-linus' of git://
Linus Torvalds [Sat, 2 May 2009 23:30:47 +0000 (16:30 -0700)]
Merge branch 'upstream-linus' of git://git./linux/kernel/git/jlbec/ocfs2

* 'upstream-linus' of git://
  ocfs2: Change repository in MAINTAINERS.
  ocfs2: Fix a missing credit when deleting from indexed directories.
  ocfs2/trivial: Remove unused variable in ocfs2_rename.
  ocfs2: Add missing iput() during error handling in ocfs2_dentry_attach_lock()
  ocfs2: Fix some printk() warnings.
  ocfs2: Fix 2 warning during ocfs2 make.
  ocfs2: Reserve 1 more cluster in expanding_inline_dir for indexed dir.

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sat, 2 May 2009 23:29:47 +0000 (16:29 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/jikos/hid

* 'for-linus' of git://
  HID: fix oops in hid_check_keys_pressed()
  HID: fix possible deadlock in usbhid_close()
  HID: Fix the support for apple mini aluminium keyboard
  HID: Add support for the G25 force feedback wheel in native mode
  HID: hidraw -- fix missing unlocks in unlocked_ioctl

10 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sat, 2 May 2009 23:28:58 +0000 (16:28 -0700)]
Merge branch 'for-linus' of git://

* 'for-linus' of git://
  m32r: use __stringify() macro in assembler.h
  m32r: build fix for __stringify macro

10 years agoibft: fix the display of a few fields in the NIC attribute structure in sysfs
Ashutosh Naik [Thu, 30 Apr 2009 22:08:58 +0000 (15:08 -0700)]
ibft: fix the display of a few fields in the NIC attribute structure in sysfs

Fix the display of a few fields in the iBFT NIC attribute structure in

Ensure that, if the DHCP IP address and the subnet mask for the interface
is present in the iBFT NIC structure, the corresponding entries are
created in sysfs tree for the device.  This would hence create the
additional entries in the tree based on the iBFT table and would not
delete any existing entries.

Signed-off-by: Ashutosh Naik <>
Cc: Vishnu V <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agomm: prevent divide error for small values of vm_dirty_bytes
Andrea Righi [Thu, 30 Apr 2009 22:08:57 +0000 (15:08 -0700)]
mm: prevent divide error for small values of vm_dirty_bytes

Avoid setting less than two pages for vm_dirty_bytes: this is necessary to
avoid potential division by 0 (like the following) in get_dirty_limits().

[   49.951610] divide error: 0000 [#1] PREEMPT SMP
[   49.952195] last sysfs file: /sys/devices/pci0000:00/0000:00:01.1/host0/target0:0:0/0:0:0:0/block/sda/uevent
[   49.952195] CPU 1
[   49.952195] Modules linked in: pcspkr
[   49.952195] Pid: 3064, comm: dd Not tainted 2.6.30-rc3 #1
[   49.952195] RIP: 0010:[<ffffffff802d39a9>]  [<ffffffff802d39a9>] get_dirty_limits+0xe9/0x2c0
[   49.952195] RSP: 0018:ffff88001de03a98  EFLAGS: 00010202
[   49.952195] RAX: 00000000000000c0 RBX: ffff88001de03b80 RCX: 28f5c28f5c28f5c3
[   49.952195] RDX: 0000000000000000 RSI: 00000000000000c0 RDI: 0000000000000000
[   49.952195] RBP: ffff88001de03ae8 R08: 0000000000000000 R09: 0000000000000000
[   49.952195] R10: ffff88001ddda9a0 R11: 0000000000000001 R12: 0000000000000001
[   49.952195] R13: ffff88001fbc8218 R14: ffff88001de03b70 R15: ffff88001de03b78
[   49.952195] FS:  00007fe9a435b6f0(0000) GS:ffff8800025d9000(0000) knlGS:0000000000000000
[   49.952195] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   49.952195] CR2: 00007fe9a39ab000 CR3: 000000001de38000 CR4: 00000000000006e0
[   49.952195] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[   49.952195] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[   49.952195] Process dd (pid: 3064, threadinfo ffff88001de02000, task ffff88001ddda250)
[   49.952195] Stack:
[   49.952195]  ffff88001fa0de00 ffff88001f2dbd70 ffff88001f9fe800 000080b900000000
[   49.952195]  00000000000000c0 ffff8800027a6100 0000000000000400 ffff88001fbc8218
[   49.952195]  0000000000000000 0000000000000600 ffff88001de03bb8 ffffffff802d3ed7
[   49.952195] Call Trace:
[   49.952195]  [<ffffffff802d3ed7>] balance_dirty_pages_ratelimited_nr+0x1d7/0x3f0
[   49.952195]  [<ffffffff80368f8e>] ? ext3_writeback_write_end+0x9e/0x120
[   49.952195]  [<ffffffff802cc7df>] generic_file_buffered_write+0x12f/0x330
[   49.952195]  [<ffffffff802cce8d>] __generic_file_aio_write_nolock+0x26d/0x460
[   49.952195]  [<ffffffff802cda32>] ? generic_file_aio_write+0x52/0xd0
[   49.952195]  [<ffffffff802cda49>] generic_file_aio_write+0x69/0xd0
[   49.952195]  [<ffffffff80365fa6>] ext3_file_write+0x26/0xc0
[   49.952195]  [<ffffffff803034d1>] do_sync_write+0xf1/0x140
[   49.952195]  [<ffffffff80290d1a>] ? get_lock_stats+0x2a/0x60
[   49.952195]  [<ffffffff80280730>] ? autoremove_wake_function+0x0/0x40
[   49.952195]  [<ffffffff8030411b>] vfs_write+0xcb/0x190
[   49.952195]  [<ffffffff803042d0>] sys_write+0x50/0x90
[   49.952195]  [<ffffffff8022ff6b>] system_call_fastpath+0x16/0x1b
[   49.952195] Code: 00 00 00 2b 05 09 1c 17 01 48 89 c6 49 0f af f4 48 c1 ee 02 48 89 f0 48 f7 e1 48 89 d6 31 d2 48 c1 ee 02 48 0f af 75 d0 48 89 f0 <48> f7 f7 41 8b 95 ac 01 00 00 48 89 c7 49 0f af d4 48 c1 ea 02
[   49.952195] RIP  [<ffffffff802d39a9>] get_dirty_limits+0xe9/0x2c0
[   49.952195]  RSP <ffff88001de03a98>
[   50.096523] ---[ end trace 008d7aa02f244d7b ]---

Signed-off-by: Andrea Righi <>
Cc: Peter Zijlstra <>
Cc: David Rientjes <>
Cc: Dave Chinner <>
Cc: Christoph Lameter <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agovmscan: avoid multiplication overflow in shrink_zone()
Andrew Morton [Thu, 30 Apr 2009 22:08:55 +0000 (15:08 -0700)]
vmscan: avoid multiplication overflow in shrink_zone()

Local variable `scan' can overflow on zones which are larger than

(2G * 4k) / 100 = 80GB.

Making it 64-bit on 64-bit will fix that up.

Cc: KOSAKI Motohiro <>
Cc: Wu Fengguang <>
Cc: Peter Zijlstra <>
Cc: Rik van Riel <>
Cc: Lee Schermerhorn <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agoptrace: s/parent/real_parent/ in binfmt_elf_fdpic.c
Oleg Nesterov [Thu, 30 Apr 2009 22:08:54 +0000 (15:08 -0700)]
ptrace: s/parent/real_parent/ in binfmt_elf_fdpic.c

->real_parent is the parent. ->parent may be the tracer.

Signed-off-by: Oleg Nesterov <>
Acked-by: David Howells <>
Acked-by: Roland McGrath <>
Cc: Greg Ungerer <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agokernel-doc: restrict syntax for private: and public:
Randy Dunlap [Thu, 30 Apr 2009 22:08:53 +0000 (15:08 -0700)]
kernel-doc: restrict syntax for private: and public:

scripts/kernel-doc can (incorrectly) delete struct members that are
surrounded by /* ...  */ <struct members> /* ...  */ if there is a /*
private: */ comment in there somewhere also.

Fix that by making the "/* private:" only allow whitespace between /* and
"private:", not anything/everything in the world.

This fixes some erroneous kernel-doc warnings that popped up while
processing include/linux/usb/composite.h.

Signed-off-by: Randy Dunlap <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agomm: fix Committed_AS underflow on large NR_CPUS environment
KOSAKI Motohiro [Thu, 30 Apr 2009 22:08:51 +0000 (15:08 -0700)]
mm: fix Committed_AS underflow on large NR_CPUS environment

The Committed_AS field can underflow in certain situations:

>         # while true; do cat /proc/meminfo  | grep _AS; sleep 1; done | uniq -c
>               1 Committed_AS: 18446744073709323392 kB
>              11 Committed_AS: 18446744073709455488 kB
>               6 Committed_AS:    35136 kB
>               5 Committed_AS: 18446744073709454400 kB
>               7 Committed_AS:    35904 kB
>               3 Committed_AS: 18446744073709453248 kB
>               2 Committed_AS:    34752 kB
>               9 Committed_AS: 18446744073709453248 kB
>               8 Committed_AS:    34752 kB
>               3 Committed_AS: 18446744073709320960 kB
>               7 Committed_AS: 18446744073709454080 kB
>               3 Committed_AS: 18446744073709320960 kB
>               5 Committed_AS: 18446744073709454080 kB
>               6 Committed_AS: 18446744073709320960 kB

Because NR_CPUS can be greater than 1000 and meminfo_proc_show() does
not check for underflow.

But NR_CPUS proportional isn't good calculation.  In general,
possibility of lock contention is proportional to the number of online
cpus, not theorical maximum cpus (NR_CPUS).

The current kernel has generic percpu-counter stuff.  using it is right
way.  it makes code simplify and percpu_counter_read_positive() don't
make underflow issue.

Reported-by: Dave Hansen <>
Signed-off-by: KOSAKI Motohiro <>
Cc: Eric B Munson <>
Cc: Mel Gorman <>
Cc: Christoph Lameter <>
Cc: <> [All kernel versions]
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
10 years agoof: make of_(un)register_platform_driver common code
Grant Likely [Thu, 30 Apr 2009 22:08:50 +0000 (15:08 -0700)]
of: make of_(un)register_platform_driver common code

Some drivers using of_register_platform_driver() wrapper break on sparc
because the wrapper isn't in the header file.  This patch moves it from
Microblaze and PowerPC implementations and makes it common code.

Fixes this sparc64 allmodconfig build error (at least):

drivers/leds/leds-gpio.c: In function `gpio_led_init':
drivers/leds/leds-gpio.c:295: error: implicit declaration of function `of_register_platform_driver'
drivers/leds/leds-gpio.c: In function `gpio_led_exit':
drivers/leds/leds-gpio.c:311: error: implicit declaration of function `of_unregister_platform_driver'

Signed-off-by: Grant Likely <>
Acked-by: David S. Miller <>
Cc: Michal Simek <>
Cc: Benjamin Herrenschmidt <>
Cc: Stephen Rothwell <>
Cc: Richard Purdie <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>