qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: qemu-devel <qemu-devel@nongnu.org>
Cc: Kevin O'Connor <kevin@koconnor.net>, seabios@seabios.org
Subject: [Qemu-devel] RFC: Proposed vfio IGD assignment fw_cfg ABI
Date: Thu, 12 May 2016 18:04:25 -0600	[thread overview]
Message-ID: <20160512180425.2ad55ded@t450s.home> (raw)

Hey folks,

I'm planning to add a couple fw_cfg files for vfio IGD (Intel
Graphics Device) assignment, but since this does represent a QEMU-BIOS
ABI and since most of the vfio code is committed with only my own
sign-off and review, I'd like to pull this out for discussion separate
from the patches themselves.

#1: "etc/igd-opregion"

the IGD OpRegion is an area of memory which contains among other
things, the Video BIOS Table which is integral in allowing an assigned
IGD to configure and make use of the physical display outputs of the
system.  "etc/igd-opregion" is an opaque fw_cfg file which the BIOS
will use to allocate an appropriately sized reserved memory region,
copy the contents of the fw_cfg file into the allocated memory region,
and write the base address of the allocated memory region to the dword
registers at 0xFC in PCI config space on the IGD device itself.  The
BIOS will look for this fw_cfg file any time a PCI class VGA device is
found with Intel vendor ID.  Multiple IGD devices per VM, such as might
potentially be possible with Intel vGPU, is not within the scope of
this proposal.  The expected size of this fw_cfg file is on the order
of a few pages, 8KB is typical.

#2: "etc/igd-bdsm"

The BDSM is the register on IGD storing the base address of stolen
memory (Base Data of Stolen Memory).  This is simply an area of
reserved RAM which the IGD uses for both GTT and stolen video memory.
The semantics are much the same as for "etc/igd-opregion" with the
exception that the fw_cfg file is only used to request a reserved
memory allocation for this purpose and to indicate the size of the
reserved memory.  There is no content to this fw_cfg file and it should
not be read or written.  As above, the BIOS should look for this file
upon discovering a PCI class VGA device with Intel vendor ID, allocate
the necessary size and write the address to the IGD device.  The BDSM
register is a dword register located at 0x5C in PCI config space of the
IGD device.  This proposal does not intend to address the vague
possibility of multiple BDSM per VM.  The expected size of this fw_cfg
file is from 1MB to multiple hundreds of MB with user specified stolen
video memory.  8MB would be the typical maximum as QEMU currently does
not allocate stolen video memory itself.

I'd appreciate any comments on these entries and I'd be happy to
describe them further.  Perhaps we should create a docs/api/
directory with these sorts of descriptions where we define how a
given API is intended to work.  Thanks,

Alex

             reply	other threads:[~2016-05-13  0:04 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-13  0:04 Alex Williamson [this message]
2016-05-13  8:21 ` [Qemu-devel] RFC: Proposed vfio IGD assignment fw_cfg ABI Gerd Hoffmann
2016-05-16 23:03   ` Alex Williamson

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=20160512180425.2ad55ded@t450s.home \
    --to=alex.williamson@redhat.com \
    --cc=kevin@koconnor.net \
    --cc=qemu-devel@nongnu.org \
    --cc=seabios@seabios.org \
    /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;
as well as URLs for NNTP newsgroup(s).