WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

[Xen-ia64-devel] [Patch] Pass the bare LSAPIC ID to dom0

To: xen-ia64-devel <xen-ia64-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-ia64-devel] [Patch] Pass the bare LSAPIC ID to dom0
From: Akio Takebe <takebe_akio@xxxxxxxxxxxxxx>
Date: Wed, 18 Jul 2007 16:03:39 +0900
Delivery-date: Wed, 18 Jul 2007 00:01:38 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ia64-devel-request@lists.xensource.com?subject=help>
List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
List-post: <mailto:xen-ia64-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
Hi, all

This patch fix a issue which dom0 cannot boot with dom0_max_vcpus.
Currently LSAPIC IDs are create by xen,
but ACPI SRAT table is the bare table.
So on some boxes node_cpuid[].phys_id are different from cpu_physical_id()s,
and we cannot boot dom0.
I think xen should pass the bare LSAPIC ID to dom0.
How about you?

Detail;

I added the debug printks in build_cpu_to_node_map() on dom0,
and get the following message.

    build_cpu_to_node_map: node_cpuid[0].phys_id=0 cpu_physical_id(0)=0
    build_cpu_to_node_map: node_cpuid[1].phys_id=1024 cpu_physical_id(1)=256
    build_cpu_to_node_map: node_cpuid[2].phys_id=768 cpu_physical_id(2)=512
    build_cpu_to_node_map: node_cpuid[3].phys_id=1792 cpu_physical_id(3)=768
    build_cpu_to_node_map: node_cpuid[4].phys_id=32768 cpu_physical_id(4)=1024
    build_cpu_to_node_map: node_cpuid[5].phys_id=33792 cpu_physical_id(5)=1280
    build_cpu_to_node_map: node_cpuid[6].phys_id=33536 cpu_physical_id(6)=1536
    build_cpu_to_node_map: node_cpuid[7].phys_id=34560 cpu_physical_id(7)=1792
    build_cpu_to_node_map: node_cpuid[8].phys_id=1 cpu_physical_id(8)=-1
    build_cpu_to_node_map: node_cpuid[9].phys_id=1025 cpu_physical_id(9)=-1
    build_cpu_to_node_map: node_cpuid[10].phys_id=769 cpu_physical_id(10)=-1
    build_cpu_to_node_map: node_cpuid[11].phys_id=1793 cpu_physical_id(11)=-1
    build_cpu_to_node_map: node_cpuid[12].phys_id=32769 cpu_physical_id(12)=-1
    build_cpu_to_node_map: node_cpuid[13].phys_id=33793 cpu_physical_id(13)=-1
    build_cpu_to_node_map: node_cpuid[14].phys_id=33537 cpu_physical_id(14)=-1
    build_cpu_to_node_map: node_cpuid[15].phys_id=34561 cpu_physical_id(15)=-1

At that time, some cpus cannot get node id like the below.

    build_cpu_to_node_map: cpu=0 node_cpuid[0].phys_id=0 is , node=0 
    build_cpu_to_node_map: cpu=1, node=-1
    build_cpu_to_node_map: cpu=2, node=-1
    build_cpu_to_node_map: cpu=3 node_cpuid[2].phys_id=768 is , node=0 
    build_cpu_to_node_map: cpu=4 node_cpuid[1].phys_id=1024 is , node=0 
    build_cpu_to_node_map: cpu=5, node=-1
    build_cpu_to_node_map: cpu=6, node=-1
    build_cpu_to_node_map: cpu=7 node_cpuid[3].phys_id=1792 is , node=0 
    build_cpu_to_node_map: cpu=8, node=-1 
    build_cpu_to_node_map: cpu=9, node=-1 
    build_cpu_to_node_map: cpu=10, node=-1 
    build_cpu_to_node_map: cpu=11, node=-1 
    build_cpu_to_node_map: cpu=12, node=-1 
    build_cpu_to_node_map: cpu=13, node=-1 
    build_cpu_to_node_map: cpu=14, node=-1 
    build_cpu_to_node_map: cpu=15, node=-1 


Finally, dom0 get NULL pointer access like the below.

ELILO boot:                                         
Uncompressing Linux... done                         
Loading file initrd-2.6.18-xen.img-takebe...done    
Loading file vmlinuz-2.6.18-xen-takebe...done       
Uncompressing... done                               
 __  __            _____  ___                     _        _     _      
 \ \/ /___ _ __   |___ / / _ \    _   _ _ __  ___| |_ __ _| |__ | | ___ 
  \  // _ \ '_ \    |_ \| | | |__| | | | '_ \/ __| __/ _` | '_ \| |/ _ \
  /  \  __/ | | |  ___) | |_| |__| |_| | | | \__ \ || (_| | |_) | |  __/
 /_/\_\___|_| |_| |____(_)___/    \__,_|_| |_|___/\__\__,_|_.__/|_|\___|
                                                                        
 http://www.cl.cam.ac.uk/netos/xen
 University of Cambridge Computer Laboratory

 Xen version 3.0-unstable (root@xxxxxxxxxxxxxxxx) () Thu Jul 12 21:57:50 JST 
