Re: [PATCH v6 6/8] vfio/pci: Intel graphics legacy mode assignment

Alex Williamson
2016-05-18T16:50:47Z

On Wed, 18 May 2016 16:21:58 +0200
Gerd Hoffmann <kraxel@redhat.com> wrote:

> On Di, 2016-05-17 at 14:19 -0600, Alex Williamson wrote:
> > +static int igd_gen(VFIOPCIDevice *vdev)
> > +{
> > + if ((vdev->device_id & 0xfff) == 0xa84) {
> > + return 8; /* Broxton */
> > + }
> > +
> > + switch (vdev->device_id & 0xff00) {
> > + /* Old, untested, unavailable, unknown */
> > + case 0x0000:
> > + case 0x2500:
> > + case 0x2700:
> > + case 0x2900:
> > + case 0x2a00:
> > + case 0x2e00:
> > + case 0x3500:
> > + case 0xa000:
> > + return -1;
> > + /* SandyBridge, IvyBridge, ValleyView, Haswell */
> > + case 0x0100:
> > + case 0x0400:
> > + case 0x0a00:
> > + case 0x0c00:
> > + case 0x0d00:
> > + case 0x0f00:
> > + return 6;
> > + /* BroadWell, CherryView, SkyLake, KabyLake */
> > + case 0x1600:
> > + case 0x1900:
> > + case 0x2200:
> > + case 0x5900:
> > + return 8;
> > + }
> > +
> > + return 8; /* Assume newer is compatible */
> > +}
> > +
>
> This link:
> https://github.com/01org/Igvtg-qemu/commit/ea32e6769004d6eb98d2dbd859d81bf1885c6ad2#diff-9d4d99332b83a7de33cbeed489d60448R920
>
> happened to land in my inbox these days. It provides a bunch of
> functions called is_$codename() and intel_gen_version(). Looks more
> complete to me. Maybe we should pick up them and find a place in the
> qemu source tree where both vfio and intel-vgpu (and maybe xen device
> assignment too) can share those functions?

Yeah, I used to have something more similar to that, this was an
attempt to simplify since I know I'm already dealing with an Intel VGA
device. That let's me not care that some of the device IDs I'll match
won't be IGD devices because they'll never get to this filter. For me
the is_sandbridge() and is_ivybridge() tests simplifies to that single
first case of 0x0100. All of is_haswell() is covered by the next four
lines, is_broadwell() and is_skylake() the first two in the next
section. So I think I have those sufficiently covered and I add a few
more, but it's entirely possible that there's no VT-d support on those
extras, I didn't lookup ark specs for every processor in the series.

I'm all for re-using a common function once we have more than one user,
but I think for now this is simple and does the job. Thanks,

Alex