linux_dsm_epyc7002/include/xen/interface/io
Oleksandr Andrushchenko 8945c08e2b xen/displif: add ABI for para-virtual display
This is the ABI for the two halves of a para-virtualized
display driver.

This protocol aims to provide a unified protocol which fits more
sophisticated use-cases than a framebuffer device can handle. At the
moment basic functionality is supported with the intention to extend:
  o multiple dynamically allocated/destroyed framebuffers
  o buffers of arbitrary sizes
  o better configuration options including multiple display support

Note: existing fbif can be used together with displif running at the
same time, e.g. on Linux one provides framebuffer and another DRM/KMS

Future extensions to the existing protocol may include:
  o allow display/connector cloning
  o allow allocating objects other than display buffers
  o add planes/overlays support
  o support scaling
  o support rotation

Note, that this protocol doesn't use ring macros for
bi-directional exchange (PV calls/9pfs) bacause:
  o it statically defines the use of a single page
    for the ring buffer
  o it uses direct memory access to ring's contents
    w/o memory copying
  o re-uses the same idea that kbdif/fbif use
    which for this use-case seems to be appropriate

==================================================
Rationale for introducing this protocol instead of
using the existing fbif:
==================================================

1. In/out event sizes
  o fbif - 40 octets
  o displif - 40 octets
This is only the initial version of the displif protocol
which means that there could be requests which will not fit
(WRT introducing some GPU related functionality
later on). In that case we cannot alter fbif sizes as we need to
be backward compatible an will be forced to handle those
apart of fbif.

2. Shared page
Displif doesn't use anything like struct xenfb_page, but
DEFINE_RING_TYPES(xen_displif, struct xendispl_req, struct
xendispl_resp) which is a better and more common way.
Output events use a shared page which only has in_cons and in_prod
and all the rest is used for incoming events. Here struct xenfb_page
could probably be used as is despite the fact that it only has a half
of a page for incoming events which is only 50 events. (consider
something like 60Hz display)

3. Amount of changes.
fbif only provides XENFB_TYPE_UPDATE and XENFB_TYPE_RESIZE
events, so it looks like it is easier to get fb support into displif
than vice versa. displif at the moment has 6 requests and 1 event,
multiple connector support, etc.

Signed-off-by: Oleksandr Grytsov <oleksandr_grytsov@epam.com>
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
2017-05-02 11:13:09 +02:00
..
9pfs.h xen: introduce the header file for the Xen 9pfs transport protocol 2017-05-02 11:11:08 +02:00
blkif.h xen/blkif: document blkif multi-queue/ring extension 2016-01-04 09:56:01 -05:00
console.h xen: Add Xen interface header files 2007-07-18 08:47:42 -07:00
displif.h xen/displif: add ABI for para-virtual display 2017-05-02 11:13:09 +02:00
fbif.h xen pvfb: Dynamic mode support (screen resizing) 2008-05-27 10:11:36 +02:00
kbdif.h xen/kbdif: add multi-touch support 2017-05-02 11:12:56 +02:00
netif.h xen-netback: re-import canonical netif header 2016-03-13 22:08:01 -04:00
pciif.h xen-pcifront: Xen PCI frontend driver. 2010-10-18 10:49:37 -04:00
protocols.h ia64/xen: Remove Xen support for ia64 2013-12-10 16:11:07 -08:00
ring.h xen: import new ring macros in ring.h 2017-05-02 11:10:59 +02:00
sndif.h xen/sndif: add sound-device ABI 2017-05-02 11:13:03 +02:00
tpmif.h drivers/tpm: add xen tpmfront interface 2013-08-09 10:57:06 -04:00
vscsiif.h xen: Add Xen pvSCSI protocol description 2014-09-23 13:36:19 +00:00
xenbus.h xenbus: Xen paravirtualised PCI hotplug support. 2010-10-18 10:49:35 -04:00
xs_wire.h xen/pv-on-hvm kexec: shutdown watches from old kernel 2012-07-19 15:52:02 -04:00