[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH v5 2/3] spapr: introduce a IRQ controller backend
From: |
Cédric Le Goater |
Subject: |
Re: [Qemu-ppc] [PATCH v5 2/3] spapr: introduce a IRQ controller backend to the machine |
Date: |
Fri, 27 Jul 2018 09:04:17 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
[ ... ]
>> +static void spapr_irq_init_xics(sPAPRMachineState *spapr, Error **errp)
>> +{
>> + MachineState *machine = MACHINE(spapr);
>> + sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
>> + int nr_irqs = smc->irq->nr_irqs;
>> + Error *local_err = NULL;
>> +
>> + /* Initialize the MSI IRQ allocator. */
>> + if (!SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
>> + spapr_irq_msi_init(spapr, XICS_IRQ_BASE + nr_irqs - SPAPR_IRQ_MSI);
>> + }
>
> I think this belongs in common code, rather than xics specific.
yes.
>> +
>> + if (kvm_enabled()) {
>> + if (machine_kernel_irqchip_allowed(machine) &&
>> + !xics_kvm_init(spapr, &local_err)) {
>> + spapr->icp_type = TYPE_KVM_ICP;
>> + spapr->ics = spapr_ics_create(spapr, TYPE_ICS_KVM, nr_irqs,
>> + &local_err);
>> + }
>> + if (machine_kernel_irqchip_required(machine) && !spapr->ics) {
>> + error_prepend(&local_err,
>> + "kernel_irqchip requested but unavailable: ");
>> + goto error;
>> + }
>> + error_free(local_err);
>> + local_err = NULL;
>> + }
>> +
>> + if (!spapr->ics) {
>
> When could this get called with spapr->ics already initialized?
if the code above succeeds when running with the KVM accel.
What are thinking about ? introducing a xics-kvm backend ?
C.
>> + xics_spapr_init(spapr);
>> + spapr->icp_type = TYPE_ICP;
>> + spapr->ics = spapr_ics_create(spapr, TYPE_ICS_SIMPLE, nr_irqs,
>> + &local_err);
>> + }
>> +
>> +error:
>> + error_propagate(errp, local_err);
>> +}
>> +
[Qemu-ppc] [PATCH v5 3/3] spapr: increase the size of the IRQ number space, Cédric Le Goater, 2018/07/26