Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1952874ybi; Thu, 18 Jul 2019 00:57:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqwyZZQn0lvWY/FLFXBBYSTSoIks0leE4icH3hUtMRIQTmDK3yIDo1NSrd2sT95p57lhHDT6 X-Received: by 2002:a17:902:28:: with SMTP id 37mr45033975pla.188.1563436679250; Thu, 18 Jul 2019 00:57:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563436679; cv=none; d=google.com; s=arc-20160816; b=hLB8cuKfj2pmZ+RXFiPBfSveM2JFbyyEW/cB6UsFNhxvpWNTHBXAx4qeM7Ba3dajMf hZ0SUDYNRQ/wExnPtKUAAYhnfZgkJb+uTE5MznXEe3T6kvsT5RF3cNcYHrDc2/vcXmmw hTgNnrbD681hmgOCdeVNuM1tZDb6ZrdgCw4rAMSW2j5OEM+ShiG2xZXL7NPWj4y1rpYF +MRJTP1TD++vJbPl5t8ANNoOGN1/yifpuT6yaf6d0XVOZ6yzq6GpoReiF1fvwivkNsqo D6nSXF/hhAFqv4tAan3ts2DDM4YU3fMgpWQcyPWrAIyWQUpXPZVkaoQwMR8oUp5Bx/8g usig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=uC+xfp8xffmxC/jTpfs9EV+P7egFwRhkailoEqcLPqM=; b=qjh+Cvf/hc5KB6M1gqXyp2QZyTt5v7PU9nLJhqX+h5f94gWKeVU5geZdGvh/0wD3Gp S3MwKLrtGvbB5TsBua12eqwaZKyMSo1wX7x1L4RpHSKhzshtNLl+1YyMP/gAVZ4n8/VM Mkh6uHapG8Flx3qodNkd0rC2l9Bf593JfNcczpiIbx9cxAIF+v411pKEilHd/XE02NEA owigt4vGBvum+lPIblzWatTCbuscYpRubV/qu/+k/cN8Wa6Fo9sULOj4P69nIiBiCHlh J6crMsk0Mx/7ako3NwtziSu1/9/oEFxo8JU4V0kz6GiRwbkrm0C6Pimg7hL+f8gnUgOS fHAg== 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g191si223683pgc.331.2019.07.18.00.57.42; Thu, 18 Jul 2019 00:57:59 -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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389340AbfGRH4g (ORCPT + 99 others); Thu, 18 Jul 2019 03:56:36 -0400 Received: from mga09.intel.com ([134.134.136.24]:11953 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726423AbfGRH4g (ORCPT ); Thu, 18 Jul 2019 03:56:36 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jul 2019 00:56:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,276,1559545200"; d="scan'208";a="158712948" Received: from gvt-optiplex-7060.bj.intel.com ([10.238.158.89]) by orsmga007.jf.intel.com with ESMTP; 18 Jul 2019 00:56:33 -0700 From: Kechen Lu To: intel-gvt-dev@lists.freedesktop.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Kechen Lu , kraxel@redhat.com, zhenyuw@linux.intel.com, zhiyuan.lv@intel.com, zhi.a.wang@intel.com, kevin.tian@intel.com, hang.yuan@intel.com, alex.williamson@redhat.com Subject: [RFC PATCH v4 0/6] Deliver vGPU display refresh event to userspace Date: Thu, 18 Jul 2019 23:56:34 +0800 Message-Id: <20190718155640.25928-1-kechen.lu@intel.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series tries to send the vGPU display refresh event to user land. Instead of delivering page flip events only or vblank events only, we choose to combine two of them, i.e. post display refresh event at vblanks and skip some of them when no page flip happens. Vblanks as upper bound are safe and skipping no-page-flip vblanks guarantees both trivial performance impacts and good user experience without screen tearing. Plus, we have the mask/unmask mechansim providing user space flexibility to switch between event-notified refresh and classic timer-based refresh. In addition, there are some cases that guest app only uses one framebuffer for both drawing and display. In such case, guest OS won't do the plane page flip when the framebuffer is updated, thus the user land won't be notified about the updated framebuffer. Hence, in single framebuffer case, we apply a heuristic to determine whether it is the case or not. If it is, notify user land when each vblank event triggers. v4: - Deliver page flip event and single framebuffer refresh event bounded by display vblanks. (Kechen) v3: - Deliver display vblank event instead of page flip event. (Zhenyu) v2: - Use VFIO irq chain to get eventfds from userspace instead of adding a new ABI. (Alex) v1: - https://patchwork.kernel.org/cover/10962341/ Kechen Lu (2): drm/i915/gvt: Deliver async primary plane page flip events at vblank drm/i915/gvt: Add cursor plane reg update trap emulation handler Tina Zhang (4): vfio: Define device specific irq type capability vfio: Introduce vGPU display irq type drm/i915/gvt: Register vGPU display event irq drm/i915/gvt: Deliver vGPU refresh event to userspace drivers/gpu/drm/i915/gvt/cmd_parser.c | 5 +- drivers/gpu/drm/i915/gvt/display.c | 54 ++++++- drivers/gpu/drm/i915/gvt/gvt.h | 11 ++ drivers/gpu/drm/i915/gvt/handlers.c | 32 ++++- drivers/gpu/drm/i915/gvt/hypercall.h | 1 + drivers/gpu/drm/i915/gvt/interrupt.c | 7 + drivers/gpu/drm/i915/gvt/interrupt.h | 3 + drivers/gpu/drm/i915/gvt/kvmgt.c | 197 ++++++++++++++++++++++++-- drivers/gpu/drm/i915/gvt/mpt.h | 17 +++ include/uapi/linux/vfio.h | 22 ++- 10 files changed, 330 insertions(+), 19 deletions(-) -- 2.17.1