Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp3689122ybl; Tue, 20 Aug 2019 00:23:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqwIwtIpOKYCFPdSXpgriGk8uERwOyPm+/UkcHm+1qBysp/J55N1ZXbmGAOMLm/Hrg0B3/m5 X-Received: by 2002:a17:90a:aa98:: with SMTP id l24mr24520792pjq.64.1566285786668; Tue, 20 Aug 2019 00:23:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566285786; cv=none; d=google.com; s=arc-20160816; b=AdJGBM3QL4mLEhKnhnKf25zcWbHUrGryW4+UdbpAnVi/uw6E8uz61Pd1uXF7ewDFEs 3pP36iaMpxRHB4GWf320Dr1sBqRo4PcPJ34G+djlvxEB645pXsmcQzEsQ80YwIlOAUZP kkWLmAE+uUx1KGh68uKO+PqpYDOnM6jHXkzQd09VXZYM75kqXJ6mIHw+ya12YynU6wYe GIJrBjd8mZo1seahsFy5VdN+iYYrlqIDf9fx4aE9ewjb7DDw8TWP69aIRFGgkV7Zt3YR omq3HMbJ46xcvfJ/kTeMvhVNz9UEjL0QGJnFgJXt/f9X6QaQ6AZP59q8hwOsXcDauvwa s0Kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=+RZV1jaONC11yLh8cqzCgqh6mhlOtk86pCbU2SKit/I=; b=n0dwEHGYKZsIai0t6EHExuL9edfTOcqUZe175jDbYtmQcpKXEl/sT92tj9Ye0WPcDS 9Nbc5Q5fCl8fJWbp2Rn9Ku+aqMDZu7GtuxrqYy2OEXmAgfFXqqlvC12/eCr5R9wvHw2M n1QuMz8wJi+T5cd7Ewyk6NX9QYuUMko2lPmBUh90dDYvJEGfBxmLF5Jgiaezi4z0IiWg 9sANdbVj4ZDFyHYHVJGWPsedW/JaR2K5tCYEONwZX/MBMQomXrRVIwx3kzOWb8UIwFZ6 L6rHXDVgNZpHDpwaEHBOikxce3IIpWUAj3SCX7wMaocxWqNHFEvjzZUcq7UFFIMhe/vr TbbQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o19si11428521pgj.120.2019.08.20.00.22.51; Tue, 20 Aug 2019 00:23:06 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729319AbfHTHUe (ORCPT + 99 others); Tue, 20 Aug 2019 03:20:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39010 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726049AbfHTHUe (ORCPT ); Tue, 20 Aug 2019 03:20:34 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DD731300BEAD; Tue, 20 Aug 2019 07:20:33 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-60.ams2.redhat.com [10.36.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2783C608A7; Tue, 20 Aug 2019 07:20:31 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 6338716E2D; Tue, 20 Aug 2019 09:20:30 +0200 (CEST) Date: Tue, 20 Aug 2019 09:20:30 +0200 From: "kraxel@redhat.com" To: "Zhang, Tina" Cc: Alex Williamson , "intel-gvt-dev@lists.freedesktop.org" , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Yuan, Hang" , "Lv, Zhiyuan" Subject: Re: [PATCH v5 2/6] vfio: Introduce vGPU display irq type Message-ID: <20190820072030.kgjjiysxgs3yj25j@sirius.home.kraxel.org> References: <20190816023528.30210-1-tina.zhang@intel.com> <20190816023528.30210-3-tina.zhang@intel.com> <20190816145148.307408dc@x1.home> <237F54289DF84E4997F34151298ABEBC876F9AD3@SHSMSX101.ccr.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <237F54289DF84E4997F34151298ABEBC876F9AD3@SHSMSX101.ccr.corp.intel.com> User-Agent: NeoMutt/20180716 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Tue, 20 Aug 2019 07:20:33 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > > > +#define VFIO_IRQ_TYPE_GFX (1) > > > +/* > > > + * vGPU vendor sub-type > > > + * vGPU device display related interrupts e.g. vblank/pageflip */ > > > +#define VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ (1) > > > > If this is a GFX/DISPLAY IRQ, why are we talking about a "vGPU" in the > > description? It's not specific to a vGPU implementation, right? Is this > > related to a physical display or a virtual display? If it's related to the GFX > > PLANE ioctls, it should state that. It's not well specified what this interrupt > > signals. Is it vblank? Is it pageflip? > > Is it both? Neither? Something else? > > Sorry for the confusion caused here. > > The original idea here was to use VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ to > notify user space with the display refresh event. The display refresh > event is general. When notified, user space can use > VFIO_DEVICE_QUERY_GFX_PLANE and VFIO_DEVICE_GET_GFX_DMABUF to get the > updated framebuffer, instead of polling them all the time. > > In order to give user space more choice to do the optimization, > vfio_irq_info_cap_display_plane_events is proposed to tell user space > the different plane refresh event values. So when notified by > VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ, user space can get the value of the > eventfd counter and understand which plane the event refresh event > comes from and choose to get the framebuffer on that plane instead of > all the planes. > > So, from the VFIO user point of view, there is only the display > refresh event (i.e. no other events like vblank, pageflip ...). For > GTV-g, this display refresh event is implemented by both vblank and > pageflip, which is only the implementation thing and can be > transparent to the user space. Again sorry about the confusion cased > here, I'll correct the comments in the next version. All this should be explained in a comment for the IRQ in the header file. Key point for the API is that (a) this is a "the display should be updated" event and (b) this covers all display updates, i.e. user space can stop the display update timer and fully depend on getting notifications if an update is needed. That GTV-g watches guest pageflips is an implementation detail. Should nvidia support this they will probably do something completely different. As far I know they render the guest display to some framebuffer at something like 10fps, so it would make sense for them to send an event each time they refreshed the framebuffer. Also note the relationships (cur_event_val is for DRM_PLANE_TYPE_CURSOR updates and pri_event_val for DRM_PLANE_TYPE_PRIMARY). cheers, Gerd