Commit graph

39258 commits

Author SHA1 Message Date
Paul Mundt
f9967e23c1 sh: flag the default unwinder as reliable.
This flags the default unwinder as reliable, as it tends to be reliable
enough for the purposes of the stacktrace buffer. We leave the unreliable
cases for the unwind methods that we know to be completely broken.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2009-08-15 01:09:03 +09:00
Paul Mundt
48e4d4604b sh: stacktrace: Add reliability checks in address saving ops.
This adopts the reliability checks from the x86 stacktrace code so known
bad addresses are not recorded in the stack trace buffer.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2009-08-15 01:05:46 +09:00
Paul Mundt
0fc11e3618 sh: unwinder: Convert frame allocations to GFP_ATOMIC.
save_stack_trace_tsk() and friends can be called from atomic context (as
triggered by latencytop), and subsequently hit two problematic allocation
points that were using GFP_KERNEL (these were dwarf_unwind_stack() and
dwarf_frame_alloc_regs()). Convert these over to GFP_ATOMIC and get
latencytop working with the DWARF unwinder.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2009-08-14 23:58:37 +09:00
Ben Dooks
b282e29b54 Merge branch 'next-s3c64xx-moves' into next-s3c 2009-08-14 15:24:06 +01:00
Ben Dooks
c378aa275e Merge branch 'next-s3c64xx' into next-s3c 2009-08-14 15:24:01 +01:00
Ben Dooks
215ed3236a Merge branch 'next-s3c24xx-cpufreq' into next-s3c 2009-08-14 15:23:45 +01:00
Ben Dooks
0fbdd27007 Merge branch 'next-s3c24xx' into next-s3c 2009-08-14 15:23:34 +01:00
Ben Dooks
69e3728967 Merge branch 'next-s3c-machines' into next-s3c 2009-08-14 15:23:22 +01:00
Ben Dooks
63c949ea1d Merge branch 'next-s3c-hwmon' into next-s3c 2009-08-14 15:23:15 +01:00
Sascha Hauer
c35d3a4181 mx21ads: Fix framebuffer platform data
struct imx_fb_platform_data has changed and the mx21ads was
forgotten to change. Fix it.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:41:16 +02:00
Sascha Hauer
f6d2fa7dcb MX21: Compilation fix for devices.c
The OTG devices are only available on i.MX27, so ifdef
them out for i.MX21.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:41:15 +02:00
Valentin Longchamp
2718c15c5f mx31moboard: two GPIOS are used to reset other microcontrolers on the robot
Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:41:13 +02:00
Valentin Longchamp
8b1a540c24 mx31moboard: initialize 4 input gpios for mx31moboard
These gpios are exported to userspace and are here to be used as
a selector

Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:41:11 +02:00
Valentin Longchamp
77aa561db1 mx31moboard: support for the 4 leds used on mx31moboard
Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:41:10 +02:00
Valentin Longchamp
4bd1527a64 mx31: define various GPIOs used on mx31moboard
Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:41:09 +02:00
Luotao Fu
e0fd4db372 pcm037: mux configuration for predefined gpio line
Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
2009-08-14 12:41:08 +02:00
Luotao Fu
8d5c1ed3f6 pcm043: mux configuration for predefined gpio line
Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
2009-08-14 12:41:06 +02:00
Luotao Fu
0160651a65 pcm038: mux configuration for predefined gpio line
Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
2009-08-14 12:41:04 +02:00
Sascha Hauer
3fd2691a1d MX31 Fix spi clock names
Fix the SPI clock names to match the device names.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:41:03 +02:00
Sascha Hauer
7bc07ebc7d mx3x: Fixup USB base addresses
The i.MX31 and the i.MX35 have different USB base addresses. Adjust
the resources accordingly.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:41:01 +02:00
Luotao Fu
337316986f mx27: add support for phytec pca100 (phyCARD-s) board
Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:59 +02:00
Sascha Hauer
547270a3b9 i.MX35 clock support: Add USB clocks
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:57 +02:00
Sascha Hauer
d37ba97d49 MX31: add spi controller devices/resources
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:54 +02:00
Sascha Hauer
f420db843b MX2: Add SPI devices/resources
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:52 +02:00
Valentin Longchamp
88b0564717 mx31moboard: move usb otg support back to moboard common file
since all boards finally have this device

Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:50 +02:00
Valentin Longchamp
b23f1534bb mx31moboard: added usb xcvr reset for mx31moboard
Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:49 +02:00
Valentin Longchamp
89829d5fe3 mx31: added one more pin definition
Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:48 +02:00
Dmitriy Taychenachev
94da274b49 MXC: add iomux pins configuration support for MXC91231
Signed-off-by: Dmitriy Taychenachev <dimichxp@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:47 +02:00
Dmitriy Taychenachev
fd6ac7bb9d MXC: add basic MXC91231 support
Signed-off-by: Dmitriy Taychenachev <dimichxp@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:46 +02:00
Lothar Waßmann
8e5be212cb i.MX25 iomux definitions (corrected version)
Signed-off-by: Lothar Wassmann <LW@KARO-electronics.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:45 +02:00
Sascha Hauer
cf983c93ae fix mx35 wrong clock
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:44 +02:00
Sascha Hauer
635baf6b40 Freescale i.MX25 PDK (3ds) board support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:43 +02:00
Sascha Hauer
8c25c36f33 Add i.MX25 support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:42 +02:00
Sascha Hauer
a058cbc179 mxc pwm: add mx25 support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:41 +02:00
Sascha Hauer
6134b2cbb0 iomux-v3: Allow for a runtime base address
also, check for a valid pad_ctrl_ofs before changing the
pad control register.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:41 +02:00
Sascha Hauer
fc2a9f0bc7 MXC: i.MX25 timer support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:40 +02:00
Sascha Hauer
12b8eb8652 MXC: use variable for irq controller base in entry-macro.S
This allows us to determine the irq controller base address
on runtime.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:39 +02:00
Daniel Mack
c372a5cf4c ARM: MX3: add ckil clock
The CKIL clock source is used by the upcoming RTC driver, so we need
to export it.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:40:38 +02:00
Sascha Hauer
cf87a6e2fe ARM: mxc: Fix i2c_board_info definitions
Fix i2c_board_info definitions - we were defining the 'type' field
of these structures twice since the first argument of I2C_BOARD_INFO
sets this field.  Move the second definition into I2C_BOARD_INFO().

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Jean Delvare <khali@linux-fr.org>
2009-08-14 12:40:37 +02:00
Valentin Longchamp
563abb4be1 mx31moboard: invert sdhc ro signal sense
Small confusion with our hardware engineer, the WP signal (RO) is
active low on our boards, the signal has to inverted.

