aspeed queue:

* Coverity fixes
 * Deprecation of tacoma-bmc machine
 * Buffer overflow fix in GPIO model
 * Minor cleanup
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmaDs3QACgkQUaNDx8/7
 7KEc/BAAj5AS3rLm3NPpU13y1P1hcjuSm1/PVGTJQH+m4K9UaAkJ8VhRB0Y/rdU6
 ygGhKaCHyk96+I49Csz886YU9Wg9qnxaYJAbornHZJVGNy5tuVpQKM20kfgN3XFN
 ENJR3e+J6Ye7kCtR1ujcf0mydWDaDyq0i82ykURsudcQLMnGq1gBQGadYjt1hJoN
 F9HDPgUJ8/wjQnG8BomsrnuvUSpRTbGNV66FNxXdQ6C6d6OTKQfNnXXqrKO+8QPK
 B5XB9FjTk017DUog1jdE1SaEMowml8CmUhjMwLHOcyWhcZpEk90aMX8cQhefUs9y
 O6kNin2UYEjcTHA/lyfMQJQMNDDZTE32MyP1LwRE/5ZiHqrT7ViqNvZSPBGBueUz
 9B0xiQTuYqcRqlwgyU73DvnTgrsKFdKQSldj5dXYVnWCKeKY/sCWApHMJxN9xMCA
 Uw1E4QfCLkd+TM6DoJAkBHWFsgi44Aym11VU4VviGNRNTgmTptgQzmHiYGNFiGZG
 OypVPM8Ti6UeVnW65l9J9f7xA0jDB+XQjhCCaoax9GlUMA4C4/Aln5OXXxIWRWFd
 XA3Gn3c/S2j7rMqdfAk68xDHuAJ3wShHlw6HLRd1Xki05WFTeLj1lejLHMdfpNmr
 DkQimzHShBqZzZGxc7FsO0keGY8kyIJkZhbCCbZrFXJXQGRdBao=
 =LxwO
 -----END PGP SIGNATURE-----

Merge tag 'pull-aspeed-20240702' of https://github.com/legoater/qemu into staging

aspeed queue:

* Coverity fixes
* Deprecation of tacoma-bmc machine
* Buffer overflow fix in GPIO model
* Minor cleanup

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmaDs3QACgkQUaNDx8/7
# 7KEc/BAAj5AS3rLm3NPpU13y1P1hcjuSm1/PVGTJQH+m4K9UaAkJ8VhRB0Y/rdU6
# ygGhKaCHyk96+I49Csz886YU9Wg9qnxaYJAbornHZJVGNy5tuVpQKM20kfgN3XFN
# ENJR3e+J6Ye7kCtR1ujcf0mydWDaDyq0i82ykURsudcQLMnGq1gBQGadYjt1hJoN
# F9HDPgUJ8/wjQnG8BomsrnuvUSpRTbGNV66FNxXdQ6C6d6OTKQfNnXXqrKO+8QPK
# B5XB9FjTk017DUog1jdE1SaEMowml8CmUhjMwLHOcyWhcZpEk90aMX8cQhefUs9y
# O6kNin2UYEjcTHA/lyfMQJQMNDDZTE32MyP1LwRE/5ZiHqrT7ViqNvZSPBGBueUz
# 9B0xiQTuYqcRqlwgyU73DvnTgrsKFdKQSldj5dXYVnWCKeKY/sCWApHMJxN9xMCA
# Uw1E4QfCLkd+TM6DoJAkBHWFsgi44Aym11VU4VviGNRNTgmTptgQzmHiYGNFiGZG
# OypVPM8Ti6UeVnW65l9J9f7xA0jDB+XQjhCCaoax9GlUMA4C4/Aln5OXXxIWRWFd
# XA3Gn3c/S2j7rMqdfAk68xDHuAJ3wShHlw6HLRd1Xki05WFTeLj1lejLHMdfpNmr
# DkQimzHShBqZzZGxc7FsO0keGY8kyIJkZhbCCbZrFXJXQGRdBao=
# =LxwO
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 02 Jul 2024 12:59:48 AM PDT
# gpg:                using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1
# gpg: Good signature from "Cédric Le Goater <clg@kaod.org>" [undefined]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: A0F6 6548 F048 95EB FE6B  0B60 51A3 43C7 CFFB ECA1

* tag 'pull-aspeed-20240702' of https://github.com/legoater/qemu:
  hw/net:ftgmac100: fix coding style
  aspeed/sdmc: Remove extra R_MAIN_STATUS case
  aspeed/soc: Fix possible divide by zero
  aspeed/sdmc: Check RAM size value at realize time
  aspeed: Deprecate the tacoma-bmc machine
  hw/gpio/aspeed: Add reg_table_count to AspeedGPIOClass

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2024-07-02 09:51:52 -07:00
commit 8a2b8894d2
7 changed files with 44 additions and 5 deletions

View File

