Commit Graph
100 Commits
Author SHA1 Message Date
Arnd Bergmann ba1d0de70d powerpc/ide: remove mpc8xx-ide driver
This driver was only used by arch/ppc code and is obsolete
now with the move to common arch/powerpc code.

[bart: port it over IDE tree, remove leftover 'choice' from Kconfig]

Signed-off-by: Arnd Bergmann <[email protected]>
Acked-by: Kumar Gala <[email protected]>
Cc: Paul Mackerras <[email protected]>
Signed-off-by: Bartlomiej Zolnierkiewicz <[email protected]>
2008-07-16 20:33:41 +02:00
Arnd Bergmann 01f4b8b8b8 powerpc: support for latencytop
Implement save_stack_trace_tsk on powerpc, so that we can run with
latencytop.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
2008-07-15 12:29:15 +10:00
Arnd Bergmann 38c4c97c62 x86-mce: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:26 -06:00
Arnd Bergmann 3e0420f066 vmwatchdog: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:26 -06:00
Arnd Bergmann 6c111d8863 vmcp: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:26 -06:00
Arnd Bergmann ffe83733b8 via-pmu: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:26 -06:00
Arnd Bergmann 7eb500d1a0 uml-random: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:26 -06:00
Arnd Bergmann bd6859fe83 uml-mmapper: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:26 -06:00
Arnd Bergmann 78dccb46dd uml-harddog: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:26 -06:00
Arnd Bergmann 8702965848 uinput: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:26 -06:00
Arnd Bergmann f138e4814a uctrl: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:25 -06:00
Arnd Bergmann 25368ca579 tpm-tpm: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:25 -06:00
Arnd Bergmann 09de36137c sparc64-rtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:25 -06:00
Arnd Bergmann ee30d64e42 sparc-apc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:25 -06:00
Arnd Bergmann f8f2c79d59 sonypi: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:25 -06:00
Arnd Bergmann 0410e689b1 sony-laptop: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:25 -06:00
Arnd Bergmann 9edca64b72 serio: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:25 -06:00
Arnd Bergmann 556e4b0b69 scsi-tgt: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:25 -06:00
Arnd Bergmann 5ab0854dd7 sbus-rtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:24 -06:00
Arnd Bergmann 4101273535 rtc-rtc-m41t80: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:24 -06:00
Arnd Bergmann 4333deee6b rtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:24 -06:00
Arnd Bergmann f29b889ede riowatchdog: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:24 -06:00
Arnd Bergmann db26e64dc3 pm_qos_params: BKL pushdown
[jmc: added <linux/smp_lock.h>]

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jonathan Corbet <[email protected]>
2008-07-02 15:06:24 -06:00
Arnd Bergmann b691750098 parisc-kernel-perf: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:24 -06:00
Arnd Bergmann 6044c319d1 parisc-eisa_eeprom: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:24 -06:00
Arnd Bergmann 7bcc3209be openprom: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:24 -06:00
Arnd Bergmann b7fdf9fdd6 ocfs2-stack_user: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:23 -06:00
Arnd Bergmann 930ab4e532 nvram: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:23 -06:00
Arnd Bergmann fd3e05b6c8 net-tun: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:23 -06:00
Arnd Bergmann db41bc9c4d mwave-mwavedd: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:23 -06:00
Arnd Bergmann e3e8e59dcd mvme16x-rtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:23 -06:00
Arnd Bergmann f9c8154f36 mousedev: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:23 -06:00
Arnd Bergmann dca67e9d3d monwriter: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-07-02 15:06:23 -06:00
Arnd Bergmann 6ce46a435a monreader: BKL pushdown
[jmc: added <linux/smp_lock.h>]

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jonathan Corbet <[email protected]>
2008-07-02 15:06:04 -06:00
Arnd Bergmann 36c35be332 powerpc: Increase CRASH_HANDLER_MAX
There are now two potential callers of machine_crash_shutdown,
so increase the limit accordingly.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2008-06-30 22:31:00 +10:00
Arnd Bergmann 5acb08070d powerpc/cell: Disable ptcal in case of crash kdump
We need to disable ptcal before starting a new kernel after a crash,
in order to avoid overwriting data in the kdump kernel.

