From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org, Tyrone Ting <kfting@nuvoton.com>,
Hao Wu <wuhaotsh@google.com>, qemu-arm <qemu-arm@nongnu.org>,
Shengtan Mao <stmao@google.com>
Cc: "Cédric Le Goater" <clg@kaod.org>,
"Joel Stanley" <joel@jms.id.au>, "Bin Meng" <bmeng.cn@gmail.com>,
"Sai Pavan Boddu" <sai.pavan.boddu@amd.com>,
qemu-block@nongnu.org
Subject: Re: [PATCH 09/23] hw/sd/sdcard: Generate random RCA value
Date: Fri, 21 Jun 2024 11:44:18 +0200 [thread overview]
Message-ID: <37f83be9-deb5-42a1-b704-14984351d803@linaro.org> (raw)
In-Reply-To: <20240621080554.18986-10-philmd@linaro.org>
On 21/6/24 10:05, Philippe Mathieu-Daudé wrote:
> Rather than using the obscure 0x4567 magic value,
> use a real random one.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> hw/sd/sd.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 30239b28bc..e1f13e316a 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -46,6 +46,7 @@
> #include "qemu/error-report.h"
> #include "qemu/timer.h"
> #include "qemu/log.h"
> +#include "qemu/guest-random.h"
> #include "qemu/module.h"
> #include "sdmmc-internal.h"
> #include "trace.h"
> @@ -469,11 +470,6 @@ static void sd_set_csd(SDState *sd, uint64_t size)
> sd->csd[15] = (sd_crc7(sd->csd, 15) << 1) | 1;
> }
>
> -static void sd_set_rca(SDState *sd)
> -{
> - sd->rca += 0x4567;
> -}
> -
> FIELD(CSR, AKE_SEQ_ERROR, 3, 1)
> FIELD(CSR, APP_CMD, 5, 1)
> FIELD(CSR, FX_EVENT, 6, 1)
> @@ -1055,7 +1051,7 @@ static sd_rsp_type_t sd_cmd_SEND_RELATIVE_ADDR(SDState *sd, SDRequest req)
> case sd_identification_state:
> case sd_standby_state:
> sd->state = sd_standby_state;
> - sd_set_rca(sd);
> + qemu_guest_getrandom_nofail(&sd->rca, sizeof(sd->rca));
> return sd_r6;
Hmm the NPCM7xx test is failing:
▶ 58/450 ERROR:../tests/qtest/npcm7xx_sdhci-test.c:101:sdwrite_read:
assertion failed: (!memcmp(rmsg, msg, len)) ERROR
But booting various Linux / FreeBSD guests on SD cards works,
so I suppose the test (or TYPE_NPCM7XX_SDHCI model) need some
rework.
$ git grep 0x4567
tests/qtest/npcm7xx_sdhci-test.c:47: sdhci_cmd_regs(qts,
NPCM7XX_MMC_BA, 0, 0, 0x45670000, 0,
tests/qtest/npcm7xx_sdhci-test.c-48-
SDHC_SELECT_DESELECT_CARD);
In tests/qtest/libqos/sdhci-cmd.h:
/* CMD Reg */
#define SDHC_SEND_RELATIVE_ADDR (3 << 8)
#define SDHC_SELECT_DESELECT_CARD (7 << 8)
IIUC setup_sd_card():
card address is queried ...:
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0, 0,
SDHC_SEND_RELATIVE_ADDR);
... but then ignored and magic 0x4567 is used instead:
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0x45670000, 0,
SDHC_SELECT_DESELECT_CARD);
OK, so this test need rework. I see the sdhci_read_cmd()
method but it reads the SDHC_BDATA FIFO register, not sure
this is what should be used to read the RCA from R6 command
response.
Shengtan, Nuvoton folks, what do you think?
Thanks,
Phil.
next prev parent reply other threads:[~2024-06-21 9:44 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-21 8:05 [PATCH 00/23] hw/sd/sdcard: Accumulation of cleanups and fixes Philippe Mathieu-Daudé
2024-06-21 8:05 ` [PATCH 01/23] hw/sd/sdcard: Correct code indentation Philippe Mathieu-Daudé
2024-06-21 16:15 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 02/23] hw/sd/sdcard: Rewrite sd_cmd_ALL_SEND_CID using switch case (CMD2) Philippe Mathieu-Daudé
2024-06-21 16:15 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 03/23] hw/sd/sdcard: Fix typo in SEND_OP_COND command name Philippe Mathieu-Daudé
2024-06-21 16:16 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 04/23] hw/sd/sdcard: Use HWBLOCK_SHIFT definition instead of magic values Philippe Mathieu-Daudé
2024-06-21 16:16 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 05/23] hw/sd/sdcard: Use registerfield CSR::CURRENT_STATE definition Philippe Mathieu-Daudé
2024-06-21 16:17 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 06/23] hw/sd/sdcard: Use Load/Store API to fill some CID/CSD registers Philippe Mathieu-Daudé
2024-06-21 16:17 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 07/23] hw/sd/sdcard: Remove ACMD6 handler for SPI mode Philippe Mathieu-Daudé
2024-06-21 16:17 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 08/23] hw/sd/sdcard: Remove explicit entries for illegal commands Philippe Mathieu-Daudé
2024-06-21 16:18 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 09/23] hw/sd/sdcard: Generate random RCA value Philippe Mathieu-Daudé
2024-06-21 9:44 ` Philippe Mathieu-Daudé [this message]
2024-07-02 13:13 ` Philippe Mathieu-Daudé
2024-07-02 14:10 ` Philippe Mathieu-Daudé
2024-06-21 8:05 ` [PATCH 10/23] hw/sd/sdcard: Track last command used to help logging Philippe Mathieu-Daudé
2024-06-21 8:05 ` [PATCH 11/23] hw/sd/sdcard: Trace update of block count (CMD23) Philippe Mathieu-Daudé
2024-06-21 16:19 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 12/23] hw/sd/sdcard: Trace block offset in READ/WRITE data accesses Philippe Mathieu-Daudé
2024-06-21 16:19 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 13/23] hw/sd/sdcard: Have cmd_valid_while_locked() return a boolean value Philippe Mathieu-Daudé
2024-06-21 16:20 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 14/23] hw/sd/sdcard: Factor sd_req_get_rca() method out Philippe Mathieu-Daudé
2024-06-21 16:20 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 15/23] hw/sd/sdcard: Only call sd_req_get_rca() where RCA is used Philippe Mathieu-Daudé
2024-06-21 16:20 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 16/23] hw/sd/sdcard: Factor sd_req_get_address() method out Philippe Mathieu-Daudé
2024-06-21 16:21 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 17/23] hw/sd/sdcard: Only call sd_req_get_address() where address is used Philippe Mathieu-Daudé
2024-06-21 16:21 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 18/23] hw/sd/sdcard: Add sd_invalid_mode_for_cmd to report invalid mode switch Philippe Mathieu-Daudé
2024-06-21 16:21 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 19/23] hw/sd/sdcard: Inline BLK_READ_BLOCK / BLK_WRITE_BLOCK macros Philippe Mathieu-Daudé
2024-06-21 16:21 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 20/23] hw/sd/sdcard: Add comments around registers and commands Philippe Mathieu-Daudé
2024-06-21 16:22 ` Cédric Le Goater
2024-06-21 8:05 ` [PATCH 21/23] hw/sd/sdcard: Do not store vendor data on block drive (CMD56) Philippe Mathieu-Daudé
2024-06-21 8:05 ` [PATCH 22/23] hw/sd/sdcard: Send WRITE_PROT bits MSB first (CMD30) Philippe Mathieu-Daudé
2024-06-21 8:05 ` [PATCH 23/23] hw/sd/sdcard: Send NUM_WR_BLOCKS bits MSB first (ACMD22) Philippe Mathieu-Daudé
2024-06-24 8:17 ` [PATCH 00/23] hw/sd/sdcard: Accumulation of cleanups and fixes Cédric Le Goater
2024-06-24 13:10 ` Philippe Mathieu-Daudé
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=37f83be9-deb5-42a1-b704-14984351d803@linaro.org \
--to=philmd@linaro.org \
--cc=bmeng.cn@gmail.com \
--cc=clg@kaod.org \
--cc=joel@jms.id.au \
--cc=kfting@nuvoton.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sai.pavan.boddu@amd.com \
--cc=stmao@google.com \
--cc=wuhaotsh@google.com \
/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).