)]}'
{
  "commit": "8e46bbf362458fc3e4638a53249248a1ee40b912",
  "tree": "ea67711e41b7b1496f47063776aef92efa2af53b",
  "parents": [
    "ddfa83ea06680e83643978f6ecf740b60f86f7c2"
  ],
  "author": {
    "name": "Igor Mammedov",
    "email": "imammedo@redhat.com",
    "time": "Thu Feb 06 11:24:33 2014 +0100"
  },
  "committer": {
    "name": "Michael S. Tsirkin",
    "email": "mst@redhat.com",
    "time": "Sun Mar 09 21:09:37 2014 +0200"
  },
  "message": "memory_region_present: return false if address is not found in child MemoryRegion\n\nWindows XP shows COM2 port as non functional in\n\"Device Manager\" although no COM2 port backing device\nis present in QEMU.\n\nThis regression is really due to\n3bb28b7208b349e7a1b326e3c6ef9efac1d462bf?\n    memory: Provide separate handling of unassigned io ports accesses\n\nThat is caused by the fact that QEMU reports to\nOSPM that device is present by setting 5th bit in\nPII4XPM.pci_conf[0x67] register when COM2 doesn\u0027t\nexist.\n\nIt happens due to memory_region_present(io_as, 0x2f8)\nreturning false positive since 0x2f8 address eventually\ntranslates into catchall io_as address space.\n\nFix memory_region_present(parent, addr) by returning\ntrue only if addr maps into a MemoryRegion within\nparent (excluding parent itself), to match its\ndoc comment.\n\nWhile at it fix copy/paste error in\nmemory_region_present() doc comment.\n\nNote: this is a temporary hack: we really need better handling for\nunassigned regions, we should avoid fallback regions since they are bad\nfor performance (breaking radix tree assumption that the data structure\nis sparsely populated); for memory we need to fix this to implement PCI\nmaster abort properly, anyway.\n\nCc: Jan Kiszka \u003cjan.kiszka@siemens.com\u003e\nSigned-off-by: Igor Mammedov \u003cimammedo@redhat.com\u003e\nReviewed-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9101fc3a55a4e87d6bf6e7edc80004295f064e0b",
      "old_mode": 33188,
      "old_path": "include/exec/memory.h",
      "new_id": "c084db2d9d3eba42f82f14aafd55f582a14de5dd",
      "new_mode": 33188,
      "new_path": "include/exec/memory.h"
    },
    {
      "type": "modify",
      "old_id": "59ecc284016bd75f5696609b39ba8771ae6ea13d",
      "old_mode": 33188,
      "old_path": "memory.c",
      "new_id": "3f1df238e200308972badb012503ee5ae034387a",
      "new_mode": 33188,
      "new_path": "memory.c"
    }
  ]
}