2007
 Latest ChangeSet: Wed Jul 11 11:32:30 2007 -0600 15558:f536eb8576ee

(XEN) Xen command line: BOOT_IMAGE=scsi0:EFI\redhat\xen.gz-takebe  dom0_mem=8G 
dom0_max_vcpus=8 
(XEN) xen image pstart: 0x4000000, xenheap pend: 0x8000000
(XEN) Xen patching physical address access by offset: 0x0
(XEN) find_memory: efi_memmap_walk returns max_page=5400000
(XEN) Before xen_heap_start: f0000000041c6fb0
(XEN) After xen_heap_start: f000000004c4c000
(XEN) Init boot pages: 0x10000d8 -> 0x4000000.
(XEN) Init boot pages: 0x8000000 -> 0x69cf0000.
(XEN) Init boot pages: 0x6ac6d098 -> 0x6b290010.
(XEN) Init boot pages: 0x6b290070 -> 0x6b293fb0.
(XEN) Init boot pages: 0x6b293ff9 -> 0x6b296000.
(XEN) Init boot pages: 0x6b48d37d -> 0x6b49a010.
(XEN) Init boot pages: 0x6b49a6a0 -> 0x6d000000.
(XEN) Init boot pages: 0x100000000 -> 0x1000000000.
(XEN) Init boot pages: 0x4080000000 -> 0x4100000000.
(XEN) Init boot pages: 0x14004000000 -> 0x15000000000.
(XEN) System RAM: 130688MB (133824512kB)
(XEN) size of virtual frame_table: 326928kB
(XEN) virtual machine to physical table: f6ffffffd6000000 size: 65424kB
(XEN) max_page: 0x5400000
(XEN) allocating frame table/mpt table at mfn 0.
(XEN) Xen heap: 51MB (52944kB)
(XEN) Reserving non-aligned node boundary @ mfn 262144
(XEN) Reserving non-aligned node boundary @ mfn 16908288
(XEN) Domain heap initialised: DMA width 32 bits
(XEN) avail:0x3170074000000000, 
status:0x74000000000,control:0x3170000000000000, 
vm?0x10000000000
(XEN) WARNING: no opcode provided from hardware(0)!!!
(XEN) vm buffer size: 1048576, order: 6
(XEN) vm_buffer: 0xf000000004d00000
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Time init:
(XEN) .... System Time: 217700ns
(XEN) .... scale:              28000001A
(XEN) num_online_cpus=1, max_cpus=64
(XEN) Brought up 16 CPUs
(XEN) xenoprof: using perfmon.
(XEN) perfmon: version 2.0 IRQ 238
(XEN) perfmon: Montecito PMU detected, 27 PMCs, 35 PMDs, 12 counters (47 bits)
(XEN) Maximum number of domains: 63; 18 RID bits per domain
(XEN) *** LOADING DOMAIN 0 ***
(XEN)  Dom0 kernel: 64-bit, lsb, paddr 0x4000000 -> 0x53a6028
(XEN) METAPHYSICAL MEMORY ARRANGEMENT:
(XEN)  Kernel image:  4000000->53a6028
(XEN)  Entry address: 400ff20
(XEN)  Init. ramdisk: 53ac000 len 1f737d
(XEN)  Start info.:   53a8000->53ac000
(XEN) Dom0 max_vcpus=8
(XEN) Dom0: 0xf000000007d54080
(XEN) enable lsapic entry: 0xf00000007f92e7e4
(XEN) enable lsapic entry: 0xf00000007f92e7f0
(XEN) enable lsapic entry: 0xf00000007f92e7fc
(XEN) enable lsapic entry: 0xf00000007f92e808
(XEN) enable lsapic entry: 0xf00000007f92e814
(XEN) enable lsapic entry: 0xf00000007f92e820
(XEN) enable lsapic entry: 0xf00000007f92e82c
(XEN) enable lsapic entry: 0xf00000007f92e838
(XEN) DISABLE lsapic entry: 0xf00000007f92e844
(XEN) DISABLE lsapic entry: 0xf00000007f92e850
(XEN) DISABLE lsapic entry: 0xf00000007f92e85c
(XEN) DISABLE lsapic entry: 0xf00000007f92e868
(XEN) DISABLE lsapic entry: 0xf00000007f92e874
(XEN) DISABLE lsapic entry: 0xf00000007f92e880
(XEN) DISABLE lsapic entry: 0xf00000007f92e88c
(XEN) DISABLE lsapic entry: 0xf00000007f92e898
(XEN) ACPI_INTERRUPT_CPEI disabled for Domain0
(XEN) Domain0 EFI passthrough: ACPI 2.0=0x7f924000 SMBIOS=0xf0000
(XEN) Scrubbing Free RAM: ..................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
............................................................
.............................!
 ...........................................................
