Jump to content
3 posts in this topic

Recommended Posts

Cuando genero el archivo dsdst.aml en el hardware de la firma suelo obtener este aviso (warning):

 

./dsdt_fixed.txt 222: Method (\_WAK, 1, NotSerialized)
Warning 1080 - ^ Reserved method must return a value (_WAK)

ASL Input: ./dsdt_fixed.txt - 5553 lines, 185901 bytes, 2321 keywords
AML Output: ././dsdt.aml - 17902 bytes, 658 named objects, 1663 executable opcodes

Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 638 Optimizations

El motivo radica efectivamente en el método _WAK que aparece así (para verlo hay que descompilar el archivo dsdt.aml con la herramienta iasl y la opción -d obteniendo un archivo dsdt.dsl que es de tipo texto):

 

Method (_WAK, 1, NotSerialized)
{
Store (0xFF, DBG1)
If (LEqual (Arg0, 0x03))
{
Store (0x8F, SCP)
}

If (LEqual (Arg0, 0x04))
{
If (LEqual (OSFL, Zero))
{
If (LEqual (OSFX, 0x03))
{
Store (0x59, SMIP)
}
Else
{
Store (0x58, SMIP)
}
}

If (LEqual (OSFL, One))
{
Store (0x56, SMIP)
}

If (LEqual (OSFL, 0x02))
{
Store (0x57, SMIP)
}

If (LEqual (OSFX, 0x03))
{
Store (0x59, SMIP)
}
}

If (LEqual (Arg0, One)) {}
If (OSFL)
{
Notify (\_SB.PWRB, 0x02)
}
Else
{
If (LEqual (RTCW, Zero))
{
Notify (\_SB.PWRB, 0x02)
}
}

Notify (\_SB.PCI0.USB0, Zero)
Notify (\_SB.PCI0.USB1, Zero)
Notify (\_SB.PCI0.USB2, Zero)
Notify (\_SB.PCI0.USB3, Zero)
Notify (\_SB.PCI0.USB4, Zero)
Notify (\_SB.PCI0.USB5, Zero)
}

Si añado al final del método (antes del último paréntesis de cierre) este texto:

 

Return (Package (0x02)
{
Zero, 
Zero
})

dejando el método _WAK completo así:

 

Method (_WAK, 1, NotSerialized)
{
Store (0xFF, DBG1)
If (LEqual (Arg0, 0x03))
{
Store (0x8F, SCP)
}

If (LEqual (Arg0, 0x04))
{
If (LEqual (OSFL, Zero))
{
If (LEqual (OSFX, 0x03))
{
Store (0x59, SMIP)
}
Else
{
Store (0x58, SMIP)
}
}

If (LEqual (OSFL, One))
{
Store (0x56, SMIP)
}

If (LEqual (OSFL, 0x02))
{
Store (0x57, SMIP)
}

If (LEqual (OSFX, 0x03))
{
Store (0x59, SMIP)
}
}

If (LEqual (Arg0, One)) {}
If (OSFL)
{
Notify (\_SB.PWRB, 0x02)
}
Else
{
If (LEqual (RTCW, Zero))
{
Notify (\_SB.PWRB, 0x02)
}
}

Notify (\_SB.PCI0.USB0, Zero)
Notify (\_SB.PCI0.USB1, Zero)
Notify (\_SB.PCI0.USB2, Zero)
Notify (\_SB.PCI0.USB3, Zero)
Notify (\_SB.PCI0.USB4, Zero)
Notify (\_SB.PCI0.USB5, Zero)
Return (Package (0x02)
{
Zero, 
Zero
})
}

al compilar de nuevo el archivo dsdt.dsl con la herramienta iasl sin opciones se obtiene un archivo dsdt.aml sin avisos del compilador:

 

iasl dsdt.dsl

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20080926 [Oct 4 2008]
Copyright (C) 2000 - 2008 Intel Corporation
Supports ACPI Specification Revision 3.0a

ASL Input: dsdt.dsl - 5561 lines, 185038 bytes, 2322 keywords
AML Output: dsdt.aml - 17908 bytes, 658 named objects, 1664 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 31 Optimizations

Esto es una parte de lo aprendido con las guías DSDT de Roisoft y Pere (gracias) y otros textos sobre DSDT.

 

NOTAS: en mi hardware hay que tener en cuenta 2 cosas que parecen lograr que el parcheo DSDT funcione mejor:

 

1. al crear el dsdt.aml con el parcheador de Fassl hay que emplear el modificador newHPET:

sudo ./DSDTPatcher -newHPET

 

2. da mejor resultado elegir la opción 2 (Vista) cuando pregunta qué tipo de OSI elegir.

Salu2 !

 

Tb es válido añadir Return (Zero) como en un Mac Pro, por ejemplo :

 

 Method (_WAK, 1, Serialized)
{
	Store (Zero, P80D)
	P8XH (Zero, Arg0)
	Store (Zero, \_SB.PCI0.LPCB.EC.ECSS)
	If (OSDW ())
	{
		\_SB.PCI0.SBUS.ENAB ()
		\_SB.DBEN ()
	}

	Notify (\_SB.PCI0.UHC1, Zero)
	Notify (\_SB.PCI0.UHC2, Zero)
	Notify (\_SB.PCI0.UHC3, Zero)
	Notify (\_SB.PCI0.UHC4, Zero)
	Notify (\_SB.PCI0.EHCI, Zero)
	Return (Zero)
}

Guest
This topic is now closed to further replies.
×
×
  • Create New...