ac6e56e6d7
23900-xzalloc.patch 24144-cpufreq-turbo-crash.patch 24148-shadow-pgt-dying-op-performance.patch 24155-x86-ioapic-EOI-after-migration.patch 24156-x86-ioapic-shared-vectors.patch 24157-x86-xstate-init.patch 24168-x86-vioapic-clear-remote_irr.patch - submit fixes for bnc#649209 and bnc#711892 xl-create-pv-with-qcow2-img.patch update suspend_evtchn_lock.patch - Update trace.c, merge patches from upstream 23050-xentrace_dynamic_tracebuffer_allocation.patch 23091-xentrace_fix_t_info_pages_calculation..patch 23092-xentrace_print_calculated_numbers_in_calculate_tbuf_size.patch 23093-xentrace_remove_gdprintk_usage_since_they_are_not_in_guest_context.patch 23094-xentrace_update_comments.patch 23095-xentrace_use_consistent_printk_prefix.patch 23128-xentrace_correct_formula_to_calculate_t_info_pages.patch 23129-xentrace_remove_unneeded_debug_printk.patch 23173-xentrace_Move_register_cpu_notifier_call_into_boot-time_init..patch 23239-xentrace_correct_overflow_check_for_number_of_per-cpu_trace_pages.patch 23308-xentrace_Move_the_global_variable_t_info_first_offset_into_calculate_tbuf_size.patch 23309-xentrace_Mark_data_size___read_mostly_because_its_only_written_once.patch 23310-xentrace_Remove_unneeded_cast_when_assigning_pointer_value_to_dst.patch 23404-xentrace_reduce_trace_buffer_size_to_something_mfn_offset_can_reach.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=160
78 lines
2.5 KiB
Diff
78 lines
2.5 KiB
Diff
# HG changeset patch
|
|
# User Andrew Cooper <andrew.cooper3@citrix.com>
|
|
# Date 1321035275 0
|
|
# Node ID 0844b17df7a9dd885e98e505f14fc99c1951b483
|
|
# Parent 3622d7fae14dfc2d00f378738ace3b65ee65b6cc
|
|
Revert c/s 23666:b96f8bdcaa15 KEXEC: disconnect all PCI devices from the PCI bus on crash
|
|
|
|
It turns out that this causes all mannor of problems on certain
|
|
motherboards (so far with no pattern I can discern)
|
|
|
|
Problems include:
|
|
* Hanging forever checking hlt instruction.
|
|
* Panics when trying to change switch root device
|
|
* Drivers hanging when trying to check for interrupts.
|
|
|
|
From: Andrew Cooper <andrew.cooper3@citrix.com>
|
|
Signed-off-by: Keir Fraser <keir@xen.org>
|
|
Committed-by: Keir Fraser <keir@xen.org>
|
|
|
|
--- a/xen/arch/x86/crash.c
|
|
+++ b/xen/arch/x86/crash.c
|
|
@@ -28,7 +28,6 @@
|
|
#include <asm/apic.h>
|
|
#include <asm/io_apic.h>
|
|
#include <xen/iommu.h>
|
|
-#include <xen/pci.h>
|
|
#include <asm/hpet.h>
|
|
|
|
static atomic_t waiting_for_crash_ipi;
|
|
@@ -83,8 +82,6 @@ static void nmi_shootdown_cpus(void)
|
|
msecs--;
|
|
}
|
|
|
|
- disconnect_pci_devices();
|
|
-
|
|
/* Crash shutdown any IOMMU functionality as the crashdump kernel is not
|
|
* happy when booting if interrupt/dma remapping is still enabled */
|
|
iommu_crash_shutdown();
|
|
--- a/xen/drivers/passthrough/pci.c
|
|
+++ b/xen/drivers/passthrough/pci.c
|
|
@@ -518,25 +518,6 @@ int __init scan_pci_devices(void)
|
|
return 0;
|
|
}
|
|
|
|
-/* Disconnect all PCI devices from the PCI buses. From the PCI spec:
|
|
- * "When a 0 is written to [the COMMAND] register, the device is
|
|
- * logically disconnected from the PCI bus for all accesses except
|
|
- * configuration accesses. All devices are required to support
|
|
- * this base level of functionality."
|
|
- */
|
|
-void disconnect_pci_devices(void)
|
|
-{
|
|
- struct pci_dev *pdev;
|
|
-
|
|
- spin_lock(&pcidevs_lock);
|
|
-
|
|
- list_for_each_entry ( pdev, &alldevs_list, alldevs_list )
|
|
- pci_conf_write16(pdev->bus, PCI_SLOT(pdev->devfn),
|
|
- PCI_FUNC(pdev->devfn), PCI_COMMAND, 0);
|
|
-
|
|
- spin_unlock(&pcidevs_lock);
|
|
-}
|
|
-
|
|
#ifdef SUPPORT_MSI_REMAPPING
|
|
static void dump_pci_devices(unsigned char ch)
|
|
{
|
|
--- a/xen/include/xen/pci.h
|
|
+++ b/xen/include/xen/pci.h
|
|
@@ -94,8 +94,6 @@ int pci_remove_device(u8 bus, u8 devfn);
|
|
struct pci_dev *pci_get_pdev(int bus, int devfn);
|
|
struct pci_dev *pci_get_pdev_by_domain(struct domain *d, int bus, int devfn);
|
|
|
|
-void disconnect_pci_devices(void);
|
|
-
|
|
uint8_t pci_conf_read8(
|
|
unsigned int bus, unsigned int dev, unsigned int func, unsigned int reg);
|
|
uint16_t pci_conf_read16(
|