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