royzah opened a new pull request, #20192:
URL: https://github.com/apache/nuttx/pull/20192

   ## Summary
   
   `up_addrenv_va_to_pa()` is declared in 
https://github.com/apache/nuttx/blob/master/include/nuttx/arch.h but 
implemented only by armv7-a, so no arm64 port can map a virtual address to a 
physical one. A driver whose device addresses memory physically has nothing to 
call.
   
   Asked of the MMU with `AT S1E1R` rather than walked in software, so it 
answers for whatever is actually mapped: any granule, block or page, at any 
level, and it cannot drift from the tables in use.
   
   Two points for review:
   
   - `PAR_EL1` is one register per CPU, so nothing may run between the 
translation and reading it. Interrupts are banked with it, so masking locally 
is enough and SMP needs nothing further.
   - Returns zero when the address is not mapped for a privileged read, per the 
declaration. 
https://github.com/apache/nuttx/blob/master/arch/arm/src/armv7-a/arm_physpgaddr.c
 returns the virtual address unchanged instead. Worth settling which is right.
   
   `up_addrenv_pa_to_va()` is untouched: there is no reverse of `AT`.
   
   ## Impact
   
   arm64 with `CONFIG_ARCH_HAVE_MMU`. New file, no existing behaviour changes.
   
   ## Testing
   
   **Draft: not yet on hardware.** `tools/nxstyle` clean; compiles clean under 
`-Wall`, and the disassembly is 12 branchless instructions with interrupts 
masked across the five that touch `PAR_EL1`.
   
   Owed before ready: runtime log on an i.MX93 showing a known mapping 
translated correctly.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to