[PATCH] drm/i915/gvt: Refine new_mmio_info to override the added MMIO_reg
Colin Xu
Colin.Xu at intel.com
Fri Jun 1 02:46:36 UTC 2018
On 05/31/2018 10:25 AM, Zhao, Yakui wrote:
> Hi,
> Any comment about this patch?
> After the overriding is supported, it can reduce the effect on the other platform when adding one
> mmio handle for one specific platform.
>
> Thanks
> Yakui
trade-off against the convenience:
- Unnecessary delete and re-add.
- For a specific mmio, it's unclear how it's handled until go through all init functions, which
transfers the effort to debugging stage, especially for issue with low fail rate.
BR
Colin
>> -----Original Message-----
>> From: Zhao, Yakui
>> Sent: Thursday, May 17, 2018 11:58 AM
>> To: intel-gvt-dev at lists.freedesktop.org
>> Cc: Zhao, Yakui <yakui.zhao at intel.com>
>> Subject: [PATCH] drm/i915/gvt: Refine new_mmio_info to override the added
>> MMIO_reg
>>
>> GVT-g uses new_mmio_info function to track the required the mmio_reg. If
>> the required mmio_reg is already added, error is returned. If one platform
>> hopes to add new specific MMIO read/write callback for one mmio_reg, the
>> change needs to be applied on all the platforms.
>>
>> So the new_mmio_info is implemented as override. If it is already added, it
>> will be replaced by the new attributes(mask, read/write callback and so on).
>>
>> Signed-off-by: Zhao Yakui <yakui.zhao at intel.com>
>> ---
>> drivers/gpu/drm/i915/gvt/handlers.c | 25 +++++++++++--------------
>> 1 file changed, 11 insertions(+), 14 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gvt/handlers.c
>> b/drivers/gpu/drm/i915/gvt/handlers.c
>> index 653ba2b..a7bf6d5 100644
>> --- a/drivers/gpu/drm/i915/gvt/handlers.c
>> +++ b/drivers/gpu/drm/i915/gvt/handlers.c
>> @@ -107,22 +107,19 @@ static int new_mmio_info(struct intel_gvt *gvt,
>> end = offset + size;
>>
>> for (i = start; i < end; i += 4) {
>> - info = kzalloc(sizeof(*info), GFP_KERNEL);
>> - if (!info)
>> - return -ENOMEM;
>> -
>> - info->offset = i;
>> - p = find_mmio_info(gvt, info->offset);
>> + p = find_mmio_info(gvt, i);
>> if (p) {
>> - WARN(1, "dup mmio definition offset %x\n",
>> - info->offset);
>> - kfree(info);
>> + /* It will be removed from hash_list if found */
>> + hash_del(&p->node);
>> + info = p;
>> + gvt_dbg_mmio("VGPU MMIO_reg %x is added.
>> Override\n",
>> + p->offset);
>> + } else {
>> + info = kzalloc(sizeof(*info), GFP_KERNEL);
>> + if (!info)
>> + return -ENOMEM;
>>
>> - /* We return -EEXIST here to make GVT-g load fail.
>> - * So duplicated MMIO can be found as soon as
>> - * possible.
>> - */
>> - return -EEXIST;
>> + info->offset = i;
>> }
>>
>> info->ro_mask = ro_mask;
>> --
>> 2.7.4
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
--
Best Regards,
Colin Xu
More information about the intel-gvt-dev
mailing list