Re: [PATCH 0/9] hw/arm/aspeed_ast10x0: Map more peripherals & few more fixes

2023-01-02 Thread Cédric Le Goater

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]  os: * USAGE FAULT *
[00:00:23.593,000]  os:   Illegal use of the EPSR
[00:00:23.593,000]  os: r0/a1:  0x00033448  r1/a2:  0x  r2/a3:  
0x00047f50
[00:00:23.593,000]  os: r3/a4:  0x r12/ip:  0x r14/lr:  
0x0fbd
[00:00:23.593,000]  os:  xpsr:  0x6000
[00:00:23.593,000]  os: Faulting instruction address (r15/pc): 0x
[00:00:23.593,000]  os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:00:23.594,000]  os: Current thread: 0x38248 (shell_uart)
[00:00:23.601,000]  os: Halting system

2/
uart:~$ mcuboot
[00:01:04.990,000]  os: * BUS FAULT *
[00:01:04.990,000]  os:   Instruction bus error
[00:01:04.991,000]  os: r0/a1:  0x  r1/a2:  0x0000  r2/a3:  
0x00047ef0
[00:01:04.991,000]  os: r3/a4:  0x0010 r12/ip:  0x6df7ecb5 r14/lr:  
0x000188ed
[00:01:04.991,000]  os:  xpsr:  0x6100
[00:01:04.991,000]  os: Faulting instruction address (r15/pc): 0x6df7ecb4
[00:01:04.991,000]  os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:01:04.991,000]  os: Current thread: 0x38248 (shell_uart)
[00:01:04.994,000]  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 0x0008 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(-)






Re: [PATCH 0/9] hw/arm/aspeed_ast10x0: Map more peripherals & few more fixes

2022-12-29 Thread Peter Delevoryas
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]  os: * USAGE FAULT *
> [00:00:23.593,000]  os:   Illegal use of the EPSR
> [00:00:23.593,000]  os: r0/a1:  0x00033448  r1/a2:  0x  r2/a3:  
> 0x00047f50
> [00:00:23.593,000]  os: r3/a4:  0x r12/ip:  0x r14/lr:  
> 0x0fbd
> [00:00:23.593,000]  os:  xpsr:  0x6000
> [00:00:23.593,000]  os: Faulting instruction address (r15/pc): 0x
> [00:00:23.593,000]  os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
> [00:00:23.594,000]  os: Current thread: 0x38248 (shell_uart)
> [00:00:23.601,000]  os: Halting system
> 
> 2/
> uart:~$ mcuboot
> [00:01:04.990,000]  os: * BUS FAULT *
> [00:01:04.990,000]  os:   Instruction bus error
> [00:01:04.991,000]  os: r0/a1:  0x  r1/a2:  0x0000  r2/a3:  
> 0x00047ef0
> [00:01:04.991,000]  os: r3/a4:  0x0010 r12/ip:  0x6df7ecb5 r14/lr:  
> 0x000188ed
> [00:01:04.991,000]  os:  xpsr:  0x6100
> [00:01:04.991,000]  os: Faulting instruction address (r15/pc): 0x6df7ecb4
> [00:01:04.991,000]  os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
> [00:01:04.991,000]  os: Current thread: 0x38248 (shell_uart)
> [00:01:04.994,000]  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 0x0008 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.

Hm well I have the datasheet, but I don't see what the issue could be. The
MMIO address for the HACE is correct (0x7E6D_), 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
> 



[PATCH 0/9] hw/arm/aspeed_ast10x0: Map more peripherals & few more fixes

2022-12-29 Thread Philippe Mathieu-Daudé
Trying to fix some bugs triggered running Zephyr.

Still 2 bugs:

1/
uart:~$ sensor get SYSCLK
[00:00:23.592,000]  os: * USAGE FAULT *
[00:00:23.593,000]  os:   Illegal use of the EPSR
[00:00:23.593,000]  os: r0/a1:  0x00033448  r1/a2:  0x  r2/a3:  
0x00047f50
[00:00:23.593,000]  os: r3/a4:  0x r12/ip:  0x r14/lr:  
0x0fbd
[00:00:23.593,000]  os:  xpsr:  0x6000
[00:00:23.593,000]  os: Faulting instruction address (r15/pc): 0x
[00:00:23.593,000]  os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:00:23.594,000]  os: Current thread: 0x38248 (shell_uart)
[00:00:23.601,000]  os: Halting system

2/
uart:~$ mcuboot
[00:01:04.990,000]  os: * BUS FAULT *
[00:01:04.990,000]  os:   Instruction bus error
[00:01:04.991,000]  os: r0/a1:  0x  r1/a2:  0x0000  r2/a3:  
0x00047ef0
[00:01:04.991,000]  os: r3/a4:  0x0010 r12/ip:  0x6df7ecb5 r14/lr:  
0x000188ed
[00:01:04.991,000]  os:  xpsr:  0x6100
[00:01:04.991,000]  os: Faulting instruction address (r15/pc): 0x6df7ecb4
[00:01:04.991,000]  os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:01:04.991,000]  os: Current thread: 0x38248 (shell_uart)
[00:01:04.994,000]  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 0x0008 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.

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