Displaying 20 results from an estimated 21 matches for "kvm_irq_routing_msi".
2015 Oct 09
4
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
...ventfd.c
> @@ -192,11 +192,19 @@ irqfd_wakeup(wait_queue_t *wait, unsigned mode, int sync, void *key)
> irq = irqfd->irq_entry;
> } while (read_seqcount_retry(&irqfd->irq_entry_sc, seq));
> /* An event has been signaled, inject an interrupt */
> - if (irq.type == KVM_IRQ_ROUTING_MSI)
> + switch (irq.type) {
> + case KVM_IRQ_ROUTING_MSI:
> kvm_set_msi(&irq, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1,
> false);
> - else
> + break;
> + case KVM_IRQ_ROUTING_HV_SINT:
> + kvm_hv_set_sint(&irq, kvm, KVM_USERSPACE_IRQ_SOURCE_ID,
> + 1,...
2015 Oct 09
4
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
...ventfd.c
> @@ -192,11 +192,19 @@ irqfd_wakeup(wait_queue_t *wait, unsigned mode, int sync, void *key)
> irq = irqfd->irq_entry;
> } while (read_seqcount_retry(&irqfd->irq_entry_sc, seq));
> /* An event has been signaled, inject an interrupt */
> - if (irq.type == KVM_IRQ_ROUTING_MSI)
> + switch (irq.type) {
> + case KVM_IRQ_ROUTING_MSI:
> kvm_set_msi(&irq, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1,
> false);
> - else
> + break;
> + case KVM_IRQ_ROUTING_HV_SINT:
> + kvm_hv_set_sint(&irq, kvm, KVM_USERSPACE_IRQ_SOURCE_ID,
> + 1,...
2015 Oct 09
5
[PATCH 0/2] Hyper-V synthetic interrupt controller
This patchset implements the KVM part of the synthetic interrupt
controller (synic) which is a building block of the Hyper-V
paravirtualized device bus (vmbus).
Synic is a lapic extension, which is controlled via MSRs and maintains
for each vCPU
- 16 synthetic interrupt "lines" (SINT's); each can be configured to
trigger a specific interrupt vector optionally with auto-EOI
2015 Oct 09
5
[PATCH 0/2] Hyper-V synthetic interrupt controller
This patchset implements the KVM part of the synthetic interrupt
controller (synic) which is a building block of the Hyper-V
paravirtualized device bus (vmbus).
Synic is a lapic extension, which is controlled via MSRs and maintains
for each vCPU
- 16 synthetic interrupt "lines" (SINT's); each can be configured to
trigger a specific interrupt vector optionally with auto-EOI
2015 Oct 09
0
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
...122
+#define KVM_CAP_HYPERV_SYNIC 123
#ifdef KVM_CAP_IRQ_ROUTING
@@ -854,10 +855,16 @@ struct kvm_irq_routing_s390_adapter {
__u32 adapter_id;
};
+struct kvm_irq_routing_hv_sint {
+ __u32 vcpu;
+ __u32 sint;
+};
+
/* gsi routing entry types */
#define KVM_IRQ_ROUTING_IRQCHIP 1
#define KVM_IRQ_ROUTING_MSI 2
#define KVM_IRQ_ROUTING_S390_ADAPTER 3
+#define KVM_IRQ_ROUTING_HV_SINT 4
struct kvm_irq_routing_entry {
__u32 gsi;
@@ -868,6 +875,7 @@ struct kvm_irq_routing_entry {
struct kvm_irq_routing_irqchip irqchip;
struct kvm_irq_routing_msi msi;
struct kvm_irq_routing_s390_adapter adapter...
2015 Oct 12
0
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
...ped to the same irqchip more than once.
>> - * Allow only one to one mapping between GSI and MSI.
>> + * Allow only one to one mapping between GSI and MSI/Hyper-V SINT.
>> */
>> hlist_for_each_entry(ei, &rt->map[ue->gsi], link)
>> if (ei->type == KVM_IRQ_ROUTING_MSI ||
>> ue->type == KVM_IRQ_ROUTING_MSI ||
>> + ei->type == KVM_IRQ_ROUTING_HV_SINT ||
>> + ue->type == KVM_IRQ_ROUTING_HV_SINT ||
>> ue->u.irqchip.irqchip == ei->irqchip.irqchip)
>> return r;
>
> Christian, what's th...
2015 Oct 12
2
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
...ore than once.
> >> - * Allow only one to one mapping between GSI and MSI.
> >> + * Allow only one to one mapping between GSI and MSI/Hyper-V SINT.
> >> */
> >> hlist_for_each_entry(ei, &rt->map[ue->gsi], link)
> >> if (ei->type == KVM_IRQ_ROUTING_MSI ||
> >> ue->type == KVM_IRQ_ROUTING_MSI ||
> >> + ei->type == KVM_IRQ_ROUTING_HV_SINT ||
> >> + ue->type == KVM_IRQ_ROUTING_HV_SINT ||
> >> ue->u.irqchip.irqchip == ei->irqchip.irqchip)
> >> return r;
> >...
2015 Oct 12
2
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
...ore than once.
> >> - * Allow only one to one mapping between GSI and MSI.
> >> + * Allow only one to one mapping between GSI and MSI/Hyper-V SINT.
> >> */
> >> hlist_for_each_entry(ei, &rt->map[ue->gsi], link)
> >> if (ei->type == KVM_IRQ_ROUTING_MSI ||
> >> ue->type == KVM_IRQ_ROUTING_MSI ||
> >> + ei->type == KVM_IRQ_ROUTING_HV_SINT ||
> >> + ue->type == KVM_IRQ_ROUTING_HV_SINT ||
> >> ue->u.irqchip.irqchip == ei->irqchip.irqchip)
> >> return r;
> >...
2015 Oct 26
1
[PATCH 3/7] linux-headers/kvm: add Hyper-V SynIC irq routing type and struct
...122
+#define KVM_CAP_HYPERV_SYNIC 123
#ifdef KVM_CAP_IRQ_ROUTING
@@ -854,10 +855,16 @@ struct kvm_irq_routing_s390_adapter {
__u32 adapter_id;
};
+struct kvm_irq_routing_hv_sint {
+ __u32 vcpu;
+ __u32 sint;
+};
+
/* gsi routing entry types */
#define KVM_IRQ_ROUTING_IRQCHIP 1
#define KVM_IRQ_ROUTING_MSI 2
#define KVM_IRQ_ROUTING_S390_ADAPTER 3
+#define KVM_IRQ_ROUTING_HV_SINT 4
struct kvm_irq_routing_entry {
__u32 gsi;
@@ -868,6 +875,7 @@ struct kvm_irq_routing_entry {
struct kvm_irq_routing_irqchip irqchip;
struct kvm_irq_routing_msi msi;
struct kvm_irq_routing_s390_adapter adapter...
2009 May 20
0
[PATCHv2-RFC 2/2] qemu-kvm: use common code for assigned msix
...u.msi.data = *(uint16_t *)(pci_dev->config +
+ assigned_dev->msi_entry->u.msi.address_hi = 0;
+ assigned_dev->msi_entry->u.msi.data = *(uint16_t *)(pci_dev->config +
pci_dev->cap.start + PCI_MSI_DATA_32);
- assigned_dev->entry->type = KVM_IRQ_ROUTING_MSI;
+ assigned_dev->msi_entry->type = KVM_IRQ_ROUTING_MSI;
r = kvm_get_irq_route_gsi(kvm_context);
if (r < 0) {
perror("assigned_dev_update_msi: kvm_get_irq_route_gsi");
return;
}
- assigned_dev->entry->gsi = r...
2009 May 20
0
[PATCHv2-RFC 2/2] qemu-kvm: use common code for assigned msix
...u.msi.data = *(uint16_t *)(pci_dev->config +
+ assigned_dev->msi_entry->u.msi.address_hi = 0;
+ assigned_dev->msi_entry->u.msi.data = *(uint16_t *)(pci_dev->config +
pci_dev->cap.start + PCI_MSI_DATA_32);
- assigned_dev->entry->type = KVM_IRQ_ROUTING_MSI;
+ assigned_dev->msi_entry->type = KVM_IRQ_ROUTING_MSI;
r = kvm_get_irq_route_gsi(kvm_context);
if (r < 0) {
perror("assigned_dev_update_msi: kvm_get_irq_route_gsi");
return;
}
- assigned_dev->entry->gsi = r...
2009 May 11
0
[PATCH 2/2] qemu-kvm: use common code for assigned msix
...u.msi.data = *(uint16_t *)(pci_dev->config +
+ assigned_dev->msi_entry->u.msi.address_hi = 0;
+ assigned_dev->msi_entry->u.msi.data = *(uint16_t *)(pci_dev->config +
pci_dev->cap.start + PCI_MSI_DATA_32);
- assigned_dev->entry->type = KVM_IRQ_ROUTING_MSI;
- assigned_dev->entry->gsi = kvm_get_irq_route_gsi(kvm_context);
- if (assigned_dev->entry->gsi < 0) {
+ assigned_dev->msi_entry->type = KVM_IRQ_ROUTING_MSI;
+ assigned_dev->msi_entry->gsi = kvm_get_irq_route_gsi(kvm_context);
+ if (ass...
2009 May 11
0
[PATCH 2/2] qemu-kvm: use common code for assigned msix
...u.msi.data = *(uint16_t *)(pci_dev->config +
+ assigned_dev->msi_entry->u.msi.address_hi = 0;
+ assigned_dev->msi_entry->u.msi.data = *(uint16_t *)(pci_dev->config +
pci_dev->cap.start + PCI_MSI_DATA_32);
- assigned_dev->entry->type = KVM_IRQ_ROUTING_MSI;
- assigned_dev->entry->gsi = kvm_get_irq_route_gsi(kvm_context);
- if (assigned_dev->entry->gsi < 0) {
+ assigned_dev->msi_entry->type = KVM_IRQ_ROUTING_MSI;
+ assigned_dev->msi_entry->gsi = kvm_get_irq_route_gsi(kvm_context);
+ if (ass...
2015 Oct 16
10
[PATCH v2 0/9] Hyper-V synthetic interrupt controller
This patchset implements the KVM part of the synthetic interrupt
controller (SynIC) which is a building block of the Hyper-V
paravirtualized device bus (vmbus).
SynIC is a lapic extension, which is controlled via MSRs and maintains
for each vCPU
- 16 synthetic interrupt "lines" (SINT's); each can be configured to
trigger a specific interrupt vector optionally with auto-EOI
2015 Oct 16
10
[PATCH v2 0/9] Hyper-V synthetic interrupt controller
This patchset implements the KVM part of the synthetic interrupt
controller (SynIC) which is a building block of the Hyper-V
paravirtualized device bus (vmbus).
SynIC is a lapic extension, which is controlled via MSRs and maintains
for each vCPU
- 16 synthetic interrupt "lines" (SINT's); each can be configured to
trigger a specific interrupt vector optionally with auto-EOI
2015 Oct 26
9
[PATCH 0/7] Hyper-V Synthetic interrupt controller
Hyper-V SynIC (synthetic interrupt controller) device
implementation.
The implementation contains:
* msr's support
* irq routing setup
* irq injection
* irq ack callback registration
* event/message pages changes tracking at Hyper-V exit
* Hyper-V test device to test SynIC by kvm-unit-tests
Andrey Smetanin (7):
standard-headers/x86: add Hyper-V SynIC constants
target-i386/kvm: Hyper-V
2015 Oct 26
9
[PATCH 0/7] Hyper-V Synthetic interrupt controller
Hyper-V SynIC (synthetic interrupt controller) device
implementation.
The implementation contains:
* msr's support
* irq routing setup
* irq injection
* irq ack callback registration
* event/message pages changes tracking at Hyper-V exit
* Hyper-V test device to test SynIC by kvm-unit-tests
Andrey Smetanin (7):
standard-headers/x86: add Hyper-V SynIC constants
target-i386/kvm: Hyper-V
2009 May 11
0
[PATCH 1/2] qemu-kvm: add MSI-X support
...y *entry = dev->msix_irq_entries + vector;
+ int r;
+
+ if (vector >= dev->msix_irq_entries_nr || dev->msix_entry_used[vector]++)
+ return 0;
+
+ r = kvm_get_irq_route_gsi(kvm_context);
+ if (r < 0)
+ return r;
+
+ entry->gsi = r;
+ entry->type = KVM_IRQ_ROUTING_MSI;
+ entry->flags = 0;
+ entry->u.msi.address_lo = pci_get_long(table_entry + MSIX_MSG_ADDR);
+ entry->u.msi.address_hi = pci_get_long(table_entry + MSIX_MSG_UPPER_ADDR);
+ entry->u.msi.data = pci_get_long(table_entry + MSIX_MSG_DATA);
+ r = kvm_add_routing_entry(kvm_contex...
2009 May 11
0
[PATCH 1/2] qemu-kvm: add MSI-X support
...y *entry = dev->msix_irq_entries + vector;
+ int r;
+
+ if (vector >= dev->msix_irq_entries_nr || dev->msix_entry_used[vector]++)
+ return 0;
+
+ r = kvm_get_irq_route_gsi(kvm_context);
+ if (r < 0)
+ return r;
+
+ entry->gsi = r;
+ entry->type = KVM_IRQ_ROUTING_MSI;
+ entry->flags = 0;
+ entry->u.msi.address_lo = pci_get_long(table_entry + MSIX_MSG_ADDR);
+ entry->u.msi.address_hi = pci_get_long(table_entry + MSIX_MSG_UPPER_ADDR);
+ entry->u.msi.data = pci_get_long(table_entry + MSIX_MSG_DATA);
+ r = kvm_add_routing_entry(kvm_contex...
2009 May 20
0
[PATCHv2-RFC 1/2] qemu-kvm: add MSI-X support
...y *entry = dev->msix_irq_entries + vector;
+ int r;
+
+ if (vector >= dev->msix_irq_entries_nr || dev->msix_entry_used[vector]++)
+ return 0;
+
+ r = kvm_get_irq_route_gsi(kvm_context);
+ if (r < 0)
+ return r;
+
+ entry->gsi = r;
+ entry->type = KVM_IRQ_ROUTING_MSI;
+ entry->flags = 0;
+ entry->u.msi.address_lo = pci_get_long(table_entry + MSIX_MSG_ADDR);
+ entry->u.msi.address_hi = pci_get_long(table_entry + MSIX_MSG_UPPER_ADDR);
+ entry->u.msi.data = pci_get_long(table_entry + MSIX_MSG_DATA);
+ r = kvm_add_routing_entry(kvm_contex...