@ -269,6 +269,14 @@ images are not available, OpenWRT dropped support in 2019, U-Boot in
2017, Linux also is dropping support in 2024. It is time to let go of 2017, Linux also is dropping support in 2024. It is time to let go of
this ancient hardware and focus on newer CPUs and platforms. this ancient hardware and focus on newer CPUs and platforms.
Arm ``tacoma-bmc`` machine (since 9.1)
''''''''''''''''''''''''''''''''''''''''
The ``tacoma-bmc`` machine was a board including an AST2600 SoC based
BMC and a witherspoon like OpenPOWER system. It was used for bring up
of the AST2600 SoC in labs. It can be easily replaced by the
``rainier-bmc`` machine which is a real product.
Backend options Backend options
--------------- ---------------

View File

@ -1379,6 +1379,8 @@ static void aspeed_machine_tacoma_class_init(ObjectClass *oc, void *data)
amc->i2c_init = witherspoon_bmc_i2c_init; /* Same board layout */ amc->i2c_init = witherspoon_bmc_i2c_init; /* Same board layout */
mc->default_ram_size = 1 * GiB; mc->default_ram_size = 1 * GiB;
aspeed_machine_class_init_cpus_defaults(mc); aspeed_machine_class_init_cpus_defaults(mc);
mc->deprecation_reason = "Please use the similar 'rainier-bmc' machine";
}; };
static void aspeed_machine_g220a_class_init(ObjectClass *oc, void *data) static void aspeed_machine_g220a_class_init(ObjectClass *oc, void *data)

View File

@ -211,6 +211,8 @@ static void aspeed_ram_capacity_write(void *opaque, hwaddr addr, uint64_t data,
ram_size = object_property_get_uint(OBJECT(&s->sdmc), "ram-size", ram_size = object_property_get_uint(OBJECT(&s->sdmc), "ram-size",
&error_abort); &error_abort);
assert(ram_size > 0);
/* /*
* Emulate ddr capacity hardware behavior. * Emulate ddr capacity hardware behavior.
* If writes the data to the address which is beyond the ram size, * If writes the data to the address which is beyond the ram size,

View File

@ -559,6 +559,12 @@ static uint64_t aspeed_gpio_read(void *opaque, hwaddr offset, uint32_t size)
return debounce_value; return debounce_value;
} }
if (idx >= agc->reg_table_count) {
qemu_log_mask(LOG_GUEST_ERROR, "%s: idx 0x%" PRIx64 " out of bounds\n",
__func__, idx);
return 0;
}
reg = &agc->reg_table[idx]; reg = &agc->reg_table[idx];
if (reg->set_idx >= agc->nr_gpio_sets) { if (reg->set_idx >= agc->nr_gpio_sets) {
qemu_log_mask(LOG_GUEST_ERROR, "%s: no getter for offset 0x%" qemu_log_mask(LOG_GUEST_ERROR, "%s: no getter for offset 0x%"
@ -785,6 +791,12 @@ static void aspeed_gpio_write(void *opaque, hwaddr offset, uint64_t data,
return; return;
} }
if (idx >= agc->reg_table_count) {
qemu_log_mask(LOG_GUEST_ERROR, "%s: idx 0x%" PRIx64 " out of bounds\n",
__func__, idx);
return;
}
reg = &agc->reg_table[idx]; reg = &agc->reg_table[idx];
if (reg->set_idx >= agc->nr_gpio_sets) { if (reg->set_idx >= agc->nr_gpio_sets) {
qemu_log_mask(LOG_GUEST_ERROR, "%s: no setter for offset 0x%" qemu_log_mask(LOG_GUEST_ERROR, "%s: no setter for offset 0x%"
@ -1117,6 +1129,7 @@ static void aspeed_gpio_ast2400_class_init(ObjectClass *klass, void *data)
agc->nr_gpio_pins = 216; agc->nr_gpio_pins = 216;
agc->nr_gpio_sets = 7; agc->nr_gpio_sets = 7;
agc->reg_table = aspeed_3_3v_gpios; agc->reg_table = aspeed_3_3v_gpios;
agc->reg_table_count = GPIO_3_3V_REG_ARRAY_SIZE;
} }
static void aspeed_gpio_2500_class_init(ObjectClass *klass, void *data) static void aspeed_gpio_2500_class_init(ObjectClass *klass, void *data)
@ -1127,6 +1140,7 @@ static void aspeed_gpio_2500_class_init(ObjectClass *klass, void *data)
agc->nr_gpio_pins = 228; agc->nr_gpio_pins = 228;
agc->nr_gpio_sets = 8; agc->nr_gpio_sets = 8;
agc->reg_table = aspeed_3_3v_gpios; agc->reg_table = aspeed_3_3v_gpios;
agc->reg_table_count = GPIO_3_3V_REG_ARRAY_SIZE;
} }
static void aspeed_gpio_ast2600_3_3v_class_init(ObjectClass *klass, void *data) static void aspeed_gpio_ast2600_3_3v_class_init(ObjectClass *klass, void *data)
@ -1137,6 +1151,7 @@ static void aspeed_gpio_ast2600_3_3v_class_init(ObjectClass *klass, void *data)
agc->nr_gpio_pins = 208; agc->nr_gpio_pins = 208;
agc->nr_gpio_sets = 7; agc->nr_gpio_sets = 7;
agc->reg_table = aspeed_3_3v_gpios; agc->reg_table = aspeed_3_3v_gpios;
agc->reg_table_count = GPIO_3_3V_REG_ARRAY_SIZE;
} }
static void aspeed_gpio_ast2600_1_8v_class_init(ObjectClass *klass, void *data) static void aspeed_gpio_ast2600_1_8v_class_init(ObjectClass *klass, void *data)
@ -1147,6 +1162,7 @@ static void aspeed_gpio_ast2600_1_8v_class_init(ObjectClass *klass, void *data)
agc->nr_gpio_pins = 36; agc->nr_gpio_pins = 36;
agc->nr_gpio_sets = 2; agc->nr_gpio_sets = 2;
agc->reg_table = aspeed_1_8v_gpios; agc->reg_table = aspeed_1_8v_gpios;
agc->reg_table_count = GPIO_1_8V_REG_ARRAY_SIZE;
} }
static void aspeed_gpio_1030_class_init(ObjectClass *klass, void *data) static void aspeed_gpio_1030_class_init(ObjectClass *klass, void *data)
@ -1157,6 +1173,7 @@ static void aspeed_gpio_1030_class_init(ObjectClass *klass, void *data)
agc->nr_gpio_pins = 151; agc->nr_gpio_pins = 151;
agc->nr_gpio_sets = 6; agc->nr_gpio_sets = 6;
agc->reg_table = aspeed_3_3v_gpios; agc->reg_table = aspeed_3_3v_gpios;
agc->reg_table_count = GPIO_3_3V_REG_ARRAY_SIZE;
} }
static const TypeInfo aspeed_gpio_info = { static const TypeInfo aspeed_gpio_info = {

View File

@ -271,6 +271,12 @@ static void aspeed_sdmc_realize(DeviceState *dev, Error **errp)
AspeedSDMCClass *asc = ASPEED_SDMC_GET_CLASS(s); AspeedSDMCClass *asc = ASPEED_SDMC_GET_CLASS(s);
assert(asc->max_ram_size < 4 * GiB || asc->is_bus64bit); assert(asc->max_ram_size < 4 * GiB || asc->is_bus64bit);
if (!s->ram_size) {
error_setg(errp, "RAM size is not set");
return;
}
s->max_ram_size = asc->max_ram_size; s->max_ram_size = asc->max_ram_size;
memory_region_init_io(&s->iomem, OBJECT(s), &aspeed_sdmc_ops, s, memory_region_init_io(&s->iomem, OBJECT(s), &aspeed_sdmc_ops, s,
@ -589,7 +595,6 @@ static void aspeed_2700_sdmc_write(AspeedSDMCState *s, uint32_t reg,
case R_INT_STATUS: case R_INT_STATUS:
case R_INT_CLEAR: case R_INT_CLEAR:
case R_INT_MASK: case R_INT_MASK:
case R_MAIN_STATUS:
case R_ERR_STATUS: case R_ERR_STATUS:
case R_ECC_FAIL_STATUS: case R_ECC_FAIL_STATUS:
case R_ECC_FAIL_ADDR: case R_ECC_FAIL_ADDR:

View File

@ -238,7 +238,8 @@ typedef struct {
*/ */
#define FTGMAC100_MAX_FRAME_SIZE 9220 #define FTGMAC100_MAX_FRAME_SIZE 9220
/* Limits depending on the type of the frame /*
* Limits depending on the type of the frame
* *
* 9216 for Jumbo frames (+ 4 for VLAN) * 9216 for Jumbo frames (+ 4 for VLAN)
* 1518 for other frames (+ 4 for VLAN) * 1518 for other frames (+ 4 for VLAN)
@ -533,8 +534,10 @@ static void ftgmac100_do_tx(FTGMAC100State *s, uint32_t tx_ring,
break; break;
} }
/* record transmit flags as they are valid only on the first /*
* segment */ * record transmit flags as they are valid only on the first
* segment
*/
if (bd.des0 & FTGMAC100_TXDES0_FTS) { if (bd.des0 & FTGMAC100_TXDES0_FTS) {
flags = bd.des1; flags = bd.des1;
} }
@ -639,7 +642,8 @@ static bool ftgmac100_can_receive(NetClientState *nc)
*/ */
static uint32_t ftgmac100_rxpoll(FTGMAC100State *s) static uint32_t ftgmac100_rxpoll(FTGMAC100State *s)
{ {
/* Polling times : /*
* Polling times :
* *
* Speed TIME_SEL=0 TIME_SEL=1 * Speed TIME_SEL=0 TIME_SEL=1
* *

View File

@ -75,6 +75,7 @@ struct AspeedGPIOClass {
uint32_t nr_gpio_pins; uint32_t nr_gpio_pins;
uint32_t nr_gpio_sets; uint32_t nr_gpio_sets;
const AspeedGPIOReg *reg_table; const AspeedGPIOReg *reg_table;
unsigned reg_table_count;
}; };
struct AspeedGPIOState { struct AspeedGPIOState {