Milton Miller wrote:
> On Oct 23, 2008, at 10:15 AM, Mohan Kumar M wrote:
>> Hi Milton,
>> My suggestions:
>> Milton Miller wrote:
>>
>> i.e.,
>> [code snip 1]
>>      lwz     r7,__run_at_load-_stext(r26)
>>      cmplwi  cr0,r7,1        /* kdump kernel ? - stay where we are */
>>      bne     1f
>>      add     r25,r25,r26
>>
>>      lwz     r7,__run_at_load-_stext(r26)
>>      cmplwi  cr0,r7,1
>>      bne     3f
>>
>> kexec-tools
>> [code snip 2]
>>      LOADADDR(6,run_at_load)
>>      ld      18,0(6)
>>      cmpd    18,1
>>      bne     skip
>>      li      7,1
>>      stw     7,92(4)         # mark __run_at_load flag at kernel
>> skip:
>>      lwz     7,0(4)          # get the first instruction that we stole
>>      stw     7,0(0)          # and put it in the slave loop at 0
>>                              # skip cache flush, do we care?
>>
>> [code snip 3]
>>      if (info->kexec_flags & KEXEC_ON_CRASH) {
>>              ....
>>              elf_rel_set_symbol(&info->rhdr, "run_at_load",
>>                                 &my_run_at_load,                             
>>                          
>> sizeof(my_run_at_load));
>>      }
> 
> 
> This elf_rel_set_symbol sets the copy in purgatory,
> after we have copied the code from the kernel.  It
> is this copy that gets copied to address 0.
> 

Yes, elf_ret_symbol sets the copy in purgatory. But the following code 
in purgatory (to be introduced)

        LOADADDR(6,run_at_load)
        ld      18,0(6)
        cmpd    18,1
        bne     skip
        li      7,1
        stw     7,92(4)         # mark __run_at_load flag at kernel

will set the __run_at_load in the kernel image (ie where ever kernel is 
loaded + 0x5c(92). Or am I missing some thing?

> However this information is not in the code that
> is at the start of the kernel.  We don't have any
> symbols for the kernel itself, it might be stripped.
> So we can't use the elf_set_symbol api.  (The kernel
> may not be relocatable either).

Regards,
Mohan.

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to