Commit graph

2200 commits

Author SHA1 Message Date
Stephen Rothwell 7b875f4dc3 powerpc: Make powerpc pmac 32 bit build again
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 09:40:24 +10:00
Stephen Rothwell d223e721b7 powerpc: Move viopath.c to powerpc/platforms/iseries
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 03:12:35 +10:00
Stephen Rothwell b6b8681843 powerpc: Move iSeries_smp.c to powerpc/platforms/iseries
And rename it to smp.c.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 03:07:14 +10:00
Stephen Rothwell ed7f2c05de powerpc: Move iSeries_vio.c to powerpc/platforms/iseries
And rename it to vio.c.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 03:03:00 +10:00
Stephen Rothwell da3420fcd6 powerpc: Move iSeries_VpdInfo.c to powerpc/platforms/iseries
And rename it to vpdinfo.c.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 02:59:19 +10:00
Stephen Rothwell cb4cf8056e powerpc: Move iSeries_irq.c to powerpc/platorms/iseries
And rename it to irq.c.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 02:54:39 +10:00
Stephen Rothwell d387899f3f powerpc: Move iSeries_pci.c to powerpc/platform/iseries
and rename it to pci.c.  This also required moving
arch/ppc64/kernel/pci.h into include/asm-powerpc (called
ppc-pci.h.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 02:50:25 +10:00
Stephen Rothwell cc14d43083 powerpc: Move iSeries_iommu.c to powerpc/platforms/iseries
And rename it to iommu.c

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 02:32:16 +10:00
Stephen Rothwell e508f438e0 powerpc: Move iSeries_htab.c to powerpc/platforms/iseries
And rename it to htab.c

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 02:28:45 +10:00
Stephen Rothwell cb5c7980ab powerpc: move iSeries_proc.c to powerpc/platforms/iseries
And renamed it to proc.c

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 02:24:05 +10:00
Stephen Rothwell 544cbbaed4 powerpc: Merge HvLpEvent.c into lpevents.c
These two files were intimately connected, so just merge them.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 02:18:47 +10:00
Stephen Rothwell 99a2379cdd powerpc: move hvCall.s to powerpc/platforms/iseries
Rename it to hvcall.S and (so I can do that) rename hvcall.c
to hvlog.c - a more appropriate name.

Do some white space cleanups.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 00:17:40 +10:00
Stephen Rothwell 2952bc7c89 powerpc: move ItLpQueue.c to powerpc/platforms/iseries
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-28 00:03:46 +10:00
Stephen Rothwell c8b84976f8 powerpc: move iSeries_setup.[ch] and mf.c into platforms/iseries
iSeries_setup.c becomes setup.c
iSeries_setup.h becomes setup.h
mf.c retains its name

Also moved iSeries_[gs]et_rtc_time and iSeries_get_boot_time into
mf.c since they are just small wrappers around mf_ functions.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-27 18:44:42 +10:00
Stephen Rothwell 2960eb661a powerpc: Move LparData.c to powerpc platforms
Also rename it to lpardata.c

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-27 17:24:54 +10:00
Stephen Rothwell acdbec1b89 powerpc: Move HvLpConfig.c to powerpc arch
Also rename it to hvlpconfig.c

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-27 17:24:37 +10:00
Stephen Rothwell ba0dd617a3 powerpc: Create arch/powerpc/platforms/iseries
I also move arch/ppc64/kernel/HvCall.c to
arch/powerpc/platforms/iseries/hvcall.c.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-27 17:23:00 +10:00
Stephen Rothwell bbeb3f4c55 powerpc: clean up after powermac build merge
Complete moving arch/ppc64/kernel/mpic.h,
        include/asm-ppc/reg.h, include/asm-ppc64/kdebug.h
	        and include/asm-ppc64/kprobes.h
Add arch/powerpc/platforms/Makefile and use it from
	arch/powerpc/Makefile
Introduce OLDARCH temporarily so we can point back to
	the originating architecture

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-27 13:51:59 +10:00
Paul Mackerras 51a0885ed7 Merge refs/heads/devtree from rsync://oak/kernels/iseries/work/.git 2005-09-26 16:20:49 +10:00
Paul Mackerras 14cf11af6c powerpc: Merge enough to start building in arch/powerpc.
This creates the directory structure under arch/powerpc and a bunch
of Kconfig files.  It does a first-cut merge of arch/powerpc/mm,
arch/powerpc/lib and arch/powerpc/platforms/powermac.  This is enough
to build a 32-bit powermac kernel with ARCH=powerpc.

For now we are getting some unmerged files from arch/ppc/kernel and
arch/ppc/syslib, or arch/ppc64/kernel.  This makes some minor changes
to files in those directories and files outside arch/powerpc.

The boot directory is still not merged.  That's going to be interesting.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-09-26 16:04:21 +10:00
Paul Mackerras e5baa396af Merge from Linus' tree. 2005-09-25 22:51:50 +10:00
Russell King d2f607484f [ARM] Fix compiler warnings for memcpy_toio/memcpy_fromio/memset_io
Add 'volatile' to the __iomem pointers for these functions as
per x86.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2005-09-24 10:42:06 +01:00
Linus Torvalds 7f28f394bd Merge master.kernel.org:/home/rmk/linux-2.6-arm 2005-09-23 14:01:52 -07:00
Russell King 73394322a4 [ARM] Fix context switch with ARMv6 + TLS
We accidentally corrupted the TLS value when clearing out the ARMv6
exclusive monitor.  Avoid doing so.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2005-09-23 21:49:58 +01:00
Benjamin Herrenschmidt 67b108131d [PATCH] ppc64: Fix huge pages MMU mapping bug
Current kernel has a couple of sneaky bugs in the ppc64 hugetlb code that
cause huge pages to be potentially left stale in the hash table and TLBs
(improperly invalidated), with all the nasty consequences that can have.

One is that we forgot to set the "secondary" bit in the hash PTEs when
hashing a huge page in the secondary bucket (fortunately very rare).

The other one is on non-LPAR machines (like Apple G5s), flush_hash_range()
which is used to flush a batch of PTEs simply did not work for huge pages.
Historically, our huge page code didn't batch, but this was changed without
fixing this routine.  This patch fixes both.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-23 13:35:36 -07:00
Chris Zankel 288a60cf4d [PATCH] xtensa: remove io_remap_page_range and minor clean-ups
Remove io_remap_page_range() from all of Linux 2.6.x (as requested and
suggested by Randy Dunlap) and minor clean-ups.

Signed-off-by: Chris Zankel <chris@zankel.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:37 -07:00
Paolo 'Blaisorblade' Giarrusso fac97ae0b1 [PATCH] uml: replace printk with "stack-friendly" printf - to report console failure
User get *a lot* confused when consoles don't work but we don't report
anything.  And, as reported in the comment, using printk to report "your
console doesn't work" isn't likely to go that far.

Fix the problem on the base of this: stack consumption by host printf().  Use
kernel sprintf() and os_write_file, using a wild guess that one page will be
enough for the message, to preallocate the buffer with kmalloc().

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:37 -07:00
Paolo 'Blaisorblade' Giarrusso 79ae2cb856 [PATCH] uml: use GFP_ATOMIC for allocations under spinlocks.
setup_initial_poll is only called with sigio_lock() held, so use appropriate
allocation.

Also, parse_chan() can also be called when holding a spinlock (see line_open()
 -> parse_chan_pair()).

I have sporadic problems (spinlock taken twice, with spinlock debugging on UP)
which could be caused by a sequence like "take spinlock, alloc and go to
sleep, take again the spinlock in the other thread".

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:37 -07:00
Paolo 'Blaisorblade' Giarrusso 46db4a42dd [PATCH] uml: Fix GFP_ flags usage
GFP_ATOMIC | GFP_KERNEL is meaningless and won't work.  Actually it never
worked, even in 2.4.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:37 -07:00
Paolo 'Blaisorblade' Giarrusso fea03cb40a [PATCH] uml: avoid fixing faults while atomic
Following i386, we should maybe refuse trying to fault in pages when we're
doing atomic operations, because to handle the fault we could need to take
already taken spinlocks.

Also, if we're doing an atomic operation (in the sense of in_atomic()) we're
surely in kernel mode and we're surely going to handle adequately the failed
fault, so it's safe to behave this way.

Currently, on UML SMP is rarely used, and we don't support PREEMPT, so this is
unlikely to create problems right now, but it might in the future.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:36 -07:00
Paolo 'Blaisorblade' Giarrusso 12ebcd73e4 [PATCH] uml: run mconsole "sysrq" in process context
Things are breaking horribly with sysrq called in interrupt context.  I want
to try to fix it, but probably this is simpler.  To tell the truth, sysrq is
normally run in interrupt context, so there shouldn't be any problem.

There's also a warning from the fault handler because it's run in atomic
context (I have a patch for that, only I deferred it).  This is why I'm doing
this.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:36 -07:00
Paolo 'Blaisorblade' Giarrusso dc36abf34e [PATCH] uml: fix condition in tlb flush
Avoid setting w = 0 twice.  Spotted this (trivial) thing which is needed for
another patch.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:36 -07:00
Paolo 'Blaisorblade' Giarrusso 546fe1cbf9 [PATCH] uml: fix hang in TT mode on fault
The current code doesn't handle well general protection faults on the host -
it thinks that cr2 is always the address of a page fault.  While actually, on
general protection faults, that address is not accessible, so we'd better
assume we couldn't satisfy the fault.  Currently instead we think we've fixed
it, so we go back, retry the instruction and fault again endlessly.

This leads to the kernel hanging when doing copy_from_user(dest, -1, ...) in
TT mode, since reading *(-1) causes a GFP, and we don't support kernel
preemption.

Thanks to Luo Xin for testing UML with LTP and reporting the failures he got.

Cc: Luo Xin <luothing@sina.com>
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:36 -07:00
Paolo 'Blaisorblade' Giarrusso a8bfb94c58 [PATCH] strlcat: use for uml umid.c
Simplify the code by using strlcat() instead of strncat() and manual
appending.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:36 -07:00
Paolo 'Blaisorblade' Giarrusso 3a02d6c051 [PATCH] uml: don't remove umid files in conflict case
Only remove the UML pidfile and management socket if we created them.
Currently in case two UMLs are started with the same umid, the second will
remove the first's ones.

Probably we should also panic() at that point, not sure however.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:36 -07:00
Benjamin Herrenschmidt 0365ba7fb1 [PATCH] ppc64: SMU driver update & i2c support
The SMU is the "system controller" chip used by Apple recent G5 machines
including the iMac G5.  It drives things like fans, i2c busses, real time
clock, etc...

The current kernel contains a very crude driver that doesn't do much more
than reading the real time clock synchronously.  This is a completely
rewritten driver that provides interrupt based command queuing, a userland
interface, and an i2c/smbus driver for accessing the devices hanging off
the SMU i2c busses like temperature sensors.  This driver is a basic block
for upcoming work on thermal control for those machines, among others.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:35 -07:00
Anton Blanchard 0f329075fb [PATCH] ppc64: Fix 64bit ptrace DABR support
Fix my stupid bug in the 64bit version of PTRACE_SET_DEBUGREG.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:35 -07:00
Anton Blanchard f951da3757 [PATCH] ppc64: Fix build with iommu debug enabled
Fix build when iommu debug is enabled.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:35 -07:00
Anton Blanchard 586a90eb4c [PATCH] ppc64: Fix LPAR regression
The recent iommu fix broke booting on some POWER4 and POWER5 LPAR boxes.

It looks like we have been calling the non LPAR iommu_dev_setup on LPAR
machines for a while. The recent iommu fix caused that code path to
fail.

It looks like we just need to hook up the devices iommu_table to the
parents one, so do that instead of calling iommu_dev_setup_pSeries and
crossing the streams.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:35 -07:00
Ivan Kokshaysky 4b3c86a745 [PATCH] alpha: fix kernel panic during SysRq-b
acquire_console_sem() does BUG() in interrupt context now, as in the case
of SysRq-b.

Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:34 -07:00
Benjamin Herrenschmidt 244bc050d5 [PATCH] ppc32: fix build with oprofile
Current -git tree doesn't build when enabling oprofile on a non-bookE CPU
(like on a PowerMac for example).  While there is no performance counter
support for these CPUs implemented yet, it's still nice to be able to use
the timer based sampling, and that got broken.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-22 22:17:34 -07:00
Stephen Rothwell 3d8a66cc9e ppc64 iSeries: Don't create linux,boot-cpu
This is obsolete.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 15:17:30 +10:00
Michael Ellerman 95b2938008 ppc64 iSeries: Define /cpus in iSeries device tree
Add the /cpus node and nodes for each cpu, as well as cache size properties,
reg propery, "linux,boot-cpu", and timebase/clock frequency.

With those properties in place we can remove:

- setup_iSeries_cache_sizes()
- code in iSeries_setup_arch() to calculate timebase etc.
- iSeries_calibrate_decr()
- smp_iSeries_numProcs() and simplify smp_iSeries_probe()

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 15:03:10 +10:00
Michael Ellerman 47db360328 ppc64 iSeries: Move setup of systemcfg->platform into iSeries device tree
Add /chosen/linux,platform to the device tree so we can remove iSeries
specific code in setup_system() to set systemcfg->platform.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 15:01:49 +10:00
Michael Ellerman 3ab42407fe ppc64 iSeries: Move memory setup into iSeries device tree
This patch adds the required nodes to the iSeries device tree to allow
early_init_devtree() to do the lmb setup for us.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 15:00:20 +10:00
Michael Ellerman 4762713a93 ppc64 iSeries: Call early_setup() on iSeries
Misc steps to incorporate the flat device tree on iSeries.

- define iseries_probe()
- call build_iSeries_Memory_Map() earlier
- return __pa() of the flat device tree from iSeries_early_setup()
- actually call early_setup() for iSeries
- add iseries_md to machdep_calls
- build prom.o for iSeries
- enable /proc/device-tree for iSeries

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 14:59:04 +10:00
Michael Ellerman c0a59491da ppc64 iSeries: Create a fake flat device tree on iSeries
This patch adds infrastructure for creating a fake flattened device tree
on iSeries.

We also need to build prom.o for iSeries which means we'll always need it.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 14:56:09 +10:00
Michael Ellerman f6ab9c6840 ppc64 iSeries: Make smp_release_cpus() callable on iSeries
We don't need to call smp_release_cpus() on iSeries but it's harmless
if we do and it removes another #ifdef ISERIES.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 14:54:37 +10:00
Michael Ellerman 7c6f947f24 ppc64 iSeries: Make stab_initialize() work on iSeries
We don't need to call stab_initialize() for the boot cpu on iSeries, so
we hack around it so that early_setup() can be called on iSeries.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 14:50:25 +10:00
Michael Ellerman 4c55130b2a ppc64 iSeries: Update create_pte_mapping to replace iSeries_bolt_kernel()
early_setup() calls htab_initialize() which is similar, but not identical
to iSeries_bolt_kernel().

On iSeries the Hypervisor has already inserted some ptes for us, and we
simply have to detect that and bolt them. iSeries_hpte_bolt_or_insert()
implements that logic.

For the case of a non-existing pte we just call iSeries_hpte_insert(). This
appears to work, although it's not entirely equivalent to the old code in
iSeries_make_pte() which panicked if we got a secondary slot. Not sure if
that's important.

Finally we call iSeries_hpte_bolt_or_insert() from create_pte_mapping(),
which is called from htab_initialize() for each lmb region.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
2005-09-23 14:47:58 +10:00