Lines Matching +full:qemu +full:- +full:x86

2  * QEMU emulation of common X86 IOMMU
20 #include "qemu/osdep.h"
22 #include "hw/i386/x86-iommu.h"
23 #include "hw/qdev-properties.h"
26 #include "qemu/error-report.h"
35 notifier->iec_notify = fn; in x86_iommu_iec_register_notifier()
36 notifier->private = data; in x86_iommu_iec_register_notifier()
38 QLIST_INSERT_HEAD(&iommu->iec_notifiers, notifier, list); in x86_iommu_iec_register_notifier()
48 QLIST_FOREACH(notifier, &iommu->iec_notifiers, list) { in x86_iommu_iec_notify_all()
49 if (notifier->iec_notify) { in x86_iommu_iec_notify_all()
50 notifier->iec_notify(notifier->private, global, in x86_iommu_iec_notify_all()
62 msg.dest_mode = irq->dest_mode; in x86_iommu_irq_to_msi_message()
63 msg.redir_hint = irq->redir_hint; in x86_iommu_irq_to_msi_message()
64 msg.dest = irq->dest; in x86_iommu_irq_to_msi_message()
65 msg.__addr_hi = irq->dest & 0xffffff00; in x86_iommu_irq_to_msi_message()
68 msg.__not_used = irq->msi_addr_last_bits; in x86_iommu_irq_to_msi_message()
71 msg.vector = irq->vector; in x86_iommu_irq_to_msi_message()
72 msg.delivery_mode = irq->delivery_mode; in x86_iommu_irq_to_msi_message()
74 msg.trigger_mode = irq->trigger_mode; in x86_iommu_irq_to_msi_message()
76 msg_out->address = msg.msi_addr; in x86_iommu_irq_to_msi_message()
77 msg_out->data = msg.msi_data; in x86_iommu_irq_to_msi_message()
87 object_dynamic_cast(OBJECT(pcms->iommu), TYPE_X86_IOMMU_DEVICE)) { in x86_iommu_get_default()
88 return X86_IOMMU_DEVICE(pcms->iommu); in x86_iommu_get_default()
101 QLIST_INIT(&x86_iommu->iec_notifiers); in x86_iommu_realize()
104 if (!pcms || !pcms->pcibus) { in x86_iommu_realize()
105 error_setg(errp, "Machine-type '%s' not supported by IOMMU", in x86_iommu_realize()
106 mc->name); in x86_iommu_realize()
111 if (x86_iommu->intr_supported == ON_OFF_AUTO_AUTO) { in x86_iommu_realize()
112 x86_iommu->intr_supported = irq_all_kernel ? in x86_iommu_realize()
116 /* Both Intel and AMD IOMMU IR only support "kernel-irqchip={off|split}" */ in x86_iommu_realize()
119 "kernel-irqchip=on, please use 'split|off'."); in x86_iommu_realize()
123 if (x86_class->realize) { in x86_iommu_realize()
124 x86_class->realize(dev, errp); in x86_iommu_realize()
131 DEFINE_PROP_BOOL("device-iotlb", X86IOMMUState, dt_supported, false),
138 dc->realize = x86_iommu_realize; in x86_iommu_class_init()
144 return s->intr_supported == ON_OFF_AUTO_ON; in x86_iommu_ir_supported()