Bug 179705

Summary: Anaconda does not write to nvram on Cell Blades
Product: [Fedora] Fedora Reporter: Adrian Reber <adrian>
Component: anacondaAssignee: Paul Nasrat <nobody+pnasrat>
Status: CLOSED NOTABUG QA Contact: Mike McLean <mikem>
Severity: medium Docs Contact:
Priority: medium    
Version: 5   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-02-07 15:12:04 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
device tree tarball none

Description Adrian Reber 2006-02-02 09:35:40 UTC
When installing FC5test2 on a Cell Blade the installation works fine except that
after the first reboot yaboot cannot find its configuration file:

0 > yaboot                                                                      
Reading...relocating...go!                                                      
Couldn't determine boot device                                                  
 ok                                                                             
1 > 

after setting the boot-device to the partition where yaboot.conf is located
yaboot starts without any problems

"setenv boot-device /disk:2" or from linux "nvsetenv boot-device /disk:2"

The OF implementation used on these blades does not support yet names like 
/pci@..../ide../disk... but as only one disk can be connected this should be no
big problem.

So if the nvram would be set correctly during installation no extra changes
would be necessary to install Fedora.

# cat /proc/cpuinfo 
processor       : 0
cpu             : Cell Broadband Engine, altivec supported
clock           : 2400.000000MHz
revision        : 4.0 (pvr 0070 0400)

processor       : 1
cpu             : Cell Broadband Engine, altivec supported
clock           : 2400.000000MHz
revision        : 4.0 (pvr 0070 0400)

processor       : 2
cpu             : Cell Broadband Engine, altivec supported
clock           : 2400.000000MHz
revision        : 4.0 (pvr 0070 0400)

processor       : 3
cpu             : Cell Broadband Engine, altivec supported
clock           : 2400.000000MHz
revision        : 4.0 (pvr 0070 0400)

timebase        : 14318000
machine         : CHRP IBM,0150-250

Comment 1 Adrian Reber 2006-02-02 09:35:41 UTC
Created attachment 124035 [details]
device tree tarball

Comment 2 Paul Nasrat 2006-02-02 15:19:11 UTC
Can you also attach the yaboot.conf generated by the installer. And a printout
of the partitions.  A pointer in the standards to your expectations of
behaviour, and the output of a boot with a yaboot built with debugging enabled
would be useful.

Is the JS20 SLOF definition of yaboot still pretty accurate:

\ Where files are loaded.  Not the same as where they are executed.
10000 CONSTANT load-base
\ Load secondary boot loader from disk @ sector 63.  512kB should be enough.
: read-yaboot  3f 400 load-base disk-read ;

: yaboot
  cr ." Reading..." read-yaboot
  ." relocating..." load-base load-elf-file
  ." go!" start-elf ;



Comment 3 Adrian Reber 2006-02-03 08:30:27 UTC
The yaboot definition has not really changed, this is out current code:

10000 CONSTANT LOAD-BASE

: read-yaboot  set-disk-read 3f 400 load-base disk-read ;

: yaboot set-bootargs set-bootpath
  cr ." Reading..." read-yaboot
  ." relocating..." load-base load-elf-file drop
  ." go!" s" yaboot" rot start-elf client-data ;

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda3              9918956   2605204   6801764  28% /
/dev/hda2                99075     21025     72935  23% /boot
tmpfs                   500056         0    500056   0% /dev/shm

$ ls -la /etc/yaboot.conf 
lrwxrwxrwx 1 root root 23 Jan 17 12:17 /etc/yaboot.conf -> ../boot/etc/yaboot.conf
$ cat /etc/yaboot.conf 
# yaboot.conf generated by anaconda

boot=/dev/hda1
init-message=Welcome to Fedora Core!\nHit <TAB> for boot options

partition=2
timeout=80
install=/usr/lib/yaboot/yaboot
delay=5
enablecdboot
enableofboot
enablenetboot
nonvram
fstype=raw

image=/vmlinuz-2.6.15-1.1826.2.10_FC5
        label=linux
        read-only
        initrd=/initrd-2.6.15-1.1826.2.10_FC5.img
        append="console=hvc0 rhgb quiet root=LABEL=/"



