[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH]x86:x2apic: Disable x2apic on x86-32 permanently
Okay. I think after 4.1 is branched we should simply remove 32-bit host support entirely. There's really no good reason for it to persist imo. -- Keir On 21/01/2011 15:19, "Li, Xin" <xin.li@xxxxxxxxx> wrote: > Below is original log. We found Xen hypervisor needs to map > VT-d/x2apci/MSI/MSI-x resources using map_domain_page. And on 32bit, the map > page pool is trending to be used up. Maybe we can fix it, but for large > machines with many devices and CPUs, we probably will still meet the 32bit > limitation. So for new features which need map page in Xen hypervisor, I tend > to enable on 64 bit only. I'm not sure how important 32bit Xen hypervisor is, > but I think 64 bit is becoming more and more popular. Simply disabling is not > technically elegant, but for longer term, I think it's the trend because it > makes things simpler :). Comments? > Thanks! > -Xin > > root (hd0,2) > Filesystem type is ext2fs, partition type 0x83 > kernel (hd0,2)/boot/xen.gz dom0_mem=512M iommu=1 loglvl=all guest_loglvl=all > un > restricted_guest=1 console=com1 sync_console iommu=1 msi=1 conring_size=4M > [Multiboot-elf, <0x100000:0x14433c:0x34cc4>, shtab=0x279078, > entry=0x100000] > module (hd0,2)/boot/vmlinuz-2.6-xen ro root=/dev/sda3 console=hvc0 > earlyprintk= > xen ignore_loglevel pci=assign-busses > [Multiboot-module @ 0x27a000, 0x3ede40 bytes] > module (hd0,2)/boot/initrd-2.6-xen.img > [Multiboot-module @ 0x668000, 0x369800 bytes] > > __ __ _ _ _ _ _ _ > \ \/ /___ _ __ | || | / | _ _ _ __ ___| |_ __ _| |__ | | ___ > \ // _ \ '_ \ | || |_ | |__| | | | '_ \/ __| __/ _` | '_ \| |/ _ \ > / \ __/ | | | |__ _|| |__| |_| | | | \__ \ || (_| | |_) | | __/ > /_/\_\___|_| |_| |_|(_)_| \__,_|_| |_|___/\__\__,_|_.__/|_|\___| > > (XEN) Xen version 4.1-unstable (build@xxxxxxxxxxxx) (gcc version 4.1.2 > 20080704 (Red Hat 4.1.2-44)) Sat Sep 11 06:03:28 CST 2010 > (XEN) Latest ChangeSet: Fri Sep 10 19:06:33 2010 +0100 22132:3985fea87987 > (XEN) Console output is synchronous. > (XEN) Bootloader: GNU GRUB 0.97 > (XEN) Command line: dom0_mem=512M iommu=1 loglvl=all guest_loglvl=all > unrestricted_guest=1 console=com1 sync_console iommu=1 msi=1 conring_size=4M > (XEN) Video information: > (XEN) VGA is text mode 80x25, font 8x16 > (XEN) VBE/DDC methods: none; EDID transfer time: 0 seconds > (XEN) EDID info not retrieved because no DDC retrieval method detected > (XEN) Disc information: > (XEN) Found 1 MBR signatures > (XEN) Found 1 EDD information structures > (XEN) Xen-e820 RAM map: > (XEN) 0000000000000000 - 000000000009bc00 (usable) > (XEN) 000000000009bc00 - 00000000000a0000 (reserved) > (XEN) 00000000000e0000 - 0000000000100000 (reserved) > (XEN) 0000000000100000 - 0000000020050000 (usable) > (XEN) 0000000020050000 - 0000000020250000 (reserved) > (XEN) 0000000020250000 - 0000000040000000 (usable) > (XEN) 0000000040000000 - 0000000040200000 (reserved) > (XEN) 0000000040200000 - 000000007f553000 (usable) > (XEN) 000000007f553000 - 000000007f5e7000 (reserved) > (XEN) 000000007f5e7000 - 000000007f7e7000 (ACPI NVS) > (XEN) 000000007f7e7000 - 000000007f7ff000 (ACPI data) > (XEN) 000000007f7ff000 - 000000007f800000 (usable) > (XEN) 000000007f800000 - 0000000080000000 (reserved) > (XEN) 00000000f8000000 - 00000000fc000000 (reserved) > (XEN) 00000000fec00000 - 00000000fec01000 (reserved) > (XEN) 00000000fed10000 - 00000000fed14000 (reserved) > (XEN) 00000000fed18000 - 00000000fed1a000 (reserved) > (XEN) 00000000fed1c000 - 00000000fed20000 (reserved) > (XEN) 00000000fee00000 - 00000000fee01000 (reserved) > (XEN) 00000000ff980000 - 00000000ffc00000 (reserved) > (XEN) 00000000ffd80000 - 0000000100000000 (reserved) > (XEN) System RAM: 2032MB (2081724kB) > (XEN) ACPI: RSDP 000F0410, 0024 (r2 INTEL) > (XEN) ACPI: XSDT 7F7FDE18, 006C (r1 INTEL SNB-CPT 6222004 MSFT 10013) > (XEN) ACPI: FACP 7F752D98, 00F4 (r4 INTEL SNB-CPT 6222004 MSFT 10013) > (XEN) ACPI: DSDT 7F725018, EACA (r2 INTEL SNB-CPT 0 INTL 20100331) > (XEN) ACPI: FACS 7F7E6D40, 0040 > (XEN) ACPI: APIC 7F7FCF18, 0092 (r2 INTEL SNB-CPT 6222004 MSFT 10013) > (XEN) ACPI: TCPA 7F79FD18, 0032 (r2 0 0) > (XEN) ACPI: MCFG 7F79FC98, 003C (r1 INTEL SNDYBRDG 6222004 MSFT 97) > (XEN) ACPI: HPET 7F79FC18, 0038 (r1 A M I PCHHPET 6222004 AMI. 3) > (XEN) ACPI: SSDT 7F753018, 1068 (r1 TrmRef PtidDevc 1000 INTL 20100331) > (XEN) ACPI: BOOT 7F79FB98, 0028 (r1 INTEL SNB-CPT 6222004 AMI 10013) > (XEN) ACPI: SSDT 7F751018, 0996 (r1 PmRef CpuPm 3000 INTL 20100331) > (XEN) ACPI: DMAR 7F752F18, 00B0 (r1 INTEL SNB 1 INTL 1) > (XEN) No NUMA configuration found > (XEN) Faking a node at 0000000000000000-000000007f800000 > (XEN) Xen heap: 9MB (9716kB) > (XEN) Domain heap initialised > (XEN) found SMP MP-table at 000fcaa0 > (XEN) DMI 2.6 present. > (XEN) Using APIC driver default > (XEN) ACPI: PM-Timer IO Port: 0x408 > (XEN) ACPI: ACPI SLEEP INFO: pm1x_cnt[404,0], pm1x_evt[400,0] > (XEN) ACPI: 32/64X FACS address mismatch in FADT - 7f79df40/000000007f7e6d40, > using 32 > (XEN) ACPI: wakeup_vec[7f79df4c], vec_size[20] > (XEN) ACPI: Local APIC address 0xfee00000 > (XEN) ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) > (XEN) Processor #0 6:10 APIC version 21 > (XEN) ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) > (XEN) Processor #2 6:10 APIC version 21 > (XEN) ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled) > (XEN) Processor #4 6:10 APIC version 21 > (XEN) ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled) > (XEN) Processor #6 6:10 APIC version 21 > (XEN) ACPI: LAPIC (acpi_id[0x05] lapic_id[0x01] enabled) > (XEN) Processor #1 6:10 APIC version 21 > (XEN) ACPI: LAPIC (acpi_id[0x06] lapic_id[0x03] enabled) > (XEN) Processor #3 6:10 APIC version 21 > (XEN) ACPI: LAPIC (acpi_id[0x07] lapic_id[0x05] enabled) > (XEN) Processor #5 6:10 APIC version 21 > (XEN) ACPI: LAPIC (acpi_id[0x08] lapic_id[0x07] enabled) > (XEN) Processor #7 6:10 APIC version 21 > (XEN) ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1]) > (XEN) ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) > (XEN) IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23 > (XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) > (XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) > (XEN) ACPI: IRQ0 used by override. > (XEN) ACPI: IRQ2 used by override. > (XEN) ACPI: IRQ9 used by override. > (XEN) Enabling APIC mode: Flat. Using 1 I/O APICs > (XEN) ACPI: HPET id: 0x8086a701 base: 0xfed00000 > (XEN) Table is not found! > (XEN) Using ACPI (MADT) for SMP configuration information > (XEN) IRQ limits: 24 GSI, 1528 MSI/MSI-X > (XEN) Early fatal page fault at e008:ff1da1c6 (cr2=ffffffb8, ec=0000) > (XEN) Stack dump: ff279610 00000080 ff24bfb0 fffff000 00000000 ff24bdd4 > ffffc000 00000000 > ff1da1c6 0000e008 00010082 00000000 00000000 ff24bdd4 ff130e89 ff21828a > 00000006 ffbfec64 ff279610 00bde0a0 00000000 ff24be04 ff1384f7 0007e95c > 00000002 00000000 ff11d4ef 00000096 00000096 f73de0a0 ff279610 ff279638 > ff2795b8 ff24be34 ff13c740 ff279568 00000004 c9008020 00000000 ff21ac1c > ff2795e4 00000096 ff279568 ff21a7bc 00000008 ff24be54 ff13e038 ff2795b8 > 00010970 02fa0000 ff279910 ff279910 00000007 ff24be74 ff144b0a ff279910 > ff24be74 ff232570 00000007 00000000 00100800 ff24bfa4 ff234bf7 ff21dc0c > 00000080 00000008 00000000 00000000 00000000 00000000 00000000 00000000 > 00000000 00000000 00000000 00000000 00000000 0007bef0 00000000 00000000 > ff220260 00000000 00000000 1f000000 00000000 00000000 ff07bc50 ff07bfb0 > ff07bef0 00757640 00848000 00000015 ffffffff 00000000 00000000 00000000 > 00000000 00000000 00000000 7f7ff000 00000000 40000000 00000000 00000000 > ff07bef0 00000000 00000000 00000000 00000000 00000007 00000007 00000008 > 000001a4 000001a4 ff07bee0 01000000 00000000 ffd80000 00000000 ffd80000 > 00000000 00000015 ffffffff ff07bf24 0000097d 00000000 00000000 00000000 > 00000008 0000006e 00000001 00000003 000002f8 00000000 00000000 00220d70 > ff2737c0 00067ebc ff10006c 0007bfb0 00000000 00000000 00000000 00000000 > 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > 00000000 00000000 00000000 00000000 00000000 00000000 fffff000 00000000 > >> -----Original Message----- >> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx >> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Keir Fraser >> Sent: Friday, January 21, 2011 9:09 PM >> To: Zhang, Fengzhe; xen-devel@xxxxxxxxxxxxxxxxxxx >> Subject: Re: [Xen-devel] [PATCH]x86:x2apic: Disable x2apic on x86-32 >> permanently >> >> Could you give more info on the bug, such as a backtrace? I wonder whether >> this might be better fixed in some more elegant way. Also I can't eyeball >> where map_domain_page() is being called during x2apic setup. >> >> Thanks, >> Keir >> >> On 21/01/2011 12:21, "Zhang, Fengzhe" <fengzhe.zhang@xxxxxxxxx> wrote: >> >>> x86:x2apic: Disable x2apic on x86-32 permanently >>> >>> x2apic initialization on x86_32 uses vcpu pointer before it is initialized. >>> As >>> x2apic is unlikely to be used on x86_32, this patch disables x2apic >>> permanently on x86_32. It also asserts the sanity of vcpu pointer before >>> dereference to prevent further misuse. >>> >>> Signed-off-by: Fengzhe Zhang <fengzhe.zhang@xxxxxxxxx> >>> >>> diff -r 02c0af2bf280 xen/arch/x86/apic.c >>> --- a/xen/arch/x86/apic.c Mon Jan 17 18:05:52 2011 +0000 >>> +++ b/xen/arch/x86/apic.c Wed Jan 19 03:24:16 2011 -0500 >>> @@ -961,6 +961,22 @@ >>> if ( !cpu_has_x2apic ) >>> return; >>> >>> +#ifdef __i386__ >>> + clear_bit(X86_FEATURE_X2APIC, boot_cpu_data.x86_capability); >>> + if (x2apic_enabled) { >>> + uint64_t msr_content; >>> + >>> + rdmsrl(MSR_IA32_APICBASE, msr_content); >>> + msr_content &= ~(MSR_IA32_APICBASE_ENABLE | >> MSR_IA32_APICBASE_EXTD); >>> + wrmsrl(MSR_IA32_APICBASE, msr_content); >>> + msr_content |= MSR_IA32_APICBASE_ENABLE; >>> + wrmsrl(MSR_IA32_APICBASE, msr_content); >>> + x2apic_enabled = 0; >>> + } >>> + printk("x2APIC disabled permanently on x86_32.\n"); >>> + return; >>> +#endif >>> + >>> if ( !opt_x2apic ) >>> { >>> if ( !x2apic_enabled ) >>> diff -r 02c0af2bf280 xen/arch/x86/x86_32/domain_page.c >>> --- a/xen/arch/x86/x86_32/domain_page.c Mon Jan 17 18:05:52 2011 +0000 >>> +++ b/xen/arch/x86/x86_32/domain_page.c Wed Jan 19 03:24:16 2011 -0500 >>> @@ -53,6 +53,8 @@ >>> perfc_incr(map_domain_page_count); >>> >>> v = mapcache_current_vcpu(); >>> + /* Prevent vcpu pointer being used before initialize. */ >>> + ASSERT((unsigned long)v != 0xfffff000); >>> >>> dcache = &v->domain->arch.mapcache; >>> vcache = &v->arch.mapcache; >>> _______________________________________________ >>> Xen-devel mailing list >>> Xen-devel@xxxxxxxxxxxxxxxxxxx >>> http://lists.xensource.com/xen-devel >> >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@xxxxxxxxxxxxxxxxxxx >> http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |