search for: kvm_irq_routing_msi

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...