Commit Graph

119349 Commits

Author SHA1 Message Date
Russell King 3a72d8aeb7 [ARM] footbridge: mach/hardware.h doesn't require mach/memory.h
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 22:08:10 +00:00
Russell King 326878173b [ARM] footbridge: avoid polluting the kernel's namespace
Avoid unnecessarily pollution of the kernel's namespace by avoiding
mach/hardware.h in mach/io.h.  Include this header file where necessary.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 16:55:32 +00:00
Russell King 325045fa53 [ARM] aaec2000: avoid polluting the kernel's namespace
Avoid unnecessarily pollution of the kernel's namespace by avoiding
mach/hardware.h in mach/io.h.  Include this header file where necessary.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 16:39:35 +00:00
Russell King fa44c9e21f [ARM] lh7a40x: avoid polluting the kernel's namespace
Avoid unnecessarily pollution of the kernel's namespace by avoiding
mach/hardware.h in mach/io.h.  Include this header file where necessary.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 16:39:04 +00:00
Russell King 275c8a21db [ARM] l7200: avoid polluting the kernel's namespace
Avoid unnecessarily pollution of the kernel's namespace by avoiding
mach/hardware.h in mach/io.h.  Include this header file where necessary.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 16:26:53 +00:00
Russell King 459fd555f4 [ARM] h720x: avoid polluting the kernel's namespace
Avoid unnecessarily pollution of the kernel's namespace by avoiding
mach/hardware.h in mach/io.h.  Include this header file where necessary.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 16:20:29 +00:00
Russell King 1e14937eed [ARM] imx: avoid polluting the kernel's namespace
Avoid unnecessarily pollution of the kernel's namespace by avoiding
mach/hardware.h in mach/io.h.  Include this header file where necessary.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 16:13:44 +00:00
Russell King 05678a96de [ARM] pxa: avoid polluting the kernel's namespace
Avoid unnecessarily pollution of the kernel's namespace by avoiding
mach/hardware.h.  Include this header file where necessary.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 16:04:54 +00:00
Russell King 6de2c31d3d [ARM] rpc: remove obsolete IO accessors
Remove __arch_base_xxx() and __ioaddrc() macros; they're obsolete and
unused.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:49:11 +00:00
Russell King ccaec3ec78 [ARM] versatile: remove IRQ mask definitions
These definitions are unused and serve no purpose with genirq.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:43:51 +00:00
Russell King 7ef4de17cc Merge branch 'highmem' into devel
Conflicts:

	arch/arm/mach-clps7500/include/mach/memory.h
2008-11-28 15:39:02 +00:00
Nicolas Pitre b5ee900258 [ARM] remove a common set of __virt_to_bus definitions
Let's provide an overridable default instead of having every machine
class define __virt_to_bus and __bus_to_virt to the same thing.  What
most platforms are using is bus_addr == phys_addr so such is the default.

One exception is ebsa110 which has no DMA what so ever, so the actual
definition is not important except only for proper compilation.  Also
added a comment about the special footbridge bus translation.

Let's also remove comments alluding to set_dma_addr which is not
(and should not) be commonly used.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:36:49 +00:00
Nicolas Pitre 75f4aa15cf [ARM] unconditionally define __virt_to_phys and __phys_to_virt
There is no machine class overriding this.  If non linear translations
are implemented again for some machines then this could be restored at
that time.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:36:48 +00:00
Nicolas Pitre 252d4c276d [ARM] remove bogus #ifdef CONFIG_HIGHMEM in show_pte()
The restriction on !CONFIG_HIGHMEM is unneeded since page tables are
currently never allocated with highmem pages, and actually disable PTE
dump whenever highmem is configured.  Let's have a dynamic test to better
describe the current limitation instead.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:36:47 +00:00
Nicolas Pitre 9210807cb5 [ARM] prevent the vmalloc cmdline argument from eating all memory
Commit 8d5796d2ec allows for the vmalloc
area to be resized from the kernel cmdline.  Make sure it cannot overlap
with RAM entirely.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:36:47 +00:00
Nicolas Pitre 6db015e49c [ARM] mem_init() cleanups
Make free_area() arguments pfn based, and return number of freed pages.
This will simplify highmem initialization later.

