[00/14] Refactor SDEI client driver
mbox series

Message ID 20200706054732.99387-1-gshan@redhat.com
Headers show
Series
  • Refactor SDEI client driver
Related show

Message

Gavin Shan July 6, 2020, 5:47 a.m. UTC
This series bases on 5.8-rc4 and refactors the SDEI client driver.
It's the preparatory work of virtualizing SDEI afterwords. The series
is organized as below:

   * PATCH[1-11] refactors and clean up the code. They shouldn't cause
     any functional changes.
   * PATCH[12] 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[13] retrieves the signaled property of the SDEI event when it's
     populated. It's needed by SDEI virtualization afterwards.
   * PATCH[14] exposes API (sdei_event_get_info()), which is needed by SDEI
     virtualization either.

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.

Gavin Shan (14):
  drivers/firmware/sdei: Remove sdei_is_err()
  drivers/firmware/sdei: Common block for failing path in
    sdei_event_create()
  drivers/firmware/sdei: Dereference SDEI event parameter directly
  drivers/firmware/sdei: Rework sdei_init()
  drivers/firmware/sdei: Remove sdei_get_conduit()
  drivers/firmware/sdei: Drop redundant error message in sdei_probe()
  drivers/firmware/sdei: Drop unnecessary while loop
  drivers/firmware/sdei: Cleanup on cross call functions
  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: Identify event by struct sdei_event
  drivers/firmware/sdei: Retrieve event signaled property on creation
  drivers/firmware/sdei: Add sdei_event_get_info()

 drivers/firmware/arm_sdei.c | 536 ++++++++++++++++--------------------
 include/linux/arm_sdei.h    |  73 +++--
 2 files changed, 284 insertions(+), 325 deletions(-)

Comments

Gavin Shan July 21, 2020, 9:44 a.m. UTC | #1
On 7/6/20 3:47 PM, Gavin Shan wrote:
> This series bases on 5.8-rc4 and refactors the SDEI client driver.
> It's the preparatory work of virtualizing SDEI afterwords. The series
> is organized as below:
> 
>     * PATCH[1-11] refactors and clean up the code. They shouldn't cause
>       any functional changes.
>     * PATCH[12] 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[13] retrieves the signaled property of the SDEI event when it's
>       populated. It's needed by SDEI virtualization afterwards.
>     * PATCH[14] exposes API (sdei_event_get_info()), which is needed by SDEI
>       virtualization either.
> 

The code can be checked out from github:

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

Thanks,
Gavin

> 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.
> 
> Gavin Shan (14):
>    drivers/firmware/sdei: Remove sdei_is_err()
>    drivers/firmware/sdei: Common block for failing path in
>      sdei_event_create()
>    drivers/firmware/sdei: Dereference SDEI event parameter directly
>    drivers/firmware/sdei: Rework sdei_init()
>    drivers/firmware/sdei: Remove sdei_get_conduit()
>    drivers/firmware/sdei: Drop redundant error message in sdei_probe()
>    drivers/firmware/sdei: Drop unnecessary while loop
>    drivers/firmware/sdei: Cleanup on cross call functions
>    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: Identify event by struct sdei_event
>    drivers/firmware/sdei: Retrieve event signaled property on creation
>    drivers/firmware/sdei: Add sdei_event_get_info()
> 
>   drivers/firmware/arm_sdei.c | 536 ++++++++++++++++--------------------
>   include/linux/arm_sdei.h    |  73 +++--
>   2 files changed, 284 insertions(+), 325 deletions(-)
>