0 > yaboot  
Reading...relocating...go!
Adding OF methods...
    prom_init - OF interface initialized.
    yaboot_start - Malloc buffer allocated at 00300000 (1048576 bytes)
    yaboot_start - reloc_offset :  0         (should be 0)
    yaboot_start - test_bss     :  0         (should be 0)
    yaboot_start - test_data    :  0         (should be 0)
    yaboot_start - &test_data   :  00227454
    yaboot_start - &test_bss    :  00227458
    yaboot_start - linked at    :  0x00200000
    yaboot_start - Running on _machine = 4
    yaboot_main - /chosen/bootargs = 
    yaboot_main - /chosen/bootpath = /disk:2
    yaboot_main - After parse_device_path: dev=/disk, part=2, file=
    yaboot_main - After path kludgeup: dev=/disk, part=2, file=/etc/yaboot.conf
    open_file - dev_path = /disk
file_name = /etc/yaboot.conf
partition = 2
    open_file - device is a block device
    partitions_lookup - block size of device is 512
partitions:
    file_block_open - number: 03, start: 0x00033ed0, length: 0x01387e30
    file_block_open - number: 02, start: 0x00001f80, length: 0x00031f50
 (match)
    file_block_open - Using OF defaults.. (found = 00308028)
--> ext2_open
    ext2_open - dev=/disk, part=0x00308028 (2), file_name=/etc/yaboot.conf
    ext2_open - partition offset: 4128768
    ext2_open - </disk:0>
    ext2_open - file->of_device = 0128fbc8
<-- ext2_open - FILE_ERR_OK
    ext2_read - ext_read() from pos 0x0, size: 0x32768x
Config file read, 1024 bytes
    ext2_close - ext2_close called
Can't set item boot to value /dev/hda1
Can't set item to to value <NULL>
Can't set item Fedora to value <NULL>
Can't set item Core!nHit to value <NULL>
Can't set item <TAB> to value <NULL>
Can't set item for to value <NULL>
Can't set item boot to value <NULL>
Can't set item options to value <NULL>
Can't set item install to value /usr/lib/yaboot/yaboot
Can't set item delay to value 5
Can't set item enablecdboot to value <NULL>
Can't set item enableofboot to value <NULL>
Can't set item enablenetboot to value <NULL>
Can't set item nonvram to value <NULL>
Can't set item fstype to value raw
    load_config_file - Config file successfully parsed, 1024 bytes
Welcome
Welcome to yaboot version 1.3.13 (Red Hat 1.3.13-0.16.1.1)
Enter "help" to get some basic usage information
boot: linux
    get_params - after parse_device_path: dev=/disk part=2
file=/vmlinuz-2.6.15-1.1826.2.10_FC5
    get_params - Parsing initrd path </initrd-2.6.15-1.1826.2.10_FC5.img>
Please wait, loading kernel...
    open_file - dev_path = /disk
file_name = /vmlinuz-2.6.15-1.1826.2.10_FC5
partition = 2
    open_file - device is a block device
    partitions_lookup - block size of device is 512
partitions:
    file_block_open - number: 03, start: 0x00033ed0, length: 0x01387e30
    file_block_open - number: 02, start: 0x00001f80, length: 0x00031f50
 (match)
    file_block_open - Using OF defaults.. (found = 0030ac44)
--> ext2_open
    ext2_open - dev=/disk, part=0x0030ac44 (2),
file_name=/vmlinuz-2.6.15-1.1826.2.10_FC5
    ext2_open - partition offset: 4128768
    ext2_open - </disk:0>
    ext2_open - file->of_device = 01297cc8
<-- ext2_open - FILE_ERR_OK
    ext2_read - ext_read() from pos 0x0, size: 0x20x
    ext2_read - ext_read() from pos 0x14, size: 0x44x
    load_elf64 - Elf64 header:
    load_elf64 -  e.e_type      = 2
    load_elf64 -  e.e_machine   = 21
    load_elf64 -  e.e_version   = 1
    load_elf64 -  e.e_entry     = 0x0000000000000000
    load_elf64 -  e.e_phoff     = 0x0000000000000040
    load_elf64 -  e.e_shoff     = 0x0000000000593190
    load_elf64 -  e.e_flags     = 0
    load_elf64 -  e.e_ehsize    = 0x00000040
    load_elf64 -  e.e_phentsize = 0x00000038
    load_elf64 -  e.e_phnum     = 2
    ext2_read - ext_read() from pos 0x40, size: 0x112x
    load_elf64 - Before prom_claim, mem_sz: 0x00800000
    load_elf64 - After ELF parsing, load base: 01400000, mem_sz: 0x00800000
    load_elf64 -     wanted load base: 0x01400000, mem_sz: 0x00800000
    ext2_read - ext_read() from pos 0x10000, size: 0x5779456x
   Elf64 kernel loaded...                                                      
                                                  
    ext2_close - ext2_close called                                             
                                                  
