All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ferass El Hafidi <vitali64pmemail@protonmail.com>
To: Jonas Karlman <jonas@kwiboo.se>, u-boot@lists.denx.de
Subject: Re: [RFC] mmc: Remove alignment hole for cmdidx in struct mmc_cmd
Date: Sat, 30 Sep 2023 09:20:39 +0000	[thread overview]
Message-ID: <CVW52OHAPG82.L07OLNA7FN7A@flaptop> (raw)
In-Reply-To: <20230929230655.2932698-1-jonas@kwiboo.se>

On Sat Sep 30, 2023 at 1:06 AM CEST, Jonas Karlman wrote:
> The alignment hole caused by cmdidx in struct mmc_cmd cause strange
> issues together with the peephole2 optimization on Amlogic SoCs.
> Following was observed while working on SPL support for Amlogic SoCs.
>
> sd_get_capabilities() normally issue a CMD55 followed by a CMD51.
> However, on at least Amlogic S905 (Cortex-A53) and S905X3 (Cortex-A55),
> CMD55 was instead followed by CMD8 (and a few reties) in SPL.
>
> Code from the call site:
>
>   cmd.cmdidx = SD_CMD_APP_SEND_SCR; // 51
>   ...
>   data.blocksize = 8;
>   ...
>   err = mmc_send_cmd_retry(mmc, &cmd, &data, 3);
>
> Running the code with MMC_TRACE enabled shows:
>
> CMD_SEND:55
>                 ARG                      0x50480000
>                 MMC_RSP_R1,5,6,7         0x00000920
> CMD_SEND:8
>                 ARG                      0x00000000
>                 RET                      -110
>
> Removing the alignment hole by changing cmdidx from ushort to uint or
> building with -fno-peephole2 flag seem to resolve this issue.
>
> CMD_SEND:55
>                 ARG                      0x50480000
>                 MMC_RSP_R1,5,6,7         0x00000920
> CMD_SEND:51
>                 ARG                      0x00000000
>                 MMC_RSP_R1,5,6,7         0x00000920
>
> Same issue was observed building U-Boot with gcc 8-13. Please advise on
> how to best work around this possible gcc optimization bug.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>

I'll try reproducing this. I'm using this:
https://git.vitali64.duckdns.org/misc/u-boot-kii-pro.git (branch:
wip/spl, known to boot on S905/GXBB)

For reference, I'm using this version of aarch64 gcc (from the 
Arch Linux repos):

	$ aarch64-linux-gnu-gcc --version
	aarch64-linux-gnu-gcc (GCC) 13.1.0
	Copyright (C) 2023 Free Software Foundation, Inc.
	This is free software; see the source for copying conditions.  There is NO
	warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

And this version of (host) gcc:

	$ gcc --version
	gcc (GCC) 13.1.1 20230429
	Copyright (C) 2023 Free Software Foundation, Inc.
	This is free software; see the source for copying conditions.  There is NO
	warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Cheers.


  reply	other threads:[~2023-09-30  9:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-29 23:06 [RFC] mmc: Remove alignment hole for cmdidx in struct mmc_cmd Jonas Karlman
2023-09-30  9:20 ` Ferass El Hafidi [this message]
2023-10-02 18:56 ` Simon Glass
2023-10-02 19:28   ` Jonas Karlman
2023-10-05  1:23     ` 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=CVW52OHAPG82.L07OLNA7FN7A@flaptop \
    --to=vitali64pmemail@protonmail.com \
    --cc=jonas@kwiboo.se \
    --cc=u-boot@lists.denx.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.