pnv_phb4_pec.c: move pnv_pec_phb_offset() to pnv_phb4.c
The logic inside pnv_pec_phb_offset() will be useful in the next patch to determine the stack that should contain a PHB4 device. Move the function to pnv_phb4.c and make it public since there's no pnv_phb4_pec.h header. While we're at it, add 'stack_index' as a parameter and make the function return 'phb-id' directly. And rename it to pnv_phb4_pec_get_phb_id() to be even clearer about the function intent. Reviewed-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Message-Id: <20220110143346.455901-3-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
451575816c
commit
5032f5d705
@ -1069,6 +1069,23 @@ static const TypeInfo pnv_phb4_iommu_memory_region_info = {
|
||||
.class_init = pnv_phb4_iommu_memory_region_class_init,
|
||||
};
|
||||
|
||||
/*
|
||||
* Return the index/phb-id of a PHB4 that belongs to a
|
||||
* pec->stacks[stack_index] stack.
|
||||
*/
|
||||
int pnv_phb4_pec_get_phb_id(PnvPhb4PecState *pec, int stack_index)
|
||||
{
|
||||
PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec);
|
||||
int index = pec->index;
|
||||
int offset = 0;
|
||||
|
||||
while (index--) {
|
||||
offset += pecc->num_stacks[index];
|
||||
}
|
||||
|
||||
return offset + stack_index;
|
||||
}
|
||||
|
||||
/*
|
||||
* MSI/MSIX memory region implementation.
|
||||
* The handler handles both MSI and MSIX.
|
||||
|
@ -374,19 +374,6 @@ static void pnv_pec_instance_init(Object *obj)
|
||||
}
|
||||
}
|
||||
|
||||
static int pnv_pec_phb_offset(PnvPhb4PecState *pec)
|
||||
{
|
||||
PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec);
|
||||
int index = pec->index;
|
||||
int offset = 0;
|
||||
|
||||
while (index--) {
|
||||
offset += pecc->num_stacks[index];
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
static void pnv_pec_realize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
PnvPhb4PecState *pec = PNV_PHB4_PEC(dev);
|
||||
@ -405,7 +392,7 @@ static void pnv_pec_realize(DeviceState *dev, Error **errp)
|
||||
for (i = 0; i < pec->num_stacks; i++) {
|
||||
PnvPhb4PecStack *stack = &pec->stacks[i];
|
||||
Object *stk_obj = OBJECT(stack);
|
||||
int phb_id = pnv_pec_phb_offset(pec) + i;
|
||||
int phb_id = pnv_phb4_pec_get_phb_id(pec, i);
|
||||
|
||||
object_property_set_int(stk_obj, "stack-no", i, &error_abort);
|
||||
object_property_set_int(stk_obj, "phb-id", phb_id, &error_abort);
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "hw/ppc/xive.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
typedef struct PnvPhb4PecState PnvPhb4PecState;
|
||||
typedef struct PnvPhb4PecStack PnvPhb4PecStack;
|
||||
typedef struct PnvPHB4 PnvPHB4;
|
||||
typedef struct PnvChip PnvChip;
|
||||
@ -131,6 +132,7 @@ struct PnvPHB4 {
|
||||
|
||||
void pnv_phb4_pic_print_info(PnvPHB4 *phb, Monitor *mon);
|
||||
void pnv_phb4_update_regions(PnvPhb4PecStack *stack);
|
||||
int pnv_phb4_pec_get_phb_id(PnvPhb4PecState *pec, int stack_index);
|
||||
extern const MemoryRegionOps pnv_phb4_xscom_ops;
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user