Hi guanyou,

On Tue, Aug 27, 2024 at 3:24 PM 陈冠有 <chenguan...@xiaomi.com> wrote:
>
> Hi  Lianbo , Tao
>
> I plan to create an android version repository on my github.
> This commit will cause parsing section_size_bits on Linux 5.12 before.
>
Thanks for your efforts for maintaining a Andorid fork, which will be
a great help!

> Author: chenguanyou <chenguan...@xiaomi.com>
> Date:   Mon Aug 26 14:25:22 2024 +0800
>
>     Revert "arm64: section_size_bits compatible with macro definitions"
>
>     This reverts commit 568c6f049ad4a20918afeb2db9bb7a15b17d9ff2.
>
Could you please also draft the revert patches and send out
independently, with proper commit logs, so we know why the patch
should be reverted.

> diff --git a/arm64.c b/arm64.c
> index 06e7451..05ffdb3 100644
> --- a/arm64.c
> +++ b/arm64.c
> @@ -1698,14 +1698,7 @@ arm64_get_section_size_bits(void)
>                 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;
> +               }

E.g. is "CONFIG_ARM64_4K_PAGES", "CONFIG_ARM64_64K_PAGES" android
specific? Why should we remove those?

Thanks,
Tao Liu

>         }
>
>         if (CRASHDEBUG(1))
>
>
> ________________________________
> 发件人: Tao Liu <l...@redhat.com>
> 发送时间: 2024年8月26日 13:32:54
> 收件人: lijiang
> 抄送: devel@lists.crash-utility.osci.io
> 主题: [External Mail][Crash-utility] Re: [PATCH v2] arm64: fix regression for 
> the determination of section_size_bits
>
> [外部邮件] 此邮件来源于小米公司外部,请谨慎处理。若对邮件安全性存疑,请将邮件转发给mi...@xiaomi.com进行反馈
>
> Hi Lijiang & guanyou & qiwu,
>
> On Mon, Aug 26, 2024 at 3:08 PM lijiang <liji...@redhat.com> wrote:
> >
> > On Tue, Aug 20, 2024 at 11:54 AM 
> > <devel-requ...@lists.crash-utility.osci.io> wrote:
> >>
> >> Date: Tue, 20 Aug 2024 03:53:16 -0000
> >> From: chenguanyou9...@gmail.com
> >> Subject: [Crash-utility] Re: [PATCH v2] arm64: fix regression for the
> >>         determination of section_size_bits
> >> To: devel@lists.crash-utility.osci.io
> >> Message-ID: <20240820035316.8055.4...@lists.crash-utility.osci.io>
> >> Content-Type: text/plain; charset="utf-8"
> >>
> >> Hi  lianbo
> >>
> >> Base on qiwu's patch, is this attached patch OK ?
> >>
> >
> > Sorry for the late reply.
> >
> > I'm worried that there will be more and more similar patches in the future, 
> > how should we handle them by then?
> >
> > Or leave it there for the time being until we find a better solution. Any 
> > thoughts from other reviewers?
> >
>
> Agreed. The patch is Android specific, which can only serve for
> android, not for other distros.
>
> Please correct me if I'm wrong. The android can be viewed as a distro,
> similar to ubuntu/fedora etc. The distro specific change/code should
> better go into distro packaging, like the one[1] for fedora, which may
> have extra compiling hardening or other customizations required by
> distro itself, hence these patches are maintained here other than
> upstream.
>
> I'm not a android guy and not familiar with how the andorid
> commandline tools are maintained. AFAIK there are 3rd package systems
> for android, such as termux [2]. IMHO the above change should go in
> there instead. Any thoughts?
>
> Thanks,
> Tao Liu
>
> [1]: https://src.fedoraproject.org/rpms/crash/tree/rawhide
> [2]: https://github.com/termux/termux-packages
>
> > Thanks
> > Lianbo
> >
> >> >From 08d4af144b981daf292473303e08546ef1e81a04 Mon Sep 17 00:00:00 2001
> >> From: chenguanyou <chenguan...@xiaomi.com>
> >> Date: Thu, 8 Aug 2024 17:35:07 +0800
> >> Subject: [PATCH] arm64: fix regression for the determination of
> >>  section_size_bits
> >>
> >> The commit 568c6f04 will cause a regression issue for the determination of
> >> section_size_bits on kernel version before android12-5.10 or Linux-v5.12.
> >> The section_size_bits is supposed to be compatible with linux upstream and
> >> android GKI version:
> >> Before android12-5.10 or Linux-v5.12:
> >>         SECTION_SIZE_BITS = 30
> >>
> >> After android12-5.10 or Linux-v5.12:
> >>     SECTION_SIZE_BITS = 27 when defined 4K_PAGES or 16K_PAGES.
> >>     SECTION_SIZE_BITS = 29 when defined 64K_PAGES.
> >>
> >> Fixes: 568c6f04 ("arm64: section_size_bits compatible with macro 
> >> definitions")
> >> Change-Id: Ib6ec610753aabb52dfbafab65e1e6c04cbe65f72
> >>
> >> Signed-off-by: qiwu.chen <qiwu.c...@transsion.com>
> >> Signed-off-by: chenguanyou <chenguan...@xiaomi.com>
> >> ---
> >>  arm64.c       | 22 ++++++++++------------
> >>  defs.h        | 10 ++++++++++
> >>  global_data.c |  7 +++++++
> >>  kernel.c      | 23 +++++++++++++++++++++++
> >>  4 files changed, 50 insertions(+), 12 deletions(-)
> >>
> >> diff --git a/arm64.c b/arm64.c
> >> index 8ed1aaf..f0721b7 100644
> >> --- a/arm64.c
> >> +++ b/arm64.c
> >> @@ -1667,30 +1667,28 @@ arm64_get_section_size_bits(void)
> >>     int ret;
> >>     char *string;
> >>
> >> -   if (THIS_KERNEL_VERSION >= LINUX(5,12,0)) {
> >> +   if (arm64_get_vmcoreinfo(&machdep->section_size_bits, 
> >> "NUMBER(SECTION_SIZE_BITS)", NUM_DEC))
> >> +       goto exit;
> >> +
> >> +   if (THIS_KERNEL_VERSION >= LINUX(5,12,0)
> >> +           || (IS_ANDROID_KERNEL_REL
> >> +               && THIS_KERNEL_VERSION >= LINUX(5,10,0)
> >> +               && THIS_ANDROID_VERSION >= ANDROID(12,0)))
> >>         if (machdep->pagesize == 65536)
> >>             machdep->section_size_bits = _SECTION_SIZE_BITS_5_12_64K;
> >>         else
> >>             machdep->section_size_bits = _SECTION_SIZE_BITS_5_12;
> >> -   } else
> >> +   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 (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;
> >>     }
> >>
> >> +exit:
> >>     if (CRASHDEBUG(1))
> >>         fprintf(fp, "SECTION_SIZE_BITS: %ld\n", 
> >> machdep->section_size_bits);
> >>  }
> >> diff --git a/defs.h b/defs.h
> >> index 1b7649d..b0d3f8f 100644
> >> --- a/defs.h
> >> +++ b/defs.h
> >> @@ -829,6 +829,15 @@ struct kernel_table {                   /* kernel 
> >> data */
> >>  #define IS_KERNEL_STATIC_TEXT(x) (((ulong)(x) >= kt->stext) && \
> >>                       ((ulong)(x) < kt->etext))
> >>
> >> +#define THIS_KERNEL_RELEASE (kt->utsname.release)
> >> +
> >> +struct android_table {
> >> +   uint android_version[2];
> >> +};
> >> +#define IS_ANDROID_KERNEL_REL (at->android_version[0] > 0)
> >> +#define THIS_ANDROID_VERSION ((at->android_version[0] << 16) + 
> >> (at->android_version[1]))
> >> +#define ANDROID(x,y) (((uint)(x) << 16) + (uint)(y))
> >> +
> >>  #define TASK_COMM_LEN 16     /* task command name length including NULL */
> >>
> >>  struct task_context {                     /* context stored for each task 
> >> */
> >> @@ -5353,6 +5362,7 @@ extern struct vm_table vm_table, *vt;
> >>  extern struct machdep_table *machdep;
> >>  extern struct symbol_table_data symbol_table_data, *st;
> >>  extern struct extension_table *extension_table;
> >> +extern struct android_table android_table, *at;
> >>
> >>  /*
> >>   *  Generated in build_data.c
> >> diff --git a/global_data.c b/global_data.c
> >> index f9bb7d0..dddde96 100644
> >> --- a/global_data.c
> >> +++ b/global_data.c
> >> @@ -55,6 +55,13 @@ struct symbol_table_data *st = &symbol_table_data;
> >>  struct machdep_table machdep_table = { 0 };
> >>  struct machdep_table *machdep = &machdep_table;
> >>
> >> +/*
> >> + *  The same thing goes for accesses to the frequently-accessed 
> >> android_table,
> >> + *  making the "at" pointers globally available.
> >> + */
> >> +struct android_table android_table = { 0, 0 };
> >> +struct android_table *at = &android_table;
> >> +
> >>  /*
> >>   *  Command functions are entered with the args[] array and argcnt value
> >>   *  pre-set for issuance to getopt().
> >> diff --git a/kernel.c b/kernel.c
> >> index adb19ad..814418c 100644
> >> --- a/kernel.c
> >> +++ b/kernel.c
> >> @@ -104,6 +104,26 @@ static void check_vmcoreinfo(void);
> >>  static int is_pvops_xen(void);
> >>  static int get_linux_banner_from_vmlinux(char *, size_t);
> >>
> >> +/*
> >> + * Determine Andriod GKI vmcore by reading "android" from ut->release.
> >> + * The prefix of Andriod GKI release version is:
> >> + *     Kernel Version - Android release version
> >> + * For example:
> >> + *     5.10.209-android12, 5.10.209-android12.1, 5.15.148-android13
> >> + */
> >> +void
> >> +parse_android_table(void)
> >> +{
> >> +    char *p;
> >> +    if ((p = strstr(THIS_KERNEL_RELEASE, "android"))) {
> >> +        sscanf(p, "android%d.%d", &at->android_version[0], 
> >> &at->android_version[1]);
> >> +
> >> +        if (CRASHDEBUG(1))
> >> +            fprintf(fp, "andriod_version: andriod-%d.%d\n",
> >> +                    at->android_version[0], at->android_version[1]);
> >> +    }
> >> +}
> >> +
> >>  /*
> >>   * popuplate the global kernel table (kt) with kernel version
> >>   * information parsed from UTSNAME/OSRELEASE string
> >> @@ -298,6 +318,9 @@ kernel_init()
> >>             kt->utsname.domainname : "(not printable)");
> >>     }
> >>
> >> +   // non-upstream rel
> >> +   parse_android_table();
> >> +
> >>     strncpy(buf, kt->utsname.release, 65);
> >>     if (buf[64])
> >>         buf[64] = NULLCHAR;
> >> --
> >> 2.39.0
> >
> > --
> > 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
> #/******本邮件及其附件含有小米公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!
>  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

Reply via email to