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

   ## Summary
   
   Implement hartid<->cpuid mapping for RISC-V. This is necessary for some
   platforms which cannot use 1:1 mapping between logical and physical CPU /
   core IDs. One example is MPFS where hart0 cannot be used for NuttX SMP as
   it is a less capable "monitor" core (E51) compared to the application
   cores hart1...3 (E54).
   
   Why not just use a generic offset then? We also need the physical hart ID
   for many things:
   - Communication between harts (IPI)
   - External interrupt acknowledgment (interrupt claim for specific CPU)
   - Communication to SBI
   
   Thus, create procedures that can do this translation:
   - The default mapping is still logical=physical.
   - Another flavor is to use the existing CONFIG_ARCH_RV_HARTID_BASE config
     variable, which is just a simple offset
   - The final flavor is to overload hartid<->cpuid on a per chip basis (no
     example for this is provided yet)
   
   To achieve this, a generic "up_this_cpu()" macro is introduced to the common 
architecture layer. This macro
   is activated by setting ARCH_HAVE_CPUID_MAPPING=y after which the arch/chip 
must implement the CPUID mapping
   function.
   
   By default, the CPUID mapping is still logical=physical.
   
   ## Impact
   Decouples physical and logical CPU ids from each other. Only the RISC-V 
platform is affected.
   ## Testing
   - rv-virt:knsh64
   - rv-virt:ksmp64
   - rv-virt:nsh64
   - rv-virt:smp64
   
   ostest pass
   
   
   


-- 
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: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to