spapr: move the IRQ server number mapping under the machine
This is the second step to abstract the IRQ 'server' number of the XICS layer. Now that the prereq cleanups have been done in the previous patch, we can move down the 'cpu_dt_id' to 'cpu_index' mapping in the sPAPR machine handler. Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
ad5d1add86
commit
06747ba6d4
@ -52,9 +52,8 @@ static target_ulong h_cppr(PowerPCCPU *cpu, sPAPRMachineState *spapr,
|
||||
static target_ulong h_ipi(PowerPCCPU *cpu, sPAPRMachineState *spapr,
|
||||
target_ulong opcode, target_ulong *args)
|
||||
{
|
||||
target_ulong server = xics_get_cpu_index_by_dt_id(args[0]);
|
||||
target_ulong mfrr = args[1];
|
||||
ICPState *icp = xics_icp_get(XICS_FABRIC(spapr), server);
|
||||
ICPState *icp = xics_icp_get(XICS_FABRIC(spapr), args[0]);
|
||||
|
||||
if (!icp) {
|
||||
return H_PARAMETER;
|
||||
@ -122,7 +121,7 @@ static void rtas_set_xive(PowerPCCPU *cpu, sPAPRMachineState *spapr,
|
||||
}
|
||||
|
||||
nr = rtas_ld(args, 0);
|
||||
server = xics_get_cpu_index_by_dt_id(rtas_ld(args, 1));
|
||||
server = rtas_ld(args, 1);
|
||||
priority = rtas_ld(args, 2);
|
||||
|
||||
if (!ics_valid_irq(ics, nr) || !xics_icp_get(XICS_FABRIC(spapr), server)
|
||||
|
@ -3112,9 +3112,10 @@ static void spapr_ics_resend(XICSFabric *dev)
|
||||
ics_resend(spapr->ics);
|
||||
}
|
||||
|
||||
static ICPState *spapr_icp_get(XICSFabric *xi, int server)
|
||||
static ICPState *spapr_icp_get(XICSFabric *xi, int cpu_dt_id)
|
||||
{
|
||||
sPAPRMachineState *spapr = SPAPR_MACHINE(xi);
|
||||
int server = xics_get_cpu_index_by_dt_id(cpu_dt_id);
|
||||
|
||||
return (server < spapr->nr_servers) ? &spapr->icps[server] : NULL;
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu,
|
||||
{
|
||||
CPUPPCState *env = &cpu->env;
|
||||
XICSFabric *xi = XICS_FABRIC(spapr);
|
||||
ICPState *icp = xics_icp_get(xi, CPU(cpu)->cpu_index);
|
||||
ICPState *icp = xics_icp_get(xi, cpu->cpu_dt_id);
|
||||
|
||||
/* Set time-base frequency to 512 MHz */
|
||||
cpu_ppc_tb_init(env, SPAPR_TIMEBASE_FREQ);
|
||||
|
Loading…
Reference in New Issue
Block a user