[Cbe-oss-dev] [PATCH] 64K support for Kexec

Luke Browning lukebr at linux.vnet.ibm.com
Sat Apr 7 13:04:20 EST 2007


On Fri, 2007-04-06 at 23:58 -0300, Luke Browning wrote:
> This patch decodes the page size from the pte. This code is used by
> kexec, which walks the hash table and issues a tlbie for each 
> valid entry. The page size is encoded in the virtual address that
> is passed to the tlbie instruction.
> 

kexec doesn't boot all of the way, but it goes pretty far.  

Here's the out of the two kexec commands.

Luke

# kexec -l vmlinux.kdump --append="maxcpus=0"

get memory ranges:1
Modified cmdline:maxcpus=0 root=/dev/hda3 
segment[0].mem:0x610000 memsz:6291456
segment[1].mem:0xc10000 memsz:65536
segment[2].mem:0x1fff0000 memsz:65536

[root at cell tmp]# kexec -e

Starting new kernel
Found, Initializing memory management...
 -> htab_initialize()
Page sizes from device-tree:
 0: shift=0c, sllp=0000, avpnm=00000000, tlbiel=1, penc=0
 1: shift=10, sllp=0110, avpnm=00000000, tlbiel=1, penc=1
 4: shift=18, sllp=0100, avpnm=00000001, tlbiel=0, penc=0
Hash table allocated at 3f000000, size: 1000000
creating mapping for region: c000000000000000 : 40000000
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
 <- htab_initialize()
 <- early_setup()
 -> setup_system()
 -> initialize_cache_info()
 <- initialize_cache_info()
 -> smp_release_cpus()
 <- smp_release_cpus()
 <- setup_system()
Starting Linux PPC64 #10 SMP Fri Apr 6 17:22:00 BRT 2007
-----------------------------------------------------
ppc64_pft_size                = 0x0
physicalMemorySize            = 0x40000000
ppc64_caches.dcache_line_size = 0x80
ppc64_caches.icache_line_size = 0x80
htab_address                  = 0xc00000003f000000
htab_hash_mask                = 0x1ffff
physical_start                = 0x2000000
-----------------------------------------------------
Linux version 2.6.21-rc4 (luke at luke-desktop) (gcc version 4.1.1) #10 SMP
Fri Apr 6 17:22:00 BRT7
*** 0000 : CF000012

*** 0000 : Setup Arch
[boot]0012 Setup Arch
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
No ramdisk, default root is /dev/hda2
no ISA ranges or unexpected isa range size,mapping 64k
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
htab_bolt_mapping: calling c0000000024ceff8
mmio NVRAM, 1024k at 0x2401fb00000 mapped to d000080080060000
Zone PFN ranges:
  DMA             0 ->    16384
  Normal      16384 ->    16384
early_node_map[2] active PFN ranges
    0:        0 ->     8192
    1:     8192 ->    16384
*** 0000 : CF000015

*** 0000 : Setup Done
[boot]0015 Setup Done
Built 2 zonelists.  Total pages: 16370
Kernel command line: maxcpus=0 root=/dev/hda3 
htab_bolt_mapping: calling c0000000024ceff8
IIC for CPU 0 target id 0xe : /interrupt-controller at 20000508400
htab_bolt_mapping: calling c0000000024ceff8
IIC for CPU 1 target id 0xf : /interrupt-controller at 20000508400
htab_bolt_mapping: calling c0000000024ceff8
IIC for CPU 2 target id 0x1e : /interrupt-controller at 30000508400
htab_bolt_mapping: calling c0000000024ceff8
IIC for CPU 3 target id 0x1f : /interrupt-controller at 30000508400
htab_bolt_mapping: calling c0000000024ceff8
spider_pic: node 0, addr:
0x24000008000 /interrupt-controller at 24000008000
htab_bolt_mapping: calling c0000000024ceff8
spider_pic: node 1, addr:
0x34000008000 /interrupt-controller at 34000008000
PID hash table entries: 4096 (order: 12, 32768 bytes)
Using Cell machine description
Starting Linux PPC64 #10 SMP Fri Apr 6 17:22:00 BRT 2007
-----------------------------------------------------
ppc64_pft_size                = 0x0
physicalMemorySize            = 0x40000000
ppc64_caches.dcache_line_size = 0x80
ppc64_caches.icache_line_size = 0x80
htab_address                  = 0xc00000003f000000
htab_hash_mask                = 0x1ffff
physical_start                = 0x2000000
-----------------------------------------------------
Linux version 2.6.21-rc4 (luke at luke-desktop) (gcc version 4.1.1) #10 SMP
Fri Apr 6 17:22:00 BRT7
*** 0000 : CF000012

*** 0000 : Setup Arch
[boot]0012 Setup Arch
No ramdisk, default root is /dev/hda2
no ISA ranges or unexpected isa range size,mapping 64k
mmio NVRAM, 1024k at 0x2401fb00000 mapped to d000080080060000
Zone PFN ranges:
  DMA             0 ->    16384
  Normal      16384 ->    16384
early_node_map[2] active PFN ranges
    0:        0 ->     8192
    1:     8192 ->    16384
*** 0000 : CF000015

*** 0000 : Setup Done
[boot]0015 Setup Done
Built 2 zonelists.  Total pages: 16370
Kernel command line: maxcpus=0 root=/dev/hda3 
IIC for CPU 0 target id 0xe : /interrupt-controller at 20000508400
IIC for CPU 1 target id 0xf : /interrupt-controller at 20000508400
IIC for CPU 2 target id 0x1e : /interrupt-controller at 30000508400
IIC for CPU 3 target id 0x1f : /interrupt-controller at 30000508400
spider_pic: node 0, addr:
0x24000008000 /interrupt-controller at 24000008000
spider_pic: node 1, addr:
0x34000008000 /interrupt-controller at 34000008000
PID hash table entries: 4096 (order: 12, 32768 bytes)
Console: colour dummy device 80x25
Dentry cache hash table entries: 131072 (order: 4, 1048576 bytes)
Inode-cache hash table entries: 65536 (order: 3, 524288 bytes)
freeing bootmem node 0
freeing bootmem node 1
Memory: 1022528k/1048576k available (4416k kernel code, 26048k reserved,
832k data, 496k bss, 3)
Mount-cache hash table entries: 4096
Brought up 1 CPUs
NET: Registered protocol family 16





More information about the cbe-oss-dev mailing list