From: Tom Rini <trini@konsulko.com>
To: Adam Ford <aford173@gmail.com>
Cc: Simon Glass <sjg@chromium.org>,
U-Boot Mailing List <u-boot@lists.denx.de>,
Patrice Chotard <patrice.chotard@foss.st.com>,
Artem Lapkin <email2tema@gmail.com>,
Joe Hershberger <joe.hershberger@ni.com>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Peter Hoyes <Peter.Hoyes@arm.com>
Subject: Re: [PATCH v3 07/18] pxe: Move pxe_utils files
Date: Fri, 11 Feb 2022 11:44:53 -0500 [thread overview]
Message-ID: <20220211164453.GG2697206@bill-the-cat> (raw)
In-Reply-To: <CAHCN7xLWcVrX2vTi5ENAtH2GHkd0xOgq1BEdOs0B-r_V6hUZDQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 9901 bytes --]
On Fri, Feb 11, 2022 at 10:39:30AM -0600, Adam Ford wrote:
> On Fri, Feb 11, 2022 at 10:12 AM Tom Rini <trini@konsulko.com> wrote:
> >
> > On Fri, Feb 11, 2022 at 09:50:32AM -0600, Adam Ford wrote:
> > > On Thu, Feb 10, 2022 at 8:57 AM Tom Rini <trini@konsulko.com> wrote:
> > > >
> > > > On Thu, Feb 10, 2022 at 07:56:52AM -0600, Adam Ford wrote:
> > > > > On Wed, Feb 9, 2022 at 11:16 AM Simon Glass <sjg@chromium.org> wrote:
> > > > > >
> > > > > > Hi,
> > > > > >
> > > > > > On Wed, 9 Feb 2022 at 05:32, Tom Rini <trini@konsulko.com> wrote:
> > > > > > >
> > > > > > > On Wed, Feb 09, 2022 at 05:40:03AM -0600, Adam Ford wrote:
> > > > > > > > On Thu, Oct 14, 2021 at 1:50 PM Simon Glass <sjg@chromium.org> wrote:
> > > > > > > > >
> > > > > > > > > Move the header file into the main include/ directory so we can use it
> > > > > > > > > from the bootmethod code. Move the C file into boot/ since it relates to
> > > > > > > > > booting.
> > > > > > > > >
> > > > > > > > +cc lokeshvutla@ti.com
> > > > > > > >
> > > > > > > > Simon,
> > > > > > > >
> > > > > > > > I can't explain why, but with git bisect, it appears this patch breaks
> > > > > > > > my omap3_logic board (DM3730) by making it wrongly think there is 4GB
> > > > > > > > of RAM, when in reality there is only 256MB. We have both 256MB and
> > > > > > > > 512MB parts, and the automatic memory detection has always 'just
> > > > > > > > worked' in the past.
> > > > > > > >
> > > > > > > > With this patch now, I see:
> > > > > > > > U-Boot 2022.01-rc1-00185-g262cfb5b15 (Feb 09 2022 - 05:23:42 -0600)
> > > > > > > >
> > > > > > > > OMAP3630/3730-GP ES1.2, CPU-OPP2, L3-200MHz, Max CPU Clock 1 GHz
> > > > > > > > Model: LogicPD Zoom DM3730 Torpedo + Wireless Development Kit
> > > > > > > > DRAM: 4 GiB
> > > > > > > > <hang>
> > > > > > > >
> > > > > > > > With the previous commit, 8018b9af57b5 ("pxe: Tidy up the is_pxe
> > > > > > > > global"), it properly detects the RAM and fully boots.
> > > > > > > >
> > > > > > > > U-Boot 2022.01-rc1-00184-g8018b9af57 (Feb 09 2022 - 05:21:39 -0600)
> > > > > > > >
> > > > > > > > OMAP3630/3730-GP ES1.2, CPU-OPP2, L3-200MHz, Max CPU Clock 1 GHz
> > > > > > > > Model: LogicPD Zoom DM3730 Torpedo + Wireless Development Kit
> > > > > > > > DRAM: 256 MiB
> > > > > > > > NAND: 512 MiB
> > > > > > > > MMC: OMAP SD/MMC: 0
> > > > > > > > Loading Environment from NAND... OK
> > > > > > > > OMAP die ID: 619e00029ff800000168300f1502501f
> > > > > > > > Net: eth0: ethernet@08000000
> > > > > > > > Hit any key to stop autoboot: 0
> > > > > > > > OMAP Logic #
> > > > > > > >
> > > > > > > > I have CONFIG_CMD_BOOTM, CONFIG_CMD_PXE and CONFIG_CMD_SYSBOOT all
> > > > > > > > defined, so I am having a hard time understanding why this would
> > > > > > > > change behavior or stomp on the the structure that knows the memory
> > > > > > > > size.
> > > > > > > >
> > > > > > > > If I jump ahead to the current 'master' 531c0089457:("Merge branch
> > > > > > > > '2022-02-08-TI-platform-updates') and revert this patch, my board
> > > > > > > > boots correctly again, but I am struggling to understand why.
> > > > > + Marek Behún
> > > > >
> > > > > > > >
> > > > > > > > Do you have any suggestions for me to try?
> > > > > > >
> > > > > > > I would suggest objdump disassemble U-Boot before/after and see what
> > > > > > > functions have changed.
> > > > > >
> > > > > > Keep an eye out for a BSS variable that is used before relocation, perhaps?
> > > > >
> > > > > I am still investigating, but disabling LTO appears to fix the issue
> > > > > for me. I'd like to keep LTO, so I'm going to attempt to focus on the
> > > > > differences in the affected functions and how this patch makes LTO
> > > > > behave differently.
> > > > >
> > > > > The disassembly of U-Boot is large, so it's going to take me a bit of
> > > > > time to investigate. If someone has any LTO-related suggestions that
> > > > > I could try, I'd be open to try them too.
> > > >
> > > > Wait, the disassembly is large, or the differences between the
> > > > disassembly, before/after this change alone, are large? It's feeling
> > >
> > > I will be the first to admit thatI am not very good with the assembly
> > > side of things, but this is what I did:
> > >
> > > git checkout master
> > > make CROSS_COMPILE=arm-linux-gnueabihf- -j8
> > > arm-linux-gnueabihf-objdump -S u-boot > broken.dump
> > > git revert 262cfb5b15420a1aea465745a821e684b3dfa153
> > > make CROSS_COMPILE=arm-linux-gnueabihf- -j8
> > > arm-linux-gnueabihf-objdump -S u-boot > working.dump
> > >
> > > diff --side-by-side --suppress-common-lines broken.dump working.dump
> > > > broken-working.diff
> > > cat -n broken-working.diff
> > >
> > > The broken-working.diff file with common lines suppressed is 236256 lines long.
> >
> > OK, I just use '-d' and not '-S', which might help a little bit. But
> > you're probably going to still need to edit the dumps and just globally
> > change all of the addresses to 'XXXXXXXX' so that you'll end up
> > hopefully only seeing where functions were optimized differently. But
> > it might well end up being a bit trickier than that.
>
> It looks like none of the object files are showing any content with
> objdump when LTO is enabled. With a little google search, it appears
> we need lto-dump. I have some more meetings, but I'll try to spend
> some more time on it this weekend.
>
> >
> > > When I disable LTO for just pxe_utils.o and redo the same exercise,
> > > the diff file with common-lines removed is 266573 lines long.
> > >
> > > Maybe I am not using objdump correctly. I am not all that familiar
> > > with this code either, so I am not sure which variables should be in
> > > BSS. I did a search in both working and non-working dumps to look for
> > > keyworks like BSS, but from what I can tell, both have similar
> > > functions:
> > >
> > > gd->mon_len = (ulong)&__bss_end - (ulong)_start;
> > > /* TODO: use (ulong)&__bss_end - (ulong)&__text_start; ? */
> > > gd->mon_len = (ulong)&__bss_end - CONFIG_SYS_MONITOR_BASE;
> > > gd->mon_len = (ulong)&__bss_end - (ulong)_start;
> > > * reserve memory for U-Boot code, data & bss
> > > 8011051a <clear_bss>:
> > > #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_EARLY_BSS)
> > > CLEAR_BSS
> > > #if !defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SPL_EARLY_BSS)
> > > CLEAR_BSS
> > > CLEAR_BSS
> > >
> > > When I grepped for mon_len, both sets of dumps looked nearly identical:
> > >
> > > aford@aford-OptiPlex-7050:~/src/u-boot$ grep mon_len working.dump
> > > lmb_reserve(lmb, (phys_addr_t)(uintptr_t)_start, gd->mon_len);
> > > 80112724 <setup_mon_len>:
> > > static int setup_mon_len(void)
> > > gd->mon_len = (ulong)&__bss_end - (ulong)_start;
> > > 80112726: 4903 ldr r1, [pc, #12] ; (80112734 <setup_mon_len+0x10>)
> > > 80112728: 4b03 ldr r3, [pc, #12] ; (80112738 <setup_mon_len+0x14>)
> > > gd->mon_len = (ulong)&__bss_end - CONFIG_SYS_MONITOR_BASE;
> > > gd->mon_len = (ulong)&__bss_end - (ulong)_start;
> > > gd->ram_top = board_get_usable_ram_top(gd->mon_len);
> > > gd->relocaddr -= gd->mon_len;
> > > gd->mon_len >> 10, gd->relocaddr);
> > > ip = mon_lengths[yleap];
> > >
> > >
> > > aford@aford-OptiPlex-7050:~/src/u-boot$ grep mon_len broken.dump
> > > lmb_reserve(lmb, (phys_addr_t)(uintptr_t)_start, gd->mon_len);
> > > 80110398 <setup_mon_len>:
> > > static int setup_mon_len(void)
> > > gd->mon_len = (ulong)&__bss_end - (ulong)_start;
> > > 8011039a: 4903 ldr r1, [pc, #12] ; (801103a8 <setup_mon_len+0x10>)
> > > 8011039c: 4b03 ldr r3, [pc, #12] ; (801103ac <setup_mon_len+0x14>)
> > > gd->mon_len = (ulong)&__bss_end - CONFIG_SYS_MONITOR_BASE;
> > > gd->mon_len = (ulong)&__bss_end - (ulong)_start;
> > > gd->ram_top = board_get_usable_ram_top(gd->mon_len);
> > > gd->relocaddr -= gd->mon_len;
> > > gd->mon_len >> 10, gd->relocaddr);
> > > ip = mon_lengths[yleap];
> > > aford@aford-OptiPlex-7050:~/src/u-boot$
> > >
> > > Since I think I narrowed it down to the pxe_utils.o file, I thought
> > > I'd do an objdump of both the working and non-working versions of
> > > pxe_utils.o and this is where it got interesting.
> > >
> > > With LTO building pxe_utils.o, the dump looks empty:
> > >
> > > arm-linux-gnueabihf-objdump -S boot/pxe_utils.o > pxe-notworking.dump
> > > cat pxe-notworking.dump
> > >
> > > boot/pxe_utils.o: file format elf32-littlearm
> > >
> > > ^-- no actual code dump
> > > If I take the working version of this same file without LTO enabled
> > > and do a dump, and it's 2291 lines long and full of functions.
> > >
> > > I tried adding some __used to the non-static function names, but that
> > > didn't appear to make any difference to the objdump of pxe_utils.o
> >
> > I feel like it can't be pxe_utils.o itself but rather how LTO is
> > behaving before/after that change and sorting the object files
> > differently. If modifying the dumps like I suggested above doesn't lead
>
> That's what I was thinking too.
>
> > to more clues, and it doesn't seem to matter what toolchain is used (are
> > you using the gcc-11 from kernel.org that we use in docker and
> > buildman?), I'll try and look as well.
>
> I am using GCC 11, but I'm using the version that come with Ubuntu 21.10:
>
> Thread model: posix
> Supported LTO compression algorithms: zlib zstd
> gcc version 11.2.0 (Ubuntu 11.2.0-5ubuntu1)
OK. FWIW, if it's easier to build and test, I would suggest also trying
CFLAGS_REMOVE_xxx.o := $(LTO_CFLAGS)
for all of the obj files under arch/arm/ and board/ and then if that
also works correctly, re-adding the flags a directory, then file, at a
time until you've narrowed it down.
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
next prev parent reply other threads:[~2022-02-11 16:45 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-14 18:47 [PATCH v3 00/18] pxe: Refactoring to tidy up and prepare for bootflow Simon Glass
2021-10-14 18:47 ` [PATCH v3 01/18] Create a new boot/ directory Simon Glass
2021-10-16 5:31 ` Art Nikpal
2021-10-18 8:41 ` art
2021-11-12 15:38 ` Tom Rini
2021-10-14 18:47 ` [PATCH v3 02/18] pxe: Move API comments to the header files Simon Glass
2021-10-18 8:42 ` art
2021-11-09 8:07 ` Ramon Fried
2021-11-09 8:52 ` Heinrich Schuchardt
2021-11-12 15:38 ` Tom Rini
2021-10-14 18:47 ` [PATCH v3 03/18] pxe: Use a context pointer Simon Glass
2021-10-18 8:45 ` art
2021-11-09 8:08 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2021-10-14 18:47 ` [PATCH v3 04/18] pxe: Move do_getfile() into the context Simon Glass
2021-10-18 8:46 ` art
2021-11-09 8:11 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2021-10-14 18:47 ` [PATCH v3 05/18] pxe: Add a userdata field to " Simon Glass
2021-10-18 8:46 ` art
2021-11-09 8:10 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2021-10-14 18:47 ` [PATCH v3 06/18] pxe: Tidy up the is_pxe global Simon Glass
2021-10-18 8:47 ` art
2021-11-09 8:10 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 07/18] pxe: Move pxe_utils files Simon Glass
2021-10-18 8:47 ` art
2021-11-09 8:10 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2022-02-09 11:40 ` Adam Ford
2022-02-09 12:32 ` Tom Rini
2022-02-09 17:16 ` Simon Glass
2022-02-10 13:56 ` Adam Ford
2022-02-10 13:57 ` Adam Ford
2022-02-10 14:32 ` Simon Glass
2022-02-10 14:41 ` Adam Ford
2022-02-10 14:57 ` Tom Rini
2022-02-11 15:50 ` Adam Ford
2022-02-11 16:12 ` Tom Rini
2022-02-11 16:39 ` Adam Ford
2022-02-11 16:44 ` Tom Rini [this message]
2022-02-11 17:10 ` Adam Ford
2022-02-11 17:13 ` Tom Rini
2022-02-12 1:09 ` Adam Ford
2022-02-12 1:43 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 08/18] pxe: Tidy up some comments in pxe_utils Simon Glass
2021-10-18 8:48 ` art
2021-11-09 8:10 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 09/18] pxe: Tidy up code style a little " Simon Glass
2021-10-18 8:48 ` art
2021-11-09 8:10 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 10/18] pxe: Move common parsing coding into pxe_util Simon Glass
2021-10-18 8:49 ` art
2021-11-09 8:09 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 11/18] pxe: Clean up the use of bootfile Simon Glass
2021-10-18 8:51 ` art
2021-11-09 8:09 ` Ramon Fried
2021-11-12 15:39 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 12/18] pxe: Drop get_bootfile_path() Simon Glass
2021-10-18 8:51 ` art
2021-11-09 8:09 ` Ramon Fried
2021-11-12 15:40 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 13/18] lib: Add tests for simple_itoa() Simon Glass
2021-10-18 8:30 ` art
2021-11-12 15:40 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 14/18] lib: Add a function to convert a string to a hex value Simon Glass
2021-10-18 8:52 ` art
2021-11-12 15:40 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 15/18] pxe: Return the file size from the getfile() function Simon Glass
2021-10-18 8:53 ` art
2021-11-09 8:09 ` Ramon Fried
2021-11-12 15:40 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 16/18] pxe: Refactor sysboot to have one helper Simon Glass
2021-10-18 8:54 ` art
2021-11-09 8:09 ` Ramon Fried
2021-11-12 15:40 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 17/18] doc: Move distro boot doc to rST Simon Glass
2021-10-18 8:55 ` art
2021-11-09 8:08 ` Ramon Fried
2021-11-12 15:40 ` Tom Rini
2021-10-14 18:48 ` [PATCH v3 18/18] pxe: Allow calling the pxe_get logic directly Simon Glass
2021-10-18 8:56 ` art
2021-11-09 8:07 ` Ramon Fried
2021-11-12 15:40 ` Tom Rini
2021-10-15 10:27 ` [PATCH v3 00/18] pxe: Refactoring to tidy up and prepare for bootflow Art Nikpal
2021-10-26 1:28 ` Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220211164453.GG2697206@bill-the-cat \
--to=trini@konsulko.com \
--cc=Peter.Hoyes@arm.com \
--cc=aford173@gmail.com \
--cc=email2tema@gmail.com \
--cc=joe.hershberger@ni.com \
--cc=patrice.chotard@foss.st.com \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).