aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Vrabel <david.vrabel@citrix.com>2012-05-04 09:29:46 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-05-21 12:39:57 -0400
commitda4725b85c269b43f4716726790aef43776449da (patch)
tree0f2c0e0f2f65d1cdf2d519771fcb7e8d69cd1321
parentff1e8115c26a02f2d3d5f61433ea24790c3c009a (diff)
xen/pci: don't use PCI BIOS service for configuration space accesses
commit 76a8df7b49168509df02461f83fab117a4a86e08 upstream. The accessing PCI configuration space with the PCI BIOS32 service does not work in PV guests. On systems without MMCONFIG or where the BIOS hasn't marked the MMCONFIG region as reserved in the e820 map, the BIOS service is probed (even though direct access is preferred) and this hangs. Acked-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com> [v1: Fixed compile error when CONFIG_PCI is not set] Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--arch/x86/xen/enlighten.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 0fb662abceb..b50c5931f40 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -62,6 +62,7 @@
62#include <asm/reboot.h> 62#include <asm/reboot.h>
63#include <asm/stackprotector.h> 63#include <asm/stackprotector.h>
64#include <asm/hypervisor.h> 64#include <asm/hypervisor.h>
65#include <asm/pci_x86.h>
65 66
66#include "xen-ops.h" 67#include "xen-ops.h"
67#include "mmu.h" 68#include "mmu.h"
@@ -1259,8 +1260,10 @@ asmlinkage void __init xen_start_kernel(void)
1259 /* Make sure ACS will be enabled */ 1260 /* Make sure ACS will be enabled */
1260 pci_request_acs(); 1261 pci_request_acs();
1261 } 1262 }
1262 1263#ifdef CONFIG_PCI
1263 1264 /* PCI BIOS service won't work from a PV guest. */
1265 pci_probe &= ~PCI_PROBE_BIOS;
1266#endif
1264 xen_raw_console_write("about to get started...\n"); 1267 xen_raw_console_write("about to get started...\n");
1265 1268
1266 xen_setup_runstate_info(0); 1269 xen_setup_runstate_info(0);