)]}'
{
  "log": [
    {
      "commit": "d692170037c0338b31dac5ac4722c1360a4b5257",
      "tree": "0de83610a209aaefdb908292e79b875c0d865d6d",
      "parents": [
        "8c4c419ca3bd5a5b3389114e037a9d17bdec3a5f"
      ],
      "author": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@intel.com",
        "time": "Sun Dec 16 13:23:17 2012 +0200"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:25:11 2012 +0100"
      },
      "message": "watchdog: mei: avoid oops in watchdog unregister code path\n\nWith commit c7d3df3 \"mei: use internal watchdog device registration\ntracking\" will crash the kernel on shutdown path on systems\nwhere ME watchdog is not present.\nSince the watchdog was never initialized in such case\nthe WDOG_UNREGISTERED bit is never set and the system\ncrashes on access to uninitialized variables down the path.\n\nTo solve the issue we query for NULL on watchdog driver driver_data\nto check whether the device is registered. This is handled in the\ndriver and doesn\u0027t depend on watchdog core internals.\n\nCc: Borislav Petkov \u003cbp@alien8.de\u003e\nCc: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nSigned-off-by: Jerry Snitselaar \u003cjerry.snitselaar@oracle.com\u003e\nSigned-off-by: Tomas Winkler \u003ctomas.winkler@intel.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "8c4c419ca3bd5a5b3389114e037a9d17bdec3a5f",
      "tree": "0b8062a9fcf40a0304ccbf3083e7ecab1db07387",
      "parents": [
        "740fbddf5c3f9ad8b23c5d917ba1cc7e376a5104"
      ],
      "author": {
        "name": "Jason Gunthorpe",
        "email": "jgunthorpe@obsidianresearch.com",
        "time": "Fri Dec 07 15:44:46 2012 -0700"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:25:10 2012 +0100"
      },
      "message": "watchdog: Orion: Fix possible null-deference in orion_wdt_probe\n\nIf the DT does not include a regs parameter then the null res\nwould be dereferenced.\n\nSigned-off-by: Jason Gunthorpe \u003cjgunthorpe@obsidianresearch.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "740fbddf5c3f9ad8b23c5d917ba1cc7e376a5104",
      "tree": "5257b9a01867322f80bfa019ff71b093255bfa8b",
      "parents": [
        "902e2e7d482c55395652ff78cb3457fc390b101d"
      ],
      "author": {
        "name": "Takahisa Tanaka",
        "email": "mc74hc00@gmail.com",
        "time": "Sun Dec 02 14:33:18 2012 +0900"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:25:09 2012 +0100"
      },
      "message": "watchdog: sp5100_tco: Add SB8x0 chipset support\n\nThe current sp5100_tco driver only supports SP5100/SB7x0 chipset, doesn\u0027t\nsupport SB8x0 chipset, because current sp5100_tco driver doesn\u0027t know that the\noffset address for watchdog timer was changed from SB8x0 chipset.\n\nThe offset address of SP5100 and SB7x0 chipsets are as follows, quote from the\nAMD SB700/710/750 Register Reference Guide (Page 164) and the AMD SP5100\nRegister Reference Guide (Page 166).\n\n  WatchDogTimerControl 69h\n  WatchDogTimerBase0   6Ch\n  WatchDogTimerBase1   6Dh\n  WatchDogTimerBase2   6Eh\n  WatchDogTimerBase3   6Fh\n\nIn contrast, the offset address of SB8x0 chipset is as follows, quote from\nAMD SB800-Series Southbridges Register Reference Guide (Page 147).\n\n  WatchDogTimerEn      48h\n  WatchDogTimerConfig  4Ch\n\nSo, In the case of SB8x0 chipset, sp5100_tco reads meaningless MMIO\naddress (for example, 0xbafe00) from wrong offset address, and the following\nmessage is logged.\n\n   SP5100 TCO timer: mmio address 0xbafe00 already in use\n\nWith this patch, sp5100_tco driver supports SB8x0 chipset, and can avoid\niomem resource conflict. The processing of this patch is as follows.\n\n Step 1) Attempt to get the watchdog base address from indirect I/O (0xCD6\n         and 0xCD7).\n  - Go to the step 7 if obtained address hasn\u0027t conflicted with other\n    resource. But, currently, the address (0xfec000f0) conflicts with the\n    IOAPIC MMIO address, and the following message is logged.\n\n       SP5100 TCO timer: mmio address 0xfec000f0 already in use\n\n    0xfec000f0 is recommended by AMD BIOS Developer\u0027s Guide. So, go to the\n    next step.\n\n Step 2) Attempt to get the SBResource_MMIO base address from AcpiMmioEN (for\n         SB8x0,  PM_Reg:24h) or SBResource_MMIO (SP5100/SB7x0, PCI_Reg:9Ch)\n         register.\n  - Go to the step 7 if these register has enabled by BIOS, and obtained\n    address hasn\u0027t conflicted with other resource.\n  - If above condition isn\u0027t true, go to the next step.\n\n Step 3) Attempt to get the free MMIO address from allocate_resource().\n  - Go to the step 7 if these register has enabled by BIOS, and obtained\n    address hasn\u0027t conflicted with other resource.\n  - Driver initialization has failed if obtained address has conflicted\n    with other resource, and no \u0027force_addr\u0027 parameter is specified.\n\n Step 4) Use the specified address If \u0027force_addr\u0027 parameter is specified.\n  - allocate_resource() function may fail, when the PCI bridge device occupies\n    iomem resource from 0xf0000000 to 0xffffffff. To handle such a case,\n    I added \u0027force_addr\u0027 parameter to sp5100_tco driver. With \u0027force_addr\u0027\n    parameter, sp5100_tco driver directly can assign MMIO address for watchdog\n    timer from free iomem region. Note that It\u0027s dangerous to specify wrong\n    address in the \u0027force_addr\u0027 parameter.\n\n      Example of force_addr parameter use\n        # cat /proc/iomem\n        ...snip...\n        fec00000-fec003ff : IOAPIC 0\n                                      \u003c--- free MMIO region\n        fec10000-fec1001f : pnp 00:0b\n        fec20000-fec203ff : IOAPIC 1\n        ...snip...\n        # cat /etc/modprobe.d/sp5100_tco.conf\n        options sp5100_tco force_addr\u003d0xfec00800\n        # modprobe sp5100_tco\n        # cat /proc/iomem\n        ...snip...\n        fec00000-fec003ff : IOAPIC 0\n        fec00800-fec00807 : SP5100 TCO  \u003c--- watchdog timer MMIO address\n        fec10000-fec1001f : pnp 00:0b\n        fec20000-fec203ff : IOAPIC 1\n        ...snip...\n        #\n\n  - Driver initialization has failed if specified address has conflicted\n    with other resource.\n\n Step 5) Disable the watchdog timer\n  - To rewrite the watchdog timer register of the chipset, absolutely\n    guarantee that the watchdog timer is disabled.\n\n Step 6) Re-program the watchdog timer MMIO address to chipset.\n  - Re-program the obtained MMIO address in Step 3 or Step 4 to chipset via\n    indirect I/O (0xCD6 and 0xCD7).\n\n Step 7) Enable and setup the watchdog timer\n\nThis patch has worked fine on my test environment (ASUS M4A89GTD-PRO/USB3 and\nDL165G7). therefore I believe that it\u0027s no problem to re-program the MMIO\naddress for watchdog timer to chipset during disabled watchdog. However,\nI\u0027m not sure about it, because I don\u0027t know much about chipset programming.\n\nSo, any comments will be welcome.\n\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d43176\nTested-by: Arkadiusz Miskiewicz \u003carekm@maven.pl\u003e\nTested-by: Paul Menzel \u003cpaulepanter@users.sourceforge.net\u003e\nSigned-off-by: Takahisa Tanaka \u003cmc74hc00@gmail.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "902e2e7d482c55395652ff78cb3457fc390b101d",
      "tree": "75b1540807e49526821eb058ad642338754b0c47",
      "parents": [
        "0360dffedd7bad92f174b2ce5e69e960451d2b59"
      ],
      "author": {
        "name": "Murali Karicheri",
        "email": "m-karicheri2@ti.com",
        "time": "Mon Nov 26 16:41:35 2012 -0500"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:25:08 2012 +0100"
      },
      "message": "watchdog: davinci_wdt: add OF support\n\nThis adds OF support for davinci_wdt driver.\n\nSigned-off-by: Murali Karicheri \u003cm-karicheri2@ti.com\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "0360dffedd7bad92f174b2ce5e69e960451d2b59",
      "tree": "413b8a3c5d96867ed288b7040bca5e8f600fd3bb",
      "parents": [
        "2bc3f62f9627f136bb52b4cfa43060ef04656d2f"
      ],
      "author": {
        "name": "Tushar Behera",
        "email": "tushar.behera@linaro.org",
        "time": "Thu Nov 22 10:13:04 2012 +0530"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:25:07 2012 +0100"
      },
      "message": "watchdog: da9052: Fix invalid free of devm_ allocated data\n\nIt is not required to free devm_ allocated data. Since kref_put\nneeds a valid release function, da9052_wdt_release_resources()\nis not deleted.\n\nFixes following warning.\ndrivers/watchdog/da9052_wdt.c:59:1-6: WARNING: invalid free of\ndevm_ allocated data\n\nSigned-off-by: Tushar Behera \u003ctushar.behera@linaro.org\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "2bc3f62f9627f136bb52b4cfa43060ef04656d2f",
      "tree": "8b60872c58e0d1be8e6d84ee03a67a8365f2895d",
      "parents": [
        "e1926349c2e7051d44dc8a772cd819377b815c0c"
      ],
      "author": {
        "name": "Peter Ujfalusi",
        "email": "peter.ujfalusi@ti.com",
        "time": "Tue Nov 13 10:40:22 2012 +0100"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:25:07 2012 +0100"
      },
      "message": "watchdog: twl4030_wdt: Change TWL4030_MODULE_PM_RECEIVER to TWL_MODULE_PM_RECEIVER\n\nTo facilitate upcoming cleanup in twl stack.\nNo functional changes.\n\nSigned-off-by: Peter Ujfalusi \u003cpeter.ujfalusi@ti.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "e1926349c2e7051d44dc8a772cd819377b815c0c",
      "tree": "9a4c46f8889e54a29c214ecab8b4a58f4c349c3f",
      "parents": [
        "77e0dfcc0949303bbae75cac5c598c59e67b54c9"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Mon Nov 05 15:04:42 2012 -0800"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:25:06 2012 +0100"
      },
      "message": "watchdog: remove depends on CONFIG_EXPERIMENTAL\n\nThe CONFIG_EXPERIMENTAL config item has not carried much meaning for a\nwhile now and is almost always enabled by default. As agreed during the\nLinux kernel summit, remove it from any \"depends on\" lines in Kconfigs.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "77e0dfcc0949303bbae75cac5c598c59e67b54c9",
      "tree": "6a9d049ffe9ad38327ce307ddcfba35f41732c8a",
      "parents": [
        "312b00e1c31011dd009f51a52e14a500f61f1f31"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Oct 28 01:05:53 2012 -0700"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:25:06 2012 +0100"
      },
      "message": "watchdog: Convert dev_printk(KERN_\u003cLEVEL\u003e to dev_\u003clevel\u003e(\n\ndev_\u003clevel\u003e calls take less code than dev_printk(KERN_\u003cLEVEL\u003e\nand reducing object size is good.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "312b00e1c31011dd009f51a52e14a500f61f1f31",
      "tree": "2bc209287397eeb6da979f50ded6e9bbe4a754e7",
      "parents": [
        "1ba85387f0224dca9f0f9d783b09c9ceeb1c91bd"
      ],
      "author": {
        "name": "Ashish Jangam",
        "email": "ashish.jangam@kpitcummins.com",
        "time": "Fri Oct 12 15:00:03 2012 +0530"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:58 2012 +0100"
      },
      "message": "watchdog: DA9055 Watchdog driver\n\nThis is the Watchdog patch for the DA9055 PMIC. This patch has got dependency on\nthe DA9055 MFD core.\n\nThis patch is functionally tested on SMDK6410\n\nSigned-off-by: David Dajun Chen \u003cdchen@diasemi.com\u003e\nSigned-off-by: Ashish Jangam \u003cashish.jangam@kpitcummins.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "1ba85387f0224dca9f0f9d783b09c9ceeb1c91bd",
      "tree": "0d2d614307e0ab7499debee04699d8a9e60377b8",
      "parents": [
        "ef4817472982b3b6d993e6456cfad58dc848ef70"
      ],
      "author": {
        "name": "Aaro Koskinen",
        "email": "aaro.koskinen@iki.fi",
        "time": "Wed Oct 10 23:23:37 2012 +0300"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:57 2012 +0100"
      },
      "message": "watchdog: omap_wdt: eliminate goto\n\nEliminate a goto to simplify the code.\n\nSigned-off-by: Aaro Koskinen \u003caaro.koskinen@iki.fi\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "ef4817472982b3b6d993e6456cfad58dc848ef70",
      "tree": "ec1026a11c8e7d22c525c2b00bebc1cb942bbbd7",
      "parents": [
        "4f4753d96d30cf4477eafa077ae7f1326a80c1d8"
      ],
      "author": {
        "name": "Aaro Koskinen",
        "email": "aaro.koskinen@iki.fi",
        "time": "Wed Oct 10 23:23:36 2012 +0300"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:57 2012 +0100"
      },
      "message": "watchdog: omap_wdt: delete redundant platform_set_drvdata() calls\n\nIt\u0027s not needed to manually reset the driver data.\n\nSigned-off-by: Aaro Koskinen \u003caaro.koskinen@iki.fi\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "4f4753d96d30cf4477eafa077ae7f1326a80c1d8",
      "tree": "23ee018d90941a9ec6ff996d79d3aa216bf90fb0",
      "parents": [
        "67c0f55468443ef8a1edc6ee92f9a92e4915be24"
      ],
      "author": {
        "name": "Aaro Koskinen",
        "email": "aaro.koskinen@iki.fi",
        "time": "Wed Oct 10 23:23:33 2012 +0300"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:56 2012 +0100"
      },
      "message": "watchdog: omap_wdt: convert to devm_ functions\n\nUse devm_kzalloc(), devm_request_mem_region() ande devm_ioremap()\nto simplify the code.\n\nSigned-off-by: Aaro Koskinen \u003caaro.koskinen@iki.fi\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "67c0f55468443ef8a1edc6ee92f9a92e4915be24",
      "tree": "812ce326687b4ce68cd6efa07da6143e2a2b9e92",
      "parents": [
        "cf13a84d174947df4bb809edfb4887393642303e"
      ],
      "author": {
        "name": "Aaro Koskinen",
        "email": "aaro.koskinen@iki.fi",
        "time": "Wed Oct 10 23:23:32 2012 +0300"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:55 2012 +0100"
      },
      "message": "watchdog: omap_wdt: convert to new watchdog core\n\nConvert omap_wdt to new watchdog core. On OMAP boards, there are usually\nmultiple watchdogs. Since the new watchdog core supports multiple\nwatchdogs, all watchdog drivers used on OMAP should be converted.\n\nThe legacy watchdog device node is still created, so this should not\nbreak existing users.\n\nSigned-off-by: Aaro Koskinen \u003caaro.koskinen@iki.fi\u003e\nTested-by: Jarkko Nikula \u003cjarkko.nikula@jollamobile.com\u003e\nTested-by: Lokesh Vutla \u003clokeshvutla@ti.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "cf13a84d174947df4bb809edfb4887393642303e",
      "tree": "cdbe91423347d7d5ae02a01556ddae71dea26362",
      "parents": [
        "50d854c8a72b87ffa5523aa07c5013e2c6657714"
      ],
      "author": {
        "name": "Fabio Porcedda",
        "email": "fabio.porcedda@gmail.com",
        "time": "Fri Oct 05 12:16:09 2012 +0200"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:55 2012 +0100"
      },
      "message": "watchdog: WatchDog Timer Driver Core: fix comment\n\nSigned-off-by: Fabio Porcedda \u003cfabio.porcedda@gmail.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "50d854c8a72b87ffa5523aa07c5013e2c6657714",
      "tree": "77d28236b4a99dba62249d7240ec9840aa7526f8",
      "parents": [
        "2d076bb8397fea2480487e9547e34b8d4f77eb67"
      ],
      "author": {
        "name": "Thomas Abraham",
        "email": "thomas.abraham@linaro.org",
        "time": "Wed Oct 03 07:32:40 2012 +0900"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:43 2012 +0100"
      },
      "message": "watchdog: s3c2410_wdt: use clk_prepare_enable and clk_disable_unprepare\n\nConvert clk_enable/clk_disable to clk_prepare_enable/clk_disable_unprepare\ncalls as required by common clock framework.\n\nSigned-off-by: Thomas Abraham \u003cthomas.abraham@linaro.org\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "2d076bb8397fea2480487e9547e34b8d4f77eb67",
      "tree": "b14116b04c6c44498a09459ff77c3c912600af4f",
      "parents": [
        "e09d9c3e9f85b8190ca1e495890f4cf5ee30baf6"
      ],
      "author": {
        "name": "Fabio Estevam",
        "email": "fabio.estevam@freescale.com",
        "time": "Mon Jul 02 18:33:02 2012 -0300"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:42 2012 +0100"
      },
      "message": "watchdog: imx2_wdt: Select the driver via ARCH_MXC\n\nWith device tree support in place, we should not use IMX_HAVE_PLATFORM_IMX2_WDT\nas a dependency for selecting the imx2_wdt driver.\n\nUse ARCH_MXC symbol instead, so that the driver can be even selected by a device-tree\nonly SoC, such as i.MX6.\n\nSigned-off-by: Fabio Estevam \u003cfabio.estevam@freescale.com\u003e\nAcked-by: Shawn Guo \u003cshawn.guo@linaro.org\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "e09d9c3e9f85b8190ca1e495890f4cf5ee30baf6",
      "tree": "6070112df3a8aac59352f0d0f0c968b83a2e8a9a",
      "parents": [
        "e16cfb9d38541bf1591c2e0ca64a562074e25f72"
      ],
      "author": {
        "name": "devendra.aaru",
        "email": "devendra.aaru@gmail.com",
        "time": "Tue Jun 26 14:48:26 2012 +0530"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:41 2012 +0100"
      },
      "message": "watchdog: cpu5wdt.c: add missing del_timer call\n\nWe do a setup_timer at init stage of the module, but we didn\u0027t\nde-activate the time using del_timer.\n\nSigned-off-by: devendra.aaru \u003cdevendra.aaru@gmail.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "e16cfb9d38541bf1591c2e0ca64a562074e25f72",
      "tree": "a517da4accadd178b40daf28bec4222488e7d123",
      "parents": [
        "b2c4e4b2696287671723ef986f0db23cf4f52f15"
      ],
      "author": {
        "name": "Tom Mingarelli",
        "email": "thomas.mingarelli@hp.com",
        "time": "Mon Sep 24 20:34:40 2012 +0000"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:40 2012 +0100"
      },
      "message": "watchdog: hpwdt.c: Increase version string\n\nChanging the version of the driver for all the latest patches being applied\nfor kdump fixes.\n\nSigned-off-by: Thomas Mingarelli \u003cthomas.mingarelli@hp.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "b2c4e4b2696287671723ef986f0db23cf4f52f15",
      "tree": "f5c949159ada0b4ad75aebd16c05104b13975f30",
      "parents": [
        "5235f57a6f460d5620acfcf236ca29ecca993325"
      ],
      "author": {
        "name": "Jarkko Nikula",
        "email": "jarkko.nikula@jollamobile.com",
        "time": "Tue Sep 11 09:01:10 2012 +0300"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:40 2012 +0100"
      },
      "message": "watchdog: Convert twl4030_wdt to watchdog core\n\nConvert the twl4030_wdt watchdog driver to watchdog core.\n\nWhile at there use devm_kzalloc and set the default timeout in order to be\nable test this driver with a simple shell script.\n\nSigned-off-by: Jarkko Nikula \u003cjarkko.nikula@jollamobile.com\u003e\nTested-by: Aaro Koskinen \u003caaro.koskinen@iki.fi\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "5235f57a6f460d5620acfcf236ca29ecca993325",
      "tree": "85e977541382730c0affc2e00f3683608dba5f2e",
      "parents": [
        "63fbbc169674496fc2ae501d97c3905232a3bf64"
      ],
      "author": {
        "name": "Karicheri, Muralidharan",
        "email": "m-karicheri2@ti.com",
        "time": "Thu Aug 30 18:29:10 2012 +0000"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:39 2012 +0100"
      },
      "message": "davinci_wdt: preparation for switch to common clock framework\n\nAs a first step towards migrating davinci platforms to use common clock\nframework, replace all instances of clk_enable() with clk_prepare_enable()\nand clk_disable() with clk_disable_unprepare(). Until the platform is\nswitched to use the CONFIG_HAVE_CLK_PREPARE Kconfig variable, this just\nadds a might_sleep() call and would work without any issues.\n\nThis will make it easy later to switch to common clk based implementation\nof clk driver from DaVinci specific driver.\n\nSigned-off-by: Murali Karicheri \u003cm-karicheri2@ti.com\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "63fbbc169674496fc2ae501d97c3905232a3bf64",
      "tree": "ca8db9986fda8a46f4c467d4438269a15a7e6fa4",
      "parents": [
        "8157becf8db0c798e1260f3af7c495a9b88e3b57"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "Julia.Lawall@lip6.fr",
        "time": "Sun Aug 26 18:01:02 2012 +0200"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:38 2012 +0100"
      },
      "message": "watchdog: sp805_wdt.c: use clk_prepare_enable and clk_disable_unprepare\n\nClk_prepare_enable and clk_disable_unprepare combine clk_prepare and\nclk_enable, and clk_disable and clk_unprepare.  They make the code more\nconcise, and ensure that clk_unprepare is called when clk_enable fails.\n\nA simplified version of the semantic patch that introduces calls to these\nfunctions is as follows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression e;\n@@\n\n- clk_prepare(e);\n- clk_enable(e);\n+ clk_prepare_enable(e);\n\n@@\nexpression e;\n@@\n\n- clk_disable(e);\n- clk_unprepare(e);\n+ clk_disable_unprepare(e);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cJulia.Lawall@lip6.fr\u003e\nAcked-by: Viresh Kumar \u003cviresh.kumar@linaro.org\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "8157becf8db0c798e1260f3af7c495a9b88e3b57",
      "tree": "382ff887e491a7f752efed70f2a7727e99391bae",
      "parents": [
        "2f0bf92513be58d2d65c0a4cc05c5779a7cd81e1"
      ],
      "author": {
        "name": "Gabor Juhos",
        "email": "juhosg@openwrt.org",
        "time": "Tue Aug 14 15:35:19 2012 +0200"
      },
      "committer": {
        "name": "Wim Van Sebroeck",
        "email": "wim@iguana.be",
        "time": "Wed Dec 19 22:24:38 2012 +0100"
      },
      "message": "watchdog: ath79_wdt: convert to use module_platform_driver\n\nThis makes the code a bit smaller by getting rid of\nsome boilerplate code.\n\nSigned-off-by: Gabor Juhos \u003cjuhosg@openwrt.org\u003e\nSigned-off-by: Wim Van Sebroeck \u003cwim@iguana.be\u003e\n"
    },
    {
      "commit": "2f0bf92513be58d2d65c0a4cc05c5779a7cd81e1",
      "tree": "969737816b237a6b920253e92cdac5dec99f04b5",
      "parents": [
        "1bd12c91de35756129b8ffe28a4fe45177b86381",
        "055d4db1e1ef6f983c3565110fbe6737087e9103"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 13:05:22 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 13:05:22 2012 -0800"
      },
      "message": "Merge tag \u0027xtensa-20121218\u0027 of git://github.com/czankel/xtensa-linux\n\nPull Xtensa patchset from Chris Zankel:\n \"This contains support of device trees, many fixes, and code clean-ups\"\n\n* tag \u0027xtensa-20121218\u0027 of git://github.com/czankel/xtensa-linux: (33 commits)\n  xtensa: don\u0027t try to build DTB when OF is disabled\n  xtensa: set the correct ethernet address for xtfpga\n  xtensa: clean up files to make them code-style compliant\n  xtensa: provide endianness macro for sparse\n  xtensa: fix RASID SR initialization\n  xtensa: initialize CPENABLE SR when core has one\n  xtensa: reset all timers on initialization\n  Use for_each_compatible_node() macro.\n  xtensa: add XTFPGA DTS\n  xtensa: add support for the XTFPGA boards\n  xtensa: add device trees support\n  xtensa: add IRQ domains support\n  xtensa: add U-Boot image support (uImage).\n  xtensa: clean up boot make rules\n  xtensa: fix mb and wmb definitions\n  xtensa: add s32c1i-based spinlock implementations\n  xtensa: add s32c1i-based bitops implementations\n  xtensa: add s32c1i-based atomic ops implementations\n  xtensa: add s32c1i sanity check\n  xtensa: add trap_set_handler function\n  ...\n"
    },
    {
      "commit": "1bd12c91de35756129b8ffe28a4fe45177b86381",
      "tree": "4217aef46c19c963b44b202382beeddd3063fa5a",
      "parents": [
        "3dbff0d5e8ec9e6d0834ea889d496bc724743dfd",
        "bc3eba60682750dd7b45ea616d65c926fc3b8be8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 13:02:23 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 13:02:23 2012 -0800"
      },
      "message": "Merge branch \u0027x86/nuke386\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull one final 386 removal patch from Peter Anvin.\n\nIRQ 13 FPU error handling is gone.  That was not one of the proudest\nmoments in PC history.\n\n* \u0027x86/nuke386\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  x86, 386 removal: Remove support for IRQ 13 FPU error reporting\n"
    },
    {
      "commit": "3dbff0d5e8ec9e6d0834ea889d496bc724743dfd",
      "tree": "30af8010ac1d9e0478831e0e0334dc7e12db8a8d",
      "parents": [
        "ca2a88f56aa385890c7fd4ce9d2722b0848ca990",
        "cd34ab8b16ffaa9753d85adb4fb6cd98e7e1d22a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 12:56:42 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 12:56:42 2012 -0800"
      },
      "message": "Merge branch \u0027x86-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull small x86 fixes from Peter Anvin:\n \"A collection of very small fixes, mostly pure documentation.\"\n\n* \u0027x86-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  x86, doc: Document that bootloader ID 4 is used also by iPXE\n  x86, doc: Add a formal bootloader ID for kexec-tools\n  x86, 8042: Enable A20 using KBC to fix S3 resume on some MSI laptops\n"
    },
    {
      "commit": "ca2a88f56aa385890c7fd4ce9d2722b0848ca990",
      "tree": "935fd9cec938677d6529db203f24d803ed5f0b19",
      "parents": [
        "3935e89505a1c3ab3f3b0c7ef0eae54124f48905",
        "d4d4f1bf6a343b25220fdcdf559fd593dd3e25a7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 12:47:41 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 12:47:41 2012 -0800"
      },
      "message": "Merge tag \u0027for-linus-20121219\u0027 of git://git.infradead.org/linux-mtd\n\nPull MTD updates from David Woodhouse:\n - Various cleanups especially in NAND tests\n - Add support for NAND flash on BCMA bus\n - DT support for sh_flctl and denali NAND drivers\n - Kill obsolete/superceded drivers (fortunet, nomadik_nand)\n - Fix JFFS2 locking bug in ENOMEM failure path\n - New SPI flash chips, as usual\n - Support writing in \u0027reliable mode\u0027 for DiskOnChip G4\n - Debugfs support in nandsim\n\n* tag \u0027for-linus-20121219\u0027 of git://git.infradead.org/linux-mtd: (96 commits)\n  mtd: nand: typo in nand_id_has_period() comments\n  mtd: nand/gpio: use io{read,write}*_rep accessors\n  mtd: block2mtd: throttle writes by calling balance_dirty_pages_ratelimited.\n  mtd: nand: gpmi: reset BCH earlier, too, to avoid NAND startup problems\n  mtd: nand/docg4: fix and improve read of factory bbt\n  mtd: nand/docg4: reserve bb marker area in ecclayout\n  mtd: nand/docg4: add support for writing in reliable mode\n  mtd: mxc_nand: reorder part_probes to let cmdline override other sources\n  mtd: mxc_nand: fix unbalanced clk_disable() in error path\n  mtd: nandsim: Introduce debugfs infrastructure\n  mtd: physmap_of: error checking to prevent a NULL pointer dereference\n  mtg: docg3: potential divide by zero in doc_write_oob()\n  mtd: bcm47xxnflash: writing support\n  mtd: tests/read: initialize buffer for whole next page\n  mtd: at91: atmel_nand: return bit flips for the PMECC read_page()\n  mtd: fix recovery after failed write-buffer operation in cfi_cmdset_0002.c\n  mtd: nand: onfi need to be probed in 8 bits mode\n  mtd: nand: add NAND_BUSWIDTH_AUTO to autodetect bus width\n  mtd: nand: print flash size during detection\n  mted: nand_wait_ready timeout fix\n  ...\n"
    },
    {
      "commit": "3935e89505a1c3ab3f3b0c7ef0eae54124f48905",
      "tree": "8cfa921612d9596b2baf98f23f7e797092bcaf11",
      "parents": [
        "74779e22261172ea728b989310f6ecc991b57d62"
      ],
      "author": {
        "name": "Bjørn Mork",
        "email": "bjorn@mork.no",
        "time": "Wed Dec 19 20:51:31 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 12:10:33 2012 -0800"
      },
      "message": "watchdog: Fix disable/enable regression\n\nCommit 8d4516904b39 (\"watchdog: Fix CPU hotplug regression\") causes an\noops or hard lockup when doing\n\n echo 0 \u003e /proc/sys/kernel/nmi_watchdog\n echo 1 \u003e /proc/sys/kernel/nmi_watchdog\n\nand the kernel is booted with nmi_watchdog\u003d1 (default)\n\nRunning laptop-mode-tools and disconnecting/connecting AC power will\ncause this to trigger, making it a common failure scenario on laptops.\n\nInstead of bailing out of watchdog_disable() when !watchdog_enabled we\ncan initialize the hrtimer regardless of watchdog_enabled status.  This\nmakes it safe to call watchdog_disable() in the nmi_watchdog\u003d0 case,\nwithout the negative effect on the enabled \u003d\u003e disabled \u003d\u003e enabled case.\n\nAll these tests pass with this patch:\n- nmi_watchdog\u003d1\n  echo 0 \u003e /proc/sys/kernel/nmi_watchdog\n  echo 1 \u003e /proc/sys/kernel/nmi_watchdog\n\n- nmi_watchdog\u003d0\n  echo 0 \u003e /sys/devices/system/cpu/cpu1/online\n\n- nmi_watchdog\u003d0\n  echo mem \u003e /sys/power/state\n\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d51661\n\nCc: \u003cstable@vger.kernel.org\u003e # v3.7\nCc: Norbert Warmuth \u003cnwarmuth@t-online.de\u003e\nCc: Joseph Salisbury \u003cjoseph.salisbury@canonical.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Bjørn Mork \u003cbjorn@mork.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74779e22261172ea728b989310f6ecc991b57d62",
      "tree": "a6c71e02bf6cefc9e0d261dd1ab11f4a7433ed92",
      "parents": [
        "5031a2a7c12b837a0913c4139ebeb6bbff5e1aa5",
        "20e8ac3eea4dcfeea6ebeae57cd2c739fa48da11"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 08:19:07 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 08:19:07 2012 -0800"
      },
      "message": "Merge tag \u0027for-3.8-rc1\u0027 of git://gitorious.org/linux-pwm/linux-pwm\n\nPull pwm changes from Thierry Reding:\n \"A new driver has been added for the SPEAr platform and the\n  TWL4030/6030 driver has been replaced by two drivers that control the\n  regular PWMs and the PWM driven LEDs provided by the chips.\n\n  The vt8500, tiecap, tiehrpwm, i.MX, LPC32xx and Samsung drivers have\n  all been improved and the device tree bindings now support the PWM\n  signal polarity.\"\n\nFix up trivial conflicts due to __devinit/exit removal.\n\n* tag \u0027for-3.8-rc1\u0027 of git://gitorious.org/linux-pwm/linux-pwm: (21 commits)\n  pwm: samsung: add missing s3c-\u003epwm_id assignment\n  pwm: lpc32xx: Set the chip base for dynamic allocation\n  pwm: lpc32xx: Properly disable the clock on device removal\n  pwm: lpc32xx: Fix the PWM polarity\n  pwm: i.MX: eliminate build warning\n  pwm: Export of_pwm_xlate_with_flags()\n  pwm: Remove pwm-twl6030 driver\n  pwm: New driver to support PWM driven LEDs on TWL4030/6030 series of PMICs\n  pwm: New driver to support PWMs on TWL4030/6030 series of PMICs\n  pwm: pwm-tiehrpwm: pinctrl support\n  pwm: tiehrpwm: Add device-tree binding\n  pwm: pwm-tiehrpwm: Adding TBCLK gating support.\n  pwm: pwm-tiecap: pinctrl support\n  pwm: tiecap: Add device-tree binding\n  pwm: Add TI PWM subsystem driver\n  pwm: Device tree support for PWM polarity\n  pwm: vt8500: Ensure PWM clock is enabled during pwm_config\n  pwm: vt8500: Fix build error\n  pwm: spear: Staticize spear_pwm_config()\n  pwm: Add SPEAr PWM chip driver support\n  ...\n"
    },
    {
      "commit": "5031a2a7c12b837a0913c4139ebeb6bbff5e1aa5",
      "tree": "17d870e89554f0e7ad66029c41f3477ebc371eff",
      "parents": [
        "7a684c452e2589f3ddd7e2d466b4f747d3715ad9",
        "f36b9ddbab408f5f5ed9105d857189b84337af48"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 08:14:08 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 08:14:08 2012 -0800"
      },
      "message": "Merge tag \u0027for-v3.8-part2\u0027 of git://git.infradead.org/battery-2.6\n\nPull battery update, part 2, from Anton Vorontsov:\n \"These are left overs that I didn\u0027t have time to review/apply before\n  the merge window opened.  I didn\u0027t want to \"spoil\" the first pull\n  request with these late patches, so they were not included:\n\n   - A small patch for the RX51 OMAP board (Nokia N900 phone), the patch\n     creates a battery monitor device instance, so that it can be\n     probed.  It was acked by the OMAP maintainer;\n\n   - A couple of late bug fixes for the charger-manager: corrects corner\n     cases for the battery full handling.\"\n\n* tag \u0027for-v3.8-part2\u0027 of git://git.infradead.org/battery-2.6:\n  charger-manager: Fix bug when check dropped voltage after fullbatt event\n  charger-manager: Fix bug related to checking fully charged state of battery\n  ARM: OMAP: rx51: Register platform device for rx51_battery\n"
    },
    {
      "commit": "7a684c452e2589f3ddd7e2d466b4f747d3715ad9",
      "tree": "fed803e7450770993575b37807ba2195eafd5b0e",
      "parents": [
        "7f2de8171ddf28fdb2ca7f9a683ee1207849f718",
        "e10e1774efbdaec54698454200619a03a01e1d64"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 07:55:08 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 07:55:08 2012 -0800"
      },
      "message": "Merge tag \u0027modules-next-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux\n\nPull module update from Rusty Russell:\n \"Nothing all that exciting; a new module-from-fd syscall for those who\n  want to verify the source of the module (ChromeOS) and/or use standard\n  IMA on it or other security hooks.\"\n\n* tag \u0027modules-next-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:\n  MODSIGN: Fix kbuild output when using default extra_certificates\n  MODSIGN: Avoid using .incbin in C source\n  modules: don\u0027t hand 0 to vmalloc.\n  module: Remove a extra null character at the top of module-\u003estrtab.\n  ASN.1: Use the ASN1_LONG_TAG and ASN1_INDEFINITE_LENGTH constants\n  ASN.1: Define indefinite length marker constant\n  moduleparam: use __UNIQUE_ID()\n  __UNIQUE_ID()\n  MODSIGN: Add modules_sign make target\n  powerpc: add finit_module syscall.\n  ima: support new kernel module syscall\n  add finit_module syscall to asm-generic\n  ARM: add finit_module syscall to ARM\n  security: introduce kernel_module_from_file hook\n  module: add flags arg to sys_finit_module()\n  module: add syscall to load module from fd\n"
    },
    {
      "commit": "7f2de8171ddf28fdb2ca7f9a683ee1207849f718",
      "tree": "d89da981ac762de3fd32e1c08ddc8041f3c37519",
      "parents": [
        "59771079c18c44e39106f0f30054025acafadb41",
        "cf66bb93e0f75e0a4ba1ec070692618fa028e994"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 07:52:48 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 07:52:48 2012 -0800"
      },
      "message": "Merge tag \u0027byteswap-for-linus-20121219\u0027 of git://git.infradead.org/users/dwmw2/byteswap\n\nPull preparatory gcc intrisics bswap patch from David Woodhouse:\n \"This single patch is effectively a no-op for now.  It enables\n  architectures to opt in to using GCC\u0027s __builtin_bswapXX() intrinsics\n  for byteswapping, and if we merge this now then the architecture\n  maintainers can enable it for their arch during the next cycle without\n  dependency issues.\n\n  It\u0027s worth making it a par-arch opt-in, because although in *theory*\n  the compiler should never do worse than hand-coded assembler (and of\n  course it also ought to do a lot better on platforms like Atom and\n  PowerPC which have load-and-swap or store-and-swap instructions), that\n  isn\u0027t always the case.  See\n\n     http://gcc.gnu.org/bugzilla/show_bug.cgi?id\u003d46453\n\n  for example.\"\n\n* tag \u0027byteswap-for-linus-20121219\u0027 of git://git.infradead.org/users/dwmw2/byteswap:\n  byteorder: allow arch to opt to use GCC intrinsics for byteswapping\n"
    },
    {
      "commit": "59771079c18c44e39106f0f30054025acafadb41",
      "tree": "9463781cf1d6f3055bc87840190cc322b59daa67",
      "parents": [
        "752451f01c4567b506bf4343082682dbb8fb30dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 07:18:35 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 07:18:35 2012 -0800"
      },
      "message": "blk: avoid divide-by-zero with zero discard granularity\n\nCommit 8dd2cb7e880d (\"block: discard granularity might not be power of\n2\") changed a couple of \u0027binary and\u0027 operations into modulus operations.\nWhich turned the harmless case of a zero discard_granularity into a\npossible divide-by-zero.\n\nThe code also had a much more subtle bug: it was doing the modulus of a\nvalue in bytes using \u0027sector_t\u0027.  That was always conceptually wrong,\nbut didn\u0027t actually matter back when the code assumed a power-of-two\ngranularity: we only looked at the low bits anyway.\n\nBut with potentially arbitrary sector numbers, using a \u0027sector_t\u0027 to\nexpress bytes is very very wrong: depending on configuration it limits\nthe starting offset of the device to just 32 bits, and any overflow\nwould result in a wrong value if the modulus wasn\u0027t a power-of-two.\n\nSo re-write the code to not only protect against the divide-by-zero, but\nto do the starting sector arithmetic in sectors, and using the proper\ntypes.\n\n[ For any mathematicians out there: it also looks monumentally stupid to\n  do the \u0027modulo granularity\u0027 operation *twice*, never mind having a \"+\n  granularity\" in the second modulus op.\n\n  But that\u0027s the easiest way to avoid negative values or overflow, and\n  it is how the original code was done. ]\n\nReported-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nReported-by: Doug Anderson \u003cdianders@chromium.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Shaohua Li \u003cshli@fusionio.com\u003e\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "055d4db1e1ef6f983c3565110fbe6737087e9103",
      "tree": "9d9e95f8a494b06dd04d959fc8c6a125eae96533",
      "parents": [
        "33c760fbb7a8fa46314437746dd7f5540da5498e"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Tue Dec 11 01:26:21 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:26 2012 -0800"
      },
      "message": "xtensa: don\u0027t try to build DTB when OF is disabled\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "33c760fbb7a8fa46314437746dd7f5540da5498e",
      "tree": "bcb246804343781b605893cc865911c04612b708",
      "parents": [
        "c4c4594b005d89b56964071bbbdeb07daac5bc76"
      ],
      "author": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Wed Nov 28 16:52:09 2012 -0800"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:26 2012 -0800"
      },
      "message": "xtensa: set the correct ethernet address for xtfpga\n\nThe last byte of the mac address is determined by a DIP switch, so\nupdate the OF property with that address.\n\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "c4c4594b005d89b56964071bbbdeb07daac5bc76",
      "tree": "4c0b50ba3b87a53768bdd7161e90e9874b498127",
      "parents": [
        "72100ed7efac290f24bd90a5e7c8bc9f231d167d"
      ],
      "author": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Wed Nov 28 16:53:51 2012 -0800"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:25 2012 -0800"
      },
      "message": "xtensa: clean up files to make them code-style compliant\n\nRemove heading and trailing spaces, trim trailing lines, and wrap lines\nthat are longer than 80 characters.\n\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "72100ed7efac290f24bd90a5e7c8bc9f231d167d",
      "tree": "e58121cc67a8d4a44d95238cfc3ee233bebbcd97",
      "parents": [
        "ec747b21c7c709a712e5eee0b4d4326d755d58b5"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Tue Dec 11 01:26:25 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:25 2012 -0800"
      },
      "message": "xtensa: provide endianness macro for sparse\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "ec747b21c7c709a712e5eee0b4d4326d755d58b5",
      "tree": "9f33109223bc7c04abdc8b2dabd19c259d60147e",
      "parents": [
        "eab5e7a79d1bb3d607dabf022bfad9f46d1e3ac8"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Tue Dec 11 01:26:24 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:25 2012 -0800"
      },
      "message": "xtensa: fix RASID SR initialization\n\nset_rasid_register accepts new RASID SR value, but ASID_USER_FIRST is\nASID value for the ring 1; RASID value is made by ASID_INSERT macro.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "eab5e7a79d1bb3d607dabf022bfad9f46d1e3ac8",
      "tree": "9b6c38cd910670a3ba9edb6ea9b9f572763a5c9b",
      "parents": [
        "79fcf52ba0dbcb9888812113df2d7248b41e9af1"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Tue Dec 11 01:26:23 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:25 2012 -0800"
      },
      "message": "xtensa: initialize CPENABLE SR when core has one\n\nXCHAL_CP_NUM is defined in variant/tie.h and it is not included by\nhead.S, leaving CPENABLE register uninitialised. XCHAL_HAVE_CP is\ndefined in variant/core.h to 1 when core has CPENABLE SR.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "79fcf52ba0dbcb9888812113df2d7248b41e9af1",
      "tree": "bde08355d6875f8bd9f5e0f16470086a53852600",
      "parents": [
        "90e3bc798bec8b33ba4300a7751b627b54b3bb5b"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Tue Dec 11 01:26:22 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:25 2012 -0800"
      },
      "message": "xtensa: reset all timers on initialization\n\nThere are XCHAL_NUM_TIMERS, reset them all.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "90e3bc798bec8b33ba4300a7751b627b54b3bb5b",
      "tree": "173adfc87b30ae0843fd4aec6e05d2d977e6f9fa",
      "parents": [
        "5584b4da7814af7d35a72d904140bf9c2a502d4e"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Mon Dec 03 00:35:11 2012 -0800"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:25 2012 -0800"
      },
      "message": "Use for_each_compatible_node() macro.\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nAcked-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "5584b4da7814af7d35a72d904140bf9c2a502d4e",
      "tree": "1cecc1c6f619b0b070b4f46bc6306faeeedb4292",
      "parents": [
        "0d456bad36d42d16022be045c8a53ddbb59ee478"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sat Nov 03 12:57:52 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:24 2012 -0800"
      },
      "message": "xtensa: add XTFPGA DTS\n\nAdd common XTFPGA parts as *.dtsi (base board, flash) and DTS for LX60\nand for ML605.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "0d456bad36d42d16022be045c8a53ddbb59ee478",
      "tree": "3c135bfcf37d6ccf45fd9ac4f739df95e181d416",
      "parents": [
        "da844a81779e2bb263eca4ecb1046541fdb11cf8"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Mon Nov 05 07:37:14 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:24 2012 -0800"
      },
      "message": "xtensa: add support for the XTFPGA boards\n\nThe Avnet LX60/LX110/LX200 board is an FPGA board that can be configured with\nan Xtensa processor and an OpenCores Ethernet device.\n\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "da844a81779e2bb263eca4ecb1046541fdb11cf8",
      "tree": "22f332194e7c13b1b4e2f9715c047722d0dd958a",
      "parents": [
        "2206d5dd9a785a74afc6981f2b13b7a4d4da6f31"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sun Nov 04 00:30:13 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:23 2012 -0800"
      },
      "message": "xtensa: add device trees support\n\nDevice trees allow specification of hardware topology and device\nparameters at runtime instead of hard-coding them in platform setup\ncode. This allows running single binary kernel on a range of compatible\nboards.\n\nNew boot parameters tag BP_TAG_FDT is allocated and a pointer to flat\ndevice tree is passed in it.\n\nNote that current interrupt mapping scheme uses single cell for\ninterrupt identification. That means that IRQ numbers used in DTS must\nbe CPU internal IRQ numbers, not external. It is possible to extend\ninterrupt identification to two cells, and use second cell to tell\nexternal IRQ numbers form internal. That would allow to use single DTS\non multiple boards with different mapping of external IRQ numbers.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "2206d5dd9a785a74afc6981f2b13b7a4d4da6f31",
      "tree": "a2205c8d26f7b28d3f9cb9a66e18650cb7d48674",
      "parents": [
        "0322cabd39e27614772595abb395871e86ebff66"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sun Nov 04 00:29:12 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:23 2012 -0800"
      },
      "message": "xtensa: add IRQ domains support\n\nIRQ domains provide a mechanism for conversion of linux IRQ numbers to\nhardware IRQ numbers and vice versus. It is used by OpenFirmware for\nlinking device tree objects to their respective interrupt controllers.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "0322cabd39e27614772595abb395871e86ebff66",
      "tree": "f4d7a40b9de5de0c59bff3ebd818ba396a4e213a",
      "parents": [
        "3f5ec298e56587462d91320c9e49f3e38f2beb17"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Mon Nov 05 07:36:00 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:23 2012 -0800"
      },
      "message": "xtensa: add U-Boot image support (uImage).\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "3f5ec298e56587462d91320c9e49f3e38f2beb17",
      "tree": "4e9fb2010438ff1bce80dd5388057c878a5a1bf2",
      "parents": [
        "599bf77a0d0b253dd94fd058275b05520c6d25db"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Mon Nov 05 09:10:00 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:23 2012 -0800"
      },
      "message": "xtensa: clean up boot make rules\n\n- remove duplicate rules for binary and packed image\n- use predefined macros for ld/objcopy/gzip\n- remove build-id section from bootable elf image\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "599bf77a0d0b253dd94fd058275b05520c6d25db",
      "tree": "4b6a0ae21bf0188adbe2a0f25ad2ac81a7d53af1",
      "parents": [
        "71872b5fb2bed294fd5afd900890880e9faa82c1"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sat Nov 24 06:22:08 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:23 2012 -0800"
      },
      "message": "xtensa: fix mb and wmb definitions\n\nDefine mb and wmb as memw to force memory barrier.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "71872b5fb2bed294fd5afd900890880e9faa82c1",
      "tree": "2b5506ffb3f9a31130cbe88df713a5fac4a43fdb",
      "parents": [
        "e5a9f6adba79ce2732330fc6d045e98959af8962"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sun Nov 11 07:01:21 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:22 2012 -0800"
      },
      "message": "xtensa: add s32c1i-based spinlock implementations\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "e5a9f6adba79ce2732330fc6d045e98959af8962",
      "tree": "c808e6e5d68d93c4635401c06584c4b9ddc0b1e6",
      "parents": [
        "219b1e4c61c108731bb665962231b1fa057f6c71"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sun Nov 11 05:47:25 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:22 2012 -0800"
      },
      "message": "xtensa: add s32c1i-based bitops implementations\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "219b1e4c61c108731bb665962231b1fa057f6c71",
      "tree": "97ccb1c5069dea39b132086faf48607cf3b78cd3",
      "parents": [
        "00273125c39be9cbf619aef90147354a9ed8c385"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sun Nov 11 03:30:02 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:22 2012 -0800"
      },
      "message": "xtensa: add s32c1i-based atomic ops implementations\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "00273125c39be9cbf619aef90147354a9ed8c385",
      "tree": "331f33a0a31f9306f4612ecc25c4c9a476840966",
      "parents": [
        "28570e8dac5c86ab10ce2a7e9c02d3aaece63760"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Wed Nov 28 11:33:02 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:22 2012 -0800"
      },
      "message": "xtensa: add s32c1i sanity check\n\nAdd a brief sanity test of S32C1I functionality.  This instruction\nis needed by the kernel and userland as part of the base ABI\n(including GCC atomic builtins, certain threading packages, future\natomic support in the C++ standard, etc).  However, correct operation\nof this instruction requires some cooperation by hardware external to\nthe processor (such as bus bridge, bus fabric, or memory controller).\nMinimally exercising this mechanism and reporting explicit status\nearly in the boot process is helpful to chip vendors using the Linux\nkernel as a benchmark of correctness of hardware.\n\nAs it turns out, S32C1I is not exercised by the kernel and by uClibc\nbased userland as of early June 2008.  This is expected to change\nsoon as both incorporate more recent open source developments.\n\nSigned-off-by: Marc Gauthier \u003cmarc@tensilica.com\u003e\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "28570e8dac5c86ab10ce2a7e9c02d3aaece63760",
      "tree": "29a915825b1851c1377d88bdb008a0eb7993d78f",
      "parents": [
        "c622b29d1f38021411965b7e0170ab055551b257"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Mon Nov 19 08:30:15 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:22 2012 -0800"
      },
      "message": "xtensa: add trap_set_handler function\n\ntrap_set_handler sets new C-handler in the exception table and returns\nprevious handler.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "c622b29d1f38021411965b7e0170ab055551b257",
      "tree": "f86875612ade331965b80abafb14cbd796924461",
      "parents": [
        "733536b865441d9bad02c4711a4372d48ce21e54"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Mon Nov 19 07:00:41 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:22 2012 -0800"
      },
      "message": "xtensa: initialize atomctl SR\n\nIn order to use S32C1I instruction on cores with ATOMCTL SR the register\nmust be properly initialized.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "733536b865441d9bad02c4711a4372d48ce21e54",
      "tree": "e54c74b6f27dab1175701128e1c0ac2a18cccdc3",
      "parents": [
        "2f6ea6a767e9e26d23e4de4b03fdebe41f3b88f8"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Thu Nov 15 06:25:48 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:22 2012 -0800"
      },
      "message": "xtensa: save and restore scompare1 SR on kernel entry\n\nAlthough scompare1 may be saved/restored by xchal_ncp_{load,store}\nmacros, explicit save/restore of registers manipulated by the kernel\nitself is considered more correct.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "2f6ea6a767e9e26d23e4de4b03fdebe41f3b88f8",
      "tree": "de88e2f3f116d4bfe98f9aeb59a00158637ef6bf",
      "parents": [
        "415217efc132b1237c65b15d1986d123380298f4"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sun Nov 11 04:44:22 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:21 2012 -0800"
      },
      "message": "xtensa: display s32c1i feature flag in cpuinfo\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "415217efc132b1237c65b15d1986d123380298f4",
      "tree": "6b5d8380484dbe144ed53dd760e188a469128410",
      "parents": [
        "288dc2b68c110cd2b14b17f047b85859bc644955"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Sun Nov 11 01:29:10 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:21 2012 -0800"
      },
      "message": "xtensa: fix CPU cache flags formatting\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "288dc2b68c110cd2b14b17f047b85859bc644955",
      "tree": "73edd035cab440723ec938f070ef423b76eb8348",
      "parents": [
        "382cb5b91747f4f4d1f9883a39deec1b3d7fb906"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Mon Oct 22 08:42:39 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:21 2012 -0800"
      },
      "message": "xtensa: properly fix missing compiler barrier in simcall\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "382cb5b91747f4f4d1f9883a39deec1b3d7fb906",
      "tree": "0bbcd7f7be18494fa4268ec17873ff61d567da2c",
      "parents": [
        "35b16a9a093757a7a1ef288eea1128b0b4a3eef7"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Mon Nov 05 07:44:03 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:21 2012 -0800"
      },
      "message": "xtensa: fix build warning for arch/xtensa/mm/tlb.c\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "35b16a9a093757a7a1ef288eea1128b0b4a3eef7",
      "tree": "cc20373d9277e83301db8344a8555bc2f90dab6a",
      "parents": [
        "94d6c61b97cbcb3b538276c3785896ea12ecaecb"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Thu Nov 01 18:38:27 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:21 2012 -0800"
      },
      "message": "xtensa: provide DMA_ERROR_CODE definition\n\nThis fixes the following allmodconfig build error:\n\ndrivers/uio/uio_dmem_genirq.c:95:18: error: \u0027DMA_ERROR_CODE\u0027 undeclared (first use in this function)\ndrivers/uio/uio_dmem_genirq.c:238:18: error: \u0027DMA_ERROR_CODE\u0027 undeclared (first use in this function)\nmake[3]: *** [drivers/uio/uio_dmem_genirq.o] Error 1\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "94d6c61b97cbcb3b538276c3785896ea12ecaecb",
      "tree": "4d64feed8ac98049975484bcadcb57e880bfc679",
      "parents": [
        "d1538c4675f37d0eeb34bd38bec798b3b29a5a7e"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Wed Oct 31 12:37:04 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:21 2012 -0800"
      },
      "message": "xtensa: ISS: add BASE_BAUD definition to serial.h\n\nThis fixes the following build error in allyesconfig:\n\ndrivers/tty/serial/8250/8250_early.c: In function \u0027parse_options\u0027:\ndrivers/tty/serial/8250/8250_early.c:160:18: error: \u0027BASE_BAUD\u0027 undeclared (first use in this function)\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "d1538c4675f37d0eeb34bd38bec798b3b29a5a7e",
      "tree": "4fa2d2c539825ad99f2f677cef686ea0051fbe9f",
      "parents": [
        "c0226e34a4293dee0e7c5787e1ebfc5ee8b44b7c"
      ],
      "author": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Fri Nov 16 16:16:20 2012 -0800"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:20 2012 -0800"
      },
      "message": "xtensa: provide proper assembler function boundaries with ENDPROC()\n\nUse ENDPROC() to mark the end of assembler functions.\n\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "c0226e34a4293dee0e7c5787e1ebfc5ee8b44b7c",
      "tree": "730149cbd56ebfdd916420e9c9d39ded7005ec4f",
      "parents": [
        "6550162200b40d1e725167f8a617255c42b57552"
      ],
      "author": {
        "name": "Max Filippov",
        "email": "jcmvbkbc@gmail.com",
        "time": "Thu Aug 09 05:25:35 2012 +0400"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:20 2012 -0800"
      },
      "message": "xtensa: make DoubleExceptionVector literals fit the gap\n\nManually load references to exc_table from the explicit literal in order\nto fit DoubleExceptionVector.literals into the available 16-byte gap\nbefore DoubleExceptionVector.text in the absence of link time\nrelaxation. Without this fix DoubleExceptionVector.literal section\noverlaps DoubleExceptionVector.text section in the linked vmlinux image.\n\nSigned-off-by: Max Filippov \u003cjcmvbkbc@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "6550162200b40d1e725167f8a617255c42b57552",
      "tree": "072a99de3ab75fe899254bf75d1a704d91f8916f",
      "parents": [
        "02b25d811f949fc70badd6535dfaf13a3c5decf9"
      ],
      "author": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Nov 13 15:16:36 2012 -0800"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:20 2012 -0800"
      },
      "message": "xtensa: add config option to disable linker relaxation\n\nThe default linker behavior is to optimize identical literal values and\nremove unnecessary overhead from assembler-generated \"longcall\" sequences\nto reduce code size. Provide an option to disable this behavior to improve\ncompile time.\n\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "02b25d811f949fc70badd6535dfaf13a3c5decf9",
      "tree": "e2954ad55c4212601eae77e076b1573e314a622e",
      "parents": [
        "09378d7c21a806d5ddb75ebcae242d98cea30e44"
      ],
      "author": {
        "name": "Nicolas Kaiser",
        "email": "nikai@nikai.net",
        "time": "Sat May 07 20:55:42 2011 +0200"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:20 2012 -0800"
      },
      "message": "xtensa: unbalanced parentheses\n\nSigned-off-by: Nicolas Kaiser \u003cnikai@nikai.net\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "09378d7c21a806d5ddb75ebcae242d98cea30e44",
      "tree": "7dd7d8581e04fc285fcea0bba8bbffd2b7d8ba5b",
      "parents": [
        "752451f01c4567b506bf4343082682dbb8fb30dd"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "wanlong.gao@gmail.com",
        "time": "Wed Jun 01 22:37:43 2011 +0800"
      },
      "committer": {
        "name": "Chris Zankel",
        "email": "chris@zankel.net",
        "time": "Tue Dec 18 21:10:20 2012 -0800"
      },
      "message": "xtensa:fix the incompatible pointer type warning in time.c\n\nFix the definition of the function ccount_read to be compatible\nto the member read of the structure clocksource.\n\nSigned-off-by: Wanlong Gao \u003cwanlong.gao@gmail.com\u003e\nSigned-off-by: Chris Zankel \u003cchris@zankel.net\u003e\n"
    },
    {
      "commit": "752451f01c4567b506bf4343082682dbb8fb30dd",
      "tree": "ec2ec2989c93e567952ddc1ec879013aa2704f0a",
      "parents": [
        "673ab8783b596cda5b616b317b1a1b47480c66fd",
        "972deb4f49b5b6703d9c6117ba0aeda2180d4447"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 16:51:10 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 16:51:10 2012 -0800"
      },
      "message": "Merge branch \u0027i2c-embedded/for-next\u0027 of git://git.pengutronix.de/git/wsa/linux\n\nPull i2c-embedded changes from Wolfram Sang:\n - CBUS driver (an I2C variant)\n - continued rework of the omap driver\n - s3c2410 gets lots of fixes and gains pinctrl support\n - at91 gains DMA support\n - the GPIO muxer gains devicetree probing\n - typical fixes and additions all over\n\n* \u0027i2c-embedded/for-next\u0027 of git://git.pengutronix.de/git/wsa/linux: (45 commits)\n  i2c: omap: Remove the OMAP_I2C_FLAG_RESET_REGS_POSTIDLE flag\n  i2c: at91: add dma support\n  i2c: at91: change struct members indentation\n  i2c: at91: fix compilation warning\n  i2c: mxs: Do not disable the I2C SMBus quick mode\n  i2c: mxs: Handle i2c DMA failure properly\n  i2c: s3c2410: Remove recently introduced performance overheads\n  i2c: ocores: Move grlib set/get functions into #ifdef CONFIG_OF block\n  i2c: s3c2410: Add fix for i2c suspend/resume\n  i2c: s3c2410: Fix code to free gpios\n  i2c: i2c-cbus-gpio: introduce driver\n  i2c: ocores: Add support for the GRLIB port of the controller and use function pointers for getreg and setreg functions\n  i2c: ocores: Add irq support for sparc\n  i2c: omap: Move the remove constraint\n  ARM: dts: cfa10049: Add the i2c muxer buses to the CFA-10049\n  i2c: s3c2410: do not special case HDMIPHY stuck bus detection\n  i2c: s3c2410: use exponential back off while polling for bus idle\n  i2c: s3c2410: do not generate STOP for QUIRK_HDMIPHY\n  i2c: s3c2410: grab adapter lock while changing i2c clock\n  i2c: s3c2410: Add support for pinctrl\n  ...\n"
    },
    {
      "commit": "673ab8783b596cda5b616b317b1a1b47480c66fd",
      "tree": "d3fc9bb4279720c53d0dc69c2a34c40635cf05f3",
      "parents": [
        "d7b96ca5d08a8f2f836feb2b3b3bd721d2837a8e",
        "3cf23841b4b76eb94d3f8d0fb3627690e4431413"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:08:12 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:08:12 2012 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (more patches from Andrew)\n\nMerge patches from Andrew Morton:\n \"Most of the rest of MM, plus a few dribs and drabs.\n\n  I still have quite a few irritating patches left around: ones with\n  dubious testing results, lack of review, ones which should have gone\n  via maintainer trees but the maintainers are slack, etc.\n\n  I need to be more activist in getting these things wrapped up outside\n  the merge window, but they\u0027re such a PITA.\"\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (48 commits)\n  mm/vmscan.c: avoid possible deadlock caused by too_many_isolated()\n  vmscan: comment too_many_isolated()\n  mm/kmemleak.c: remove obsolete simple_strtoul\n  mm/memory_hotplug.c: improve comments\n  mm/hugetlb: create hugetlb cgroup file in hugetlb_init\n  mm/mprotect.c: coding-style cleanups\n  Documentation: ABI: /sys/devices/system/node/\n  slub: drop mutex before deleting sysfs entry\n  memcg: add comments clarifying aspects of cache attribute propagation\n  kmem: add slab-specific documentation about the kmem controller\n  slub: slub-specific propagation changes\n  slab: propagate tunable values\n  memcg: aggregate memcg cache values in slabinfo\n  memcg/sl[au]b: shrink dead caches\n  memcg/sl[au]b: track all the memcg children of a kmem_cache\n  memcg: destroy memcg caches\n  sl[au]b: allocate objects from memcg cache\n  sl[au]b: always get the cache from its page in kmem_cache_free()\n  memcg: skip memcg kmem allocations in specified code regions\n  memcg: infrastructure to match an allocation to the right cache\n  ...\n"
    },
    {
      "commit": "d7b96ca5d08a8f2f836feb2b3b3bd721d2837a8e",
      "tree": "e4700189d9d880489b0aaa69ce6f9ff04f41d12f",
      "parents": [
        "5b3040a48bc9b916dc318bde33c9ebd98f00fbeb",
        "7764b5282e7e04ede3020d86787122887840e016"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:06:11 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:06:11 2012 -0800"
      },
      "message": "Merge tag \u0027hwmon-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging\n\nPull hwmon fixlet from Guenter Roeck:\n \"Fix fallout from __devexit removal\"\n\n* tag \u0027hwmon-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:\n  hwmon: (twl4030-madc-hwmon) Fix warning message caused by removal of __devexit\n"
    },
    {
      "commit": "5b3040a48bc9b916dc318bde33c9ebd98f00fbeb",
      "tree": "3762a11cb024c1197e07046d60af0b93d3a541ff",
      "parents": [
        "31564cbd77baa88405862d4aa0d00893ab1d8cb7",
        "e6cdebdf5aeccb5cbcf81e5e2764ad28a80f3185"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:05:30 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:05:30 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile\n\nPull tile updates from Chris Metcalf:\n \"These are a smattering of minor changes from Tilera and other folks,\n  mostly in the ptrace area.\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:\n  arch/tile: set CORE_DUMP_USE_REGSET on tile\n  arch/tile: implement arch_ptrace using user_regset on tile\n  arch/tile: implement user_regset interface on tile\n  arch/tile: clean up tile-specific PTRACE_SETOPTIONS\n  arch/tile: provide PT_FLAGS_COMPAT value in pt_regs\n  tile/PCI: use for_each_pci_dev to simplify the code\n  tilegx: remove __init from pci fixup hook\n"
    },
    {
      "commit": "3cf23841b4b76eb94d3f8d0fb3627690e4431413",
      "tree": "f7c697537949c0394bccfe654ea0743b88ea5ceb",
      "parents": [
        "d37dd5dcb955dd8c2cdd4eaef1f15d1b7ecbc379"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Dec 18 14:23:31 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "mm/vmscan.c: avoid possible deadlock caused by too_many_isolated()\n\nNeil found that if too_many_isolated() returns true while performing\ndirect reclaim we can end up waiting for other threads to complete their\ndirect reclaim.  If those threads are allowed to enter the FS or IO to\nfree memory, but this thread is not, then it is possible that those\nthreads will be waiting on this thread and so we get a circular deadlock.\n\nsome task enters direct reclaim with GFP_KERNEL\n  \u003d\u003e too_many_isolated() false\n    \u003d\u003e vmscan and run into dirty pages\n      \u003d\u003e pageout()\n        \u003d\u003e take some FS lock\n          \u003d\u003e fs/block code does GFP_NOIO allocation\n            \u003d\u003e enter direct reclaim again\n              \u003d\u003e too_many_isolated() true\n                \u003d\u003e waiting for others to progress, however the other\n                   tasks may be circular waiting for the FS lock..\n\nThe fix is to let !__GFP_IO and !__GFP_FS direct reclaims enjoy higher\npriority than normal ones, by lowering the throttle threshold for the\nlatter.\n\nAllowing ~1/8 isolated pages in normal is large enough.  For example, for\na 1GB LRU list, that\u0027s ~128MB isolated pages, or 1k blocked tasks (each\nisolates 32 4KB pages), or 64 blocked tasks per logical CPU (assuming 16\nlogical CPUs per NUMA node).  So it\u0027s not likely some CPU goes idle\nwaiting (when it could make progress) because of this limit: there are\nmuch more sleeping reclaim tasks than the number of CPU, so the task may\nwell be blocked by some low level queue/lock anyway.\n\nNow !GFP_IOFS reclaims won\u0027t be waiting for GFP_IOFS reclaims to progress.\n They will be blocked only when there are too many concurrent !GFP_IOFS\nreclaims, however that\u0027s very unlikely because the IO-less direct reclaims\nis able to progress much more faster, and they won\u0027t deadlock each other.\nThe threshold is raised high enough for them, so that there can be\nsufficient parallel progress of !GFP_IOFS reclaims.\n\n[akpm@linux-foundation.org: tweak comment]\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nTested-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d37dd5dcb955dd8c2cdd4eaef1f15d1b7ecbc379",
      "tree": "604209843c03b53a6c74f90cdb7d000914213066",
      "parents": [
        "dc053733ea44babedb20266300b984d6add8b9e5"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Dec 18 14:23:28 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "vmscan: comment too_many_isolated()\n\nComment \"Why it\u0027s doing so\" rather than \"What it does\" as proposed by\nAndrew Morton.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dc053733ea44babedb20266300b984d6add8b9e5",
      "tree": "4206349761194b05f17c3d120b3b5dd1c110e729",
      "parents": [
        "79a4dcefd3256896416f5a94d2d1442a7f5aa9b8"
      ],
      "author": {
        "name": "Abhijit Pawar",
        "email": "abhi.c.pawar@gmail.com",
        "time": "Tue Dec 18 14:23:27 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "mm/kmemleak.c: remove obsolete simple_strtoul\n\nReplace the obsolete simple_strtoul() with kstrtoul().\n\nSigned-off-by: Abhijit Pawar \u003cabhi.c.pawar@gmail.com\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79a4dcefd3256896416f5a94d2d1442a7f5aa9b8",
      "tree": "4a00cd22e719484b1bf40fab95eda98070c7550a",
      "parents": [
        "7179e7bf4592ac5a7b30257a7df6259ee81e51da"
      ],
      "author": {
        "name": "Tang Chen",
        "email": "tangchen@cn.fujitsu.com",
        "time": "Tue Dec 18 14:23:24 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "mm/memory_hotplug.c: improve comments\n\nSigned-off-by: Tang Chen \u003ctangchen@cn.fujitsu.com\u003e\nCc: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Wen Congyang \u003cwency@cn.fujitsu.com\u003e\nCc: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7179e7bf4592ac5a7b30257a7df6259ee81e51da",
      "tree": "a3fb75a87e1a18b153c18aa7e4530d35c768e8b6",
      "parents": [
        "7d12efaea7e74bf8f4953412514e836313fa32ec"
      ],
      "author": {
        "name": "Jianguo Wu",
        "email": "wujianguo@huawei.com",
        "time": "Tue Dec 18 14:23:19 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "mm/hugetlb: create hugetlb cgroup file in hugetlb_init\n\nBuild kernel with CONFIG_HUGETLBFS\u003dy,CONFIG_HUGETLB_PAGE\u003dy and\nCONFIG_CGROUP_HUGETLB\u003dy, then specify hugepagesz\u003dxx boot option, system\nwill fail to boot.\n\nThis failure is caused by following code path:\n\n  setup_hugepagesz\n    hugetlb_add_hstate\n      hugetlb_cgroup_file_init\n        cgroup_add_cftypes\n          kzalloc \u003c--slab is *not available* yet\n\nFor this path, slab is not available yet, so memory allocated will be\nfailed, and cause WARN_ON() in hugetlb_cgroup_file_init().\n\nSo I move hugetlb_cgroup_file_init() into hugetlb_init().\n\n[akpm@linux-foundation.org: tweak coding-style, remove pointless __init on inlined function]\n[akpm@linux-foundation.org: fix warning]\nSigned-off-by: Jianguo Wu \u003cwujianguo@huawei.com\u003e\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d12efaea7e74bf8f4953412514e836313fa32ec",
      "tree": "63aeb87bc6135cd9b7e7c77e2b4a1e8d578fb2b4",
      "parents": [
        "5bbe1ec11fcf08af086ae214cdd4f4da0f25ca46"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Dec 18 14:23:17 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "mm/mprotect.c: coding-style cleanups\n\nA few gremlins have recently crept in.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5bbe1ec11fcf08af086ae214cdd4f4da0f25ca46",
      "tree": "1294c0826396b9a8aed44acfb2a22b2f3ad846d6",
      "parents": [
        "5413dfba88d6f6090c8cdf181ab9172d24752f8f"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr.bueso@hp.com",
        "time": "Tue Dec 18 14:23:16 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "Documentation: ABI: /sys/devices/system/node/\n\nDescribe NUMA node sysfs files/attributes.\n\nNote that for the specific dates and contacts I couldn\u0027t find,\nI left it as default for Oct 2002 and linux-mm.\n\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5413dfba88d6f6090c8cdf181ab9172d24752f8f",
      "tree": "6d8d90ef6a342d35d753533f3a06b3f2d9dd3dd1",
      "parents": [
        "ebe945c27628fca03723582eba138acc2e2f3d15"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:23:13 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "slub: drop mutex before deleting sysfs entry\n\nSasha Levin recently reported a lockdep problem resulting from the new\nattribute propagation introduced by kmemcg series.  In short, slab_mutex\nwill be called from within the sysfs attribute store function.  This will\ncreate a dependency, that will later be held backwards when a cache is\ndestroyed - since destruction occurs with the slab_mutex held, and then\ncalls in to the sysfs directory removal function.\n\nIn this patch, I propose to adopt a strategy close to what\n__kmem_cache_create does before calling sysfs_slab_add, and release the\nlock before the call to sysfs_slab_remove.  This is pretty much the last\noperation in the kmem_cache_shutdown() path, so we could do better by\nsplitting this and moving this call alone to later on.  This will fit\nnicely when sysfs handling is consistent between all caches, but will look\nweird now.\n\nLockdep info:\n\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  [ INFO: possible circular locking dependency detected ]\n  3.7.0-rc4-next-20121106-sasha-00008-g353b62f #117 Tainted: G        W\n  -------------------------------------------------------\n  trinity-child13/6961 is trying to acquire lock:\n   (s_active#43){++++.+}, at:  sysfs_addrm_finish+0x31/0x60\n\n  but task is already holding lock:\n   (slab_mutex){+.+.+.}, at:  kmem_cache_destroy+0x22/0xe0\n\n  which lock already depends on the new lock.\n\n  the existing dependency chain (in reverse order) is:\n  -\u003e #1 (slab_mutex){+.+.+.}:\n          lock_acquire+0x1aa/0x240\n          __mutex_lock_common+0x59/0x5a0\n          mutex_lock_nested+0x3f/0x50\n          slab_attr_store+0xde/0x110\n          sysfs_write_file+0xfa/0x150\n          vfs_write+0xb0/0x180\n          sys_pwrite64+0x60/0xb0\n          tracesys+0xe1/0xe6\n  -\u003e #0 (s_active#43){++++.+}:\n          __lock_acquire+0x14df/0x1ca0\n          lock_acquire+0x1aa/0x240\n          sysfs_deactivate+0x122/0x1a0\n          sysfs_addrm_finish+0x31/0x60\n          sysfs_remove_dir+0x89/0xd0\n          kobject_del+0x16/0x40\n          __kmem_cache_shutdown+0x40/0x60\n          kmem_cache_destroy+0x40/0xe0\n          mon_text_release+0x78/0xe0\n          __fput+0x122/0x2d0\n          ____fput+0x9/0x10\n          task_work_run+0xbe/0x100\n          do_exit+0x432/0xbd0\n          do_group_exit+0x84/0xd0\n          get_signal_to_deliver+0x81d/0x930\n          do_signal+0x3a/0x950\n          do_notify_resume+0x3e/0x90\n          int_signal+0x12/0x17\n\n  other info that might help us debug this:\n\n   Possible unsafe locking scenario:\n\n         CPU0                    CPU1\n         ----                    ----\n    lock(slab_mutex);\n                                 lock(s_active#43);\n                                 lock(slab_mutex);\n    lock(s_active#43);\n\n   *** DEADLOCK ***\n\n  2 locks held by trinity-child13/6961:\n   #0:  (mon_lock){+.+.+.}, at:  mon_text_release+0x25/0xe0\n   #1:  (slab_mutex){+.+.+.}, at:  kmem_cache_destroy+0x22/0xe0\n\n  stack backtrace:\n  Pid: 6961, comm: trinity-child13 Tainted: G        W    3.7.0-rc4-next-20121106-sasha-00008-g353b62f #117\n  Call Trace:\n    print_circular_bug+0x1fb/0x20c\n    __lock_acquire+0x14df/0x1ca0\n    lock_acquire+0x1aa/0x240\n    sysfs_deactivate+0x122/0x1a0\n    sysfs_addrm_finish+0x31/0x60\n    sysfs_remove_dir+0x89/0xd0\n    kobject_del+0x16/0x40\n    __kmem_cache_shutdown+0x40/0x60\n    kmem_cache_destroy+0x40/0xe0\n    mon_text_release+0x78/0xe0\n    __fput+0x122/0x2d0\n    ____fput+0x9/0x10\n    task_work_run+0xbe/0x100\n    do_exit+0x432/0xbd0\n    do_group_exit+0x84/0xd0\n    get_signal_to_deliver+0x81d/0x930\n    do_signal+0x3a/0x950\n    do_notify_resume+0x3e/0x90\n    int_signal+0x12/0x17\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nReported-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ebe945c27628fca03723582eba138acc2e2f3d15",
      "tree": "5998e8dd874aedf3b8873d0ffeaf658d10505655",
      "parents": [
        "92e793495597af4135d94314113bf13eafb0e663"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:23:10 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "memcg: add comments clarifying aspects of cache attribute propagation\n\nThis patch clarifies two aspects of cache attribute propagation.\n\nFirst, the expected context for the for_each_memcg_cache macro in\nmemcontrol.h.  The usages already in the codebase are safe.  In mm/slub.c,\nit is trivially safe because the lock is acquired right before the loop.\nIn mm/slab.c, it is less so: the lock is acquired by an outer function a\nfew steps back in the stack, so a VM_BUG_ON() is added to make sure it is\nindeed safe.\n\nA comment is also added to detail why we are returning the value of the\nparent cache and ignoring the children\u0027s when we propagate the attributes.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "92e793495597af4135d94314113bf13eafb0e663",
      "tree": "7647becc58b64c524de60f3262188239ed808416",
      "parents": [
        "107dab5c92d5f9c3afe962036e47c207363255c7"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:23:08 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:15 2012 -0800"
      },
      "message": "kmem: add slab-specific documentation about the kmem controller\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "107dab5c92d5f9c3afe962036e47c207363255c7",
      "tree": "17722e888fc00428ef1614a097bae82d1e9de87a",
      "parents": [
        "943a451a87d229ca564a27274b58eaeae35fde5d"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:23:05 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "slub: slub-specific propagation changes\n\nSLUB allows us to tune a particular cache behavior with sysfs-based\ntunables.  When creating a new memcg cache copy, we\u0027d like to preserve any\ntunables the parent cache already had.\n\nThis can be done by tapping into the store attribute function provided by\nthe allocator.  We of course don\u0027t need to mess with read-only fields.\nSince the attributes can have multiple types and are stored internally by\nsysfs, the best strategy is to issue a -\u003eshow() in the root cache, and\nthen -\u003estore() in the memcg cache.\n\nThe drawback of that, is that sysfs can allocate up to a page in buffering\nfor show(), that we are likely not to need, but also can\u0027t guarantee.  To\navoid always allocating a page for that, we can update the caches at store\ntime with the maximum attribute size ever stored to the root cache.  We\nwill then get a buffer big enough to hold it.  The corolary to this, is\nthat if no stores happened, nothing will be propagated.\n\nIt can also happen that a root cache has its tunables updated during\nnormal system operation.  In this case, we will propagate the change to\nall caches that are already active.\n\n[akpm@linux-foundation.org: tweak code to avoid __maybe_unused]\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "943a451a87d229ca564a27274b58eaeae35fde5d",
      "tree": "607a0bc1aba3911602dec1448be2ace190b5c1eb",
      "parents": [
        "749c54151a6e5b229e4ae067dbc651e54b161fbc"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:23:03 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "slab: propagate tunable values\n\nSLAB allows us to tune a particular cache behavior with tunables.  When\ncreating a new memcg cache copy, we\u0027d like to preserve any tunables the\nparent cache already had.\n\nThis could be done by an explicit call to do_tune_cpucache() after the\ncache is created.  But this is not very convenient now that the caches are\ncreated from common code, since this function is SLAB-specific.\n\nAnother method of doing that is taking advantage of the fact that\ndo_tune_cpucache() is always called from enable_cpucache(), which is\ncalled at cache initialization.  We can just preset the values, and then\nthings work as expected.\n\nIt can also happen that a root cache has its tunables updated during\nnormal system operation.  In this case, we will propagate the change to\nall caches that are already active.\n\nThis change will require us to move the assignment of root_cache in\nmemcg_params a bit earlier.  We need this to be already set - which\nmemcg_kmem_register_cache will do - when we reach __kmem_cache_create()\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "749c54151a6e5b229e4ae067dbc651e54b161fbc",
      "tree": "8d2d858e76e44d1bbf64439c189a57c18c8e60ae",
      "parents": [
        "22933152934f30de6f05b600c03f8a08f853a8d2"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:23:01 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "memcg: aggregate memcg cache values in slabinfo\n\nWhen we create caches in memcgs, we need to display their usage\ninformation somewhere.  We\u0027ll adopt a scheme similar to /proc/meminfo,\nwith aggregate totals shown in the global file, and per-group information\nstored in the group itself.\n\nFor the time being, only reads are allowed in the per-group cache.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "22933152934f30de6f05b600c03f8a08f853a8d2",
      "tree": "1abc838ffd9a130d25a493091dfe631145feea26",
      "parents": [
        "7cf2798240a2a2230cb16a391beef98d8a7ad362"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:59 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "memcg/sl[au]b: shrink dead caches\n\nThis means that when we destroy a memcg cache that happened to be empty,\nthose caches may take a lot of time to go away: removing the memcg\nreference won\u0027t destroy them - because there are pending references, and\nthe empty pages will stay there, until a shrinker is called upon for any\nreason.\n\nIn this patch, we will call kmem_cache_shrink() for all dead caches that\ncannot be destroyed because of remaining pages.  After shrinking, it is\npossible that it could be freed.  If this is not the case, we\u0027ll schedule\na lazy worker to keep trying.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7cf2798240a2a2230cb16a391beef98d8a7ad362",
      "tree": "989f28b74d08bf91938cc5a7fe632faa32e7542f",
      "parents": [
        "1f458cbf122288b23620ee822e19bcbb76c8d6ec"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "memcg/sl[au]b: track all the memcg children of a kmem_cache\n\nThis enables us to remove all the children of a kmem_cache being\ndestroyed, if for example the kernel module it\u0027s being used in gets\nunloaded.  Otherwise, the children will still point to the destroyed\nparent.\n\nSigned-off-by: Suleiman Souhlal \u003csuleiman@google.com\u003e\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f458cbf122288b23620ee822e19bcbb76c8d6ec",
      "tree": "fa434b9ff6d6bdfd2daaf24fd7812cc975cba7b7",
      "parents": [
        "d79923fad95b0cdf7770e024677180c734cb7148"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:50 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "memcg: destroy memcg caches\n\nImplement destruction of memcg caches.  Right now, only caches where our\nreference counter is the last remaining are deleted.  If there are any\nother reference counters around, we just leave the caches lying around\nuntil they go away.\n\nWhen that happens, a destruction function is called from the cache code.\nCaches are only destroyed in process context, so we queue them up for\nlater processing in the general case.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d79923fad95b0cdf7770e024677180c734cb7148",
      "tree": "e7cf6e9fb151d3c0d5c773fa1ba723a71b1e9329",
      "parents": [
        "b9ce5ef49f00daf2254c6953c8d31f79aabccd34"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:48 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "sl[au]b: allocate objects from memcg cache\n\nWe are able to match a cache allocation to a particular memcg.  If the\ntask doesn\u0027t change groups during the allocation itself - a rare event,\nthis will give us a good picture about who is the first group to touch a\ncache page.\n\nThis patch uses the now available infrastructure by calling\nmemcg_kmem_get_cache() before all the cache allocations.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9ce5ef49f00daf2254c6953c8d31f79aabccd34",
      "tree": "1da6afdbb3dc2e2d31f588dbfbf502e984af48a6",
      "parents": [
        "0e9d92f2d02d8c8320f0502307c688d07bdac2b3"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:46 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "sl[au]b: always get the cache from its page in kmem_cache_free()\n\nstruct page already has this information.  If we start chaining caches,\nthis information will always be more trustworthy than whatever is passed\ninto the function.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e9d92f2d02d8c8320f0502307c688d07bdac2b3",
      "tree": "bbbdb6759579766c60679963497064e0db3a6f32",
      "parents": [
        "d7f25f8a2f81252d1ac134470ba1d0a287cf8fcd"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:42 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "memcg: skip memcg kmem allocations in specified code regions\n\nCreate a mechanism that skip memcg allocations during certain pieces of\nour core code.  It basically works in the same way as\npreempt_disable()/preempt_enable(): By marking a region under which all\nallocations will be accounted to the root memcg.\n\nWe need this to prevent races in early cache creation, when we\nallocate data using caches that are not necessarily created already.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nyCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d7f25f8a2f81252d1ac134470ba1d0a287cf8fcd",
      "tree": "ecde8b5d98762e15a6fa1984d098ddf86646942b",
      "parents": [
        "55007d849759252ddd573aeb36143b947202d509"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:40 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:14 2012 -0800"
      },
      "message": "memcg: infrastructure to match an allocation to the right cache\n\nThe page allocator is able to bind a page to a memcg when it is\nallocated.  But for the caches, we\u0027d like to have as many objects as\npossible in a page belonging to the same cache.\n\nThis is done in this patch by calling memcg_kmem_get_cache in the\nbeginning of every allocation function.  This function is patched out by\nstatic branches when kernel memory controller is not being used.\n\nIt assumes that the task allocating, which determines the memcg in the\npage allocator, belongs to the same cgroup throughout the whole process.\nMisaccounting can happen if the task calls memcg_kmem_get_cache() while\nbelonging to a cgroup, and later on changes.  This is considered\nacceptable, and should only happen upon task migration.\n\nBefore the cache is created by the memcg core, there is also a possible\nimbalance: the task belongs to a memcg, but the cache being allocated from\nis the global cache, since the child cache is not yet guaranteed to be\nready.  This case is also fine, since in this case the GFP_KMEMCG will not\nbe passed and the page allocator will not attempt any cgroup accounting.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "55007d849759252ddd573aeb36143b947202d509",
      "tree": "d042bc2f717922fb73f9d526592eeb331c2f0f70",
      "parents": [
        "2633d7a028239a738b793be5ca8fa6ac312f5793"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:38 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "memcg: allocate memory for memcg caches whenever a new memcg appears\n\nEvery cache that is considered a root cache (basically the \"original\"\ncaches, tied to the root memcg/no-memcg) will have an array that should be\nlarge enough to store a cache pointer per each memcg in the system.\n\nTheoreticaly, this is as high as 1 \u003c\u003c sizeof(css_id), which is currently\nin the 64k pointers range.  Most of the time, we won\u0027t be using that much.\n\nWhat goes in this patch, is a simple scheme to dynamically allocate such\nan array, in order to minimize memory usage for memcg caches.  Because we\nwould also like to avoid allocations all the time, at least for now, the\narray will only grow.  It will tend to be big enough to hold the maximum\nnumber of kmem-limited memcgs ever achieved.\n\nWe\u0027ll allocate it to be a minimum of 64 kmem-limited memcgs.  When we have\nmore than that, we\u0027ll start doubling the size of this array every time the\nlimit is reached.\n\nBecause we are only considering kmem limited memcgs, a natural point for\nthis to happen is when we write to the limit.  At that point, we already\nhave set_limit_mutex held, so that will become our natural synchronization\nmechanism.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2633d7a028239a738b793be5ca8fa6ac312f5793",
      "tree": "48a9f157b2c2a8218611aaade9667cacc2e018ec",
      "parents": [
        "6ccfb5bcf52bcf100fa085946f044fdbba015048"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:34 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "slab/slub: consider a memcg parameter in kmem_create_cache\n\nAllow a memcg parameter to be passed during cache creation.  When the slub\nallocator is being used, it will only merge caches that belong to the same\nmemcg.  We\u0027ll do this by scanning the global list, and then translating\nthe cache to a memcg-specific cache\n\nDefault function is created as a wrapper, passing NULL to the memcg\nversion.  We only merge caches that belong to the same memcg.\n\nA helper is provided, memcg_css_id: because slub needs a unique cache name\nfor sysfs.  Since this is visible, but not the canonical location for slab\ndata, the cache name is not used, the css_id should suffice.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ccfb5bcf52bcf100fa085946f044fdbba015048",
      "tree": "51ceaa2eba8eabd07cca5de3e16b7c0cd85e41c2",
      "parents": [
        "ba6c496ed834a37a26fc6fc87fc9aecb0fa0014d"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:31 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "slab: annotate on-slab caches nodelist locks\n\nWe currently provide lockdep annotation for kmalloc caches, and also\ncaches that have SLAB_DEBUG_OBJECTS enabled.  The reason for this is that\nwe can quite frequently nest in the l3-\u003elist_lock lock, which is not\nsomething trivial to avoid.\n\nMy proposal with this patch, is to extend this to caches whose slab\nmanagement object lives within the slab as well (\"on_slab\").  The need for\nthis arose in the context of testing kmemcg-slab patches.  With such\npatchset, we can have per-memcg kmalloc caches.  So the same path that led\nto nesting between kmalloc caches will could then lead to in-memcg\nnesting.  Because they are not annotated, lockdep will trigger.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba6c496ed834a37a26fc6fc87fc9aecb0fa0014d",
      "tree": "cd229b78ca04817354865c9fdf57b564a6bf7852",
      "parents": [
        "d5bdae7d59451b9d63303f7794ef32bb76ba6330"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:27 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "slab/slub: struct memcg_params\n\nFor the kmem slab controller, we need to record some extra information in\nthe kmem_cache structure.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nSigned-off-by: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5bdae7d59451b9d63303f7794ef32bb76ba6330",
      "tree": "1e55e423c478d4cb0032f44f400ecd128084ed48",
      "parents": [
        "2ad306b17c0ac5a1b1f250d5f772aeb87fdf1eba"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:22 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "memcg: add documentation about the kmem controller\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nAcked-by: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ad306b17c0ac5a1b1f250d5f772aeb87fdf1eba",
      "tree": "743e6092019959dd455091d75b3fab2aa7f0a2aa",
      "parents": [
        "c8b2a36fb1597e9390cf4c1a7f2dd394dc7d7b17"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:18 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "fork: protect architectures where THREAD_SIZE \u003e\u003d PAGE_SIZE against fork bombs\n\nBecause those architectures will draw their stacks directly from the page\nallocator, rather than the slab cache, we can directly pass __GFP_KMEMCG\nflag, and issue the corresponding free_pages.\n\nThis code path is taken when the architecture doesn\u0027t define\nCONFIG_ARCH_THREAD_INFO_ALLOCATOR (only ia64 seems to), and has\nTHREAD_SIZE \u003e\u003d PAGE_SIZE.  Luckily, most - if not all - of the remaining\narchitectures fall in this category.\n\nThis will guarantee that every stack page is accounted to the memcg the\nprocess currently lives on, and will have the allocations to fail if they\ngo over limit.\n\nFor the time being, I am defining a new variant of THREADINFO_GFP, not to\nmess with the other path.  Once the slab is also tracked by memcg, we can\nget rid of that flag.\n\nTested to successfully protect against :(){ :|:\u0026 };:\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nAcked-by: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c8b2a36fb1597e9390cf4c1a7f2dd394dc7d7b17",
      "tree": "b43700c24ea8737138e523ebf492f3b29eb23ecf",
      "parents": [
        "bea207c86e4eb158bf20f7b36bee72da9272e8d3"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:13 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "memcg: execute the whole memcg freeing in free_worker()\n\nA lot of the initialization we do in mem_cgroup_create() is done with\nsoftirqs enabled.  This include grabbing a css id, which holds\n\u0026ss-\u003eid_lock-\u003erlock, and the per-zone trees, which holds\nrtpz-\u003elock-\u003erlock.  All of those signal to the lockdep mechanism that\nthose locks can be used in SOFTIRQ-ON-W context.\n\nThis means that the freeing of memcg structure must happen in a\ncompatible context, otherwise we\u0027ll get a deadlock, like the one below,\ncaught by lockdep:\n\n   free_accounted_pages+0x47/0x4c\n   free_task+0x31/0x5c\n   __put_task_struct+0xc2/0xdb\n   put_task_struct+0x1e/0x22\n   delayed_put_task_struct+0x7a/0x98\n   __rcu_process_callbacks+0x269/0x3df\n   rcu_process_callbacks+0x31/0x5b\n   __do_softirq+0x122/0x277\n\nThis usage pattern could not be triggered before kmem came into play.\nWith the introduction of kmem stack handling, it is possible that we call\nthe last mem_cgroup_put() from the task destructor, which is run in an rcu\ncallback.  Such callbacks are run with softirqs disabled, leading to the\noffensive usage pattern.\n\nIn general, we have little, if any, means to guarantee in which context\nthe last memcg_put will happen.  The best we can do is test it and try to\nmake sure no invalid context releases are happening.  But as we add more\ncode to memcg, the possible interactions grow in number and expose more\nways to get context conflicts.  One thing to keep in mind, is that part of\nthe freeing process is already deferred to a worker, such as vfree(), that\ncan only be called from process context.\n\nFor the moment, the only two functions we really need moved away are:\n\n  * free_css_id(), and\n  * mem_cgroup_remove_from_trees().\n\nBut because the later accesses per-zone info,\nfree_mem_cgroup_per_zone_info() needs to be moved as well.  With that, we\nare left with the per_cpu stats only.  Better move it all.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nTested-by: Greg Thelen \u003cgthelen@google.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bea207c86e4eb158bf20f7b36bee72da9272e8d3",
      "tree": "9e100534378fa916f739b6a595508b40eabc35c0",
      "parents": [
        "a8964b9b84f99c0b1b5d7c09520f89f0700e742e"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:11 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "memcg: allow a memcg with kmem charges to be destructed\n\nBecause the ultimate goal of the kmem tracking in memcg is to track slab\npages as well, we can\u0027t guarantee that we\u0027ll always be able to point a\npage to a particular process, and migrate the charges along with it -\nsince in the common case, a page will contain data belonging to multiple\nprocesses.\n\nBecause of that, when we destroy a memcg, we only make sure the\ndestruction will succeed by discounting the kmem charges from the user\ncharges when we try to empty the cgroup.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nAcked-by: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8964b9b84f99c0b1b5d7c09520f89f0700e742e",
      "tree": "468c57a6cd3bd03c91152ede7fdbcacc238341d2",
      "parents": [
        "7de37682bec35bbe0cd69b8112ef257bc5fb1c3e"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:09 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "memcg: use static branches when code not in use\n\nWe can use static branches to patch the code in or out when not used.\n\nBecause the _ACTIVE bit on kmem_accounted is only set after the increment\nis done, we guarantee that the root memcg will always be selected for kmem\ncharges until all call sites are patched (see memcg_kmem_enabled).  This\nguarantees that no mischarges are applied.\n\nStatic branch decrement happens when the last reference count from the\nkmem accounting in memcg dies.  This will only happen when the charges\ndrop down to 0.\n\nWhen that happens, we need to disable the static branch only on those\nmemcgs that enabled it.  To achieve this, we would be forced to complicate\nthe code by keeping track of which memcgs were the ones that actually\nenabled limits, and which ones got it from its parents.\n\nIt is a lot simpler just to do static_key_slow_inc() on every child\nthat is accounted.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7de37682bec35bbe0cd69b8112ef257bc5fb1c3e",
      "tree": "09d0ff77741b1f154005fb139adb4bd8520f9870",
      "parents": [
        "50bdd430c20566b13d8bc59946184b08f5875de6"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:07 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:13 2012 -0800"
      },
      "message": "memcg: kmem accounting lifecycle management\n\nBecause kmem charges can outlive the cgroup, we need to make sure that we\nwon\u0027t free the memcg structure while charges are still in flight.  For\nreviewing simplicity, the charge functions will issue mem_cgroup_get() at\nevery charge, and mem_cgroup_put() at every uncharge.\n\nThis can get expensive, however, and we can do better.  mem_cgroup_get()\nonly really needs to be issued once: when the first limit is set.  In the\nsame spirit, we only need to issue mem_cgroup_put() when the last charge\nis gone.\n\nWe\u0027ll need an extra bit in kmem_account_flags for that:\nKMEM_ACCOUNTED_DEAD.  it will be set when the cgroup dies, if there are\ncharges in the group.  If there aren\u0027t, we can proceed right away.\n\nOur uncharge function will have to test that bit every time the charges\ndrop to 0.  Because that is not the likely output of res_counter_uncharge,\nthis should not impose a big hit on us: it is certainly much better than a\nreference count decrease at every operation.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50bdd430c20566b13d8bc59946184b08f5875de6",
      "tree": "15ccc558002367c3d2c6b092ccc1d49e6d14acf1",
      "parents": [
        "6a1a0d3b625a4091e7a0eb249aefc6a644385149"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue Dec 18 14:22:04 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 18 15:02:12 2012 -0800"
      },
      "message": "res_counter: return amount of charges after res_counter_uncharge()\n\nIt is useful to know how many charges are still left after a call to\nres_counter_uncharge.  While it is possible to issue a res_counter_read\nafter uncharge, this can be racy.\n\nIf we need, for instance, to take some action when the counters drop down\nto 0, only one of the callers should see it.  This is the same semantics\nas the atomic variables in the kernel.\n\nSince the current return value is void, we don\u0027t need to worry about\nanything breaking due to this change: nobody relied on that, and only\nusers appearing from now on will be checking this value.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@redhat.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: JoonSoo Kim \u003cjs1304@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "6a1a0d3b625a4091e7a0eb249aefc6a644385149"
}
