Skip to content

Commit d2d0897

Browse files
committed
Merge tag 'hw-misc-20250805' of https://github.com/philmd/qemu into staging
Misc HW patches - Fix SD cards wired in SPI mode - Fix microvm-only build by selecting Kconfig ACPI_PCI - Fix legacy Intel SMT info removing 'x-vendor-cpuid-only-v2' property check # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmiSP8sACgkQ4+MsLN6t # wN52pw//R2z+DDdtezzOGIsCS8lmcI+sp0rM2UXA0LLuqH4++/SNgSOuH/yr0k9g # 3DxvYxQ+zgx2gxrxG9T/KlGYdl6lE3mb9cWBah8+4UUeKuji2Zt3dh0LrZoIt9A0 # EfHfPihpmVxf0OWXzDUsu3WdUyso3QHHJWVqiUCqnhvNsx1ZSAA7gOUOURL8YUEt # BsCJ4ufRJA6SRqLgiOQHSn1zRVwEmXZWRt6lqWx45ynzxkquaA+pvGY3UlzUsw4b # 5XyBL5Wyq1K7/FTXVXiMCYSNhgSUEbKy7Agnrr1i5s+/XfBjXMuzGFwjAWdCdwVW # /Kqqndlu6COla9APndqjfMhCHU6Ql8KyKqb9HImvZyMks4QNiX3c18CjAuCVoIzE # GxoXaTQ/y+Dv4tarI4EEP5m4P3gka7QVekhbSLQZJAdNDrt0QlOgmyvDLin4tQho # ot/jXYTnbPZBfyZyecFnY/6Uszr5dcrI1bXdEYhiy3LZUWkzM2xNq9BJ6Y2495Ad # ryqZ09UzVK8Rn6KaXTXx926eFWxFVN2VOolmLJ50D8MQfwrmMAsHtHl+qoa6T6Ta # ezgnuHwONjNYAgGQgVz483/nKu4TvQ6q9bATYrZIumBITXLgVqS7GRFZ9Q17Y+V4 # UHlIJ/Ay32KkMAKD+cNj01s7g6nK3YS2tP7tt16IOQHhVmsNvGE= # =Rq7l # -----END PGP SIGNATURE----- # gpg: Signature made Tue 05 Aug 2025 13:30:51 EDT # gpg: using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE # gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [full] # Primary key fingerprint: FAAB E75E 1291 7221 DCFD 6BB2 E3E3 2C2C DEAD C0DE * tag 'hw-misc-20250805' of https://github.com/philmd/qemu: hw/i386/microvm: Explicitly select ACPI_PCI target/i386/cpu: Move addressable ID encoding out of compat property in CPUID[0x1] tests/functional: Test SD cards in SPI mode (using sifive_u machine) hw/sd/sdcard: Remove SDState::mode field hw/sd/sdcard: Disable checking STBY mode in SPI SEND_CSD/CID hw/sd/sdcard: Factor spi_cmd_SEND_CxD() out hw/sd/sdcard: Allow using SWITCH_FUNCTION in more SPI states hw/sd/sdcard: Use complete SEND_OP_COND implementation in SPI mode hw/sd/sdcard: Implement SPI R2 return value hw/sd/sdcard: Fill SPI response bits in card code hw/sd/sdbus: Provide buffer size to sdbus_do_command() hw/sd/sdcard: Factor sd_response_size() out hw/sd/sdcard: Do not ignore errors in sd_cmd_to_sendingdata() Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2 parents afeb002 + eb013cd commit d2d0897

File tree

15 files changed

+251
-167
lines changed

15 files changed

+251
-167
lines changed

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,6 +1695,7 @@ S: Supported
16951695
F: docs/system/riscv/sifive_u.rst
16961696
F: hw/*/*sifive*.c
16971697
F: include/hw/*/*sifive*.h
1698+
F: tests/functional/test_riscv64_sifive_u.py
16981699

16991700
AMD Microblaze-V Generic Board
17001701
M: Sai Pavan Boddu <sai.pavan.boddu@amd.com>

hw/i386/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ config MICROVM
131131
select I8259
132132
select MC146818RTC
133133
select VIRTIO_MMIO
134+
select ACPI_PCI
134135
select ACPI_HW_REDUCED
135136
select PCI_EXPRESS_GENERIC_BRIDGE
136137
select USB_XHCI_SYSBUS