Also, codepages, datapages and initpages are actually codesize, datasize
and initsize.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:36:46 +00:00
Nicolas Pitre a1bbaec0cd [ARM] split highmem into its own memory bank
Doing so will greatly simplify the bootmem initialization code as each
bank is therefore entirely lowmem or highmem with no crossing between
those zones.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:36:45 +00:00
Nicolas Pitre 4b5f32cee0 [ARM] rationalize memory configuration code some more
Currently there are two instances of struct meminfo: one in
kernel/setup.c marked __initdata, and another in mm/init.c with
permanent storage.  Let's keep only the later to directly populate
the permanent version from arm_add_memory().

Also move common validation tests between the MMU and non-MMU cases
into arm_add_memory() to remove some duplication.  Protection against
overflowing the membank array is also moved in there in order to cover
the kernel cmdline parsing path as well.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:36:44 +00:00
Nicolas Pitre 43ae286b7d [ARM] fix a couple clear_user_highpage assembly constraints
In all cases the kaddr is assigned an input register even though it is
modified in the assembly code.  Let's assign a new variable to the
modified value and mark those inline asm with volatile otherwise they
get optimized away because the output variable is otherwise not used.

Also fix a few conversion errors in copypage-feroceon.c and
copypage-v4mc.c.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28 15:36:43 +00:00
Russell King 303c644365 [ARM] clearpage: provide our own clear_user_highpage()
For similar reasons as copy_user_page(), we want to avoid the
additional kmap_atomic if it's unnecessary.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-27 23:53:48 +00:00
Russell King 063b0a4207 [ARM] copypage: provide our own copy_user_highpage()
We used to override the copy_user_page() function.  However, this
is not only inefficient, it also causes additional complexity for
highmem support, since we convert from a struct page to a kernel
direct mapped address and back to a struct page again.

Moreover, with highmem support, we end up pointlessly setting up
kmap entries for pages which we're going to remap.  So, push the
kmapping down into the copypage implementation files where it's
required.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-27 23:53:47 +00:00
Russell King d73e60b714 [ARM] copypage: convert assembly files to C
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-27 23:53:46 +00:00
Russell King 487ff32082 Allow architectures to override copy_user_highpage()
With aliasing VIPT cache support, the ARM implementation of
clear_user_page() and copy_user_page() sets up a temporary kernel space
mapping such that we have the same cache colour as the userspace page.
This avoids having to consider any userspace aliases from this operation.

However, when highmem is enabled, kmap_atomic() have to setup mappings.
The copy_user_highpage() and clear_user_highpage() call these functions
before delegating the copies to copy_user_page() and clear_user_page().

The effect of this is that each of the *_user_highpage() functions setup
their own kmap mapping, followed by the *_user_page() functions setting
up another mapping.  This is rather wasteful.

Thankfully, copy_user_highpage() can be overriden by architectures by
defining __HAVE_ARCH_COPY_USER_HIGHPAGE.  However, replacement of
clear_user_highpage() is more difficult because its inline definition
is not conditional.  It seems that you're expected to define
__HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE and provide a replacement
__alloc_zeroed_user_highpage() implementation instead.

The allocation itself is fine, so we don't want to override that.  What
we really want to do is to override clear_user_highpage() with our own
version which doesn't kmap_atomic() unnecessarily.

Other VIPT architectures (PARISC and SH) would also like to override
this function as well.

Acked-by: Hugh Dickins <hugh@veritas.com>
Acked-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Acked-by: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-27 23:39:48 +00:00
Russell King f412b09f4e Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 into devel 2008-11-27 12:42:48 +00:00
Russell King 31bccbf392 Merge branch 'clps7500' into devel
Conflicts:

	arch/arm/Kconfig
2008-11-27 12:39:43 +00:00