Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c2b16e1c1050b3cb3a63943eafc99ae86b8f51c3
Commit:     c2b16e1c1050b3cb3a63943eafc99ae86b8f51c3
Parent:     720c9133ff108998c5fb910d165146de5bc4705a
Author:     Takashi Yamamoto <[EMAIL PROTECTED]>
AuthorDate: Sat Jan 19 07:32:31 2008 +1100
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 22:52:52 2008 +1100

    [POWERPC] PS3: Add logical performance monitor repository routines
    
    Add repository routines for the PS3 Logical Performance Monitor.
    
    Signed-off-by: Takashi Yamamoto <[EMAIL PROTECTED]>
    Signed-off-by: Geoff Levand <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/ps3/platform.h   |   12 ++++-
 arch/powerpc/platforms/ps3/repository.c |   75 ++++++++++++++++++++++++++++++-
 2 files changed, 83 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/platforms/ps3/platform.h 
b/arch/powerpc/platforms/ps3/platform.h
index 7af1231..235c13e 100644
--- a/arch/powerpc/platforms/ps3/platform.h
+++ b/arch/powerpc/platforms/ps3/platform.h
@@ -180,10 +180,10 @@ int ps3_repository_read_stor_dev_region(unsigned int 
bus_index,
        unsigned int dev_index, unsigned int region_index,
        unsigned int *region_id, u64 *region_start, u64 *region_size);
 
-/* repository pu and memory info */
+/* repository logical pu and memory info */
 
-int ps3_repository_read_num_pu(unsigned int *num_pu);
-int ps3_repository_read_ppe_id(unsigned int *pu_index, unsigned int *ppe_id);
+int ps3_repository_read_num_pu(u64 *num_pu);
+int ps3_repository_read_pu_id(unsigned int pu_index, u64 *pu_id);
 int ps3_repository_read_rm_base(unsigned int ppe_id, u64 *rm_base);
 int ps3_repository_read_rm_size(unsigned int ppe_id, u64 *rm_size);
 int ps3_repository_read_region_total(u64 *region_total);
@@ -194,9 +194,15 @@ int ps3_repository_read_mm_info(u64 *rm_base, u64 *rm_size,
 
 int ps3_repository_read_num_be(unsigned int *num_be);
 int ps3_repository_read_be_node_id(unsigned int be_index, u64 *node_id);
+int ps3_repository_read_be_id(u64 node_id, u64 *be_id);
 int ps3_repository_read_tb_freq(u64 node_id, u64 *tb_freq);
 int ps3_repository_read_be_tb_freq(unsigned int be_index, u64 *tb_freq);
 
+/* repository performance monitor info */
+
+int ps3_repository_read_lpm_privileges(unsigned int be_index, u64 *lpar,
+       u64 *rights);
+
 /* repository 'Other OS' area */
 
 int ps3_repository_read_boot_dat_addr(u64 *lpar_addr);
diff --git a/arch/powerpc/platforms/ps3/repository.c 
b/arch/powerpc/platforms/ps3/repository.c
index cded41e..22063ad 100644
--- a/arch/powerpc/platforms/ps3/repository.c
+++ b/arch/powerpc/platforms/ps3/repository.c
@@ -711,6 +711,35 @@ int ps3_repository_read_stor_dev_region(unsigned int 
bus_index,
        return result;
 }
 
+/**
+ * ps3_repository_read_num_pu - Number of logical PU processors for this lpar.
+ */
+
+int ps3_repository_read_num_pu(u64 *num_pu)
+{
+       *num_pu = 0;
+       return read_node(PS3_LPAR_ID_CURRENT,
+                          make_first_field("bi", 0),
+                          make_field("pun", 0),
+                          0, 0,
+                          num_pu, NULL);
+}
+
+/**
+ * ps3_repository_read_pu_id - Read the logical PU id.
+ * @pu_index: Zero based index.
+ * @pu_id: The logical PU id.
+ */
+
+int ps3_repository_read_pu_id(unsigned int pu_index, u64 *pu_id)
+{
+       return read_node(PS3_LPAR_ID_CURRENT,
+               make_first_field("bi", 0),
+               make_field("pu", pu_index),
+               0, 0,
+               pu_id, NULL);
+}
+
 int ps3_repository_read_rm_size(unsigned int ppe_id, u64 *rm_size)
 {
        return read_node(PS3_LPAR_ID_CURRENT,
@@ -883,6 +912,10 @@ int ps3_repository_read_boot_dat_info(u64 *lpar_addr, 
unsigned int *size)
                : ps3_repository_read_boot_dat_size(size);
 }
 
+/**
+ * ps3_repository_read_num_be - Number of physical BE processors in the system.
+ */
+
 int ps3_repository_read_num_be(unsigned int *num_be)
 {
        int result;
@@ -898,6 +931,12 @@ int ps3_repository_read_num_be(unsigned int *num_be)
        return result;
 }
 
+/**
+ * ps3_repository_read_be_node_id - Read the physical BE processor node id.
+ * @be_index: Zero based index.
+ * @node_id: The BE processor node id.
+ */
+
 int ps3_repository_read_be_node_id(unsigned int be_index, u64 *node_id)
 {
        return read_node(PS3_LPAR_ID_PME,
@@ -908,6 +947,22 @@ int ps3_repository_read_be_node_id(unsigned int be_index, 
u64 *node_id)
                node_id, NULL);
 }
 
+/**
+ * ps3_repository_read_be_id - Read the physical BE processor id.
+ * @node_id: The BE processor node id.
+ * @be_id: The BE processor id.
+ */
+
+int ps3_repository_read_be_id(u64 node_id, u64 *be_id)
+{
+       return read_node(PS3_LPAR_ID_PME,
+               make_first_field("be", 0),
+               node_id,
+               0,
+               0,
+               be_id, NULL);
+}
+
 int ps3_repository_read_tb_freq(u64 node_id, u64 *tb_freq)
 {
        return read_node(PS3_LPAR_ID_PME,
@@ -924,11 +979,29 @@ int ps3_repository_read_be_tb_freq(unsigned int be_index, 
u64 *tb_freq)
        u64 node_id;
 
        *tb_freq = 0;
-       result = ps3_repository_read_be_node_id(0, &node_id);
+       result = ps3_repository_read_be_node_id(be_index, &node_id);
        return result ? result
                : ps3_repository_read_tb_freq(node_id, tb_freq);
 }
 
+int ps3_repository_read_lpm_privileges(unsigned int be_index, u64 *lpar,
+       u64 *rights)
+{
+       int result;
+       u64 node_id;
+
+       *lpar = 0;
+       *rights = 0;
+       result = ps3_repository_read_be_node_id(be_index, &node_id);
+       return result ? result
+               : read_node(PS3_LPAR_ID_PME,
+                           make_first_field("be", 0),
+                           node_id,
+                           make_field("lpm", 0),
+                           make_field("priv", 0),
+                           lpar, rights);
+}
+
 #if defined(DEBUG)
 
 int ps3_repository_dump_resource_info(const struct ps3_repository_device *repo)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to