[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Dom0 crash with old style AMD NUMA detection
On Mon, Sep 17, 2012 at 09:29:22AM +0200, Andre Przywara wrote: > On 09/14/2012 08:58 PM, Konrad Rzeszutek Wilk wrote: > >>>>[ 0.000000] Kernel panic - not syncing: Attempted to kill the idle > >>>>task! > >>>>(XEN) Domain 0 crashed: 'noreboot' set - not rebooting. > >>>> > >>>> > >>>> > >>>>The obvious solution would be to explicitly deny northbridge scanning > >>>>when running as Dom0, though I am not sure how to implement this without > >>>>upsetting the other kernel folks about "that crappy Xen thing" again ;-) > >>> > >>>Heh. > >>>Is there a numa=0 option that could be used to override it to turn it > >>>off? > >> > >>Not compile tested.. but was thinking something like this: > > > >ping? > > That looks good to me - at least for the time being. OK, can I've your Tested-by/Acked-by on it pls? > I just want to check how this interacts with upcoming Dom0 NUMA > support. It wouldn't be too clever if we deliberately disable NUMA We can always revert this patch in future versions of Linux. > and future Xen version will allow us to use it. So let me check if I > can confine this turn-off to the fallback K8 northbridge reading. This potentially could work, but I would prefer to not do it for 3.6. diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index a4790bf..b4edce4 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c @@ -17,6 +17,7 @@ #include <asm/e820.h> #include <asm/setup.h> #include <asm/acpi.h> +#include <asm/numa.h> #include <asm/xen/hypervisor.h> #include <asm/xen/hypercall.h> @@ -483,7 +484,32 @@ void __cpuinit xen_enable_sysenter(void) if(ret != 0) setup_clear_cpu_cap(sysenter_feature); } +#ifdef CONFIG_AMD_NUMA +int __cpuinit xen_amd_k8(void) +{ + int num; + + if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) + return -ENOENT; + + for (num = 0; num < 32; num++) { + u32 header; + + header = read_pci_config(0, num, 0, 0x00); + if (header != (PCI_VENDOR_ID_AMD | (0x1100<<16)) && + header != (PCI_VENDOR_ID_AMD | (0x1200<<16)) && + header != (PCI_VENDOR_ID_AMD | (0x1300<<16))) + continue; + header = read_pci_config(0, num, 1, 0x00); + if (header != (PCI_VENDOR_ID_AMD | (0x1101<<16)) && + header != (PCI_VENDOR_ID_AMD | (0x1201<<16)) && + header != (PCI_VENDOR_ID_AMD | (0x1301<<16))) + continue; + return num; + } + return -ENOENT; +#endif void __cpuinit xen_enable_syscall(void) { #ifdef CONFIG_X86_64 @@ -542,4 +568,8 @@ void __init xen_arch_setup(void) disable_cpufreq(); WARN_ON(set_pm_idle_to_default()); fiddle_vdso(); +#ifdef CONFIG_AMD_NUMA + if (xen_amd_k8() >= 0) + numa_off=1; +#endif } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |