aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2006-11-27 13:18:57 -0500
committerPaul Mackerras <paulus@samba.org>2006-12-04 04:41:16 -0500
commite22ba7e38144c1cccac5024cfd6ec88bb64d3e1f (patch)
tree869b43ec4fcc66b0ff6bb6eb7f735b1846859b8c /drivers
parenteb30c72026500f9efa9bb23ab2393d6a9e36c5e1 (diff)
[POWERPC] ps3: multiplatform build fixes
A few code paths need to check whether or not they are running on the PS3's LV1 hypervisor before making hcalls. This introduces a new firmware feature bit for this, FW_FEATURE_PS3_LV1. Now when both PS3 and IBM_CELL_BLADE are enabled, but not PSERIES, FW_FEATURE_PS3_LV1 and FW_FEATURE_LPAR get enabled at compile time, which is a bug. The same problem can also happen for (PPC_ISERIES && !PPC_PSERIES && PPC_SOMETHING_ELSE). In order to solve this, I introduce a new CONFIG_PPC_NATIVE option that is set when at least one platform is selected that can run without a hypervisor and then turns the firmware feature check into a run-time option. The new cell oprofile support that was recently merged does not work on hypervisor based platforms like the PS3, therefore make it depend on PPC_CELL_NATIVE instead of PPC_CELL. This may change if we get oprofile support for PS3. Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ps3/system-bus.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ps3/system-bus.c b/drivers/ps3/system-bus.c
index e19992c4db41..d79f949bcb2a 100644
--- a/drivers/ps3/system-bus.c
+++ b/drivers/ps3/system-bus.c
@@ -27,6 +27,7 @@
27#include <asm/udbg.h> 27#include <asm/udbg.h>
28#include <asm/ps3.h> 28#include <asm/ps3.h>
29#include <asm/lv1call.h> 29#include <asm/lv1call.h>
30#include <asm/firmware.h>
30 31
31#define dump_mmio_region(_a) _dump_mmio_region(_a, __func__, __LINE__) 32#define dump_mmio_region(_a) _dump_mmio_region(_a, __func__, __LINE__)
32static void _dump_mmio_region(const struct ps3_mmio_region* r, 33static void _dump_mmio_region(const struct ps3_mmio_region* r,
@@ -167,6 +168,9 @@ int __init ps3_system_bus_init(void)
167{ 168{
168 int result; 169 int result;
169 170
171 if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
172 return 0;
173
170 result = bus_register(&ps3_system_bus_type); 174 result = bus_register(&ps3_system_bus_type);
171 BUG_ON(result); 175 BUG_ON(result);
172 return result; 176 return result;