Signed-off-by: Arnd Bergmann <[email protected]>
Acked-by: Jeremy Kerr <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2008-06-30 22:30:58 +10:00
Arnd Bergmann cf2076012f powerpc/pseries: Call pseries_kexec_setup only on pseries
The pseries_kexec_setup function overwrites some ppc_md
pointers, so make sure it only gets called when running on
the right architecture.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2008-06-30 22:30:57 +10:00
Arnd Bergmann aee10c6145 powerpc: Provide dummy crash_shutdown_register
When kexec is disabled, the crash_shutdown_{un,}register
functions are not available in the kernel.
This provides dummy inline functions for those so that
the callers don't have to worry about it.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2008-06-30 22:30:55 +10:00
Arnd Bergmann 77149367da microcode: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:59 -06:00
Arnd Bergmann b78032a7e5 message-i2o-i2o_config: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:58 -06:00
Arnd Bergmann f18f81daba megaraid: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:58 -06:00
Arnd Bergmann cad8423805 media-radio-miropcm20-rds: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:58 -06:00
Arnd Bergmann b9bde77a6a macintosh-smu: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:58 -06:00
Arnd Bergmann 600bf8140c lcd: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:58 -06:00
Arnd Bergmann 28fbbf4913 jsflash: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:58 -06:00
Arnd Bergmann cddf63d99d irnet_ppp: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:58 -06:00
Arnd Bergmann af96f0103d ipmi-watchdog: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:58 -06:00
Arnd Bergmann b0e54f7c47 ip27-rtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:57 -06:00
Arnd Bergmann 6b0ee363b2 infiniband-ucma: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:57 -06:00
Arnd Bergmann a9c4e8f74b hw-random: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:57 -06:00
Arnd Bergmann 48b8188051 hpet: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:57 -06:00
Arnd Bergmann 986f8b8ccf hp_sdc_rtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:57 -06:00
Arnd Bergmann 4a7e79a7de hdpu_cpustate: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:57 -06:00
Arnd Bergmann 742a2fe31b genrtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:57 -06:00
Arnd Bergmann 78abb6ac91 flash: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:57 -06:00
Arnd Bergmann 1d17bf0c08 envctrl: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:56 -06:00
Arnd Bergmann 89c7de08c5 efirtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:56 -06:00
Arnd Bergmann 080c222647 ds1620: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:56 -06:00
Arnd Bergmann 7ccef46320 ds1286: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:56 -06:00
Arnd Bergmann 514bcc66d4 dlm-user: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:56 -06:00
Arnd Bergmann 009228dfb6 display7seg: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:55 -06:00
Arnd Bergmann e73322ceef crypto-zcrypt_api: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:55 -06:00
Arnd Bergmann 135fe10f9f crypto-prng: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:55 -06:00
Arnd Bergmann b05c9e6cd9 cpwatchdog: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:55 -06:00
Arnd Bergmann 122bc5eaf8 bvme6000-rtc: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:55 -06:00
Arnd Bergmann 556889a4ae briq_panel: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:55 -06:00
Arnd Bergmann 8324af6ddd bluetooth-vhci: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:55 -06:00
Arnd Bergmann 986837bade block-dasd_eer: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:54 -06:00
Arnd Bergmann 9a8bd2f76c bf561-coreb: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:54 -06:00
Arnd Bergmann 52e7c5e082 basler-excite: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:54 -06:00
Arnd Bergmann 864fe51671 apm_32: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:54 -06:00
Arnd Bergmann 2861ead38b apm-emulation: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:54 -06:00
Arnd Bergmann b82829943c ans-lcd: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:54 -06:00
Arnd Bergmann a076230134 agp-frontend: BKL pushdown
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-20 14:05:54 -06:00
Arnd Bergmann b815454221 [POWERPC] Update Cell MAINTAINERS entry, add spufs entry
The MAINTAINERS file entry for the cell platform is outdated,
even the name of the platform changed since the early days
when it was initially submitted.
The SPU file system is now maintained by Jeremy Kerr.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2008-05-20 09:19:26 +10:00
Arnd Bergmann c92a1acb67 [POWERPC] spufs: serialize SLB invalidation against SLB loading
There is a potential race between flushes of the entire SLB in the MFC
and the point where new entries are being established. The problem is
that we might put a ESID entry into the MFC SLB when the VSID entry has
just been cleared by the global flush.

