[PATCH v2 09/11] gunyah: rsc_mgr: Add auxiliary devices for console
Elliot Berman
quic_eberman at quicinc.com
Wed Aug 3 14:19:06 PDT 2022
On 8/2/2022 1:38 AM, Dmitry Baryshkov wrote:
> On 02/08/2022 00:12, Elliot Berman wrote:
>> Gunyah resource manager exposes a concrete functionalities which
>> complicate a single resource manager driver. Use auxiliary bus
>> to help split high level functions for the resource manager and keep the
>> primary resource manager driver focused on the RPC with RM itself.
>> Delegate Resource Manager's console functionality to the auxiliary bus.
>>
>> Signed-off-by: Elliot Berman <quic_eberman at quicinc.com>
>> ---
>> drivers/virt/gunyah/rsc_mgr.c | 61 ++++++++++++++++++++++++++++++++++-
>> 1 file changed, 60 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/virt/gunyah/rsc_mgr.c
>> b/drivers/virt/gunyah/rsc_mgr.c
>> index b8268ee02fab..44b22cef7d44 100644
>> --- a/drivers/virt/gunyah/rsc_mgr.c
>> +++ b/drivers/virt/gunyah/rsc_mgr.c
>> @@ -91,6 +91,11 @@ struct gh_rm_notif_complete {
>> struct work_struct work;
>> };
>> +struct gh_rsc_mgr_adev {
>> + struct auxiliary_device adev;
>> + struct list_head list;
>> +};
>> +
>> struct gh_rsc_mgr {
>> struct task_struct *recv_task;
>> struct gunyah_device *msgq_tx, *msgq_rx;
>> @@ -99,6 +104,13 @@ struct gh_rsc_mgr {
>> struct mutex call_idr_lock;
>> struct mutex send_lock;
>> +
>> + struct list_head adevs;
>> +};
>> +
>> +/* List of auxiliary devices which resource manager creates */
>> +static const char * const adev_names[] = {
>> + "console",
>> };
>
> Which other auxilliary devices do you expect at this moment?
>
Only foresee a VM loader auxiliary device.
>> static struct gh_rsc_mgr *__rsc_mgr;
>> @@ -516,6 +528,14 @@ int gh_rm_unregister_notifier(struct
>> notifier_block *nb)
>> }
>> EXPORT_SYMBOL_GPL(gh_rm_unregister_notifier);
>> +static void gh_rm_adev_release(struct device *dev)
>> +{
>> + struct gh_rsc_mgr_adev *rm_adev = container_of(dev, struct
>> gh_rsc_mgr_adev, adev.dev);
>> +
>> + list_del(&rm_adev->list);
>
> is there a race for the rsc_mgr->list? Can multiple release functions be
> called in parallel?
> Rather than having a list, it would be easier to have an array of
> devices. Less race conditions, simpler code.
>
> Or just add gh_rsc_msg->console_adev and use it directly without any
> additional bells and whistles.
>
I like this approach, it is much simpler.
>> + kfree(rm_adev);
>> +}
>> +
>> static struct gunyah_device *gh_msgq_platform_probe_direction(struct
>> platform_device *pdev,
>> u8 gh_type, int idx)
>> {
More information about the linux-arm-kernel
mailing list