mbox series

[v4,00/15] Refactor SDEI client driver

Message ID 20200730014531.310465-1-gshan@redhat.com
Headers show
Series Refactor SDEI client driver | expand

Message

Gavin Shan July 30, 2020, 1:45 a.m. UTC
This series bases on 5.8-rc7 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.

The series can be checked out from:

    git@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.

The code can be found from:

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

Changelog
=========
v4:
   Rebase to last upstream kernel                                  (Gavin)
   Use @event_el for SDEI internal event and use @event to cache
   SDEI event if needed                                            (Jonathan)
   Rename @se to @event for APIs                                   (Jonathan)
v3:
   Rebase to 5.8.rc7                                               (Gavin)
   Pick rbs from Jonathan                                          (Gavin)
   Correct spellings in commit logs                                (Jonathan)
   Rename "out" to "unlock" tag                                    (Jonathan)
   Keep the empty line in sdei_event_unregister()                  (Jonathan)
   Drop tabs between type and field for struct sdei_crosscall_args (Jonathan)
   Use smp_call_func_t for @fn argument in CPU callbacks           (Jonathan)
   Split struct sdei_event into struct sdei_{internal,}_event      (Jonathan)
   Remove last two patches and get it reviewed later               (Jonathan)
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 (15):
  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: Expose struct sdei_event
  drivers/firmware/sdei: Identify event by struct sdei_event

 drivers/firmware/arm_sdei.c | 459 +++++++++++++++++-------------------
 include/linux/arm_sdei.h    |  16 +-
 2 files changed, 231 insertions(+), 244 deletions(-)

Comments

Gavin Shan July 30, 2020, 8:03 a.m. UTC | #1
Hi James,

On 7/30/20 11:45 AM, Gavin Shan wrote:
> This series bases on 5.8-rc7 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.
> 
> The series can be checked out from:
> 
>      git@github.com:gwshan/linux.git
>      (branch: "sdei_client")
> 

I'm not sure if you need to review it as Jonathan almost finishes the
review. It would be nice to get this merged in 5.9.rc1/rc2 since the
subsequent series to support SDEI virtualization, which depends on this
series.

Thanks in advance for your time and comments :)

> 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.
> 
> The code can be found from:
> 
>     git@github.com:gwshan/linux.git
>     (branch: "sdei")
> 
> Changelog
> =========
> v4:
>     Rebase to last upstream kernel                                  (Gavin)
>     Use @event_el for SDEI internal event and use @event to cache
>     SDEI event if needed                                            (Jonathan)
>     Rename @se to @event for APIs                                   (Jonathan)
> v3:
>     Rebase to 5.8.rc7                                               (Gavin)
>     Pick rbs from Jonathan                                          (Gavin)
>     Correct spellings in commit logs                                (Jonathan)
>     Rename "out" to "unlock" tag                                    (Jonathan)
>     Keep the empty line in sdei_event_unregister()                  (Jonathan)
>     Drop tabs between type and field for struct sdei_crosscall_args (Jonathan)
>     Use smp_call_func_t for @fn argument in CPU callbacks           (Jonathan)
>     Split struct sdei_event into struct sdei_{internal,}_event      (Jonathan)
>     Remove last two patches and get it reviewed later               (Jonathan)
> 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 (15):
>    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: Expose struct sdei_event
>    drivers/firmware/sdei: Identify event by struct sdei_event
> 
>   drivers/firmware/arm_sdei.c | 459 +++++++++++++++++-------------------
>   include/linux/arm_sdei.h    |  16 +-
>   2 files changed, 231 insertions(+), 244 deletions(-)
> 

Thanks,
Gavin
Gavin Shan Aug. 27, 2020, 6:55 a.m. UTC | #2
Hi James,

On 7/30/20 6:03 PM, Gavin Shan wrote:
> On 7/30/20 11:45 AM, Gavin Shan wrote:
>> This series bases on 5.8-rc7 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.
>>
>> The series can be checked out from:
>>
>>      git@github.com:gwshan/linux.git
>>      (branch: "sdei_client")
>>
> 
> I'm not sure if you need to review it as Jonathan almost finishes the
> review. It would be nice to get this merged in 5.9.rc1/rc2 since the
> subsequent series to support SDEI virtualization, which depends on this
> series.
> 
> Thanks in advance for your time and comments :)
> 

A kindly ping for this series :)

[...]

Thanks,
Gavin