[Crash-utility] question about phys_base
Wen Congyang
wency at cn.fujitsu.com
Tue Feb 28 05:10:38 UTC 2012
At 02/27/2012 10:10 PM, Dave Anderson Wrote:
>
>
> ----- Original Message -----
>>>
>>> No. What I want to understand is how x86_64_calc_phys_base() will
>>> be able to confidently recognize that an ELF file was qemu-generated,
>>> so that it can then do the right thing.
>
>> The guest is in first kernel:
>> # readelf /tmp/vm2.save -l| grep 0xffffffff8
>> LOAD 0x00000000010226b8 0xffffffff81000000 0x0000000001000000
>> LOAD 0x00000000010226b8 0xffffffff81000000 0x0000000001000000
>> LOAD 0x00000000010226b8 0xffffffff81000000 0x0000000001000000
>> LOAD 0x00000000010226b8 0xffffffff81000000 0x0000000001000000
>
> Why are there multiple segments describing the same virtual/physical region?
> Is there one START_KERNEL_map segment for each vcpu? Are their FileSiz/MemSiz
> values all the same?
Thanks for pointing this problem. I update the qemu side's patch:
The guest is in first kernel(vcpu: 4):
# readelf /tmp/vm2.save -l| grep 0xffffffff8
LOAD 0x000000000100f360 0xffffffff81000000 0x0000000001000000
The guest is in the second kernel(vcpu: 4)
# readelf /tmp/vm2.save2 -l| grep 0xffffffff8
LOAD 0x000000000100eb10 0xffffffff81000000 0x0000000001000000
LOAD 0x000000000400eb10 0xffffffff81000000 0x0000000004000000
The guest is in the second kernel(vcpu: 1)
[root at ghost ~]# readelf /tmp/vm2.save3 -l| grep 0xffffffff8
LOAD 0x0000000004001cfc 0xffffffff81000000 0x0000000004000000
>
>> The guest is in the second kernel(vcpu > 1)
>> ]# readelf /tmp/vm2.save2 -l| grep 0xffffffff8
>> LOAD 0x0000000001017be0 0xffffffff81000000 0x0000000001000000
>> LOAD 0x0000000001017be0 0xffffffff81000000 0x0000000001000000
>> LOAD 0x0000000001017be0 0xffffffff81000000 0x0000000001000000
>> LOAD 0x0000000004017be0 0xffffffff81000000 0x0000000004000000
>
> Again, it's not clear why there are multiple segments with the same
> same virtual address, but I'm guessing that the one segment that starts
> at 0x0000000004000000 is associated with the second kernel, and the other
> ones are for vcpus that ran in the first kernel?
>
>> The guest is in the second kernel(vcpu = 1)
>> [root at ghost ~]# readelf /tmp/vm2.save3 -l| grep 0xffffffff8
>> LOAD 0x0000000004001e4c 0xffffffff81000000 0x0000000004000000
>>
>> I donot find differentiate qemu-genetated ELF headers from dump-generated ELF
>> headers.
>
> Kdump-generated vmcores cannot have multiple START_KERNEL_map segments.
> But with dumps where (vpcu = 1), there could be confusion since it's not obvious
> if START_KERNEL_map region belongs to the first or second kernel.
>
> That being the case, I don't see how this can be supported cleanly by the crash'
> utility unless there is a NOTE, or some other obvious identifier, that absolutely
> confirms that the dumpfile was qemu-generated.
The note information stored in qemu-generated core:
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
NOTE 0x000000000000edd0 0x0000000000000000 0x0000000000000000
0x0000000000000590 0x0000000000000590 0
I think its format is the same as kdump's vmcore. Does kdump-generated core's
virtaddr is always 0? If so, What about to set virt_addr to -1 in qemu-generated
core?
Thanks
Wen Congyang
>
> Dave
>
>
>
>
>
>
More information about the Crash-utility
mailing list