Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[cascardo/linux.git] / arch / powerpc / kernel / lparcfg.c
index 301db65..84daabe 100644 (file)
@@ -132,34 +132,6 @@ static int iseries_lparcfg_data(struct seq_file *m, void *v)
 /*
  * Methods used to fetch LPAR data when running on a pSeries platform.
  */
-/**
- * h_get_mpp
- * H_GET_MPP hcall returns info in 7 parms
- */
-int h_get_mpp(struct hvcall_mpp_data *mpp_data)
-{
-       int rc;
-       unsigned long retbuf[PLPAR_HCALL9_BUFSIZE];
-
-       rc = plpar_hcall9(H_GET_MPP, retbuf);
-
-       mpp_data->entitled_mem = retbuf[0];
-       mpp_data->mapped_mem = retbuf[1];
-
-       mpp_data->group_num = (retbuf[2] >> 2 * 8) & 0xffff;
-       mpp_data->pool_num = retbuf[2] & 0xffff;
-
-       mpp_data->mem_weight = (retbuf[3] >> 7 * 8) & 0xff;
-       mpp_data->unallocated_mem_weight = (retbuf[3] >> 6 * 8) & 0xff;
-       mpp_data->unallocated_entitlement = retbuf[3] & 0xffffffffffff;
-
-       mpp_data->pool_size = retbuf[4];
-       mpp_data->loan_request = retbuf[5];
-       mpp_data->backing_mem = retbuf[6];
-
-       return rc;
-}
-EXPORT_SYMBOL(h_get_mpp);
 
 struct hvcall_ppp_data {
        u64     entitlement;
@@ -345,6 +317,30 @@ static void parse_mpp_data(struct seq_file *m)
        seq_printf(m, "backing_memory=%ld bytes\n", mpp_data.backing_mem);
 }
 
+/**
+ * parse_mpp_x_data
+ * Parse out data returned from h_get_mpp_x
+ */
+static void parse_mpp_x_data(struct seq_file *m)
+{
+       struct hvcall_mpp_x_data mpp_x_data;
+
+       if (!firmware_has_feature(FW_FEATURE_XCMO))
+               return;
+       if (h_get_mpp_x(&mpp_x_data))
+               return;
+
+       seq_printf(m, "coalesced_bytes=%ld\n", mpp_x_data.coalesced_bytes);
+
+       if (mpp_x_data.pool_coalesced_bytes)
+               seq_printf(m, "pool_coalesced_bytes=%ld\n",
+                          mpp_x_data.pool_coalesced_bytes);
+       if (mpp_x_data.pool_purr_cycles)
+               seq_printf(m, "coalesce_pool_purr=%ld\n", mpp_x_data.pool_purr_cycles);
+       if (mpp_x_data.pool_spurr_cycles)
+               seq_printf(m, "coalesce_pool_spurr=%ld\n", mpp_x_data.pool_spurr_cycles);
+}
+
 #define SPLPAR_CHARACTERISTICS_TOKEN 20
 #define SPLPAR_MAXLENGTH 1026*(sizeof(char))
 
@@ -520,6 +516,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)
                parse_system_parameter_string(m);
                parse_ppp_data(m);
                parse_mpp_data(m);
+               parse_mpp_x_data(m);
                pseries_cmo_data(m);
                splpar_dispatch_data(m);