On Mon, Nov 25, 2013 at 03:39:13PM +0100, Igor Mammedov wrote: > On Thu, 21 Nov 2013 11:37:01 +0200 > "Michael S. Tsirkin" <m...@redhat.com> wrote: > > > On Thu, Nov 21, 2013 at 03:38:44AM +0100, Igor Mammedov wrote: > > > - provides static SSDT object for memory hotplug > > > - SSDT template for memory devices and runtime generator > > > of them in SSDT table. > > > > > > Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovi...@profitbricks.com> > > > Signed-off-by: Igor Mammedov <imamm...@redhat.com> > > > --- > [...] > > > > diff --git a/hw/i386/ssdt-misc.dsl b/hw/i386/ssdt-misc.dsl > > > index a4484b8..b0c581e 100644 > > > --- a/hw/i386/ssdt-misc.dsl > > > +++ b/hw/i386/ssdt-misc.dsl > > > @@ -116,4 +116,183 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, > > > "BXPC", "BXSSDTSUSP", 0x1) > > > } > > > } > > > } > > > + > > > + External(MTFY, MethodObj) > > > + > > > + Scope(\_SB) { > > > + Device(MHPD) { > > > + Name(_HID, EISAID("PNP0C08")) > > > + > > > + ACPI_EXTRACT_NAME_WORD_CONST ssdt_mctrl_port > > > + Name(MHPP, 0xFFFF) > > > + > > > + ACPI_EXTRACT_NAME_DWORD_CONST ssdt_mctrl_nr_slots > > > + Name(MDNR, 0x12345678) > > > + > > > + /* Memory hotplug IO registers */ > > > + OperationRegion(HPMR, SystemIO, MHPP, 24) > > > + > > > + Method(_CRS, 0, Serialized) { > > > + Name(CRS, ResourceTemplate() { > > > + IO(Decode16, 0x00, 0x00, 0x01, 24, IO) > > > + }) > > > > > > Declaring name makes us serialize it. > > Can't we use a local variable? > If that works, I'll change it. > > But I have a question of my own perhaps to Paolo or Gerd, > Do we really need this _CRS, because if you look at next hunk > _STA should report not present but functioning to avoid windows BSOD. > So there is not guaranties that OSPM would care or even query it > and honor _CRS provided range. >
Yes this worries me too. Making _STA non present looks wrong. I suspect we need to look for some other way to make windows not crash that will make it respect the _CRS. Also which windows? All of them? > [...] > > > + > > > + Method(_STA, 0) { > > > + If (LEqual(MDNR, Zero)) { > > > + Return(0x0) > > > + } > > > + /* Leave bit 0 cleared to avoid Windows BSOD */ > > > + Return(0xA) > > > + } > [...]