[PATCH v2 00/17] Refactor SDEI client driver

Gavin Shan gshan at redhat.com
Wed Jul 22 05:57:23 EDT 2020


This series bases on 5.8-rc6 and refactors the SDEI client driver.
It's the preparatory work of virtualizing SDEI afterwords. The series
is organized as below:

   * PATCH[1-13] refactors and clean up the code. They shouldn't cause
     any functional changes.
   * PATCH[14-15] exposes "struct sdei_event", which will be dereferenced
     on virtualizing SDEI. After it's applied, the SDEI event is identified
     by the instance of "struct sdei_event" instead of event number.
   * PATCH[16] retrieves the signaled property of the SDEI event when it's
     populated. It's needed by SDEI virtualization afterwards.
   * PATCH[17] exposes API (sdei_event_get_info()), which is needed by SDEI
     virtualization either.

The series can be checked out from:

    git at github.com:gwshan/linux.git
    (branch: "sdei_client") 

Testing
=======
I have the SDEI virtualization code implemented as part of KVM module. With
that, the SDEI event can be registered/unregistered/enabled/disabled. Also,
the SDEI event can be injected from host and the guest handler runs properly.

Changelog
=========
v2:
   Rebase to 5.8.rc6                                               (Gavin)
   Improved changelog                                              (James/Gavin)
   Split patches for easy review                                   (Gavin)
   Drop changes to reorder variables                               (James)
   Drop unnecessary (@regs removal) cleanup in sdei_event_create() (James)
   Fix broken case for device-tree in sdei_init()                  (James)   

Gavin Shan (17):
  drivers/firmware/sdei: Remove sdei_is_err()
  drivers/firmware/sdei: Common block for failing path in
    sdei_event_create()
  drivers/firmware/sdei: Retrieve event number from event instance
  drivers/firmware/sdei: Avoid nested statements in sdei_init()
  drivers/firmware/sdei: Unregister driver on error in sdei_init()
  drivers/firmware/sdei: Remove duplicate check in sdei_get_conduit()
  drivers/firmware/sdei: Remove Drop redundant error message in
    sdei_probe()
  drivers/firmware/sdei: Remove while loop in sdei_event_register()
  drivers/firmware/sdei: Remove while loop in sdei_event_unregister()
  drivers/firmware/sdei: Cleanup on cross call function
  drivers/firmware/sdei: Introduce sdei_do_local_call()
  drivers/firmware/sdei: Remove _sdei_event_register()
  drivers/firmware/sdei: Remove _sdei_event_unregister()
  drivers/firmware/sdei: Move struct sdei_event to header file
  drivers/firmware/sdei: Identify event by struct sdei_event
  drivers/firmware/sdei: Retrieve event signaled property on
    registration
  drivers/firmware/sdei: Add sdei_event_get_info()

 drivers/firmware/arm_sdei.c | 394 ++++++++++++++++--------------------
 include/linux/arm_sdei.h    |  73 ++++---
 2 files changed, 224 insertions(+), 243 deletions(-)

-- 
2.23.0




More information about the linux-arm-kernel mailing list