From: Robert Jennings <rcj@linux.vnet.ibm.com>, Nathan Fontenot <nfont@austin.ibm.com>
To: paulus@samba.org, benh@kernel.crashing.org
Cc: Brian King <brking@linux.vnet.ibm.com>,
linuxppc-dev@ozlabs.org,
David Darrington <ddarring@linux.vnet.ibm.com>
Subject: [PATCH 04/16 v4] powerpc: Split retrieval of processor entitlement data into a helper routine
Date: Wed, 23 Jul 2008 13:28:05 -0500 [thread overview]
Message-ID: <20080723182805.GG12905@linux.vnet.ibm.com> (raw)
In-Reply-To: <20080723181932.GC12905@linux.vnet.ibm.com>
Split the retrieval of processor entitlement data returned in the H_GET_PPP
hcall into its own helper routine.
Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com>
---
Updated patch to correct the reporting of pool_capcity.
---
arch/powerpc/kernel/lparcfg.c | 81 ++++++++++++++++++++++++------------------
1 file changed, 46 insertions(+), 35 deletions(-)
Index: b/arch/powerpc/kernel/lparcfg.c
===================================================================
--- a/arch/powerpc/kernel/lparcfg.c
+++ b/arch/powerpc/kernel/lparcfg.c
@@ -158,6 +158,18 @@ int h_get_mpp(struct hvcall_mpp_data *mp
}
EXPORT_SYMBOL(h_get_mpp);
+struct hvcall_ppp_data {
+ u64 entitlement;
+ u64 unallocated_entitlement;
+ u16 group_num;
+ u16 pool_num;
+ u8 capped;
+ u8 weight;
+ u8 unallocated_weight;
+ u16 active_procs_in_pool;
+ u16 active_system_procs;
+};
+
/*
* H_GET_PPP hcall returns info in 4 parms.
* entitled_capacity,unallocated_capacity,
@@ -178,20 +190,24 @@ EXPORT_SYMBOL(h_get_mpp);
* XXXX - Active processors in Physical Processor Pool.
* XXXX - Processors active on platform.
*/
-static unsigned int h_get_ppp(unsigned long *entitled,
- unsigned long *unallocated,
- unsigned long *aggregation,
- unsigned long *resource)
+static unsigned int h_get_ppp(struct hvcall_ppp_data *ppp_data)
{
unsigned long rc;
unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
rc = plpar_hcall(H_GET_PPP, retbuf);
- *entitled = retbuf[0];
- *unallocated = retbuf[1];
- *aggregation = retbuf[2];
- *resource = retbuf[3];
+ ppp_data->entitlement = retbuf[0];
+ ppp_data->unallocated_entitlement = retbuf[1];
+
+ ppp_data->group_num = (retbuf[2] >> 2 * 8) & 0xffff;
+ ppp_data->pool_num = retbuf[2] & 0xffff;
+
+ ppp_data->capped = (retbuf[3] >> 6 * 8) & 0x01;
+ ppp_data->weight = (retbuf[3] >> 5 * 8) & 0xff;
+ ppp_data->unallocated_weight = (retbuf[3] >> 4 * 8) & 0xff;
+ ppp_data->active_procs_in_pool = (retbuf[3] >> 2 * 8) & 0xffff;
+ ppp_data->active_system_procs = retbuf[3] & 0xffff;
return rc;
}
@@ -216,41 +232,40 @@ static unsigned h_pic(unsigned long *poo
*/
static void parse_ppp_data(struct seq_file *m)
{
- unsigned long h_entitled, h_unallocated;
- unsigned long h_aggregation, h_resource;
+ struct hvcall_ppp_data ppp_data;
int rc;
- rc = h_get_ppp(&h_entitled, &h_unallocated, &h_aggregation,
- &h_resource);
+ rc = h_get_ppp(&ppp_data);
if (rc)
return;
- seq_printf(m, "partition_entitled_capacity=%ld\n", h_entitled);
- seq_printf(m, "group=%ld\n", (h_aggregation >> 2 * 8) & 0xffff);
- seq_printf(m, "system_active_processors=%ld\n",
- (h_resource >> 0 * 8) & 0xffff);
+ seq_printf(m, "partition_entitled_capacity=%ld\n",
+ ppp_data.entitlement);
+ seq_printf(m, "group=%d\n", ppp_data.group_num);
+ seq_printf(m, "system_active_processors=%d\n",
+ ppp_data.active_system_procs);
/* pool related entries are apropriate for shared configs */
if (lppaca[0].shared_proc) {
unsigned long pool_idle_time, pool_procs;
- seq_printf(m, "pool=%ld\n", (h_aggregation >> 0 * 8) & 0xffff);
+ seq_printf(m, "pool=%d\n", ppp_data.pool_num);
/* report pool_capacity in percentage */
- seq_printf(m, "pool_capacity=%ld\n",
- ((h_resource >> 2 * 8) & 0xffff) * 100);
+ seq_printf(m, "pool_capacity=%d\n",
+ ppp_data.active_procs_in_pool * 100);
h_pic(&pool_idle_time, &pool_procs);
seq_printf(m, "pool_idle_time=%ld\n", pool_idle_time);
seq_printf(m, "pool_num_procs=%ld\n", pool_procs);
}
- seq_printf(m, "unallocated_capacity_weight=%ld\n",
- (h_resource >> 4 * 8) & 0xFF);
-
- seq_printf(m, "capacity_weight=%ld\n", (h_resource >> 5 * 8) & 0xFF);
- seq_printf(m, "capped=%ld\n", (h_resource >> 6 * 8) & 0x01);
- seq_printf(m, "unallocated_capacity=%ld\n", h_unallocated);
+ seq_printf(m, "unallocated_capacity_weight=%d\n",
+ ppp_data.unallocated_weight);
+ seq_printf(m, "capacity_weight=%d\n", ppp_data.weight);
+ seq_printf(m, "capped=%d\n", ppp_data.capped);
+ seq_printf(m, "unallocated_capacity=%ld\n",
+ ppp_data.unallocated_entitlement);
}
/**
@@ -449,31 +464,27 @@ static int pseries_lparcfg_data(struct s
static ssize_t update_ppp(u64 *entitlement, u8 *weight)
{
- unsigned long current_entitled;
- unsigned long dummy;
- unsigned long resource;
- u8 current_weight, new_weight;
+ struct hvcall_ppp_data ppp_data;
+ u8 new_weight;
u64 new_entitled;
ssize_t retval;
/* Get our current parameters */
- retval = h_get_ppp(¤t_entitled, &dummy, &dummy, &resource);
+ retval = h_get_ppp(&ppp_data);
if (retval)
return retval;
- current_weight = (resource >> 5 * 8) & 0xFF;
-
if (entitlement) {
- new_weight = current_weight;
+ new_weight = ppp_data.weight;
new_entitled = *entitlement;
} else if (weight) {
new_weight = *weight;
- new_entitled = current_entitled;
+ new_entitled = ppp_data.entitlement;
} else
return -EINVAL;
pr_debug("%s: current_entitled = %lu, current_weight = %u\n",
- __FUNCTION__, current_entitled, current_weight);
+ __FUNCTION__, ppp_data.entitlement, ppp_data.weight);
pr_debug("%s: new_entitled = %lu, new_weight = %u\n",
__FUNCTION__, new_entitled, new_weight);
next prev parent reply other threads:[~2008-07-23 18:28 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-23 18:19 [PATCH 00/16 v4] powerpc: pSeries Cooperative Memory Overcommitment support Robert Jennings
2008-07-23 18:25 ` [PATCH 01/16 v4] powerpc: Remove extraneous error reporting for hcall failures in lparcfg Robert Jennings
2008-07-23 18:25 ` [PATCH 02/16 v4] powerpc: Split processor entitlement retrieval and gat Robert Jennings
2008-07-23 18:27 ` [PATCH 03/16 v4] powerpc: Add memory entitlement capabilities to /proc/ppc64/lparcfg Robert Jennings
2008-07-23 18:28 ` Robert Jennings, Nathan Fontenot [this message]
2008-07-23 18:29 ` [PATCH 05/16 v4] powerpc: Enable CMO feature during platform setup Robert Jennings
2008-07-23 18:29 ` [PATCH 06/16 v4] powerpc: Utilities to set firmware page state Robert Jennings
2008-07-23 18:30 ` [PATCH 07/16 v4] powerpc: Add collaborative memory manager Robert Jennings
2008-07-23 18:30 ` [PATCH 08/16 v4] powerpc: Add CMO paging statistics Robert Jennings
2008-07-23 18:31 ` [PATCH 09/16 v4] powerpc: iommu enablement for CMO Robert Jennings
2008-07-23 18:31 ` [PATCH 10/16 v4] powerpc: vio bus support " Robert Jennings
2008-07-23 18:31 ` [PATCH 11/16 v4] powerpc: Verify CMO memory entitlement updates with virtual I/O Robert Jennings
2008-07-23 18:34 ` [PATCH 12/16 v4] ibmveth: Automatically enable larger rx buffer pools for larger mtu Robert Jennings
2008-07-23 18:34 ` Robert Jennings
2008-07-23 18:34 ` [PATCH 13/16 v4] ibmveth: enable driver for CMO Robert Jennings
2008-07-23 18:34 ` Robert Jennings
2008-07-23 18:35 ` [PATCH 14/16 v4] ibmvscsi: driver enablement " Robert Jennings
2008-07-23 18:35 ` Robert Jennings
2008-07-24 5:59 ` Benjamin Herrenschmidt
2008-07-23 18:35 ` [PATCH 15/16 v4] ibmvfc: Add support for collaborative memory overcommit Robert Jennings
2008-07-23 18:35 ` Robert Jennings
2008-07-23 18:36 ` [PATCH 16/16 v4] powerpc: Update arch vector to indicate support for CMO Robert Jennings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080723182805.GG12905@linux.vnet.ibm.com \
--to=rcj@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=brking@linux.vnet.ibm.com \
--cc=ddarring@linux.vnet.ibm.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=nfont@austin.ibm.com \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.