)]}'
{
  "commit": "7a3136666bc0f0419f7aaa7b1fabb4b0e0a7fb76",
  "tree": "9d9e9f1de8ab1306b8b9d26aadb4a7f401323e69",
  "parents": [
    "b49c78d4827be8d7e67e5b94adac6b30a4a9ad14"
  ],
  "author": {
    "name": "Kees Cook",
    "email": "kees.cook@canonical.com",
    "time": "Wed Jul 06 18:10:34 2011 -0700"
  },
  "committer": {
    "name": "H. Peter Anvin",
    "email": "hpa@zytor.com",
    "time": "Wed Jul 06 20:09:34 2011 -0700"
  },
  "message": "x86, suspend: Restore MISC_ENABLE MSR in realmode wakeup\n\nSome BIOSes will reset the Intel MISC_ENABLE MSR (specifically the\nXD_DISABLE bit) when resuming from S3, which can interact poorly with\nebba638ae723d8a8fc2f7abce5ec18b688b791d7. In 32bit PAE mode, this can\nlead to a fault when EFER is restored by the kernel wakeup routines,\ndue to it setting the NX bit for a CPU that (thanks to the BIOS reset)\nnow incorrectly thinks it lacks the NX feature. (64bit is not affected\nbecause it uses a common CPU bring-up that specifically handles the\nXD_DISABLE bit.)\n\nThe need for MISC_ENABLE being restored so early is specific to the S3\nresume path. Normally, MISC_ENABLE is saved in save_processor_state(),\nbut this happens after the resume header is created, so just reproduce\nthe logic here. (acpi_suspend_lowlevel() creates the header, calls\ndo_suspend_lowlevel, which calls save_processor_state(), so the saved\nprocessor context isn\u0027t available during resume header creation.)\n\n[ hpa: Consider for stable if OK in mainline ]\n\nSigned-off-by: Kees Cook \u003ckees.cook@canonical.com\u003e\nLink: http://lkml.kernel.org/r/20110707011034.GA8523@outflux.net\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: \u003cstable@kernel.org\u003e 2.6.38+\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ead21b6631175df124210113025f49f994186a98",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/acpi/realmode/wakeup.S",
      "new_id": "b4fd836e405377363754eb5ac412c2c6a6e57147",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/acpi/realmode/wakeup.S"
    },
    {
      "type": "modify",
      "old_id": "e1828c07e79cdb2f47a9ecfa3661621229ead8f9",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/acpi/realmode/wakeup.h",
      "new_id": "97a29e1430e3c245a314661af02fbed5ca7565af",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/acpi/realmode/wakeup.h"
    },
    {
      "type": "modify",
      "old_id": "18a857ba7a25a920a1ad83f3acd477d587b28477",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/acpi/sleep.c",
      "new_id": "103b6ab368d39315bc752e02a7bdc5b83ede0acf",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/acpi/sleep.c"
    }
  ]
}