............................................................
............................................................
...............................................................................
done.
(XEN) Xen trace buffers: disabled
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to 
Xen).
(XEN) Freed 128kB init memory.
(XEN) vcpu_set_itc: Setting ar.itc is currently disabled (this message is only 
displayed once)
Linux version 2.6.18-xen (root@xxxxxxxxxxxxxxxxxxxxxxxxxxxx) (gcc バージョン 4.1.
1 20070105 (Red Hat 4.1.1-52)) #6 SMP Fri Jul 13 01:01:11 JST 2007
EFI v1.00 by Xen/ia64: SALsystab=0x2178 ACPI 2.0=0x7f924000 SMBIOS=0xf0000
booting generic kernel on platform dig
Number of logical nodes in system = 2
Number of memory chunks in system = 5
Initial ramdisk at: 0xe0000000053ac000 (2061181 bytes)
SAL 0.1: Xen/ia64 Xen/ia64 version 0.0
SAL: AP wakeup using external interrupt vector 0xf3
No logical to physical processor mapping available
ACPI: Local APIC address c0000000fee00000
iosapic_register_platform_intr: invalid int type 0xff
8 CPUs available, 16 CPUs total
Running on Xen! start_info_pfn=0x14ea nr_pages=524288 flags=0x3
MCA related initialization done
Virtual mem_map starts at 0xa0007ffffdc04000
SMP: Allowing 16 CPUs, 8 hotplug CPUs
Built 2 zonelists.  Total pages: 518806
Kernel command line: rhgb root=LABEL=/ ro
PID hash table entries: 4096 (order: 12, 32768 bytes)
Console: colour VGA+ 80x25
Placing software IO TLB between 0x55a4000 - 0x95a4000
Memory: 8201712k/8300896k available (10915k code, 121360k reserved, 4877k data, 
672k init)
McKinley Errata 9 workaround not needed; disabling it
Dentry cache hash table entries: 1048576 (order: 9, 8388608 bytes)
Inode-cache hash table entries: 524288 (order: 8, 4194304 bytes)
Mount-cache hash table entries: 1024
ACPI: Core revision 20060707
Boot processor id 0x0/0x0
Fixed BSP b0 value from CPU 1
CPU 1: synchronized ITC with CPU 0 (last diff -1 cycles, maxerr 139 cycles)
CPU 2: synchronized ITC with CPU 0 (last diff 4 cycles, maxerr 139 cycles)
CPU 3: synchronized ITC with CPU 0 (last diff 2 cycles, maxerr 391 cycles)
CPU 4: synchronized ITC with CPU 0 (last diff 5 cycles, maxerr 574 cycles)
CPU 5: synchronized ITC with CPU 0 (last diff 5 cycles, maxerr 574 cycles)
CPU 6: synchronized ITC with CPU 0 (last diff 5 cycles, maxerr 574 cycles)
CPU 7: synchronized ITC with CPU 0 (last diff 4 cycles, maxerr 573 cycles)
Brought up 8 CPUs
Total of 8 processors activated (25473.84 BogoMIPS).
Unable to handle kernel NULL pointer dereference (address 0000000000000000)
swapper[1]: Oops 11012296146944 [1]
Modules linked in:

Pid: 1, CPU 0, comm:              swapper
psr : 00001210085a6010 ifs : 8000000000000001 ip  : [<a000000100075431>]    Not 
tainted
ip is at sd_degenerate+0x71/0xc0
unat: 0000000000000000 pfs : 400000000000048a rsc : 0000000000000007
rnat: a000000100041ee0 bsps: 0000000000000000 pr  : 0000000000009941
ldrs: 0000000000000000 ccv : 0000000000000001 fpsr: 0009804c8a70433f
csd : 0000000000000000 ssd : 0000000000000000
b0  : a000000100075510 b6  : a000000100072b60 b7  : a000000100072b60
f6  : 1003e0000000000000000 f7  : 1003e000000000000000e
f8  : 1003e0000000000000200 f9  : 000000000000000000000
f10 : 000000000000000000000 f11 : 000000000000000000000
r1  : a000000101143620 r2  : 0000000000000099 r3  : e0000000011154a8
r8  : 0000000000000000 r9  : 000000000000004d r10 : e000000001115484
r11 : 0000000000000000 r12 : e000000102f0fcf0 r13 : e000000102f08000
r14 : 0000000000000004 r15 : 0000000000000040 r16 : ffffffffffff5430
r17 : 0000000000000030 r18 : 0000000000000030 r19 : 00000000000000fd
r20 : e0000000011054a8 r21 : 0000000000000000 r22 : 


Best Regards,

Akio Takebe

Attachment: fix_apic.patch
Description: Binary data

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel