spapr/irq: Use the base ICP class for KVM
The base ICP class knows how to interact with KVM. Adapt sPAPR to use it instead of the ICP KVM class. Signed-off-by: Greg Kurz <groug@kaod.org> Message-Id: <155023080638.1011724.792095453419098948.stgit@bahia.lan> Reviewed-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
8e6e6efef7
commit
56af66566d
@ -102,7 +102,6 @@ static void spapr_irq_init_xics(sPAPRMachineState *spapr, int nr_irqs,
|
|||||||
if (kvm_enabled()) {
|
if (kvm_enabled()) {
|
||||||
if (machine_kernel_irqchip_allowed(machine) &&
|
if (machine_kernel_irqchip_allowed(machine) &&
|
||||||
!xics_kvm_init(spapr, &local_err)) {
|
!xics_kvm_init(spapr, &local_err)) {
|
||||||
spapr->icp_type = TYPE_KVM_ICP;
|
|
||||||
spapr->ics = spapr_ics_create(spapr, TYPE_ICS_KVM, nr_irqs,
|
spapr->ics = spapr_ics_create(spapr, TYPE_ICS_KVM, nr_irqs,
|
||||||
&local_err);
|
&local_err);
|
||||||
}
|
}
|
||||||
@ -117,7 +116,6 @@ static void spapr_irq_init_xics(sPAPRMachineState *spapr, int nr_irqs,
|
|||||||
|
|
||||||
if (!spapr->ics) {
|
if (!spapr->ics) {
|
||||||
xics_spapr_init(spapr);
|
xics_spapr_init(spapr);
|
||||||
spapr->icp_type = TYPE_ICP;
|
|
||||||
spapr->ics = spapr_ics_create(spapr, TYPE_ICS_SIMPLE, nr_irqs,
|
spapr->ics = spapr_ics_create(spapr, TYPE_ICS_SIMPLE, nr_irqs,
|
||||||
&local_err);
|
&local_err);
|
||||||
}
|
}
|
||||||
@ -199,7 +197,7 @@ static void spapr_irq_cpu_intc_create_xics(sPAPRMachineState *spapr,
|
|||||||
Object *obj;
|
Object *obj;
|
||||||
sPAPRCPUState *spapr_cpu = spapr_cpu_state(cpu);
|
sPAPRCPUState *spapr_cpu = spapr_cpu_state(cpu);
|
||||||
|
|
||||||
obj = icp_create(OBJECT(cpu), spapr->icp_type, XICS_FABRIC(spapr),
|
obj = icp_create(OBJECT(cpu), TYPE_ICP, XICS_FABRIC(spapr),
|
||||||
&local_err);
|
&local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
error_propagate(errp, local_err);
|
error_propagate(errp, local_err);
|
||||||
|
@ -178,7 +178,6 @@ struct sPAPRMachineState {
|
|||||||
/*< public >*/
|
/*< public >*/
|
||||||
char *kvm_type;
|
char *kvm_type;
|
||||||
|
|
||||||
const char *icp_type;
|
|
||||||
int32_t irq_map_nr;
|
int32_t irq_map_nr;
|
||||||
unsigned long *irq_map;
|
unsigned long *irq_map;
|
||||||
sPAPRXive *xive;
|
sPAPRXive *xive;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user