Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1287827ybi; Sun, 30 Jun 2019 11:50:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqyFw8z2O0pdKo1RMFA6OIAoZGh03nY+q+5nyUzXQmJwLdXDyYQLCLSuvsmJopZr3zNt6F/W X-Received: by 2002:a17:902:6ac6:: with SMTP id i6mr24358751plt.233.1561920628251; Sun, 30 Jun 2019 11:50:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561920628; cv=none; d=google.com; s=arc-20160816; b=OECCnupYAXrg9myKbg1LePVDKexEh4HDQImjq4kh981gW6/5a6Y7xziWQcHR75pOqn e5N+zJ5HzYxByNVfQMTg/Win/LUhaMmTmBlNDzm4KcS9i7HCo8eTY1dKGOHsO8c1/aAm 5kYPy6TAGj4JicOyXfQajOyi3L18n5UDLOpOUhEaBNLGY42Q8iC62CcSOFrhJE8EXjiZ bw9JPcpjNhpMcOC7Y0pEp7Bsjd0B3B/5tRA3hHfLIWGkME4MxUesFGaZkP2h32btL0LK 7++wgqg40g+79MiAUOcl/yUcA2nQoNAksSyeQVVDufxrNiDpiyhxYDE+wgLwviJZHtiw pAMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=M3e5wbnegHeRX/hJTHNWrhDPE+mePTed2TBFVD0zzdU=; b=W50K1ebAgBiFKBJi4nGtgwI/luNsCSD4oHTj+wGOOipmTrGNdgCjMpAD0g16YqZouX wYe9ReEATORhd6xFlYSNZoHToSyZ35dlpOHR62ao/tOobV+GLrshdCvWX9buS5t/S1m0 jssdfhU5tukwqZ9aP/e1hzdOZ0MQATbkziVTIomNAO2mi0Agf9jKU2/cYx3FSfuiR5Wp KQxXoIyBDEvjF859tPamBi8iBctioHNT1e4pyO5tQz86XPdxsUPfxn6LHPM7dczT7X3M EVrbvG41MtQKQF4r1XFgPMwk2bBccsqYPKcxT7EOY2nUtsIgvKkeRTgkfiEXDEo59cWX iHJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="tH//MheY"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e14si9164312pfd.141.2019.06.30.11.50.12; Sun, 30 Jun 2019 11:50:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="tH//MheY"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726769AbfF3SsF (ORCPT + 99 others); Sun, 30 Jun 2019 14:48:05 -0400 Received: from mail-io1-f68.google.com ([209.85.166.68]:45777 "EHLO mail-io1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726572AbfF3SsF (ORCPT ); Sun, 30 Jun 2019 14:48:05 -0400 Received: by mail-io1-f68.google.com with SMTP id e3so23615053ioc.12 for ; Sun, 30 Jun 2019 11:48:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=M3e5wbnegHeRX/hJTHNWrhDPE+mePTed2TBFVD0zzdU=; b=tH//MheYyEsn2cxzZcYSNMd+x21QhqkEDOTdsUgDTmN3b9XSew6Pn+SqEv9spR2WhZ oaaQdZOwvfuYIbxcPsJYN6PUQ5YtwmgqAweWZGr2Ox7OjAbjQv3Wo55QQP3UgID2jXbk dwwWHTEHh988J92DKnx0jDLBSrHt1xGdV9D+7X8wox+1mQoSkxs03p/mzf4SAL2qJMuh DMzwRPnR4b/toWdtVkwZWjmc8PdtL75iXOVVT+cGk+FnWAW9BP0oNiHa5SGhpnVHA7jO w2IpzFALFSSoV7m7r2nXqYZ+yJBmLMEB/uN0tes/tmRr8ZcRUgaJdLpqoxmZJMhHIDAF K0vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=M3e5wbnegHeRX/hJTHNWrhDPE+mePTed2TBFVD0zzdU=; b=Mo9xV9O/BEfyrrMPOTgWhcE6iCFsNkBbqzl1g50g7+CT5RtrQnB3GmjECp8zyMYgDu V5f096B30ZkpKBDoq9FEYBwbmdUglLag32ZAF/ryFRUuF1IbCFOfbm2sgsnXU3pxxLO4 vMDtfoOm5ZzTDUoV+N0Vbs49NwmaZukB7t7Sn+v94S6HKbW5n2oFt8vf3yLtPIQEpVh0 7jiOD41g0ipoPWY3lsTlQRJLl7ih0jHUTCiLGzWhsfhMwW/T9YH6PZtJRxCM3m8pqVRj j2sy275g5yquzMqObnNnovJ2sDAYJEkNpoHOFxXVSShHIyYycg+33BEFTwEOnfS+pmvr 1EOg== X-Gm-Message-State: APjAAAUPD6EHYKmarZ7Q65FcVFx2urLwvOTAwr4C+6c+wvcef/h5P78y C2WnWubtr8LTvrbP3jf5mOsriOSr26WPs90VHss= X-Received: by 2002:a05:6602:104:: with SMTP id s4mr14718033iot.200.1561920484443; Sun, 30 Jun 2019 11:48:04 -0700 (PDT) MIME-Version: 1.0 References: <20190620060726.926-1-kraxel@redhat.com> <20190620060726.926-9-kraxel@redhat.com> <20190628103412.f2n7ybp3qtxbhdk4@sirius.home.kraxel.org> In-Reply-To: <20190628103412.f2n7ybp3qtxbhdk4@sirius.home.kraxel.org> From: Chia-I Wu Date: Sun, 30 Jun 2019 11:47:53 -0700 Message-ID: Subject: Re: [PATCH v4 08/12] drm/virtio: rework virtio_gpu_execbuffer_ioctl fencing To: Gerd Hoffmann Cc: ML dri-devel , David Airlie , open list , "open list:VIRTIO GPU DRIVER" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 28, 2019 at 3:34 AM Gerd Hoffmann wrote: > > Hi, > > > > --- a/drivers/gpu/drm/virtio/virtgpu_drv.h > > > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h > > > @@ -120,9 +120,9 @@ struct virtio_gpu_vbuffer { > > > > > > char *resp_buf; > > > int resp_size; > > > - > > > virtio_gpu_resp_cb resp_cb; > > > > > > + struct virtio_gpu_object_array *objs; > > This can use a comment (e.g., objects referenced by the vbuffer) > > IMHO this is obvious ... > > > > void virtio_gpu_cmd_submit(struct virtio_gpu_device *vgdev, > > > void *data, uint32_t data_size, > > > - uint32_t ctx_id, struct virtio_gpu_fence *fence); > > > + uint32_t ctx_id, struct virtio_gpu_fence *fence, > > > + struct virtio_gpu_object_array *objs); > > Can we keep fence, which is updated, as the last parameter? > > Fixed. > > > > + if (buflist) { > > > + for (i = 0; i < exbuf->num_bo_handles; i++) > > > + reservation_object_add_excl_fence(buflist->objs[i]->resv, > > > + &out_fence->f); > > > + drm_gem_unlock_reservations(buflist->objs, buflist->nents, > > > + &ticket); > > > + } > > We used to unlock after virtio_gpu_cmd_submit. > > > > I guess, the fence is considered signaled (because its seqno is still > > 0) until after virtio_gpu_cmd_submit. We probably don't want other > > processes to see the semi-initialized fence. > > Good point. Fixed. > > > > out_memdup: > > > kfree(buf); > > > out_unresv: > > > - ttm_eu_backoff_reservation(&ticket, &validate_list); > > > -out_free: > > > - virtio_gpu_unref_list(&validate_list); > > Keeping out_free to free buflist seems just fine. > > We don't need the separate label though ... > > > > + drm_gem_unlock_reservations(buflist->objs, buflist->nents, &ticket); > > > out_unused_fd: > > > kvfree(bo_handles); > > > - kvfree(buflist); > > > + if (buflist) > > > + virtio_gpu_array_put_free(buflist); > > ... and the buflist is released here if needed. > > But we need if (buflist) for drm_gem_unlock_reservations too. Fixed. > > > > - > > > - list_del(&entry->list); > > > - free_vbuf(vgdev, entry); > > > } > > > wake_up(&vgdev->ctrlq.ack_queue); > > > > > > if (fence_id) > > > virtio_gpu_fence_event_process(vgdev, fence_id); > > > + > > > + list_for_each_entry_safe(entry, tmp, &reclaim_list, list) { > > > + if (entry->objs) > > > + virtio_gpu_array_put_free(entry->objs); > > > + list_del(&entry->list); > > We are clearing the list. I guess list_del is not needed. > > > + free_vbuf(vgdev, entry); > > This just shuffles around the code. Dropping list_del() is unrelated > and should be a separate patch. Fair point. We now loop the list twice and I was just looking for chances for micro-optimizations. > > Beside that I'm not sure it actually can be dropped. free_vbuf() will > not kfree() the vbuf but keep it cached in a freelist instead. vbuf is created with kmem_cache_zalloc which always zeros the struct. > > cheers, > Gerd >