ff4b346ede
disk fails with UnboundLocalError: local variable 'dev_type' referenced before assignment 21678-xend-mac-fix.patch - bnc#586221 - cannot add DomU with USB host controller defined domu-usb-controller.patch (Chun Yan Liu) - Upstream patches from Jan 21151-trace-bounds-check.patch 21627-cpuidle-wrap.patch 21643-vmx-vpmu-pmc-offset.patch 21682-trace-buffer-range.patch 21683-vtd-kill-timer-conditional.patch 21693-memevent-64bit-only.patch 21695-trace-t_info-readonly.patch 21698-x86-pirq-range-check.patch 21699-p2m-query-for-type-change.patch 21700-32on64-vm86-gpf.patch 21705-trace-printk.patch 21706-trace-security.patch 21712-amd-osvw.patch 21744-x86-cpufreq-range-check.patch - bnc #599550 - Xen cannot distinguish the status of 'pause' addcommand_domstate.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=63
44 lines
1.6 KiB
Diff
44 lines
1.6 KiB
Diff
# HG changeset patch
|
|
# User Keir Fraser <keir.fraser@citrix.com>
|
|
# Date 1277739919 -3600
|
|
# Node ID 059a12afce52a213db56bd8e9442d9eeadfdd34c
|
|
# Parent 7e46fdbe8a1187cee2ab609256300d7967f37f06
|
|
vtd: Only kill_timer() an init_timer()'ed timer.
|
|
|
|
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
|
|
|
|
--- a/xen/drivers/passthrough/io.c
|
|
+++ b/xen/drivers/passthrough/io.c
|
|
@@ -27,7 +27,7 @@
|
|
|
|
static void hvm_dirq_assist(unsigned long _d);
|
|
|
|
-static int pt_irq_need_timer(uint32_t flags)
|
|
+bool_t pt_irq_need_timer(uint32_t flags)
|
|
{
|
|
return !(flags & (HVM_IRQ_DPCI_GUEST_MSI | HVM_IRQ_DPCI_TRANSLATE));
|
|
}
|
|
--- a/xen/drivers/passthrough/pci.c
|
|
+++ b/xen/drivers/passthrough/pci.c
|
|
@@ -257,7 +257,9 @@ static void pci_clean_dpci_irqs(struct d
|
|
i = find_next_bit(hvm_irq_dpci->mapping, d->nr_pirqs, i + 1) )
|
|
{
|
|
pirq_guest_unbind(d, i);
|
|
- kill_timer(&hvm_irq_dpci->hvm_timer[domain_pirq_to_irq(d, i)]);
|
|
+
|
|
+ if ( pt_irq_need_timer(hvm_irq_dpci->mirq[i].flags) )
|
|
+ kill_timer(&hvm_irq_dpci->hvm_timer[domain_pirq_to_irq(d, i)]);
|
|
|
|
list_for_each_safe ( digl_list, tmp,
|
|
&hvm_irq_dpci->mirq[i].digl_list )
|
|
--- a/xen/include/xen/iommu.h
|
|
+++ b/xen/include/xen/iommu.h
|
|
@@ -92,6 +92,7 @@ void hvm_dpci_isairq_eoi(struct domain *
|
|
struct hvm_irq_dpci *domain_get_irq_dpci(struct domain *domain);
|
|
int domain_set_irq_dpci(struct domain *domain, struct hvm_irq_dpci *dpci);
|
|
void free_hvm_irq_dpci(struct hvm_irq_dpci *dpci);
|
|
+bool_t pt_irq_need_timer(uint32_t flags);
|
|
|
|
#define PT_IRQ_TIME_OUT MILLISECS(8)
|
|
#define VTDPREFIX "[VT-D]"
|