)]}'
{
  "commit": "c7f7bd4a136e4b02dd2a66bf95aec545bd93e8db",
  "tree": "80bb37f2faf4ff6b5d33ae7bdd79e2aaf57546f4",
  "parents": [
    "a6f089e95b1e08cdea9633d50ad20aa5d44ba64d"
  ],
  "author": {
    "name": "Lior Amsalem",
    "email": "alior@marvell.com",
    "time": "Mon Nov 25 17:26:45 2013 +0100"
  },
  "committer": {
    "name": "Jason Cooper",
    "email": "jason@lakedaemon.net",
    "time": "Fri Dec 13 16:34:40 2013 +0000"
  },
  "message": "irqchip: armada-370-xp: fix MSI race condition\n\nIn the Armada 370/XP driver, when we receive an IRQ 1, we read the\nlist of doorbells that caused the interrupt from register\nARMADA_370_XP_IN_DRBEL_CAUSE_OFFS. This gives the list of MSIs that\nwere generated. However, instead of acknowledging only the MSIs that\nwere generated, we acknowledge *all* the MSIs, by writing\n~MSI_DOORBELL_MASK in the ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS register.\n\nThis creates a race condition: if a new MSI that isn\u0027t part of the\nones read into the temporary \"msimask\" variable is fired before we\nacknowledge all MSIs, then we will simply loose it.\n\nIt is important to mention that this ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS\nregister has the following behavior: \"A CPU write of 0 clears the bits\nin this field. A CPU write of 1 has no effect\". This is what allows us\nto simply write ~msimask to acknoledge the handled MSIs.\n\nNotice that the same problem is present in the IPI implementation, but\nit is fixed as a separate patch, so that this IPI fix can be pushed to\nolder stable versions as appropriate (all the way to 3.8), while the\nMSI code only appeared in 3.13.\n\nSigned-off-by: Lior Amsalem \u003calior@marvell.com\u003e\nSigned-off-by: Thomas Petazzoni \u003cthomas.petazzoni@free-electrons.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Jason Cooper \u003cjason@lakedaemon.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f5e49a2d8e5a438fef58add8935a09ba33fbec01",
      "old_mode": 33188,
      "old_path": "drivers/irqchip/irq-armada-370-xp.c",
      "new_id": "3fac063b4a78773229582fc99090e2984b7c371a",
      "new_mode": 33188,
      "new_path": "drivers/irqchip/irq-armada-370-xp.c"
    }
  ]
}