This can be circumvented by holding the register_lock throughout both
the flushing and the creation of SLB entries.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jeremy Kerr <[email protected]>
2008-02-29 15:19:52 +11:00
Arnd Bergmann cc4b7c1814 [POWERPC] spufs: invalidate SLB translation before adding a new entry
When we replace an SLB entry in the MFC after using up all the available
entries, there is a short window in which an incorrect entry is marked
as valid.

The problem is that the 'valid' bit is stored in the ESID, which is
always written after the VSID. Overwriting the VSID first will make the
original ESID entry point to the new VSID, which means that any
concurrent DMA accessing the old ESID ends up being redirected to the
new virtual address.  A few cycles later, we write the new ESID and
everything is fine again.

That race can be closed by writing a zero entry to the ESID first, which
makes sure that the VSID is not accessed until we write the new ESID.

Note that we don't actually need to invalidate the SLB entry using the
invalidation register, which would also flush any ERAT entries for that
segment, because the segment translation does not become invalid but is
only removed from the SLB cache.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jeremy Kerr <[email protected]>
2008-02-29 15:17:49 +11:00
Arnd Bergmann fae9ca7915 [POWERPC] spufs: synchronize IRQ when disabling
There is a small race between the context save procedure
and the SPU interrupt handling, where we expect all interrupt
processing to have finished after disabling them, while
an interrupt is still being processed on another CPU.

The obvious fix is to call synchronize_irq() after disabling
the interrupts at the start of the context save procedure
to make sure we never access the SPU any more during an
ongoing save or even after that.

Thanks to Benjamin Herrenschmidt for pointing this out.

Acked-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jeremy Kerr <[email protected]>
2008-02-29 15:16:48 +11:00
Arnd Bergmann 1ca91cd033 compat_ioctl: move floppy handlers to block/compat_ioctl.c
The floppy ioctls are used by multiple drivers, so they should be
handled in a shared location. Also, add minor cleanups.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
2007-10-10 09:26:00 +02:00
Arnd Bergmann b3087cc4f3 compat_ioctl: move cdrom handlers to block/compat_ioctl.c
These are shared by all cd-rom drivers and should have common
handlers. Do slight cosmetic cleanups in the process.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
2007-10-10 09:26:00 +02:00
Arnd Bergmann 18cf7f8723 compat_ioctl: move BLKPG handling to block/compat_ioctl.c
BLKPG is common to all block devices, so it should be handled
by common code.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
2007-10-10 09:26:00 +02:00
Arnd Bergmann 9617db085c compat_ioctl: move hdio calls to block/compat_ioctl.c
These are common to multiple block drivers, so they should
be handled by the block layer.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
2007-10-10 09:26:00 +02:00
Arnd Bergmann 171044d449 compat_ioctl: handle blk_trace ioctls
blk_trace_setup is broken on x86_64 compat systems,
this makes the code work correctly on all 64 bit architectures
in compat mode.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
2007-10-10 09:26:00 +02:00
Arnd Bergmann 7199d4cdd8 compat_ioctl: add compat_blkdev_driver_ioctl()
Handle those blockdev ioctl calls that are compatible
directly from the compat_blkdev_ioctl() function, instead
of having to go through the compat_ioctl hash lookup.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
2007-10-10 09:26:00 +02:00
Arnd Bergmann f58c4c0a17 compat_ioctl: move common block ioctls to compat_blkdev_ioctl
Make compat_blkdev_ioctl and blkdev_ioctl reflect the respective
native versions. This is somewhat more efficient and makes it easier
to keep the two in sync.