hw/sd/allwinner-sdhost.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ static void allwinner_sdhost_send_command(AwSdHostState *s)
233233
{
234234
SDRequest request;
235235
uint8_t resp[16];
236-
int rlen;
236+
size_t rlen;
237237

238238
/* Auto clear load flag */
239239
s->command &= ~SD_CMDR_LOAD;
@@ -246,10 +246,7 @@ static void allwinner_sdhost_send_command(AwSdHostState *s)
246246
request.arg = s->command_arg;
247247

248248
/* Send request to SD bus */
249-
rlen = sdbus_do_command(&s->sdbus, &request, resp);
250-
if (rlen < 0) {
251-
goto error;
252-
}
249+
rlen = sdbus_do_command(&s->sdbus, &request, resp, sizeof(resp));
253250

254251
/* If the command has a response, store it in the response registers */
255252
if ((s->command & SD_CMDR_RESPONSE)) {

hw/sd/bcm2835_sdhost.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,15 +113,12 @@ static void bcm2835_sdhost_send_command(BCM2835SDHostState *s)
113113
{
114114
SDRequest request;
115115
uint8_t rsp[16];
116-
int rlen;
116+
size_t rlen;
117117

118118
request.cmd = s->cmd & SDCMD_CMD_MASK;
119119
request.arg = s->cmdarg;
120120

121-
rlen = sdbus_do_command(&s->sdbus, &request, rsp);
122-
if (rlen < 0) {
123-
goto error;
124-
}
121+
rlen = sdbus_do_command(&s->sdbus, &request, rsp, sizeof(rsp));
125122
if (!(s->cmd & SDCMD_NO_RESPONSE)) {
126123
if (rlen == 0 || (rlen == 4 && (s->cmd & SDCMD_LONG_RESPONSE))) {
127124
goto error;

hw/sd/core.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,16 @@ void sdbus_set_voltage(SDBus *sdbus, uint16_t millivolts)
9090
}
9191
}
9292

93-
int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_t *response)
93+
size_t sdbus_do_command(SDBus *sdbus, SDRequest *req,
94+
uint8_t *resp, size_t respsz)
9495
{
9596
SDState *card = get_card(sdbus);
9697

9798
trace_sdbus_command(sdbus_name(sdbus), req->cmd, req->arg);
9899
if (card) {
99100
SDCardClass *sc = SDMMC_COMMON_GET_CLASS(card);
100101

101-
return sc->do_command(card, req, response);
102+
return sc->do_command(card, req, resp, respsz);
102103
}
103104

104105
return 0;

hw/sd/omap_mmc.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ static void omap_mmc_command(OMAPMMCState *host, int cmd, int dir,
130130
sd_rsp_type_t resptype, int init)
131131
{
132132
uint32_t rspstatus, mask;
133-
int rsplen, timeout;
133+
size_t rsplen;
134+
int timeout;
134135
SDRequest request;
135136
uint8_t response[16];
136137

@@ -157,7 +158,7 @@ static void omap_mmc_command(OMAPMMCState *host, int cmd, int dir,
157158
request.arg = host->arg;
158159
request.crc = 0; /* FIXME */
159160

160-
rsplen = sdbus_do_command(&host->sdbus, &request, response);
161+
rsplen = sdbus_do_command(&host->sdbus, &request, response, sizeof(response));
161162

162163
/* TODO: validate CRCs */
163164
switch (resptype) {

hw/sd/pl181.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,12 @@ static void pl181_do_command(PL181State *s)
173173
{
174174
SDRequest request;
175175
uint8_t response[16];
176-
int rlen;
176+
size_t rlen;
177177

178178
request.cmd = s->cmd & PL181_CMD_INDEX;
179179
request.arg = s->cmdarg;
180180
trace_pl181_command_send(request.cmd, request.arg);
181-
rlen = sdbus_do_command(&s->sdbus, &request, response);
182-
if (rlen < 0)
183-
goto error;
181+
rlen = sdbus_do_command(&s->sdbus, &request, response, sizeof(response));
184182
if (s->cmd & PL181_CMD_RESPONSE) {
185183
if (rlen == 0 || (rlen == 4 && (s->cmd & PL181_CMD_LONGRESP)))
186184
goto error;

0 commit comments

Comments
 (0)