)]}'
{
  "commit": "f95d7cc7fecbc0e320e83c864ce2d99fee3d9236",
  "tree": "e0c61f64c325bb0766b8b5e1859d1178c1118c40",
  "parents": [
    "bb218042c8b4e4bbcf2ab3c8d961d78876178831"
  ],
  "author": {
    "name": "David Gibson",
    "email": "david@gibson.dropbear.id.au",
    "time": "Tue Mar 12 00:31:27 2013 +0000"
  },
  "committer": {
    "name": "Alexander Graf",
    "email": "agraf@suse.de",
    "time": "Fri Mar 22 15:28:50 2013 +0100"
  },
  "message": "mmu-hash*: Don\u0027t keep looking for PTEs after we find a match\n\nBEHAVIOUR CHANGE\n\nThe ppc hash mmu hashes each virtual address to a primary and secondary\npossible hash bucket (aka PTE group or PTEG) each with 8 PTEs.  Then we\nneed a linear search through the PTEs to find the correct one for the\nvirtual address we\u0027re translating.\n\nIt is a programming error for the guest to insert multiple PTEs mapping the\nsame virtual address into a PTEG - in this case the ppc architecture says\nthe MMU can either act as if just one was present, or give a machine check.\nCurrently our code takes the first matching PTE in a PTEG if it finds a\nsuccessful translation.  But if a matching PTE is found, but permission\nbits don\u0027t allow the access, we keep looking through the PTEG, checking\nthat any other matching PTEs contain an identical translation.\n\nThat behaviour is perhaps not exactly wrong, but it\u0027s certainly not useful.\nThis patch changes it to always just find the first matching PTE in a PTEG.\n\nIn addition, if we get a permissions problem on the primary PTEG, we then\nsearch the secondary PTEG.  This is incorrect - a permission denying PTE\nin the primary PTEG should not be overwritten by an access granting PTE in\nthe secondary (although again, it would be a programming error for the\nguest to set up such a situation anyway).  So additionally we update the\ncode to only search the secondary PTEG if no matching PTE is found in the\nprimary at all.\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Alexander Graf \u003cagraf@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d812adbbf17939f2c90d924df02466a3c0cba7a6",
      "old_mode": 33188,
      "old_path": "target-ppc/mmu-hash32.c",
      "new_id": "3be1002e8cff9a31198e0087311e1d3ac3d1528b",
      "new_mode": 33188,
      "new_path": "target-ppc/mmu-hash32.c"
    },
    {
      "type": "modify",
      "old_id": "4fb7ecdf077e8a3de3d9fcd6ecc7fe6929716c66",
      "old_mode": 33188,
      "old_path": "target-ppc/mmu-hash64.c",
      "new_id": "8664116aab877ff4ca2d46abb101852d37749251",
      "new_mode": 33188,
      "new_path": "target-ppc/mmu-hash64.c"
    }
  ]
}
