diff options
author | Arnd Bergmann <arnd@arndb.de> | 2006-11-27 13:18:57 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-12-04 04:41:16 -0500 |
commit | e22ba7e38144c1cccac5024cfd6ec88bb64d3e1f (patch) | |
tree | 869b43ec4fcc66b0ff6bb6eb7f735b1846859b8c /drivers | |
parent | eb30c72026500f9efa9bb23ab2393d6a9e36c5e1 (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.c | 4 |
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__) |
32 | static void _dump_mmio_region(const struct ps3_mmio_region* r, | 33 | static 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; |