Hi Yanjiang,

On Wed, Jun 20, 2018 at 7:46 AM, Jin, Yanjiang
<yanjiang....@hxt-semitech.com> wrote:
> Hi James, Bhupesh,
>
> If /proc/kcore always exists in kexec/kdump, I think this issue can be fixed 
> easily. But it requires  that Kexec/kdump have to rely on " 
> CONFIG_PROC_KCORE=y".
> I am not sure if we can persuade Kexec-tools community to accept this.

Most distributions like Ubuntu and Fedora already enable
CONFIG_PROC_KCORE by default, to support user-space tools like
crash-utility and makedumpfile which can be used for 'live' debugging
of a primary kernel (without the requirement of being in the secondary
or crash kernel).

For such cases. '/proc/kcore' and 'vmlinux' are the only available
sources for PT_NOTE/PT_LOAD segments and kernel symbols respectively.

Since we need to support all such existing user-space utilities (which
work well with other archs like x86 and ppc64), we need to have a
solution which works without modifying most of them - the rest (like
kexec-tools) can be easily modified to follow the same approach.

I would share some patches soon on the same lines both for kernel and
user-space.

Thanks,
Bhupesh

>> -----Original Message-----
>> From: Bhupesh Sharma [mailto:bhsha...@redhat.com]
>> Sent: 2018年6月19日 19:58
>> To: James Morse <james.mo...@arm.com>
>> Cc: Jin, Yanjiang <yanjiang....@hxt-semitech.com>; Will Deacon
>> <will.dea...@arm.com>; Mark Rutland <mark.rutl...@arm.com>; Ard
>> Biesheuvel <ard.biesheu...@linaro.org>; Catalin Marinas
>> <catalin.mari...@arm.com>; Kexec Mailing List <kexec@lists.infradead.org>;
>> AKASHI Takahiro <takahiro.aka...@linaro.org>; Bhupesh SHARMA
>> <bhupesh.li...@gmail.com>; linux-arm-kernel <linux-arm-
>> ker...@lists.infradead.org>
>> Subject: Re: [PATCH] arm64/mm: Introduce a variable to hold base address of
>> linear region
>>
>> Hi James,
>>
>> On Tue, Jun 19, 2018 at 4:56 PM, James Morse <james.mo...@arm.com> wrote:
>> > Hi Bhupesh,
>> >
>> > On 19/06/18 11:37, Bhupesh Sharma wrote:
>> >> On Tue, Jun 19, 2018 at 3:46 PM, James Morse <james.mo...@arm.com>
>> wrote:
>> >>> On 19/06/18 10:57, Jin, Yanjiang wrote:
>> >>>>> -----Original Message-----
>> >>>>> From: Will Deacon [mailto:will.dea...@arm.com]
>> >>>>> Sent: 2018年6月19日 17:41
>> >>>>> To: Jin, Yanjiang <yanjiang....@hxt-semitech.com>
>> >>>>> Cc: James Morse <james.mo...@arm.com>; Bhupesh Sharma
>> >>>>> <bhsha...@redhat.com>; Mark Rutland <mark.rutl...@arm.com>; Ard
>> >>>>> Biesheuvel <ard.biesheu...@linaro.org>; Catalin Marinas
>> >>>>> <catalin.mari...@arm.com>; Kexec Mailing List
>> >>>>> <kexec@lists.infradead.org>; AKASHI Takahiro
>> >>>>> <takahiro.aka...@linaro.org>; Bhupesh SHARMA
>> >>>>> <bhupesh.li...@gmail.com>; linux-arm-kernel <linux-arm-
>> >>>>> ker...@lists.infradead.org>
>> >>>>> Subject: Re: [PATCH] arm64/mm: Introduce a variable to hold base
>> >>>>> address of linear region
>> >
>> >>>>>>>> It is hard to know all above in kexec-tools now. Originally I
>> >>>>>>>> planned to read memstart_addr's value from "/dev/mem", but
>> >>>>>>>> someone thought not all Kernels enable "/dev/mem", we'd better
>> >>>>>>>> find a more generic approach. So we want to get some
>> >>>>>>>> suggestions from ARM kernel
>> >>>>> community.
>> >>>>>>>> Can we export this variable in Kernel side through sysconf() or
>> >>>>>>>> other similar methods? Or someone can provide an effect way to
>> >>>>>>>> get memstart_addr's value?
>> >>>>>>>
>> >>>>>>> I thought the suggestion from James was to expose this via an
>> >>>>>>> ELF NOTE in kcore and vmcore (or in the header directly if
>> >>>>>>> that's possible, but I'm
>> >>>>> not sure about it)?
>> >>>>>>
>> >>>>>> Thanks for your reply firstly. But same as DEVMEM, kcore is not a
>> >>>>>> must-have, so we can't depend on it.
>> >>>>>
>> >>>>> Neither is KEXEC. We can select PROC_KCORE from KEXEC if it helps.
>> >>>>>
>> >>>>>> On the other hand, phys_to_virt() is called during generating
>> >>>>>> vmcore in Kexec-tools, vmcore also can't help this issue.
>> >>>>>
>> >>>>> I don't understand this part. If you have the vmcore in your hand,
>> >>>>> why can't you grok the pv offset from the note and use that in
>> phys_to_virt()?
>> >>>>
>> >>>> It is a chicken-and-egg issue.
>> >>>> phys_to virt() is for crashdump setup. To generate vmcore, we must
>> >>>> call phys_to_virt(). At this point, no vmcore exists.
>> >>>
>> >>> Its needed for the parts of the ELF header that kexec-tools
>> >>> generates at kdump load time?
>> >>>
>> >>> So adding this pv_offset to the key=value data
>> >>> crash_save_vmcoreinfo_init() saves isn't available early enough?
>> >
>> >> Yes, one case where it is not actually available early enough for
>> >> makedumpfile usage is if we are determining the PT_NOTE contents from
>> >> the '/proc/kcore' on a 'live' system
>> >
>> >> int set_kcore_vmcoreinfo(uint64_t vmcoreinfo_addr, uint64_t
>> >> vmcoreinfo_len)
>> >>
>> >> {
>> >>
>> >> <snip..>
>> >> kvaddr = (ulong)vmcoreinfo_addr + PAGE_OFFSET;
>> >>
>> >> }
>> >
>> > You are trying to read the vmcoreinfo through /proc/kcore given
>> > knowledge of its physical address.
>> >
>> > I'm suggesting adding the contents of vmcoreinfo as a PT_NOTE section
>> > of /proc/kcore's ELF header. No special knowledge necessary, any
>> > elf-parser should be able to dump the values.
>> >
>> >
>> >> Now the problem at hand is to determine the offset at which the
>> >> pv_offset (key=value data pair) lies in the '/proc/kcore' (I assume
>> >> that when you mentioned above and earlier about adding this pair to
>> >> the elfnotes you meant both the vmcoreinfo and 'proc/kcore'), as we
>> >> can have 'n' number of PT_LOAD segments.
>> >
>> > It looks like there is already a NOTE section with core info in there:
>> > | # readelf -l /proc/kcore
>> > |
>> > | Elf file type is CORE (Core file)
>> > | Entry point 0x0
>> > | There are 16 program headers, starting at offset 64
>> > |
>> > | Program Headers:
>> > |  Type           Offset             VirtAddr           PhysAddr
>> > |                 FileSiz            MemSiz              Flags  Align
>> > |   NOTE           0x00000000000003c0 0x0000000000000000 0x0000000000000000
>> > |                  0x0000000000001114 0x0000000000000000         0x0
>> >
>> > I assume we can add more notes without breaking the existing user...
>> >
>> > (and it looks like there are some broken __pa(kernel symbol) users in 
>> > there.
>>
>> Thanks for your inputs.
>>
>> I am working on fixes on the above lines for kernel and user-space tools 
>> (like
>> makedumpfile, crash-utility and kexec-tools).
>>
>> I will post some RFC patches on the same lines (or come back in case I get 
>> stuck
>> somewhere) shortly.
>>
>> Thanks,
>> Bhupesh
>
>
>
> This email is intended only for the named addressee. It may contain 
> information that is confidential/private, legally privileged, or 
> copyright-protected, and you should handle it accordingly. If you are not the 
> intended recipient, you do not have legal rights to retain, copy, or 
> distribute this email or its contents, and should promptly delete the email 
> and all electronic copies in your system; do not retain copies in any media. 
> If you have received this email in error, please notify the sender promptly. 
> Thank you.
>
>

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to