Re: [PATCH 3/3] powerpc/ppc64/kdump: better flag for running relocatable

Mohan Kumar M
2008-11-10T15:23:21Z

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.