1. 28 Jul, 2021 1 commit
    • Ming Huang's avatar
      services: Fix pmr_el1 rewrote issue in sdei_disaptch_event() · d21f1ddb
      Ming Huang authored
      
      
      Consider a RAS scenario:
      Enter EL3 by sync exception, then call spm_mm_sp_call() enter
      EL0s to handle this error, then call sdei_dispatch_event() to
      inform OS. Finally, return back to OS from sync exception flow.
      Similar flow is sgi_ras_intr_handler() in sgi_ras.c.
      
      The icc_pmr_el1 register will be change in above flow:
      1 cm_el1_sysregs_context_save(NON_SECURE);
        -> ehf_exited_normal_world();
          ##icc_pmr_el1: 0xf8 => 0x80
      2 spm_mm_sp_call();
      3 sdei_dispatch_event();
      4 ehf_activate_priority(sdei_event_priority(map));
          ##icc_pmr_el1: 0x80 => 0x60
      5 restore_and_resume_ns_context();
        -> ehf_exited_normal_world();
           ##return due to has_valid_pri_activations(pe_data) == 1
      6 ehf_deactivate_priority(sdei_event_priority(map));
          ##icc_pmr_el1: 0x60 => 0x80
      The icc_pmr_el1 was rewrote from 0xf8 to 0x80. This issue will
      result in OS hang when eret to OS from RAS flow.
      
      Move ehf_activate_priority(sdei_event_priority(map)) after
      restore_and_resume_ns_context() can fix this issue.
      Signed-off-by: default avatarMing Huang <huangming@linux.alibaba.com>
      Change-Id: If01ec55cf0aabf1594dece1ad50d3ec3406cdabc
      d21f1ddb
  2. 27 Jul, 2021 3 commits
  3. 26 Jul, 2021 5 commits
  4. 25 Jul, 2021 1 commit
  5. 24 Jul, 2021 2 commits
  6. 23 Jul, 2021 9 commits
  7. 22 Jul, 2021 6 commits
  8. 21 Jul, 2021 1 commit
  9. 20 Jul, 2021 4 commits
  10. 19 Jul, 2021 8 commits