On Wed, 3 Jan 2018 11:48:30 +0800 gengdongjiu <gengdongjiu@xxxxxxxxxx> wrote: > On 2017/12/28 22:53, Igor Mammedov wrote: > > On Thu, 28 Dec 2017 13:54:16 +0800 > > Dongjiu Geng <gengdongjiu@xxxxxxxxxx> wrote: [...] > >> +static void acpi_dsdt_add_error_device(Aml *scope) > >> +{ > >> + Aml *dev = aml_device(ACPI_HARDWARE_ERROR_DEVICE); > >> + Aml *method; > >> + > >> + aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0C33"))); > >> + aml_append(dev, aml_name_decl("_UID", aml_int(0))); > >> + > >> + method = aml_method("_STA", 0, AML_NOTSERIALIZED); > >> + aml_append(method, aml_return(aml_int(0x0f))); > > no need for dummy _STA method, device is assumed to be present if there is no _STA > Igor, > do you mean remove above two line code as shown in [1]? > I dump the DSDT table in my host Ubuntu PC for the error device (PNP0C33), it has the _STA, as shown in [2]. > do we not want to add the _STA for guest? > > [1] > + method = aml_method("_STA", 0, AML_NOTSERIALIZED); > + aml_append(method, aml_return(aml_int(0x0f))); compared to host, yours method does nothing, read ACPI6.2 "6.3.7 _STA (Status)" one more time > [2]: > Device (WERR) > { > Name (_HID, EisaId ("PNP0C33")) // _HID: Hardware ID > Method (_STA, 0, NotSerialized) // _STA: Status > { > If (LGreaterEqual (OSYS, 0x07D9)) > { > Return (0x0F) > } > Else > { > Return (Zero) > } > } > } > > > >> + aml_append(dev, method); > >> + aml_append(scope, dev); > >> +} > >> + [...]