This is a pretty straightforward patch, it could even go to -rc,
but if not, then push it for 2.6.32.

Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2009-08-14 12:33:23 +02:00
Tejun Heo
c2a7e81801 powerpc64: convert to dynamic percpu allocator
Now that percpu allows arbitrary embedding of the first chunk,
powerpc64 can easily be converted to dynamic percpu allocator.
Convert it.  powerpc supports several large page sizes.  Cap atom_size
at 1M.  There isn't much to gain by going above that anyway.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2009-08-14 15:00:53 +09:00
Tejun Heo
bcb2107fdb sparc64: use embedding percpu first chunk allocator
sparc64 currently allocates a large page for each cpu and partially
remap them into vmalloc area much like what lpage first chunk
allocator did.  As a 4M page is used for each cpu, this results in
very large unit size and also adds TLB pressure due to the double
mapping of pages in the first chunk.

This patch converts sparc64 to use the embedding percpu first chunk
allocator which now knows how to handle NUMA configurations.  This
simplifies the code a lot, doesn't incur any extra TLB pressure and
results in better utilization of address space.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: David S. Miller <davem@davemloft.net>
2009-08-14 15:00:53 +09:00
Tejun Heo
e933a73f48 percpu: kill lpage first chunk allocator
With x86 converted to embedding allocator, lpage doesn't have any user
left.  Kill it along with cpa handling code.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Jan Beulich <JBeulich@novell.com>
2009-08-14 15:00:53 +09:00
Tejun Heo
4518e6a0c0 x86,percpu: use embedding for 64bit NUMA and page for 32bit NUMA
Embedding percpu first chunk allocator can now handle very sparse unit
mapping.  Use embedding allocator instead of lpage for 64bit NUMA.
This removes extra TLB pressure and the need to do complex and fragile
dancing when changing page attributes.

For 32bit, using very sparse unit mapping isn't a good idea because
the vmalloc space is very constrained.  32bit NUMA machines aren't
exactly the focus of optimization and it isn't very clear whether
lpage performs better than page.  Use page first chunk allocator for
32bit NUMAs.

As this leaves setup_pcpu_*() functions pretty much empty, fold them
into setup_per_cpu_areas().

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Andi Kleen <andi@firstfloor.org>
2009-08-14 15:00:52 +09:00
Tejun Heo
c8826dd538 percpu: update embedding first chunk allocator to handle sparse units
Now that percpu core can handle very sparse units, given that vmalloc
space is large enough, embedding first chunk allocator can use any
memory to build the first chunk.  This patch teaches
pcpu_embed_first_chunk() about distances between cpus and to use
alloc/free callbacks to allocate node specific areas for each group
and use them for the first chunk.

This brings the benefits of embedding allocator to NUMA configurations
- no extra TLB pressure with the flexibility of unified dynamic
allocator and no need to restructure arch code to build memory layout
suitable for percpu.  With units put into atom_size aligned groups
according to cpu distances, using large page for dynamic chunks is
also easily possible with falling back to reuglar pages if large
allocation fails.