Loading ramdisk...                                                             
                                                  
    open_file - dev_path = /disk                                               
                                                  
file_name = /initrd-2.6.15-1.1826.2.10_FC5.img                                 
                                                  
partition = 2                                                                  
                                                  
    open_file - device is a block device                                       
                                                  
    partitions_lookup - block size of device is 512                            
                                                  
partitions:                                                                    
                                                  
    file_block_open - number: 03, start: 0x00033ed0, length: 0x01387e30        
                                                  
    file_block_open - number: 02, start: 0x00001f80, length: 0x00031f50        
                                                  
 (match)                                                                       
                                                  
    file_block_open - Using OF defaults.. (found = 0030d0c4)                   
                                                  
--> ext2_open                                                                  
                                                  
    ext2_open - dev=/disk, part=0x0030d0c4 (2),
file_name=/initrd-2.6.15-1.1826.2.10_FC5.img                                      
    ext2_open - partition offset: 4128768                                      
                                                  
    ext2_open - </disk:0>                                                      
                                                  
    ext2_open - file->of_device = 01297d58                                     
                                                  
<-- ext2_open - FILE_ERR_OK                                                    
                                                  
    ext2_read - ext_read() from pos 0x0, size: 0x4194304x                      
                                                  
    ext2_close - ext2_close called                                             
                                                  
ramdisk loaded at 01c00000, size: 891 Kbytes                                   
                                                  
    yaboot_text_ui - setting kernel args to: ro console=hvc0 rhgb quiet
root=LABEL=/                                              
    yaboot_text_ui - flushing icache...    yaboot_text_ui -  done              
                                                  
    yaboot_text_ui - birec at 00700000                                         
                                                  
    yaboot_text_ui - Kernel entry point = 01400000                             
                                                  
    yaboot_text_ui - kernel: arg1 = 01c00000,                                  
                                                  
        arg2 = 0x000dec00,                                                     
                                                  
        prom = 01110274,                                                       
                                                  
        arg4 = 0,                                                              
                                                  
        arg5 = 0                                                               
                                                  
                                                                               
                                                  
    yaboot_text_ui - Entering kernel...                                        
                                                  
OF stdout device is: /serial                                                   
                                                  
command line: ro console=hvc0 rhgb quiet root=LABEL=/                          
                                                  
memory layout at init:                                                         
                                                  
  memory_limit : 0000000000000000 (16 MB aligned)                              
                                                  
  alloc_bottom : 0000000001cdf000                                              
                                                  
  alloc_top    : 0000000020000000                                              
                                                  
  alloc_top_hi : 0000000040000000                                              
                                                  
  rmo_top      : 0000000020000000                                              
                                                  
  ram_top      : 0000000040000000                                              
                                                  
Looking for displays                                                           
                                                  
instantiating rtas at 0x000000001fff8000 ... done                              
                                                  
0000000000000000 : boot cpu     0000000000000000                               
                                                  
0000000000000002 : starting cpu hw idx 0000000000000002... done                
                                                  
copying OF device tree ...                                                     
                                                  
Building dt strings...                                                         
                                                  
Building dt structure...                                                       
                                                  
Device tree strings 0x0000000001ce0000 -> 0x0000000001ce06ce                   
                                                  
Device tree struct  0x0000000001ce1000 -> 0x0000000001cf0000                   
                                                  
Calling quiesce ...                                                            
                                                  
returning from prom_init                                                       
                                                  
Page orders: linear mapping = 24, others = 12                                  
                                                  
0xc000000001c00000:0xc000000001cdec00                                          
                                                  
lize btext ...                                                                 
                                                  
t a display !                                                                  
                                                  
PC64 #1 SMP Wed Jan 11 18:15:42 EST 2006                                       
                                                  
-------------------------------------                                          
                                                  
              = 0x0                                                            
                                                  
controller    = 0x3                                                            
                                                  
              = 0x1000                                                         
                                                  
ze            = 0x40000000                                                     
                                                  
che_line_size = 0x80                                                           
                                                  
che_line_size = 0x80                                                           
                                                  
              = 0xc00000003f000000                                             
                                                  
              = 0x1ffff                                                        
                                                  
