Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e22ba7e3 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Paul Mackerras
Browse files

[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: default avatarArnd Bergmann <arnd.bergmann@de.ibm.com>
parent eb30c720
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -390,6 +390,7 @@ config PPC_PSERIES
	select PPC_RTAS
	select RTAS_ERROR_LOGGING
	select PPC_UDBG_16550
	select PPC_NATIVE
	default y

config PPC_ISERIES
@@ -406,6 +407,7 @@ config PPC_CHRP
	select PPC_RTAS
	select PPC_MPC106
	select PPC_UDBG_16550
	select PPC_NATIVE
	default y

config PPC_EFIKA
@@ -414,6 +416,7 @@ config PPC_EFIKA
	select PPC_RTAS
	select RTAS_PROC
	select PPC_MPC52xx
	select PPC_NATIVE
	default y

config PPC_PMAC
@@ -422,6 +425,7 @@ config PPC_PMAC
	select MPIC
	select PPC_INDIRECT_PCI if PPC32
	select PPC_MPC106 if PPC32
	select PPC_NATIVE
	default y

config PPC_PMAC64
@@ -441,6 +445,7 @@ config PPC_PREP
	select PPC_I8259
	select PPC_INDIRECT_PCI
	select PPC_UDBG_16550
	select PPC_NATIVE
	default y

config PPC_MAPLE
@@ -452,6 +457,7 @@ config PPC_MAPLE
	select GENERIC_TBSYNC
	select PPC_UDBG_16550
	select PPC_970_NAP
	select PPC_NATIVE
	default n
	help
          This option enables support for the Maple 970FX Evaluation Board.
@@ -464,6 +470,7 @@ config PPC_PASEMI
	select MPIC
	select PPC_UDBG_16550
	select GENERIC_TBSYNC
	select PPC_NATIVE
	help
	  This option enables support for PA Semi's PWRficient line
	  of SoC processors, including PA6T-1682M
@@ -478,6 +485,7 @@ config PPC_CELL_NATIVE
	select PPC_DCR_MMIO
	select PPC_OF_PLATFORM_PCI
	select PPC_INDIRECT_IO
	select PPC_NATIVE
	select MPIC
	default n

@@ -490,11 +498,6 @@ config PPC_IBM_CELL_BLADE
	select PPC_UDBG_16550
	select UDBG_RTAS_CONSOLE

config UDBG_RTAS_CONSOLE
	bool "RTAS based debug console"
	depends on PPC_RTAS
	default n

config PPC_PS3
	bool "Sony PS3"
	depends on PPC_MULTIPLATFORM && PPC64
@@ -503,6 +506,19 @@ config PPC_PS3
	  This option enables support for the Sony PS3 game console
	  and other platforms using the PS3 hypervisor.

config PPC_NATIVE
	bool
	depends on PPC_MULTIPLATFORM
	help
	  Support for running natively on the hardware, i.e. without
	  a hypervisor. This option is not user-selectable but should
	  be selected by all platforms that need it.

config UDBG_RTAS_CONSOLE
	bool "RTAS based debug console"
	depends on PPC_RTAS
	default n

config XICS
	depends on PPC_PSERIES
	bool
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ endif

obj-y				:= fault.o mem.o lmb.o
obj-$(CONFIG_PPC32)		+= init_32.o pgtable_32.o mmu_context_32.o
hash-$(CONFIG_PPC_MULTIPLATFORM) := hash_native_64.o
hash-$(CONFIG_PPC_NATIVE)	:= hash_native_64.o
obj-$(CONFIG_PPC64)		+= init_64.o pgtable_64.o mmu_context_64.o \
				   hash_utils_64.o hash_low_64.o tlb_64.o \
				   slb_low.o slb.o stab.o mmap.o imalloc.o \
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ DRIVER_OBJS := $(addprefix ../../../drivers/oprofile/, \
		timer_int.o )

oprofile-y := $(DRIVER_OBJS) common.o backtrace.o
oprofile-$(CONFIG_PPC_CELL) += op_model_cell.o
oprofile-$(CONFIG_PPC_CELL_NATIVE) += op_model_cell.o
oprofile-$(CONFIG_PPC64) += op_model_rs64.o op_model_power4.o
oprofile-$(CONFIG_FSL_BOOKE) += op_model_fsl_booke.o
oprofile-$(CONFIG_6xx) += op_model_7450.o
+1 −1
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)

	switch (cur_cpu_spec->oprofile_type) {
#ifdef CONFIG_PPC64
#ifdef CONFIG_PPC_CELL
#ifdef CONFIG_PPC_CELL_NATIVE
		case PPC_OPROFILE_CELL:
			model = &op_model_cell;
			break;
+4 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <linux/module.h>
#include <linux/memory_hotplug.h>

#include <asm/firmware.h>
#include <asm/lmb.h>
#include <asm/udbg.h>
#include <asm/ps3.h>
@@ -293,6 +294,9 @@ static int __init ps3_mm_add_memory(void)
	unsigned long start_pfn;
	unsigned long nr_pages;

	if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
		return 0;

	BUG_ON(!mem_init_done);

	start_addr = USE_LPAR_ADDR ? map.r1.base : map.rm.size;
Loading