[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 13/34] aspeed/smc: Do not map disabled segment on the AST2600
From: |
Peter Maydell |
Subject: |
[PULL 13/34] aspeed/smc: Do not map disabled segment on the AST2600 |
Date: |
Mon, 16 Dec 2019 11:08:43 +0000 |
From: Cédric Le Goater <address@hidden>
The segments can be disabled on the AST2600 (zero register value).
CS0 is open by default but not the other CS. This is closing the
access to the flash device in user mode and forbids scanning.
In the model, check the segment size and disable the associated region
when the value is zero.
Fixes: bcaa8ddd081c ("aspeed/smc: Add AST2600 support")
Signed-off-by: Cédric Le Goater <address@hidden>
Reviewed-by: Joel Stanley <address@hidden>
Signed-off-by: Cédric Le Goater <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>
---
hw/ssi/aspeed_smc.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c
index 955ec21852a..86cadbe4cc0 100644
--- a/hw/ssi/aspeed_smc.c
+++ b/hw/ssi/aspeed_smc.c
@@ -444,8 +444,13 @@ static void aspeed_2600_smc_reg_to_segment(const
AspeedSMCState *s,
uint32_t start_offset = (reg << 16) & AST2600_SEG_ADDR_MASK;
uint32_t end_offset = reg & AST2600_SEG_ADDR_MASK;
- seg->addr = s->ctrl->flash_window_base + start_offset;
- seg->size = end_offset + MiB - start_offset;
+ if (reg) {
+ seg->addr = s->ctrl->flash_window_base + start_offset;
+ seg->size = end_offset + MiB - start_offset;
+ } else {
+ seg->addr = s->ctrl->flash_window_base;
+ seg->size = 0;
+ }
}
static bool aspeed_smc_flash_overlap(const AspeedSMCState *s,
@@ -486,7 +491,7 @@ static void
aspeed_smc_flash_set_segment_region(AspeedSMCState *s, int cs,
memory_region_transaction_begin();
memory_region_set_size(&fl->mmio, seg.size);
memory_region_set_address(&fl->mmio, seg.addr -
s->ctrl->flash_window_base);
- memory_region_set_enabled(&fl->mmio, true);
+ memory_region_set_enabled(&fl->mmio, !!seg.size);
memory_region_transaction_commit();
s->regs[R_SEG_ADDR0 + cs] = regval;
@@ -526,8 +531,9 @@ static void aspeed_smc_flash_set_segment(AspeedSMCState *s,
int cs,
}
/* Keep the segment in the overall flash window */
- if (seg.addr + seg.size <= s->ctrl->flash_window_base ||
- seg.addr > s->ctrl->flash_window_base + s->ctrl->flash_window_size) {
+ if (seg.size &&
+ (seg.addr + seg.size <= s->ctrl->flash_window_base ||
+ seg.addr > s->ctrl->flash_window_base + s->ctrl->flash_window_size)) {
qemu_log_mask(LOG_GUEST_ERROR, "%s: new segment for CS%d is invalid : "
"[ 0x%"HWADDR_PRIx" - 0x%"HWADDR_PRIx" ]\n",
s->ctrl->name, cs, seg.addr, seg.addr + seg.size);
--
2.20.1
- [PULL 02/34] exynos4210_gic: Suppress gcc9 format-truncation warnings, (continued)
- [PULL 02/34] exynos4210_gic: Suppress gcc9 format-truncation warnings, Peter Maydell, 2019/12/16
- [PULL 04/34] aspeed/i2c: Check SRAM enablement on AST2500, Peter Maydell, 2019/12/16
- [PULL 03/34] aspeed/i2c: Add support for pool buffer transfers, Peter Maydell, 2019/12/16
- [PULL 06/34] aspeed/i2c: Add support for DMA transfers, Peter Maydell, 2019/12/16
- [PULL 08/34] aspeed/sdmc: Make ast2600 default 1G, Peter Maydell, 2019/12/16
- [PULL 09/34] aspeed/scu: Fix W1C behavior, Peter Maydell, 2019/12/16
- [PULL 07/34] aspeed/i2c: Add trace events, Peter Maydell, 2019/12/16
- [PULL 12/34] aspeed/smc: Restore default AHB window mapping at reset, Peter Maydell, 2019/12/16
- [PULL 10/34] watchdog/aspeed: Improve watchdog timeout message, Peter Maydell, 2019/12/16
- [PULL 11/34] watchdog/aspeed: Fix AST2600 frequency behaviour, Peter Maydell, 2019/12/16
- [PULL 13/34] aspeed/smc: Do not map disabled segment on the AST2600,
Peter Maydell <=
- [PULL 14/34] aspeed/smc: Add AST2600 timings registers, Peter Maydell, 2019/12/16
- [PULL 16/34] aspeed: Add support for the tacoma-bmc board, Peter Maydell, 2019/12/16
- [PULL 15/34] aspeed: Remove AspeedBoardConfig array and use AspeedMachineClass, Peter Maydell, 2019/12/16
- [PULL 17/34] gpio: fix memory leak in aspeed_gpio_init(), Peter Maydell, 2019/12/16
- [PULL 18/34] aspeed: Change the "scu" property definition, Peter Maydell, 2019/12/16
- [PULL 19/34] aspeed: Change the "nic" property definition, Peter Maydell, 2019/12/16
- [PULL 20/34] target/arm: Honor HCR_EL2.TID2 trapping requirements, Peter Maydell, 2019/12/16
- [PULL 21/34] target/arm: Honor HCR_EL2.TID1 trapping requirements, Peter Maydell, 2019/12/16
- [PULL 22/34] target/arm: Handle trapping to EL2 of AArch32 VMRS instructions, Peter Maydell, 2019/12/16
- [PULL 23/34] target/arm: Handle AArch32 CP15 trapping via HSTR_EL2, Peter Maydell, 2019/12/16