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

Commit 6fe9d1fa authored by Vaidyanathan Srinivasan's avatar Vaidyanathan Srinivasan Committed by Benjamin Herrenschmidt
Browse files

powerpc/pseries: Export data from new hcall H_EM_GET_PARMS



Add support for H_EM_GET_PARMS hcall that will return data
related to power modes from the platform.  Export the data
directly to user space for administrative tools to interpret
and use.

cat /proc/powerpc/lparcfg will export power mode data

Signed-off-by: default avatarVaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 9c7cc234
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -228,6 +228,7 @@
#define H_JOIN			0x298
#define H_JOIN			0x298
#define H_VASI_STATE            0x2A4
#define H_VASI_STATE            0x2A4
#define H_ENABLE_CRQ		0x2B0
#define H_ENABLE_CRQ		0x2B0
#define H_GET_EM_PARMS		0x2B8
#define H_SET_MPP		0x2D0
#define H_SET_MPP		0x2D0
#define H_GET_MPP		0x2D4
#define H_GET_MPP		0x2D4
#define MAX_HCALL_OPCODE	H_GET_MPP
#define MAX_HCALL_OPCODE	H_GET_MPP
+11 −1
Original line number Original line Diff line number Diff line
@@ -38,7 +38,7 @@
#include <asm/vio.h>
#include <asm/vio.h>
#include <asm/mmu.h>
#include <asm/mmu.h>


#define MODULE_VERS "1.8"
#define MODULE_VERS "1.9"
#define MODULE_NAME "lparcfg"
#define MODULE_NAME "lparcfg"


/* #define LPARCFG_DEBUG */
/* #define LPARCFG_DEBUG */
@@ -487,6 +487,14 @@ static void splpar_dispatch_data(struct seq_file *m)
	seq_printf(m, "dispatch_dispersions=%lu\n", dispatch_dispersions);
	seq_printf(m, "dispatch_dispersions=%lu\n", dispatch_dispersions);
}
}


static void parse_em_data(struct seq_file *m)
{
	unsigned long retbuf[PLPAR_HCALL_BUFSIZE];

	if (plpar_hcall(H_GET_EM_PARMS, retbuf) == H_SUCCESS)
		seq_printf(m, "power_mode_data=%016lx\n", retbuf[0]);
}

static int pseries_lparcfg_data(struct seq_file *m, void *v)
static int pseries_lparcfg_data(struct seq_file *m, void *v)
{
{
	int partition_potential_processors;
	int partition_potential_processors;
@@ -541,6 +549,8 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)


	seq_printf(m, "slb_size=%d\n", mmu_slb_size);
	seq_printf(m, "slb_size=%d\n", mmu_slb_size);


	parse_em_data(m);

	return 0;
	return 0;
}
}