Embedding allocator users are converted to specify NULL
cpu_distance_fn, so this patch doesn't cause any visible behavior
difference.  Following patches will convert them.

Signed-off-by: Tejun Heo <tj@kernel.org>
2009-08-14 15:00:52 +09:00
Tejun Heo
fb435d5233 percpu: add pcpu_unit_offsets[]
Currently units are mapped sequentially into address space.  This
patch adds pcpu_unit_offsets[] which allows units to be mapped to
arbitrary offsets from the chunk base address.  This is necessary to
allow sparse embedding which might would need to allocate address
ranges and memory areas which aren't aligned to unit size but
allocation atom size (page or large page size).  This also simplifies
things a bit by removing the need to calculate offset from unit
number.

With this change, there's no need for the arch code to know
pcpu_unit_size.  Update pcpu_setup_first_chunk() and first chunk
allocators to return regular 0 or -errno return code instead of unit
size or -errno.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: David S. Miller <davem@davemloft.net>
2009-08-14 15:00:51 +09:00
Tejun Heo
fd1e8a1fe2 percpu: introduce pcpu_alloc_info and pcpu_group_info
Till now, non-linear cpu->unit map was expressed using an integer
array which maps each cpu to a unit and used only by lpage allocator.
Although how many units have been placed in a single contiguos area
(group) is known while building unit_map, the information is lost when
the result is recorded into the unit_map array.  For lpage allocator,
as all allocations are done by lpages and whether two adjacent lpages
are in the same group or not is irrelevant, this didn't cause any
problem.  Non-linear cpu->unit mapping will be used for sparse
embedding and this grouping information is necessary for that.

This patch introduces pcpu_alloc_info which contains all the
information necessary for initializing percpu allocator.
pcpu_alloc_info contains array of pcpu_group_info which describes how
units are grouped and mapped to cpus.  pcpu_group_info also has
base_offset field to specify its offset from the chunk's base address.
pcpu_build_alloc_info() initializes this field as if all groups are
allocated back-to-back as is currently done but this will be used to
sparsely place groups.

pcpu_alloc_info is a rather complex data structure which contains a
flexible array which in turn points to nested cpu_map arrays.

* pcpu_alloc_alloc_info() and pcpu_free_alloc_info() are provided to
  help dealing with pcpu_alloc_info.

* pcpu_lpage_build_unit_map() is updated to build pcpu_alloc_info,
  generalized and renamed to pcpu_build_alloc_info().
  @cpu_distance_fn may be NULL indicating that all cpus are of
  LOCAL_DISTANCE.

* pcpul_lpage_dump_cfg() is updated to process pcpu_alloc_info,
  generalized and renamed to pcpu_dump_alloc_info().  It now also
  prints which group each alloc unit belongs to.

* pcpu_setup_first_chunk() now takes pcpu_alloc_info instead of the
  separate parameters.  All first chunk allocators are updated to use
  pcpu_build_alloc_info() to build alloc_info and call
  pcpu_setup_first_chunk() with it.  This has the side effect of
  packing units for sparse possible cpus.  ie. if cpus 0, 2 and 4 are
  possible, they'll be assigned unit 0, 1 and 2 instead of 0, 2 and 4.

* x86 setup_pcpu_lpage() is updated to deal with alloc_info.

* sparc64 setup_per_cpu_areas() is updated to build alloc_info.

Although the changes made by this patch are pretty pervasive, it
doesn't cause any behavior difference other than packing of sparse
cpus.  It mostly changes how information is passed among
initialization functions and makes room for more flexibility.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: David Miller <davem@davemloft.net>
2009-08-14 15:00:51 +09:00
Tejun Heo
3cbc856527 percpu: add @align to pcpu_fc_alloc_fn_t
pcpu_fc_alloc_fn_t is about to see more interesting usage, add @align
parameter.

Signed-off-by: Tejun Heo <tj@kernel.org>
2009-08-14 15:00:50 +09:00
Tejun Heo
9a7737691e percpu: drop @static_size from first chunk allocators
First chunk allocators assume percpu areas have been linked using one
of PERCPU_*() macros and depend on __per_cpu_load symbol defined by
those macros, so there isn't much point in passing in static area size
explicitly when it can be easily calculated from __per_cpu_start and
__per_cpu_end.  Drop @static_size from all percpu first chunk
allocators and helpers.

Signed-off-by: Tejun Heo <tj@kernel.org>
2009-08-14 15:00:50 +09:00
Tejun Heo
f58dc01ba2 percpu: generalize first chunk allocator selection
Now that all first chunk allocators are in mm/percpu.c, it makes sense
to make generalize percpu_alloc kernel parameter.  Define PCPU_FC_*
and set pcpu_chosen_fc using early_param() in mm/percpu.c.  Arch code
can use the set value to determine which first chunk allocator to use.

Signed-off-by: Tejun Heo <tj@kernel.org>
2009-08-14 15:00:50 +09:00