All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: qemu-devel@nongnu.org, Eduardo Habkost <ehabkost@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Peter Xu <peterx@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v3 4/8] intel_iommu: redo configuraton check in realize
Date: Tue, 4 Oct 2016 13:40:29 +0200	[thread overview]
Message-ID: <20161004134029.0c97beaa@nial.brq.redhat.com> (raw)
In-Reply-To: <20160930161013.9832-5-rkrcmar@redhat.com>

On Fri, 30 Sep 2016 18:10:09 +0200
Radim Krčmář <rkrcmar@redhat.com> wrote:

> * there no point in configuring the device if realization is going to
>   fail, so move the check to the beginning,
> * create a separate function for the check,
> * use error_setg() instead error_report().
Reviewed-by: Igor Mammedov <imammedo@redhat.com>


> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
> ---
> v3:
> * use error_setg [Paolo]
> * create a new function [Peter]
> ---
>  hw/i386/intel_iommu.c | 26 ++++++++++++++++++--------
>  1 file changed, 18 insertions(+), 8 deletions(-)
> 
> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> index c39b62b898d8..5b06b4091f36 100644
> --- a/hw/i386/intel_iommu.c
> +++ b/hw/i386/intel_iommu.c
> @@ -21,6 +21,7 @@
>  
>  #include "qemu/osdep.h"
>  #include "qemu/error-report.h"
> +#include "qapi/error.h"
>  #include "hw/sysbus.h"
>  #include "exec/address-spaces.h"
>  #include "intel_iommu_internal.h"
> @@ -2448,6 +2449,18 @@ static AddressSpace *vtd_host_dma_iommu(PCIBus *bus, void *opaque, int devfn)
>      return &vtd_as->as;
>  }
>  
> +static bool vtd_check_config(X86IOMMUState *x86_iommu, Error **errp)
> +{
> +    /* Currently Intel IOMMU IR only support "kernel-irqchip={off|split}" */
> +    if (x86_iommu->intr_supported && kvm_irqchip_in_kernel() &&
> +        !kvm_irqchip_is_split()) {
> +        error_setg(errp, "Intel Interrupt Remapping cannot work with "
> +                         "kernel-irqchip=on, please use 'split|off'.");
> +        return false;
> +    }
> +    return true;
> +}
> +
>  static void vtd_realize(DeviceState *dev, Error **errp)
>  {
>      PCMachineState *pcms = PC_MACHINE(qdev_get_machine());
> @@ -2457,6 +2470,11 @@ static void vtd_realize(DeviceState *dev, Error **errp)
>  
>      VTD_DPRINTF(GENERAL, "");
>      x86_iommu->type = TYPE_INTEL;
> +
> +    if (!vtd_check_config(x86_iommu, errp)) {
> +        return;
> +    }
> +
>      memset(s->vtd_as_by_bus_num, 0, sizeof(s->vtd_as_by_bus_num));
>      memory_region_init_io(&s->csrmem, OBJECT(s), &vtd_mem_ops, s,
>                            "intel_iommu", DMAR_REG_SIZE);
> @@ -2471,14 +2489,6 @@ static void vtd_realize(DeviceState *dev, Error **errp)
>      pci_setup_iommu(bus, vtd_host_dma_iommu, dev);
>      /* Pseudo address space under root PCI bus. */
>      pcms->ioapic_as = vtd_host_dma_iommu(bus, s, Q35_PSEUDO_DEVFN_IOAPIC);
> -
> -    /* Currently Intel IOMMU IR only support "kernel-irqchip={off|split}" */
> -    if (x86_iommu->intr_supported && kvm_irqchip_in_kernel() &&
> -        !kvm_irqchip_is_split()) {
> -        error_report("Intel Interrupt Remapping cannot work with "
> -                     "kernel-irqchip=on, please use 'split|off'.");
> -        exit(1);
> -    }
>  }
>  
>  static void vtd_class_init(ObjectClass *klass, void *data)

  reply	other threads:[~2016-10-04 11:40 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-30 16:10 [Qemu-devel] [PATCH v3 0/8] intel_iommu: fix EIM Radim Krčmář
2016-09-30 16:10 ` [Qemu-devel] [PATCH v3 1/8] apic: add global apic_get_class() Radim Krčmář
2016-10-03 16:03   ` Eduardo Habkost
2016-10-04 10:59     ` Igor Mammedov
2016-10-04 13:38     ` Radim Krčmář
2016-10-04 16:14       ` Eduardo Habkost
2016-09-30 16:10 ` [Qemu-devel] [PATCH v3 2/8] apic: add send_msi() to APICCommonClass Radim Krčmář
2016-10-04 11:06   ` Igor Mammedov
2016-09-30 16:10 ` [Qemu-devel] [PATCH v3 3/8] intel_iommu: pass whole remapped addresses to apic Radim Krčmář
2016-10-04 11:17   ` Igor Mammedov
2016-10-08  5:24     ` Peter Xu
2016-10-09 20:47       ` Michael S. Tsirkin
2016-10-09 22:46         ` Peter Xu
2016-09-30 16:10 ` [Qemu-devel] [PATCH v3 4/8] intel_iommu: redo configuraton check in realize Radim Krčmář
2016-10-04 11:40   ` Igor Mammedov [this message]
2016-09-30 16:10 ` [Qemu-devel] [PATCH v3 5/8] intel_iommu: add OnOffAuto intr_eim as "eim" property Radim Krčmář
2016-10-04 12:34   ` Igor Mammedov
2016-09-30 16:10 ` [Qemu-devel] [PATCH v3 6/8] intel_iommu: reject broken EIM Radim Krčmář
2016-10-04 13:43   ` Igor Mammedov
2016-09-30 16:10 ` [Qemu-devel] [PATCH v3 7/8] intel_iommu: keep buggy EIM enabled in 2.7 machine type Radim Krčmář
2016-10-04 12:18   ` Igor Mammedov
2016-10-04 13:48     ` Radim Krčmář
2016-09-30 16:10 ` [Qemu-devel] [PATCH v3 8/8] target-i386/kvm: cache the return value of kvm_enable_x2apic() Radim Krčmář
2016-10-04 11:33   ` Igor Mammedov
2016-10-04 13:45     ` Radim Krčmář
2016-09-30 17:22 ` [Qemu-devel] [PATCH v3 0/8] intel_iommu: fix EIM no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161004134029.0c97beaa@nial.brq.redhat.com \
    --to=imammedo@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rkrcmar@redhat.com \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.