Commit 57cfb814 authored by Michael Ellerman's avatar Michael Ellerman Committed by Paul Mackerras
Browse files

[PATCH] powerpc: Replace platform_is_lpar() with a firmware feature



It has been decreed that platform numbers are evil, so as a step in that
direction, replace platform_is_lpar() with a FW_FEATURE_LPAR bit.

Currently FW_FEATURE_LPAR really means i/pSeries LPAR, in the future we might
have to clean that up if we need to be more specific about what LPAR actually
means. But that's another patch ...

Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 3d15910b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -422,7 +422,7 @@ void __init htab_initialize(void)

	htab_hash_mask = pteg_count - 1;

	if (platform_is_lpar()) {
	if (firmware_has_feature(FW_FEATURE_LPAR)) {
		/* Using a hypervisor which owns the htab */
		htab_address = NULL;
		_SDR1 = 0; 
@@ -517,7 +517,7 @@ void __init htab_initialize(void)

void htab_initialize_secondary(void)
{
	if (!platform_is_lpar())
	if (!firmware_has_feature(FW_FEATURE_LPAR))
		mtspr(SPRN_SDR1, _SDR1);
}

+2 −1
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
#include <linux/oprofile.h>
#include <linux/init.h>
#include <linux/smp.h>
#include <asm/firmware.h>
#include <asm/ptrace.h>
#include <asm/system.h>
#include <asm/processor.h>
@@ -232,7 +233,7 @@ static unsigned long get_pc(struct pt_regs *regs)
	mmcra = mfspr(SPRN_MMCRA);

	/* Were we in the hypervisor? */
	if (platform_is_lpar() && (mmcra & MMCRA_SIHV))
	if (firmware_has_feature(FW_FEATURE_LPAR) && (mmcra & MMCRA_SIHV))
		/* function descriptor madness */
		return *((unsigned long *)hypervisor_bucket);

+7 −3
Original line number Diff line number Diff line
@@ -303,8 +303,6 @@ static void __init iSeries_init_early(void)
{
	DBG(" -> iSeries_init_early()\n");

	ppc64_firmware_features = FW_FEATURE_ISERIES;

	ppc64_interrupt_controller = IC_ISERIES;

#if defined(CONFIG_BLK_DEV_INITRD)
@@ -711,7 +709,13 @@ void __init iSeries_init_IRQ(void) { }

static int __init iseries_probe(int platform)
{
	return PLATFORM_ISERIES_LPAR == platform;
	if (PLATFORM_ISERIES_LPAR != platform)
		return 0;

	ppc64_firmware_features |= FW_FEATURE_ISERIES;
	ppc64_firmware_features |= FW_FEATURE_LPAR;

	return 1;
}

struct machdep_calls __initdata iseries_md = {
+1 −1
Original line number Diff line number Diff line
@@ -580,7 +580,7 @@ void iommu_init_early_pSeries(void)
		return;
	}

	if (platform_is_lpar()) {
	if (firmware_has_feature(FW_FEATURE_LPAR)) {
		if (firmware_has_feature(FW_FEATURE_MULTITCE)) {
			ppc_md.tce_build = tce_buildmulti_pSeriesLP;
			ppc_md.tce_free	 = tce_freemulti_pSeriesLP;
+7 −4
Original line number Diff line number Diff line
@@ -246,7 +246,7 @@ static void __init pSeries_setup_arch(void)
		ppc_md.idle_loop = default_idle;
	}

	if (platform_is_lpar())
	if (firmware_has_feature(FW_FEATURE_LPAR))
		ppc_md.enable_pmcs = pseries_lpar_enable_pmcs;
	else
		ppc_md.enable_pmcs = power4_enable_pmcs;
@@ -324,12 +324,12 @@ static void __init pSeries_init_early(void)

	fw_feature_init();
	
	if (platform_is_lpar())
	if (firmware_has_feature(FW_FEATURE_LPAR))
		hpte_init_lpar();
	else
		hpte_init_native();

	if (platform_is_lpar())
	if (firmware_has_feature(FW_FEATURE_LPAR))
		find_udbg_vterm();

	if (firmware_has_feature(FW_FEATURE_DABR))
@@ -385,6 +385,9 @@ static int __init pSeries_probe(int platform)
	 * it here ...
	 */

	if (platform == PLATFORM_PSERIES_LPAR)
		ppc64_firmware_features |= FW_FEATURE_LPAR;

	return 1;
}

@@ -524,7 +527,7 @@ static void pseries_shared_idle(void)

static int pSeries_pci_probe_mode(struct pci_bus *bus)
{
	if (platform_is_lpar())
	if (firmware_has_feature(FW_FEATURE_LPAR))
		return PCI_PROBE_DEVTREE;
	return PCI_PROBE_NORMAL;
}
Loading