-------------------------------------                                          
                                                  
100                                                                            
                                                  
*** 0000 : MM Init                                                             
                                                  
it                                                                             
                                                  
100                                                                            
                                                  
*** 0000 : MM Init Done                                                        
                                                  
it Done                                                                        
                                                  
6.15-1.1826.2.10_FC5 (bhcompile.redhat.com) (gcc version 4.1.0
20060106 (Red Hat 4.1.0-0.14)) #1 SMP Wed Jan 116
012                                                                            
                                                  
*** 0000 : Setup Arch                                                          
                                                  
 Arch                                                                          
                                                  
000000, Total RAM: 0x40000000                                                  
                                                  
: 0MB                                                                        

Comment 4 Paul Nasrat 2006-02-03 14:32:54 UTC
OK parted /dev/hda print and can you try setting boot-device to be /disk: (no
partition) and test that please.



Comment 5 Adrian Reber 2006-02-07 08:58:34 UTC
I don't understand: "OK parted /dev/hda print" Should I do something? Sorry.

Yaboot works also with boot-device set to /disk: (didn't knew that this was
possible). As yaboot is able to find its configuration file with this
information this could also be something the firmware could set as default value
in the nvram (if that makes sense).

0 > yaboot  
Reading...relocating...go!
Adding OF methods...
    prom_init - OF interface initialized.
    yaboot_start - Malloc buffer allocated at 00300000 (1048576 bytes)
    yaboot_start - reloc_offset :  0         (should be 0)
    yaboot_start - test_bss     :  0         (should be 0)
    yaboot_start - test_data    :  0         (should be 0)
    yaboot_start - &test_data   :  00227454
    yaboot_start - &test_bss    :  00227458
    yaboot_start - linked at    :  0x00200000
    yaboot_start - Running on _machine = 4
    yaboot_main - /chosen/bootargs = 
    yaboot_main - /chosen/bootpath = /disk:
    yaboot_main - After parse_device_path: dev=/disk, part=-1, file=
    yaboot_main - After path kludgeup: dev=/disk, part=-1, file=/etc/yaboot.conf
    open_file - dev_path = /disk
file_name = /etc/yaboot.conf
partition = -1
    open_file - device is a block device
    partitions_lookup - block size of device is 512
partitions:
    file_block_open - number: 03, start: 0x00033ed0, length: 0x01387e30
--> ext2_open
    ext2_open - dev=/disk, part=0x00308084 (3), file_name=/etc/yaboot.conf
    ext2_open - partition offset: 108896256
    ext2_open - </disk:0>
    ext2_open - file->of_device = 0128fb78
    ext2_open - ext2fs_namei error #2133571404 while loading file /etc/yaboot.conf
<-- ext2_open - -2
    file_block_open - number: 02, start: 0x00001f80, length: 0x00031f50
--> ext2_open
    ext2_open - dev=/disk, part=0x00308028 (2), file_name=/etc/yaboot.conf
    ext2_open - partition offset: 4128768
    ext2_open - </disk:0>
    ext2_open - file->of_device = 0128fbc0
<-- ext2_open - FILE_ERR_OK
    ext2_read - ext_read() from pos 0x0, size: 0x32768x
Config file read, 1024 bytes
    ext2_close - ext2_close called


Comment 6 Paul Nasrat 2006-02-07 14:29:46 UTC
Sorry the parted was supposed to be run from the running system - don't panic.

Setting to the device: not device:,N is what we expect on CHRP (which we pretend
Cell is, and I believe you were trying to make SLOF on Cell compliant with the
extensions of) and I believe would be consistent with other boxes you ship.  

I think this would be a sensible default as it doesn't assume anything about
disk layout.  Again if you let me know exactly what parts of the 1275 standard
you are following (or if you have a 1275 platform binding paper for Cell) for
boot procedure I can check if yaboot's assumptions are correct.

We can not set nonvram on cell, if it's really required too.

Comment 7 Adrian Reber 2006-02-07 15:12:04 UTC
>I think this would be a sensible default as it doesn't assume anything about
> disk layout.  Again if you let me know exactly what parts of the 1275 standard
> you are following (or if you have a 1275 platform binding paper for Cell) for
> boot procedure I can check if yaboot's assumptions are correct.

You make it sound like if we have a plan or a written specification :-)
I cannot say anything about this because I do not know it.

We will now set boot-device to /disk: and then there are no changes required in
anaconda. Thanks for your help.