Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2505877pxb; Mon, 18 Jan 2021 21:30:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJxtif0YKsWeTVocxkZEtdDzoGpnrzaDrhNtzrH8GPQZwdTogckMcKeo8IjPyTCPO9vQNACx X-Received: by 2002:a17:906:2a42:: with SMTP id k2mr1871221eje.118.1611034251990; Mon, 18 Jan 2021 21:30:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611034251; cv=none; d=google.com; s=arc-20160816; b=LvFg+Gyv1BQQoyIj6ySgmLAVBqBMjhiidw8SDZvxXJ/IELzrCV3wp9/carYwe1b/nQ yugiWy69PJn0rRmbJmjH2AyXtcScVkyskP5CwHFAdhdy9MZvBys2MgQ8SpRKdbl6Om3g g+YLEAQNlgUoTXYV0CZIBSgxMfJD2C2m5vYHOsq678uVlp0/KaFZRtYg1LfKMl6STGXI kvgIcfHm+IvXUUtXUvFYFW+TqZpgfDPS2mhQnHMQAuZI+TMU4+6UcO0n3xSEl8x2nj/5 zzfA7hQT4qAKmNNLJ0M2/l39821iXMTmZ0gClO+v76l7XOV9Xnw7ZlnSSbjKXo+6R506 h9LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=DBvkANnsASxNzW1l4kG04pLbjkG68+3VpEAecnZNaSA=; b=LX/iuIAO59bMjA+bc2lwSVulwgiZbx2s7iVCjQmaDldYyPqDc5h98aKctZLek69VOZ QMKUEMLmjeDdtolIbQiOus3aQo8EQ2gsujOObiqRZhPw8RWope/IAN+ccLoSFJEC0PoA XxjU24qTn0AUIqeDIctZ9wkSQe0YS8uLRcUVwDJ3bu34j72GLOpYl+x93k8rLgmcwkef 7xwlaxkFSprHNquop8hVzlqD+yzFqzCHYObbgZkHSyfz1i3uJi3U3OkZQvwMdnpss9yD s/Rm3Q61+SzYe1oKzMOFXdRbqgA0VHO/gLJN7frD+zOge6AahPmvESBshQPPW3SvC1ZP pD3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@android.com header.s=20161025 header.b=XDm097ml; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=android.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g20si4681664edy.399.2021.01.18.21.30.29; Mon, 18 Jan 2021 21:30:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@android.com header.s=20161025 header.b=XDm097ml; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=android.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732378AbhARXYA (ORCPT + 99 others); Mon, 18 Jan 2021 18:24:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730272AbhARXX7 (ORCPT ); Mon, 18 Jan 2021 18:23:59 -0500 Received: from mail-qk1-x735.google.com (mail-qk1-x735.google.com [IPv6:2607:f8b0:4864:20::735]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A26BAC061573 for ; Mon, 18 Jan 2021 15:23:18 -0800 (PST) Received: by mail-qk1-x735.google.com with SMTP id h4so20309006qkk.4 for ; Mon, 18 Jan 2021 15:23:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=android.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=DBvkANnsASxNzW1l4kG04pLbjkG68+3VpEAecnZNaSA=; b=XDm097mldCjKNGSrByLQ0T7F7N9MUkOW49lOtt+kzwDNZ2vn4ZgGt98sJsHoiJ3PpD 2CXsO7iCz4GOUKGp9omKhzptoX41tdKD6/5rs2JGStmHiEToMK7YhljMwGSseW/5AE90 XstktZpNsBNFrtASn1vL3HMq0VTMQuDCvjA+XdLcoFpGFFxQzwng/2E6vWxw6e9RBR8G zClNzhSTKcv1ZfWBnxNK+4jZZpVfVlw35nDG5JWBKP0t1DwKyitaS2E+w0Ax/k0aKbMp Jm8ZsVWhgvy89C3mx6/elomre4rUs6JhYdw6+ANB0C6h/HJ35BGQ6XZ+vamtnavlOSt2 fUNg== 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=DBvkANnsASxNzW1l4kG04pLbjkG68+3VpEAecnZNaSA=; b=XShhzznSl8MpsT0pZKocbwXtVvQ70Yao+nKccpI/WVDsZMpRswHHfSvDRdknjgbKZG seqUcMJqXXS2rRCvPN1X0zjEu8HvD8S8TNIEVMnsTqiishd9d3iTZRQc71Y7QpSRHBuM GTTrOjMMI+eC4/a6SbO9EzVdFuJRZ7y4nUnvjQsrMlCKEXMZdLedSL5HMzTBjJ0nVzMI dm/z5+lMO2fvqhFhlFovbdwTrQ1qsYE/xUiXX1BegfXubjp2Z9KHQW/QsYAy2pIQ18bF eGTMWFu9sgSBlxbzeHPFxzEIuILY7yQQtbDXlTve4zOOGaAmCQpvnZSaXL57Fz6fizOE +fXw== X-Gm-Message-State: AOAM5336MJgZoeDpRAoEFy2v5jnEbVABQjpFEE34ze028OXAU6EKesPD /myXA4o22NmBR6UWnm/k5dRmIrfZT1ClvUGFnx9d8w== X-Received: by 2002:a37:68e:: with SMTP id 136mr1897310qkg.121.1611012197723; Mon, 18 Jan 2021 15:23:17 -0800 (PST) MIME-Version: 1.0 References: <20210118224659.263928-1-zzyiwei@android.com> In-Reply-To: <20210118224659.263928-1-zzyiwei@android.com> From: =?UTF-8?B?WWl3ZWkgWmhhbmfigI4=?= Date: Mon, 18 Jan 2021 15:23:07 -0800 Message-ID: Subject: Re: [PATCH] Track total GPU memory for virtio driver To: David Airlie , Gerd Hoffmann , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, kernel-team Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jan 18, 2021 at 2:47 PM Yiwei Zhang wrote: > > On the success of virtio_gpu_object_create, add size of newly allocated > bo to the tracled total_mem. In drm_gem_object_funcs.free, after the gem > bo lost its last refcount, subtract the bo size from the tracked > total_mem if the original underlying memory allocation is successful. > > Signed-off-by: Yiwei Zhang > --- > drivers/gpu/drm/virtio/Kconfig | 1 + > drivers/gpu/drm/virtio/virtgpu_drv.h | 4 ++++ > drivers/gpu/drm/virtio/virtgpu_object.c | 19 +++++++++++++++++++ > 3 files changed, 24 insertions(+) > > diff --git a/drivers/gpu/drm/virtio/Kconfig b/drivers/gpu/drm/virtio/Kconfig > index b925b8b1da16..e103b7e883b1 100644 > --- a/drivers/gpu/drm/virtio/Kconfig > +++ b/drivers/gpu/drm/virtio/Kconfig > @@ -5,6 +5,7 @@ config DRM_VIRTIO_GPU > select DRM_KMS_HELPER > select DRM_GEM_SHMEM_HELPER > select VIRTIO_DMA_SHARED_BUFFER > + select TRACE_GPU_MEM > help > This is the virtual GPU driver for virtio. It can be used with > QEMU based VMMs (like KVM or Xen). > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h > index 6a232553c99b..7c60e7486bc4 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_drv.h > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h > @@ -249,6 +249,10 @@ struct virtio_gpu_device { > spinlock_t resource_export_lock; > /* protects map state and host_visible_mm */ > spinlock_t host_visible_lock; > + > +#ifdef CONFIG_TRACE_GPU_MEM > + atomic64_t total_mem; > +#endif > }; > > struct virtio_gpu_fpriv { > diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c > index d69a5b6da553..1e16226cebbe 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_object.c > +++ b/drivers/gpu/drm/virtio/virtgpu_object.c > @@ -25,12 +25,29 @@ > > #include > #include > +#ifdef CONFIG_TRACE_GPU_MEM > +#include > +#endif > > #include "virtgpu_drv.h" > > static int virtio_gpu_virglrenderer_workaround = 1; > module_param_named(virglhack, virtio_gpu_virglrenderer_workaround, int, 0400); > > +#ifdef CONFIG_TRACE_GPU_MEM > +static inline void virtio_gpu_trace_total_mem(struct virtio_gpu_device *vgdev, > + s64 delta) > +{ > + u64 total_mem = atomic64_add_return(delta, &vgdev->total_mem); > + > + trace_gpu_mem_total(0, 0, total_mem); > +} > +#else > +static inline void virtio_gpu_trace_total_mem(struct virtio_gpu_device *, s64) > +{ > +} > +#endif > + > int virtio_gpu_resource_id_get(struct virtio_gpu_device *vgdev, uint32_t *resid) > { > if (virtio_gpu_virglrenderer_workaround) { > @@ -104,6 +121,7 @@ static void virtio_gpu_free_object(struct drm_gem_object *obj) > struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private; > > if (bo->created) { > + virtio_gpu_trace_total_mem(vgdev, -(obj->size)); > virtio_gpu_cmd_unref_resource(vgdev, bo); > virtio_gpu_notify(vgdev); > /* completion handler calls virtio_gpu_cleanup_object() */ > @@ -265,6 +283,7 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev, > virtio_gpu_object_attach(vgdev, bo, ents, nents); > } > > + virtio_gpu_trace_total_mem(vgdev, shmem_obj->base.size); > *bo_ptr = bo; > return 0; > > -- > 2.30.0.284.gd98b1dd5eaa7-goog > -CC android-kernel-team@google.com +CC kernel-team@android.com