On Mon, 7 Mar 2016 21:14:37 +0200 Marcel Apfelbaum <mar...@redhat.com> wrote:
> Legacy Windows operating systems like Windows XP and Windows 2003 > require _DIS method to be present for all interrupt links. > > PC machines already have a no-op implemented for GSI links, add > it also in Q35. > > Signed-off-by: Marcel Apfelbaum <mar...@redhat.com> Reviewed-by: Igor Mammedov <imamm...@redhat.com> > --- > > Hi, > > I tested this patch with WinXP and Win 2003, but also with Win 10, and Fedora. > This solves a BSOD early in the setup process. > > WinXP/2003 can be tested using: > -device piix3-ide,id=legacyide \ > -drive file=winxp-q35.qcow2,if=none,id=disk -device > ide-hd,drive=disk,bus=legacyide.0 \ > -drive file=xp_sp3.iso,if=none,id=cdrom -device > ide-cd,drive=cdrom,bus=legacyide.1 > > Please note that you have to use the piix3-ide because Win2003 (and probably > XP) > does not have Q35 AHCI drivers inbox. > > v1 -> v2: > - Added comment for the no-op _DIS (Michael S. Tsirkin) > > Thanks, > Marcel > > hw/i386/acpi-build.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c > index 52c9470..adbf354 100644 > --- a/hw/i386/acpi-build.c > +++ b/hw/i386/acpi-build.c > @@ -1509,6 +1509,12 @@ static Aml *build_gsi_link_dev(const char *name, > uint8_t uid, uint8_t gsi) > > aml_append(dev, aml_name_decl("_CRS", crs)); > > + /* > + * _DIS can be no-op because the interrupt cannot be disabled. > + */ > + method = aml_method("_DIS", 0, AML_NOTSERIALIZED); > + aml_append(dev, method); > + > method = aml_method("_SRS", 1, AML_NOTSERIALIZED); > aml_append(dev, method); >