[POWERPC] PS3: Add logical performance monitor repository routines
Add repository routines for the PS3 Logical Performance Monitor. Signed-off-by: Takashi Yamamoto <TakashiA.Yamamoto@jp.sony.com> Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
720c9133ff
Коммит
c2b16e1c10
|
@ -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 dev_index, unsigned int region_index,
|
||||||
unsigned int *region_id, u64 *region_start, u64 *region_size);
|
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_num_pu(u64 *num_pu);
|
||||||
int ps3_repository_read_ppe_id(unsigned int *pu_index, unsigned int *ppe_id);
|
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_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_rm_size(unsigned int ppe_id, u64 *rm_size);
|
||||||
int ps3_repository_read_region_total(u64 *region_total);
|
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_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_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_tb_freq(u64 node_id, u64 *tb_freq);
|
||||||
int ps3_repository_read_be_tb_freq(unsigned int be_index, 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 */
|
/* repository 'Other OS' area */
|
||||||
|
|
||||||
int ps3_repository_read_boot_dat_addr(u64 *lpar_addr);
|
int ps3_repository_read_boot_dat_addr(u64 *lpar_addr);
|
||||||
|
|
|
@ -711,6 +711,35 @@ int ps3_repository_read_stor_dev_region(unsigned int bus_index,
|
||||||
return result;
|
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)
|
int ps3_repository_read_rm_size(unsigned int ppe_id, u64 *rm_size)
|
||||||
{
|
{
|
||||||
return read_node(PS3_LPAR_ID_CURRENT,
|
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_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 ps3_repository_read_num_be(unsigned int *num_be)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
@ -898,6 +931,12 @@ int ps3_repository_read_num_be(unsigned int *num_be)
|
||||||
return result;
|
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)
|
int ps3_repository_read_be_node_id(unsigned int be_index, u64 *node_id)
|
||||||
{
|
{
|
||||||
return read_node(PS3_LPAR_ID_PME,
|
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);
|
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)
|
int ps3_repository_read_tb_freq(u64 node_id, u64 *tb_freq)
|
||||||
{
|
{
|
||||||
return read_node(PS3_LPAR_ID_PME,
|
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;
|
u64 node_id;
|
||||||
|
|
||||||
*tb_freq = 0;
|
*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
|
return result ? result
|
||||||
: ps3_repository_read_tb_freq(node_id, tb_freq);
|
: 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)
|
#if defined(DEBUG)
|
||||||
|
|
||||||
int ps3_repository_dump_resource_info(const struct ps3_repository_device *repo)
|
int ps3_repository_dump_resource_info(const struct ps3_repository_device *repo)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче