From: Kechen Lu <kechen.lu@intel.com>
To: intel-gvt-dev@lists.freedesktop.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org
Cc: Kechen Lu <kechen.lu@intel.com>,
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 [thread overview]
Message-ID: <20190718155640.25928-1-kechen.lu@intel.com> (raw)
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
next reply other threads:[~2019-07-18 7:56 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-18 15:56 Kechen Lu [this message]
2019-07-18 15:56 ` [RFC PATCH v4 1/6] vfio: Define device specific irq type capability Kechen Lu
2019-07-19 6:05 ` Zhenyu Wang
2019-07-19 9:02 ` Lu, Kechen
2019-07-19 9:59 ` Zhenyu Wang
2019-07-18 15:56 ` [RFC PATCH v4 2/6] vfio: Introduce vGPU display irq type Kechen Lu
2019-07-19 16:25 ` Alex Williamson
2019-07-22 5:28 ` Lu, Kechen
2019-07-22 19:41 ` Alex Williamson
2019-07-23 1:08 ` Zhang, Tina
2019-07-23 1:18 ` Alex Williamson
2019-07-23 1:54 ` Zhang, Tina
2019-08-02 13:35 ` kraxel
2019-08-02 14:38 ` Alex Williamson
2019-07-18 15:56 ` [RFC PATCH v4 3/6] drm/i915/gvt: Register vGPU display event irq Kechen Lu
2019-07-18 15:56 ` [RFC PATCH v4 4/6] drm/i915/gvt: Deliver vGPU refresh event to userspace Kechen Lu
2019-07-19 6:24 ` Zhenyu Wang
2019-07-19 9:28 ` Lu, Kechen
2019-07-18 15:56 ` [RFC PATCH v4 5/6] drm/i915/gvt: Deliver async primary plane page flip events at vblank Kechen Lu
2019-07-18 15:56 ` [RFC PATCH v4 6/6] drm/i915/gvt: Add cursor plane reg update trap emulation handler Kechen Lu
2019-07-19 6:34 ` Zhenyu Wang
2019-07-19 9:33 ` Lu, Kechen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190718155640.25928-1-kechen.lu@intel.com \
--to=kechen.lu@intel.com \
--cc=alex.williamson@redhat.com \
--cc=hang.yuan@intel.com \
--cc=intel-gvt-dev@lists.freedesktop.org \
--cc=kevin.tian@intel.com \
--cc=kraxel@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=zhenyuw@linux.intel.com \
--cc=zhi.a.wang@intel.com \
--cc=zhiyuan.lv@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox