Hi guanyou,

Could you please send the patch independently, without replying it to a
thread? Also please draft the patch with proper commit messages, otherwise
I have no idea why the patch should be applied to crash, and what is the
relation for this patch with the original "arm64: fix regression for the
determination of VA_BITS and section_size_bits" patch.

Thanks,
Tao Liu

On Thu, Aug 29, 2024 at 3:32 PM 陈冠有 <chenguan...@xiaomi.com> wrote:

> Hi qiwu & tao
>
> E.g. for this patch, I didn't see any commit logs, so I have no idea why
the patch should be applied to crash.


> diff --git a/arm64.c b/arm64.c
> index 08b7db2..5e14daa 100644
> --- a/arm64.c
> +++ b/arm64.c
> @@ -4891,6 +4891,17 @@ arm64_set_va_bits_by_tcr(void)
>                  * vabits_actual = 64 - T1SZ;
>                  */
>                 value = 64 - value;
> +               /*
> +                *      vabits
> +                *        |
> +                *  |--------|--------|
> +                * 64       32        1
> +                */
> +               if (value < 32) {
> +                       error(WARNING, "parse vabits_actual(%ld) invalid,
> maybe dec number.\n", value);
> +                       // DEC >> HEX
> +                       value = (value/10) * 16 + (value%10);
> +               }
>                 if (CRASHDEBUG(1))
>                         fprintf(fp,  "vmcoreinfo : vabits_actual: %ld\n",
> value);
>                 machdep->machspec->VA_BITS_ACTUAL = value;
>
>
> ------------------------------
> *发件人:* qiwu.chen(陈启武) <qiwu.c...@transsion.com>
> *发送时间:* 2024年7月15日 15:45:22
> *收件人:* 陈冠有; devel@lists.crash-utility.osci.io
> *主题:* 答复: [External Mail][Crash-utility] [PATCH] arm64: fix regression
> for the determination of VA_BITS and section_size_bits
>
>
> *[外部邮件]* 此邮件来源于小米公司外部,请谨慎处理。若对邮件安全性存疑,请将邮件转发给mi...@xiaomi.com进行反馈
>
> Hi guanyou
>
> 是的,crash工具加载MTK平台K419版本vmcore出现的问题。
>
> 看起来MTK在lk阶段向vmcoreinfo写入"NUMBER(TCR_EL1_T1SZ)=25\n"导致的,而不是从在kernel通过读取tcr_el1获取TCR_EL1_T1SZ的值
>
>
>
> Thanks
>
>
>
>
>
> *发件人:* 陈冠有 <chenguan...@xiaomi.com>
> *发送时间:* 2024年7月15日 13:58
> *收件人:* qiwu.chen(陈启武) <qiwu.c...@transsion.com>;
> devel@lists.crash-utility.osci.io
> *主题:* 答复: [External Mail][Crash-utility] [PATCH] arm64: fix regression
> for the determination of VA_BITS and section_size_bits
>
>
>
> 你通常不会收到来自 chenguan...@xiaomi.com 的电子邮件。了解这一点为什么很重要
> <https://aka.ms/LearnAboutSenderIdentification>
>
> > vmcoreinfo : vabits_actual: 27
>
>
>
> MTK vmcore?
>
>
>
> See:
> https://lists.crash-utility.osci.io/archives/list/devel@lists.crash-utility.osci.io/thread/LUCYZ5JBGEH2R422JFPJC5IUPMDRGCRS/
> ------------------------------
>
> *发件人**:* qiwu.c...@transsion.com <qiwu.c...@transsion.com>
> *发送时间**:* 2024年7月14日 13:29:20
> *收件人**:* devel@lists.crash-utility.osci.io
> *主题**:* [External Mail][Crash-utility] [PATCH] arm64: fix regression for
> the determination of VA_BITS and section_size_bits
>
>
>
> [外部邮件] 此邮件来源于小米公司外部,请谨慎处理。若对邮件安全性存疑,请将邮件转发给mi...@xiaomi.com进行反馈
>
> 1. The commit f02c8e87 will cause a regression issue for the determination
> of VA_BITS
> on Linux 4.19 and earlier kernels, the crash session fails during
> initialization with
> the error message due to get a wrong vabits_actual:
> vmcoreinfo : vabits_actual: 27
> crash: invalid kernel virtual address: ffffffa890a41318  type:
> "kernel_config_data"
> WARNING: cannot read kernel_config_data
> crash: invalid kernel virtual address: ffffffa89106db50  type: "possible"
> WARNING: cannot read cpu_possible_map
> crash: invalid kernel virtual address: ffffffa89106db48  type: "present"
> WARNING: cannot read cpu_present_map
> crash: invalid kernel virtual address: ffffffa89106db40  type: "online"
> WARNING: cannot read cpu_online_map
> crash: invalid kernel virtual address: ffffffa89106db58  type: "active"
> WARNING: cannot read cpu_active_map
> crash: invalid kernel virtual address: ffffffa89143cb80  type:
> "shadow_timekeeper xtime_sec"
> crash: invalid kernel virtual address: ffffffa89107b76c  type:
> "init_uts_ns"
> WARNING: invalid linux_banner pointer: ffffffa890a30018
> crash: vmlinux and SYS_COREDUMP do not match!
>
> Fix it by remove arm64_set_va_bits_by_tcr() if vabits_actual is missing.
>
> 2. The commit 568c6f04 will cause a regression issue for the determination
> of section_size_bits
> on Linux 5.12 and earlier kernels. The section_size_bits compatible with
> linux upstream and
> android GKI changes should be:
> Before android-12-GKI or Linux 5.12:
>         SECTION_SIZE_BITS = 30
>
> After android-12-gki:
>     SECTION_SIZE_BITS = 27 when defined 4K_PAGES or 16K_PAGES.
>     SECTION_SIZE_BITS = 29 when defined 64K_PAGES.
>
> Fixes: f02c8e87 ("arm64: use TCR_EL1_T1SZ to get the correct info if
> vabits_actual is missing")
> Fixes: 568c6f04 ("arm64: section_size_bits compatible with macro
> definitions")
> Signed-off-by: qiwu.chen <qiwu.c...@transsion.com>
> ---
>  arm64.c | 37 ++++++++++++++++++-------------------
>  1 file changed, 18 insertions(+), 19 deletions(-)
>
> diff --git a/arm64.c b/arm64.c
> index b3040d7..176c465 100644
> --- a/arm64.c
> +++ b/arm64.c
> @@ -1613,8 +1613,15 @@ arm64_get_section_size_bits(void)
>  {
>         int ret;
>         char *string;
> +       bool is_ikconfig_avail;
>
> -       if (THIS_KERNEL_VERSION >= LINUX(5,12,0)) {
> +       if (arm64_get_vmcoreinfo(&machdep->section_size_bits,
> "NUMBER(SECTION_SIZE_BITS)", NUM_DEC))
> +               goto exit;
> +
> +       is_ikconfig_avail = kt->ikconfig_flags & IKCONFIG_AVAIL ? TRUE :
> FALSE;
> +       /* The commit reduce section size for arm64 sparsemem is
> introduced on linux-v5.12 and android-12-GKI */
> +       if (THIS_KERNEL_VERSION >= LINUX(5,12,0) || (is_ikconfig_avail &&
> +               get_kernel_config("CONFIG_ANDROID_KABI_RESERVE", NULL) ==
> IKCONFIG_Y)) {
>                 if (machdep->pagesize == 65536)
>                         machdep->section_size_bits =
> _SECTION_SIZE_BITS_5_12_64K;
>                 else
> @@ -1622,24 +1629,18 @@ arm64_get_section_size_bits(void)
>         } else
>                 machdep->section_size_bits = _SECTION_SIZE_BITS;
>
> -       if (arm64_get_vmcoreinfo(&machdep->section_size_bits,
> "NUMBER(SECTION_SIZE_BITS)", NUM_DEC)) {
> -               /* nothing */
> -       } else if (kt->ikconfig_flags & IKCONFIG_AVAIL) {
> -               if ((ret = get_kernel_config("CONFIG_MEMORY_HOTPLUG",
> NULL)) == IKCONFIG_Y) {
> -                       if ((ret =
> get_kernel_config("CONFIG_HOTPLUG_SIZE_BITS", &string)) == IKCONFIG_STR)
> -                               machdep->section_size_bits = atol(string);
> -               }
> -
> -               /* arm64: reduce section size for sparsemem */
> -               if ((ret = get_kernel_config("CONFIG_ARM64_4K_PAGES",
> NULL)) == IKCONFIG_Y
> -                       || (ret =
> get_kernel_config("CONFIG_ARM64_16K_PAGES", NULL)) == IKCONFIG_Y)
> -                       machdep->section_size_bits =
> _SECTION_SIZE_BITS_5_12;
> -               else if ((ret =
> get_kernel_config("CONFIG_ARM64_64K_PAGES", NULL)) == IKCONFIG_Y)
> -                       machdep->section_size_bits =
> _SECTION_SIZE_BITS_5_12_64K;
> +       /* section_size_bits for arm64 vendor special case */
> +       if (is_ikconfig_avail &&
> get_kernel_config("CONFIG_MEMORY_HOTPLUG", NULL) == IKCONFIG_Y) {
> +               if (get_kernel_config("CONFIG_HOTPLUG_SIZE_BITS", &string)
> == IKCONFIG_STR)
> +                       machdep->section_size_bits = atol(string);
>         }
>
> -       if (CRASHDEBUG(1))
> -               fprintf(fp, "SECTION_SIZE_BITS: %ld\n",
> machdep->section_size_bits);
> +exit:
> +       if (machdep->section_size_bits) {
> +               if (CRASHDEBUG(1))
> +                       fprintf(fp, "SECTION_SIZE_BITS: %ld\n",
> machdep->section_size_bits);
> +       } else
> +               error(FATAL, "cannot determine SECTION_SIZE_BITS\n");
>  }
>
>  /*
> @@ -4733,8 +4734,6 @@ arm64_calc_VA_BITS(void)
>                  */
>                 machdep->flags |= FLIPPED_VM;
>                 return;
> -       } else if (arm64_set_va_bits_by_tcr()) {
> -               return;
>         } else if (machdep->machspec->VA_BITS_ACTUAL) {
>                 machdep->machspec->VA_BITS =
> machdep->machspec->VA_BITS_ACTUAL;
>                 machdep->machspec->VA_START =
> _VA_START(machdep->machspec->VA_BITS_ACTUAL);
> --
> 2.25.1
> --
> Crash-utility mailing list -- devel@lists.crash-utility.osci.io
> To unsubscribe send an email to devel-le...@lists.crash-utility.osci.io
> https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
> Contribution Guidelines: https://github.com/crash-utility/crash/wiki
>
> #/******
> 本邮件及其附件含有小米公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!
> This e-mail and its attachments contain confidential information from
> XIAOMI, which is intended only for the person or entity whose address is
> listed above. Any use of the information contained herein in any way
> (including, but not limited to, total or partial disclosure, reproduction,
> or dissemination) by persons other than the intended recipient(s) is
> prohibited. If you receive this e-mail in error, please notify the sender
> by phone or email immediately and delete it!******/#
> #/******本邮件及其附件含有小米公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!
> This e-mail and its attachments contain confidential information from
> XIAOMI, which is intended only for the person or entity whose address is
> listed above. Any use of the information contained herein in any way
> (including, but not limited to, total or partial disclosure, reproduction,
> or dissemination) by persons other than the intended recipient(s) is
> prohibited. If you receive this e-mail in error, please notify the sender
> by phone or email immediately and delete it!******/#
> --
> Crash-utility mailing list -- devel@lists.crash-utility.osci.io
> To unsubscribe send an email to devel-le...@lists.crash-utility.osci.io
> https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
> Contribution Guidelines: https://github.com/crash-utility/crash/wiki
>
--
Crash-utility mailing list -- devel@lists.crash-utility.osci.io
To unsubscribe send an email to devel-le...@lists.crash-utility.osci.io
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to