On Tue, 2025-04-29 at 00:09 +0800, Tomita Moeko wrote:
> CAUTION: External Email!!
> Intel only provides legacy VBIOS for IGD up to Gen9, and there is no
> CSM support on later devices. Additionally, Seabios can only handle
> 32-bit BDSM register used until Gen9. Since legacy mode requires VGA
> capability, restrict it to Gen6 through Gen9 devices.
> 
> Link:
> https://nospamproxywebp.beckhoff.com/enQsig/link?id=BAgAAADAsHNi0zEFiakAAACORk589NFmMEL0IRdt7DRVpnoi_6WKuXqQANgyXom23JAMNMr3UlEVSZvZdOtespZyqyGqsgLV2z0x8MkoDwNY9VFWuoC1hAOa_kpJihDYFTkqJw9sxp1uw6X9Oml3OGmOnrY8bVlHo2n7h5uiu73mh7RdgB0cFnBy59ExBLmCowsh6nXK5LA_Udnf-WbH0pzMWtCwjhPF453hx1Rm93_KYzUhuyswu_sg0
>  
> Signed-off-by: Tomita Moeko <tomitamo...@gmail.com>
> ---
>  docs/igd-assign.txt | 1 +
>  hw/vfio/igd.c       | 6 +++++-
>  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/docs/igd-assign.txt b/docs/igd-assign.txt
> index 3aed7956d5..95beb76812 100644
> --- a/docs/igd-assign.txt
> +++ b/docs/igd-assign.txt
> @@ -47,6 +47,7 @@ Intel document [1] shows how to dump VBIOS to file. For UEFI
> Option ROM, see
>  
>  QEMU also provides a "Legacy" mode that implicitly enables full functionality
>  on IGD, it is automatically enabled when
> +* IGD generation is 6 to 9 (Sandy Bridge to Comet Lake)
>  * Machine type is i440fx
>  * IGD is assigned to guest BDF 00:02.0
>  * ROM BAR or romfile is present
> diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c
> index 6678e0e5cd..cecc3245b7 100644
> --- a/hw/vfio/igd.c
> +++ b/hw/vfio/igd.c
> @@ -516,11 +516,13 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice
> *vdev, Error **errp)
>  
>      /*
>       * For backward compatibility, enable legacy mode when
> +     * - Device geneation is 6 to 9 (including both)
>       * - Machine type is i440fx (pc_piix)
>       * - IGD device is at guest BDF 00:02.0
>       * - Not manually disabled by x-igd-legacy-mode=off
>       */
>      if ((vdev->igd_legacy_mode != ON_OFF_AUTO_OFF) &&
> +        (gen >= 6 && gen <= 9) &&
>          !strcmp(MACHINE_GET_CLASS(qdev_get_machine())->family, "pc_piix") &&
>          (&vdev->pdev == pci_find_device(pci_device_root_bus(&vdev->pdev),
>          0, PCI_DEVFN(0x2, 0)))) {
> @@ -565,7 +567,9 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vdev,
> Error **errp)
>          vdev->features |= VFIO_FEATURE_ENABLE_IGD_LPC;
>      } else if (vdev->igd_legacy_mode == ON_OFF_AUTO_ON) {
>          error_setg(&err,
> -                   "Machine is not i440fx or assigned BDF is not 00:02.0");
> +                   "Machine is not i440fx, assigned BDF is not 00:02.0, "
> +                   "or device %04x (gen %d) doesn't support legacy mode",
> +                   vdev->device_id, gen);
>          goto error;
>      }
>  

Afaik, at least the LPC quirk is required for Gen 10 and above for the GOP to
work properly. On the other hand, Intel hasn't published any GOP yet, so it
might be unlikely that user use it. So, not sure if this is a breaking change or
not.

Besides that:

Reviewed-by: Corvin Köhne <c.koe...@beckhoff.com>


-- 
Kind regards,
Corvin

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to