Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp4729775ybl; Mon, 26 Aug 2019 15:07:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqxeLgJmKH/u7hH12Gq3HW5KFO8yf3VE1DH15htiWGL5NI/yxuBAFQUKJW3bsSzqSWBnLxmX X-Received: by 2002:a17:902:3204:: with SMTP id y4mr21580892plb.156.1566857276792; Mon, 26 Aug 2019 15:07:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566857276; cv=none; d=google.com; s=arc-20160816; b=X4NfoCxnJOLTpr7pp4jZCwf0Et/2qSH6JWrrVlfqDiL3dIPM/z53aJD5BU1/LvHHy5 x/KS55tN6kk0zxb5k2Fsozot43KjFtjs/xv2dUGJhzHr6Su4c56f9HEGeVNLmLFdGC1p sNeHQ2RLUWbvvRR6KMTOe7AgVraSqK4gZgM8l5juyTnhyG7/H13pxwp3OxMr6vhLWmbt wwKSu88Vcw+ER0RLTRlxleeNeVc73eo6jzDhxf5GoPalp01bY8g3EMjWNWqEfyCS31hw R2q45Pcos7R3a9TTl1c/6LMnspZP/EGCOO+gy16ftSO8HKPWNGh99vX/8GNROrHDNYbt Nazw== 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=j2+X7ZLdUUxNkcBQNBfyLlM7Bq5bjsdY0IjjmtqCq8s=; b=lolPGbFdKECpdV/pRSEAcQ0KY8pZlKlAS3Mt6VN6UhaNQwCIztMdWwrynCDimShV+h BWQTRR66yLmjbQNcaXJpXyShUTqZvmtgMsQk+EEcyVUxoMS4FKY2ktBFAUBQ+v9pCd14 7ur40ClLtEfbgGkt/2Thmr/OvHzN8nubVN8NKqfc4QmJOkMm+SKgNkeJ44U/gkz6DOv5 m/xj99ki1YrlS+UqGhoJswfBxpC8xnWauf6q7Wm3P8IiksCjeqPiP07v6ETgsG1MATFT UcmhBqM/C7lFK6etcRFPI/z91r8+42TItO/BBSCAMFUlO70Li70jqq6maS1kakqgUQZp vKaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=lQSN7pQh; 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 v10si10778402pgq.17.2019.08.26.15.07.40; Mon, 26 Aug 2019 15:07:56 -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=lQSN7pQh; 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 S1726606AbfHZWGU (ORCPT + 99 others); Mon, 26 Aug 2019 18:06:20 -0400 Received: from mail-io1-f66.google.com ([209.85.166.66]:40793 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726250AbfHZWGT (ORCPT ); Mon, 26 Aug 2019 18:06:19 -0400 Received: by mail-io1-f66.google.com with SMTP id t6so41306688ios.7 for ; Mon, 26 Aug 2019 15:06:19 -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=j2+X7ZLdUUxNkcBQNBfyLlM7Bq5bjsdY0IjjmtqCq8s=; b=lQSN7pQhTCM28br9rSgxowCmfZmsljVskLhGMUN8q9JRAPHK5tkMcdA4AhKA+ezKGf qcEEG70QEoiTsJhZkfOW57KexZaK/Np9tIm3WFU1t0QflRoTMSSWKK6EKoa/oeZECM9v fgpa1tg+tGUUhSa43lab1By1HWWM78GpZ1C8BjBzh9x6I0UTiFwAHzrUCuxuNCjvJSLn vn+AI5TRT8NmBBGBr8ySszqREymrYNaOgZp5QoY5dt7BZKnH361RVhA5ON3uoxJSEwV8 Nb/+SsuAVFcRCdMd9bkdDoor3f5LDZapyZbl7ErJI+Gvy8Uqa29OSSHCZ3EjSRZ8QJdd q4nw== 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=j2+X7ZLdUUxNkcBQNBfyLlM7Bq5bjsdY0IjjmtqCq8s=; b=omovXBtgUJZmCvb38Y81dIVwRiWJRNHsNhW7kfHaFaB/jB6ImjAp4R+TkAnoXpyely jkOuFdvUVI8GxWhZI4aw/4ZHwx9t8bwTg/sxZevbfhBw4zOH8Hd6HBDvkWWiLROeW8TD a9hOx0qY9AmJYeFsRZMx16bny8loIk952rIoz8oAQkQqIdAqHQxf0yQ04N2mQkpZ6Hk/ BD138oPxMy6iRHDI+BfYiOFShZfGQaIdsxMjaguKYuwIUpjC2UXHR+7NWWrwkPc5TMAg yaFR7oZYyFnEb7Bzbn1E6THE+AxwBsXzjc6i9KKF1xlIicPqTX1RioE2mEe2fTUnSVpK 5I+w== X-Gm-Message-State: APjAAAV+Jju8CznZxZdIFw93yDBMG0gdX0LhTLdeMbbktdvpCi9Xr5GP RkeLe01+XfYduPbY8fZyv/E+b3lajJRlApoZmRjZaxEu X-Received: by 2002:a5e:df06:: with SMTP id f6mr16773354ioq.93.1566857178737; Mon, 26 Aug 2019 15:06:18 -0700 (PDT) MIME-Version: 1.0 References: <20190822102614.18164-1-kraxel@redhat.com> In-Reply-To: <20190822102614.18164-1-kraxel@redhat.com> From: Chia-I Wu Date: Mon, 26 Aug 2019 15:06:07 -0700 Message-ID: Subject: Re: [PATCH v2] drm/virtio: make resource id workaround runtime switchable. 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 Thu, Aug 22, 2019 at 3:26 AM Gerd Hoffmann wrote: > > Also update the comment with a reference to the virglrenderer fix. > > Signed-off-by: Gerd Hoffmann Reviewed-by: Chia-I Wu > --- > drivers/gpu/drm/virtio/virtgpu_object.c | 44 ++++++++++++++----------- > 1 file changed, 24 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c > index b2da31310d24..e98aaa00578d 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_object.c > +++ b/drivers/gpu/drm/virtio/virtgpu_object.c > @@ -27,34 +27,38 @@ > > #include "virtgpu_drv.h" > > +static int virtio_gpu_virglrenderer_workaround = 1; > +module_param_named(virglhack, virtio_gpu_virglrenderer_workaround, int, 0400); > + > static int virtio_gpu_resource_id_get(struct virtio_gpu_device *vgdev, > uint32_t *resid) > { > -#if 0 > - int handle = ida_alloc(&vgdev->resource_ida, GFP_KERNEL); > - > - if (handle < 0) > - return handle; > -#else > - static int handle; > - > - /* > - * FIXME: dirty hack to avoid re-using IDs, virglrenderer > - * can't deal with that. Needs fixing in virglrenderer, also > - * should figure a better way to handle that in the guest. > - */ > - handle++; > -#endif > - > - *resid = handle + 1; > + if (virtio_gpu_virglrenderer_workaround) { > + /* > + * Hack to avoid re-using resource IDs. > + * > + * virglrenderer versions up to (and including) 0.7.0 > + * can't deal with that. virglrenderer commit > + * "f91a9dd35715 Fix unlinking resources from hash > + * table." (Feb 2019) fixes the bug. > + */ > + static int handle; > + handle++; > + *resid = handle + 1; > + } else { > + int handle = ida_alloc(&vgdev->resource_ida, GFP_KERNEL); > + if (handle < 0) > + return handle; > + *resid = handle + 1; > + } > return 0; > } > > static void virtio_gpu_resource_id_put(struct virtio_gpu_device *vgdev, uint32_t id) > { > -#if 0 > - ida_free(&vgdev->resource_ida, id - 1); > -#endif > + if (!virtio_gpu_virglrenderer_workaround) { > + ida_free(&vgdev->resource_ida, id - 1); > + } > } > > static void virtio_gpu_ttm_bo_destroy(struct ttm_buffer_object *tbo) > -- > 2.18.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel