search for: kvm_irq_routing_entry

Displaying 18 results from an estimated 18 matches for "kvm_irq_routing_entry".

2009 May 20
0
[PATCHv2-RFC 2/2] qemu-kvm: use common code for assigned msix
...; + dev->msi_entry = NULL; + dev->msi_irq_entries_nr = 0; } #endif @@ -764,34 +758,34 @@ static void assigned_dev_update_msi(PCIDevice *pci_dev, unsigned int ctrl_pos) } if (ctrl_byte & PCI_MSI_FLAGS_ENABLE) { - assigned_dev->entry = calloc(1, sizeof(struct kvm_irq_routing_entry)); - if (!assigned_dev->entry) { + assigned_dev->msi_entry = calloc(1, sizeof(struct kvm_irq_routing_entry)); + if (!assigned_dev->msi_entry) { perror("assigned_dev_update_msi: "); return; } - assigned_dev->entry-&...
2009 May 20
0
[PATCHv2-RFC 2/2] qemu-kvm: use common code for assigned msix
...; + dev->msi_entry = NULL; + dev->msi_irq_entries_nr = 0; } #endif @@ -764,34 +758,34 @@ static void assigned_dev_update_msi(PCIDevice *pci_dev, unsigned int ctrl_pos) } if (ctrl_byte & PCI_MSI_FLAGS_ENABLE) { - assigned_dev->entry = calloc(1, sizeof(struct kvm_irq_routing_entry)); - if (!assigned_dev->entry) { + assigned_dev->msi_entry = calloc(1, sizeof(struct kvm_irq_routing_entry)); + if (!assigned_dev->msi_entry) { perror("assigned_dev_update_msi: "); return; } - assigned_dev->entry-&...
2009 May 11
0
[PATCH 2/2] qemu-kvm: use common code for assigned msix
...; + dev->msi_entry = NULL; + dev->msi_irq_entries_nr = 0; } #endif @@ -764,33 +758,33 @@ static void assigned_dev_update_msi(PCIDevice *pci_dev, unsigned int ctrl_pos) } if (ctrl_byte & PCI_MSI_FLAGS_ENABLE) { - assigned_dev->entry = calloc(1, sizeof(struct kvm_irq_routing_entry)); - if (!assigned_dev->entry) { + assigned_dev->msi_entry = calloc(1, sizeof(struct kvm_irq_routing_entry)); + if (!assigned_dev->msi_entry) { perror("assigned_dev_update_msi: "); return; } - assigned_dev->entry-&...
2009 May 11
0
[PATCH 2/2] qemu-kvm: use common code for assigned msix
...; + dev->msi_entry = NULL; + dev->msi_irq_entries_nr = 0; } #endif @@ -764,33 +758,33 @@ static void assigned_dev_update_msi(PCIDevice *pci_dev, unsigned int ctrl_pos) } if (ctrl_byte & PCI_MSI_FLAGS_ENABLE) { - assigned_dev->entry = calloc(1, sizeof(struct kvm_irq_routing_entry)); - if (!assigned_dev->entry) { + assigned_dev->msi_entry = calloc(1, sizeof(struct kvm_irq_routing_entry)); + if (!assigned_dev->msi_entry) { perror("assigned_dev_update_msi: "); return; } - assigned_dev->entry-&...
2015 Oct 26
1
[PATCH 3/7] linux-headers/kvm: add Hyper-V SynIC irq routing type and struct
..._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; + struct kvm_irq_routing_hv_sint hv_sint; __u32 pad[8]; } u; }; -- 2.4.3
2015 Oct 09
0
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
..._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; + struct kvm_irq_routing_hv_sint hv_sint; __u32 pad[8]; } u; }; diff --git a/virt/kvm/arm/vgic.c b/v...
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 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
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
2009 May 11
0
[PATCH 1/2] qemu-kvm: add MSI-X support
...s_nr && dev->msix_entry_used[vector]) + kvm_set_irq(dev->msix_irq_entries[vector].gsi, 1, NULL); +} + +/* Mark vector as used. */ +int msix_vector_use(PCIDevice *dev, unsigned vector) +{ + uint8_t *table_entry = dev->msix_table_page + vector * MSIX_ENTRY_SIZE; + struct kvm_irq_routing_entry *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 = K...
2009 May 11
0
[PATCH 1/2] qemu-kvm: add MSI-X support
...s_nr && dev->msix_entry_used[vector]) + kvm_set_irq(dev->msix_irq_entries[vector].gsi, 1, NULL); +} + +/* Mark vector as used. */ +int msix_vector_use(PCIDevice *dev, unsigned vector) +{ + uint8_t *table_entry = dev->msix_table_page + vector * MSIX_ENTRY_SIZE; + struct kvm_irq_routing_entry *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 = K...
2015 Oct 09
4
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
...u.irqchip.irqchip == ei->irqchip.irqchip) ? This would make sense, in that you shouldn't access "struct kvm_irq_routing_irqchip" unless the type is set to KVM_IRQ_ROUTING_IRQCHIP. Again, separate patch please. > int kvm_set_irq_routing(struct kvm *kvm, > const struct kvm_irq_routing_entry *ue, > unsigned nr, > @@ -219,6 +240,7 @@ int kvm_set_irq_routing(struct kvm *kvm, > old = kvm->irq_routing; > rcu_assign_pointer(kvm->irq_routing, new); > kvm_irq_routing_update(kvm); > + kvm_irq_update_hv_sint_gsi(kvm); Please call this function kvm_arch_irq_rou...
2015 Oct 09
4
[PATCH 1/2] kvm/x86: Hyper-V synthetic interrupt controller
...u.irqchip.irqchip == ei->irqchip.irqchip) ? This would make sense, in that you shouldn't access "struct kvm_irq_routing_irqchip" unless the type is set to KVM_IRQ_ROUTING_IRQCHIP. Again, separate patch please. > int kvm_set_irq_routing(struct kvm *kvm, > const struct kvm_irq_routing_entry *ue, > unsigned nr, > @@ -219,6 +240,7 @@ int kvm_set_irq_routing(struct kvm *kvm, > old = kvm->irq_routing; > rcu_assign_pointer(kvm->irq_routing, new); > kvm_irq_routing_update(kvm); > + kvm_irq_update_hv_sint_gsi(kvm); Please call this function kvm_arch_irq_rou...
2009 May 20
0
[PATCHv2-RFC 1/2] qemu-kvm: add MSI-X support
...s_nr && dev->msix_entry_used[vector]) + kvm_set_irq(dev->msix_irq_entries[vector].gsi, 1, NULL); +} + +/* Mark vector as used. */ +int msix_vector_use(PCIDevice *dev, unsigned vector) +{ + uint8_t *table_entry = dev->msix_table_page + vector * MSIX_ENTRY_SIZE; + struct kvm_irq_routing_entry *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 = K...
2009 May 20
0
[PATCHv2-RFC 1/2] qemu-kvm: add MSI-X support
...s_nr && dev->msix_entry_used[vector]) + kvm_set_irq(dev->msix_irq_entries[vector].gsi, 1, NULL); +} + +/* Mark vector as used. */ +int msix_vector_use(PCIDevice *dev, unsigned vector) +{ + uint8_t *table_entry = dev->msix_table_page + vector * MSIX_ENTRY_SIZE; + struct kvm_irq_routing_entry *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 = K...