Hacks - WOA-Project/MSM8994-8992-NT-ARM64-Drivers GitHub Wiki

Hacks done as a part of this project:

  • PEP on 8994: patched to override an inconsistent RPM MQ clock state error. Otherwise, the device reboots every hour or less.

  • PEP on 8992: extensive binary patching, starting from SocInfo.

  • TrEE: With the UEFI used on this project, NVRAM writing code was patched, to not alter the boot order and as such semi-brick the device. (it's still possible to boot them with thor2 -mode uefiflash -mmosfile even in that case, without a reflash)

  • I2C, SPI: these drivers rejected ACPI resource descriptors with a version not exactly equal to 1. All current ACPI compilers forcibly generate version 2 descriptors, and the spec requires that clients check descriptor versions on an "at least" basis. The drivers have been binary patched to correct this, enabling ACPI tables to be recompiled from source.

  • General: Qualcomm drivers included inside Windows 10 Mobile are linked dynamically with the Visual C++ runtime libraries, this isn't a supported use case by default on desktop.

GPU:

  • ACPI tables were patched in the UEFI used as a part of the project to not consider the Adreno GPU as a VGA-compatible device. This allows skipping WHQL checks.

  • Note that the GPU driver user-mode components depend on the VS2013 ARM64 redistributables.

Cellular:

  • The cellular stack used on Windows 10 Mobile was forward-ported to desktop Windows as a part of this project. msril.sys was patched to workaround SecurityManager issues.

  • PhoneSvc's running user had to be changed. To maintain this change across build updates, a service was written expressly for that purpose.

  • Cellular on non-prototype devices): RilActivationService was written and is used on devices with halt_subscription set to 1. Otherwise, the subscription doesn't activate.

EB1:

  • qcipa8994 has to be modified. For this purpose, we currently use a 8998 renamed version.

  • The Cortex-A57 cluster is disabled because of errata that make the OS crash in late stages of booting.