Message ID | 20221229152325.32041-1-philmd@linaro.org |
---|---|
Headers | show |
Series | hw/arm/aspeed_ast10x0: Map more peripherals & few more fixes | expand |
On Thu, Dec 29, 2022 at 04:23:16PM +0100, Philippe Mathieu-Daudé wrote: > Trying to fix some bugs triggered running Zephyr. Yay! > > Still 2 bugs: > > 1/ > uart:~$ sensor get SYSCLK > [00:00:23.592,000] <err> os: ***** USAGE FAULT ***** > [00:00:23.593,000] <err> os: Illegal use of the EPSR > [00:00:23.593,000] <err> os: r0/a1: 0x00033448 r1/a2: 0x00000000 r2/a3: 0x00047f50 > [00:00:23.593,000] <err> os: r3/a4: 0x00000000 r12/ip: 0x00000000 r14/lr: 0x00000fbd > [00:00:23.593,000] <err> os: xpsr: 0x60000000 > [00:00:23.593,000] <err> os: Faulting instruction address (r15/pc): 0x00000000 > [00:00:23.593,000] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0 > [00:00:23.594,000] <err> os: Current thread: 0x38248 (shell_uart) > [00:00:23.601,000] <err> os: Halting system > > 2/ > uart:~$ mcuboot > [00:01:04.990,000] <err> os: ***** BUS FAULT ***** > [00:01:04.990,000] <err> os: Instruction bus error > [00:01:04.991,000] <err> os: r0/a1: 0x00000000 r1/a2: 0x000ffff0 r2/a3: 0x00047ef0 > [00:01:04.991,000] <err> os: r3/a4: 0x00000010 r12/ip: 0x6df7ecb5 r14/lr: 0x000188ed > [00:01:04.991,000] <err> os: xpsr: 0x61000000 > [00:01:04.991,000] <err> os: Faulting instruction address (r15/pc): 0x6df7ecb4 > [00:01:04.991,000] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0 > [00:01:04.991,000] <err> os: Current thread: 0x38248 (shell_uart) > [00:01:04.994,000] <err> os: Halting system > > ---------------- > IN: > PMSA MPU lookup for reading at 0x0001d400 mmu_idx 65 -> Hit (prot rwx) > 0x0001d5a2: 6869 ldr r1, [r5, #4] > 0x0001d5a4: 4421 add r1, r4 > 0x0001d5a6: 6883 ldr r3, [r0, #8] > 0x0001d5a8: 681c ldr r4, [r3] > 0x0001d5aa: 463a mov r2, r7 > 0x0001d5ac: 4633 mov r3, r6 > 0x0001d5ae: 46a4 mov ip, r4 > 0x0001d5b0: e8bd 41f0 pop.w {r4, r5, r6, r7, r8, lr} > 0x0001d5b4: 4760 bx ip > > PMSA MPU lookup for reading at 0x00000008 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for execute at 0x6df7ecb4 mmu_idx 65 -> Hit (prot rwx) > Taking exception 3 [Prefetch Abort] on CPU 0 > ...at fault address 0x6df7ecb4 > ...with CFSR.IBUSERR > PMSA MPU lookup for writing at 0x00047ec8 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ecc mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ed0 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ed4 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ed8 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047edc mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ee0 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ee4 mmu_idx 65 -> Hit (prot rwx) > ...taking pending nonsecure exception 5 > ...loading from element 5 of non-secure vector table at 0x14 > ...loaded new PC 0xa0cd > ---------------- > > HACE isn't really functional there. I probably screwed smth while wiring > the peripheral. Not obvious without access to the datasheet. Hmmmmm well I have the datasheet, but I don't see what the issue could be. The MMIO address for the HACE is correct (0x7E6D_0000), what else could be wrong? > > Philippe Mathieu-Daudé (9): > hw/watchdog/wdt_aspeed: Map the whole MMIO range > hw/arm/aspeed: Use the IEC binary prefix definitions > hw/arm/aspeed_ast10x0: Add various unimplemented peripherals > hw/arm/aspeed_ast10x0: Map I3C peripheral > hw/arm/aspeed_ast10x0: Map the secure SRAM > hw/arm/aspeed_ast10x0: Map HACE peripheral > hw/misc/aspeed_hace: Do not crash if address_space_map() failed > hw/arm/aspeed_ast10x0: Add TODO comment to use Cortex-M4F > tests/avocado: Test Aspeed Zephyr SDK v00.01.08 on AST1030 board > > hw/arm/aspeed_ast10x0.c | 84 ++++++++++++++++++++++++++++++-- > hw/arm/aspeed_ast2600.c | 5 +- > hw/arm/aspeed_soc.c | 6 +-- > hw/misc/aspeed_hace.c | 21 +++++--- > hw/watchdog/wdt_aspeed.c | 12 +++-- > include/hw/arm/aspeed_soc.h | 14 ++++++ > include/hw/watchdog/wdt_aspeed.h | 2 +- > tests/avocado/machine_aspeed.py | 41 +++++++++++++++- > 8 files changed, 163 insertions(+), 22 deletions(-) > > -- > 2.38.1 >
On 12/29/22 16:23, Philippe Mathieu-Daudé wrote: > Trying to fix some bugs triggered running Zephyr. > > Still 2 bugs: > > 1/ > uart:~$ sensor get SYSCLK > [00:00:23.592,000] <err> os: ***** USAGE FAULT ***** > [00:00:23.593,000] <err> os: Illegal use of the EPSR > [00:00:23.593,000] <err> os: r0/a1: 0x00033448 r1/a2: 0x00000000 r2/a3: 0x00047f50 > [00:00:23.593,000] <err> os: r3/a4: 0x00000000 r12/ip: 0x00000000 r14/lr: 0x00000fbd > [00:00:23.593,000] <err> os: xpsr: 0x60000000 > [00:00:23.593,000] <err> os: Faulting instruction address (r15/pc): 0x00000000 > [00:00:23.593,000] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0 > [00:00:23.594,000] <err> os: Current thread: 0x38248 (shell_uart) > [00:00:23.601,000] <err> os: Halting system > > 2/ > uart:~$ mcuboot > [00:01:04.990,000] <err> os: ***** BUS FAULT ***** > [00:01:04.990,000] <err> os: Instruction bus error > [00:01:04.991,000] <err> os: r0/a1: 0x00000000 r1/a2: 0x000ffff0 r2/a3: 0x00047ef0 > [00:01:04.991,000] <err> os: r3/a4: 0x00000010 r12/ip: 0x6df7ecb5 r14/lr: 0x000188ed > [00:01:04.991,000] <err> os: xpsr: 0x61000000 > [00:01:04.991,000] <err> os: Faulting instruction address (r15/pc): 0x6df7ecb4 > [00:01:04.991,000] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0 > [00:01:04.991,000] <err> os: Current thread: 0x38248 (shell_uart) > [00:01:04.994,000] <err> os: Halting system > > ---------------- > IN: > PMSA MPU lookup for reading at 0x0001d400 mmu_idx 65 -> Hit (prot rwx) > 0x0001d5a2: 6869 ldr r1, [r5, #4] > 0x0001d5a4: 4421 add r1, r4 > 0x0001d5a6: 6883 ldr r3, [r0, #8] > 0x0001d5a8: 681c ldr r4, [r3] > 0x0001d5aa: 463a mov r2, r7 > 0x0001d5ac: 4633 mov r3, r6 > 0x0001d5ae: 46a4 mov ip, r4 > 0x0001d5b0: e8bd 41f0 pop.w {r4, r5, r6, r7, r8, lr} > 0x0001d5b4: 4760 bx ip > > PMSA MPU lookup for reading at 0x00000008 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for execute at 0x6df7ecb4 mmu_idx 65 -> Hit (prot rwx) > Taking exception 3 [Prefetch Abort] on CPU 0 > ...at fault address 0x6df7ecb4 > ...with CFSR.IBUSERR > PMSA MPU lookup for writing at 0x00047ec8 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ecc mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ed0 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ed4 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ed8 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047edc mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ee0 mmu_idx 65 -> Hit (prot rwx) > PMSA MPU lookup for writing at 0x00047ee4 mmu_idx 65 -> Hit (prot rwx) > ...taking pending nonsecure exception 5 > ...loading from element 5 of non-secure vector table at 0x14 > ...loaded new PC 0xa0cd > ---------------- > > HACE isn't really functional there. I probably screwed smth while wiring > the peripheral. Not obvious without access to the datasheet. The HACE logic is quite complex and the model might be a bit fragile for some modes. I think accumulation still has some problems. Here are drivers for it : https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/crypto/aspeed https://github.com/openbmc/u-boot/blob/v2019.04-aspeed-openbmc/drivers/crypto/aspeed_hace_v1.c https://github.com/openbmc/u-boot/blob/v2019.04-aspeed-openbmc/drivers/crypto/aspeed_hace.c Thanks, C. > > Philippe Mathieu-Daudé (9): > hw/watchdog/wdt_aspeed: Map the whole MMIO range > hw/arm/aspeed: Use the IEC binary prefix definitions > hw/arm/aspeed_ast10x0: Add various unimplemented peripherals > hw/arm/aspeed_ast10x0: Map I3C peripheral > hw/arm/aspeed_ast10x0: Map the secure SRAM > hw/arm/aspeed_ast10x0: Map HACE peripheral > hw/misc/aspeed_hace: Do not crash if address_space_map() failed > hw/arm/aspeed_ast10x0: Add TODO comment to use Cortex-M4F > tests/avocado: Test Aspeed Zephyr SDK v00.01.08 on AST1030 board > > hw/arm/aspeed_ast10x0.c | 84 ++++++++++++++++++++++++++++++-- > hw/arm/aspeed_ast2600.c | 5 +- > hw/arm/aspeed_soc.c | 6 +-- > hw/misc/aspeed_hace.c | 21 +++++--- > hw/watchdog/wdt_aspeed.c | 12 +++-- > include/hw/arm/aspeed_soc.h | 14 ++++++ > include/hw/watchdog/wdt_aspeed.h | 2 +- > tests/avocado/machine_aspeed.py | 41 +++++++++++++++- > 8 files changed, 163 insertions(+), 22 deletions(-) >