Also get rid of the bogus handling for broken_blkgetsize and the
duplicate entry for BLKRASET.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
2007-10-10 09:26:00 +02:00
Arnd Bergmann 3eb523b939 [POWERPC] Fix pci domain detection
The /proc/bus/pci/* files list PCI domain numbers only for
devices that claim to be on a multi-domain system. The check
for this is broken on powerpc, because the buid value is
truncated to 32 bits.

There is at least one machine (IBM QS21) that only uses
the high-order bits of the buid, so the return value
of pci_proc_domain() ends up being always zero, which
makes /proc/bus/pci useless.

Change the logic to always return '1' for a nonzero
buid value.

Signed-off-by: Arnd Bergmann <[email protected]>
Acked-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2007-10-03 11:48:44 +10:00
Arnd Bergmann a35e370cfd [POWERPC] Move embedded6xx into multiplatform
The various embedded 6xx systems can easily coexist in one kernel
together with the other 6xx based systems, so there is no strict
reason to keep them separate.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2007-10-03 09:11:25 +10:00
Arnd Bergmann 3164cccdc0 [POWERPC] add Kconfig option for optimizing for cell
Since the PPE on cell is an in-order core, it suffers significantly
from wrong instruction scheduling.  This adds a Kconfig option that
enables passing -mtune=cell to gcc in order to generate object
code that runs well on cell.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2007-09-22 14:49:22 +10:00
Arnd Bergmann 179c85ea53 futex_compat: fix list traversal bugs
The futex list traversal on the compat side appears to have
a bug.

It's loop termination condition compares:

        while (compat_ptr(uentry) != &head->list)

But that can't be right because "uentry" has the special
"pi" indicator bit still potentially set at bit 0.  This
is cleared by fetch_robust_entry() into the "entry"
return value.

What this seems to mean is that the list won't terminate
when list iteration gets back to the the head.  And we'll
also process the list head like a normal entry, which could
cause all kinds of problems.

So we should check for equality with "entry".  That pointer
is of the non-compat type so we have to do a little casting
to keep the compiler and sparse happy.

The same problem can in theory occur with the 'pending'
variable, although that has not been reported from users
so far.

Based on the original patch from David Miller.

Acked-by: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: David Miller <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
2007-09-11 17:21:20 -07:00
Arnd Bergmann 62ee68e3bc [POWERPC] spufs: Fix update of mailbox status register during backed wbox write
When a process writes into the inbound spu mailbox (wbox) while the
context is saved, we accidentally break the contents of the mb_stat_R
register by clearing other entries of the mailbox status register. This
can cause the user side to hang.

This change fixes the problem by only altering the appropriate bits
of the mailbox status register during a backing-store write.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Jeremy Kerr <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
2007-08-30 16:27:18 +10:00
Arnd Bergmann 3addf55c94 [POWERPC] cell: Support pinhole-reset on IBM cell blades
The Cell Broadband Engine has a method of injecting a
system-reset-exception from an external source into the
operating system, which should trigger the regular behaviour
of entering xmon or kdump.

Unfortunately, the exception handler cannot distinguish it from
other interrupt causes by the SRR1 register, which gets used
for this on Power 6 and others.

IBM Blade servers that want to support triggering the
system reset exception using a pinhole button in the front
panel therefore use an extra register to determine the
reset cause.

Signed-off-by: Arnd Bergmann <[email protected]>

--
Signed-off-by: Paul Mackerras <[email protected]>
2007-08-25 16:58:26 +10:00
Arnd Bergmann 01e457cfcd loop.h build fix
include/linux/loop.h:66: error: expected specifier-qualifier-list before 'request_queue_t'

Cc: Sebastian Siewior <[email protected]>
Cc: Jens Axboe <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
2007-07-24 12:24:59 -07:00
Arnd Bergmann 9e7cbcbb6e [CELL] cell: indexing of SPUs based on firmware vicinity properties
This patch links spus according to their physical position using
information provided by the firmware through a special vicinity
device-tree property. This property is present in current version
of Malta firmware.

Example of vicinity properties for a node in Malta:

Node:        Vicinity property contains phandles of:
spe@0        [ spe@100000 , mic-tm@50a000 ]
spe@100000   [ spe@0      , spe@200000    ]
spe@200000   [ spe@100000 , spe@300000    ]
spe@300000   [ spe@200000 , bif0@512000   ]
spe@80000    [ spe@180000 , mic-tm@50a000 ]
spe@180000   [ spe@80000  , spe@280000    ]
spe@280000   [ spe@180000 , spe@380000    ]
spe@380000   [ spe@280000 , bif0@512000   ]

Only spe@* have a vicinity property (e.g., bif0@512000 and
mic-tm@50a000 do not have it).

Signed-off-by: Andre Detsch <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2007-07-20 21:42:18 +02:00
Arnd Bergmann cbc23d3e7c [CELL] spufs: integration of SPE affinity with the scheduller
This patch makes the scheduller honor affinity information for each
context being scheduled. If the context has no affinity information,
behaviour is unchanged. If there are affinity information, context is
schedulled to be run on the exact spu recommended by the affinity
placement algorithm.

Signed-off-by: Andre Detsch <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2007-07-20 21:42:18 +02:00
Arnd Bergmann c5fc8d2a92 [CELL] cell: add placement computation for scheduling of affinity contexts
This patch provides the spu affinity placement logic for the spufs scheduler.
Each time a gang is going to be scheduled, the placement of a reference
context is defined. The placement of all other contexts with affinity from
the gang is defined based on this reference context location and on a
precomputed displacement offset.

Signed-off-by: Andre Detsch <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2007-07-20 21:42:17 +02:00
Arnd Bergmann 8e68e2f248 [CELL] spufs: extension of spu_create to support affinity definition
This patch adds support for additional flags at spu_create, which relate
to the establishment of affinity between contexts and contexts to memory.
A fourth, optional, parameter is supported. This parameter represent
a affinity neighbor of the context being created, and is used when defining
SPU-SPU affinity.
Affinity is represented as a doubly linked list of spu_contexts.

Signed-off-by: Andre Detsch <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2007-07-20 21:42:15 +02:00
Arnd Bergmann 3ad216cae8 [CELL] cell: add hardcoded spu vicinity information for QS20
This patch allows the use of spu affinity on QS20, whose
original FW does not provide affinity information.
This is done through two hardcoded arrays, and by reading the reg
property from each spu.

Signed-off-by: Andre Detsch <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2007-07-20 21:42:13 +02:00
Arnd Bergmann 9d92af621f [CELL] cell: add vicinity information on spus
This patch adds affinity data to each spu instance.
A doubly linked list is created, meant to connect the spus
in the physical order they are placed in the BE. SPUs
near to memory should be marked as having memory affinity.
Adjustments of the fields acording to FW properties is done
in separate patches, one for CPBW, one for Malta (patch for
Malta under testing).

Signed-off-by: Andre Detsch <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2007-07-20 21:42:12 +02:00
Arnd Bergmann aa6d5b2025 [CELL] cell: add per BE structure with info about its SPUs
Addition of a spufs-global "cbe_info" array. Each entry contains information
about one Cell/B.E. node, namelly:
* list of spus (both free and busy spus are in this list);
* list of free spus (replacing the static spu_list from spu_base.c)
* number of spus;
* number of reserved (non scheduleable) spus.

SPE affinity implementation actually requires only access to one spu per
BE node (since it implements its own pointer to walk through the other spus
of the ring) and the number of scheduleable spus (n_spus - non_sched_spus)
However having this more general structure can be useful for other
functionalities, concentrating per-cbe statistics / data.

Signed-off-by: Andre Detsch <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2007-07-20 21:42:11 +02:00
Arnd Bergmann 04e08d0e9b fbdev: make fb_append_extra_logo() depend on fb=y
We can't show the extra logo from boot code if FB is built as a module.
Make the FB_LOGO_EXTRA depend on FB=y.

Signed-off-by: Arnd Bergmann <[email protected]>
Cc: Al Viro <[email protected]>
Cc: "Antonino A. Daplas" <[email protected]>
Acked-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
2007-07-18 08:38:22 -07:00