)]}'
{
  "commit": "3c23402d4032f69af44a87fdb8019ad3229a4f31",
  "tree": "6a35b1c3a33e51c67ba3179433a3ac1e02828a82",
  "parents": [
    "4884b7bfe962e659c0e20c1d0de6f307d58f09be"
  ],
  "author": {
    "name": "Laszlo Ersek",
    "email": "lersek@redhat.com",
    "time": "Tue Oct 20 20:14:00 2015 +0200"
  },
  "committer": {
    "name": "Michael S. Tsirkin",
    "email": "mst@redhat.com",
    "time": "Thu Oct 22 14:39:09 2015 +0300"
  },
  "message": "hw/isa/lpc_ich9: inject the SMI on the VCPU that is writing to APM_CNT\n\nCommit 4d00636e97b7 (\"ich9: Add the lpc chip\", Nov 14 2012) added the\nich9_apm_ctrl_changed() ioport write callback function such that it would\ninject the SMI, in response to a write to the APM_CNT register, on the\nfirst CPU, invariably.\n\nSince this register is used by guest code to trigger an SMI synchronously,\nthe interrupt should be injected on the VCPU that is performing the write.\n\napm_ioport_writeb() is the .write callback of the \"apm_ops\"\nMemoryRegionOps [hw/isa/apm.c]; it is parametrized to call\nich9_apm_ctrl_changed() by ich9_lpc_init() [hw/isa/lpc_ich9.c], via\napm_init(). Therefore this change affects no other board.\n\nich9_generate_smi() is an unrelated function that is called by the TCO\nwatchdog; a watchdog is likely in its right to (asynchronously) inject\ninterrupts on the first CPU only.\n\nThis patch allows the combined edk2/OVMF SMM driver stack to work with\nmultiple VCPUs on TCG, using both qemu-system-i386 and qemu-system-x86_64.\n\nCc: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nCc: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Jordan Justen \u003cjordan.l.justen@intel.com\u003e\nCc: Michael Kinney \u003cmichael.d.kinney@intel.com\u003e\nCc: \"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\nSigned-off-by: Laszlo Ersek \u003clersek@redhat.com\u003e\nReviewed-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nReviewed-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "360699f6fdd3187efc5d652ee9140cdef6837fd7",
      "old_mode": 33188,
      "old_path": "hw/isa/lpc_ich9.c",
      "new_id": "1ffc80362b3c099de2fd2563614709f66c760c09",
      "new_mode": 33188,
      "new_path": "hw/isa/lpc_ich9.c"
    }
  ]
}
