Error 4117 al compilar DSDT en macOS

Error 4117 – Length is larger than Min/Max window ^

En ocasiones, al compilar nuestro DSDT con la herramienta de línea de comandos iasl obtenemos este error 4117 que se presenta así:

589: 0xFFF00000, // Length
  Error 4117 - Length is larger than Min/Max window ^ 

Si vamos a la límea 589 en la que según iasl está el error vemos:

DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
  0x00000000, // Granularity
  0x00100000, // Range Minimum
  0xFEBFFFFF, // Range Maximum
  0x00000000, // Translation Offset
  0xFFF00000, // Length

Lo que nos está diciendo este error es que el valor de Length no es correcto porque está fuera de los límites que marcan Range Minimum y Range Maximum.

El gurú mitch_de ha propuesto una solución que parece funcionar bien corrigendo el valor de Length de acuerdo a la fórmula

Range Maximum – Range Minimum + 1 = Lenght

Estos cálculos se pueden hacer con la calculadora incorporada en Snow Leopard, pasando al modo «De programación» (Visualización > De programación o Cmd + 3) en lenguaje hexadecimal.

Si convertimos de hexadecimal a decimal, en el ejemplo de arriba los valores son:

  • Length = 4.293.918.720
  • Range minimum = 1.048.576
  • Range maximum = 4.273.995.775

Usando la fórmula propuesta por mitch_de se obtiene un valor
Length = 0xFEB00000 (en decimal 4.272.947.200)
que ahora sí está dentro del rango. Modificamos DSDT.dsl de esta forma:

DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
  0x00000000, // Granularity
  0x00100000, // Range Minimum
  0xFEBFFFFF, // Range Maximum
  0x00000000, // Translation Offset
  0xFEB00000, // Length NUEVO VALOR

La nueva compilación con iasl produce un DSDT.aml sin errores.

Fuente: Insanely Mac.