)]}'
{
  "log": [
    {
      "commit": "9375db07adeaeea5f5ea7ca0463a8b371d71ddbb",
      "tree": "8825d1985a7bd6acd9e13de4594c574c81dd11fe",
      "parents": [
        "3119b487e03650b51589a86aac33098b7cc2a09e"
      ],
      "author": {
        "name": "Philipp Zabel",
        "email": "p.zabel@pengutronix.de",
        "time": "Mon Apr 29 16:17:10 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 18:28:13 2013 -0700"
      },
      "message": "genalloc: add devres support, allow to find a managed pool by device\n\nThis patch adds three exported functions to lib/genalloc.c:\ndevm_gen_pool_create, dev_get_gen_pool, and of_get_named_gen_pool.\n\ndevm_gen_pool_create is a managed version of gen_pool_create that keeps\ntrack of the pool via devres and allows the management code to\nautomatically destroy it after device removal.\n\ndev_get_gen_pool retrieves the gen_pool for a given device, if it was\ncreated with devm_gen_pool_create, using devres_find.\n\nof_get_named_gen_pool retrieves the gen_pool for a given device node and\nproperty name, where the property must contain a phandle pointing to a\nplatform device node.  The corresponding platform device is then fed into\ndev_get_gen_pool and the resulting gen_pool is returned.\n\n[akpm@linux-foundation.org: make the of_get_named_gen_pool() stub static, fixing a zillion link errors]\n[akpm@linux-foundation.org: squish \"struct device declared inside parameter list\" warning]\nSigned-off-by: Philipp Zabel \u003cp.zabel@pengutronix.de\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nTested-by: Michal Simek \u003cmonstr@monstr.eu\u003e\nCc: Fabio Estevam \u003cfabio.estevam@freescale.com\u003e\nCc: Matt Porter \u003cmporter@ti.com\u003e\nCc: Dong Aisheng \u003cdong.aisheng@linaro.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Rob Herring \u003crob.herring@calxeda.com\u003e\nCc: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nCc: Javier Martin \u003cjavier.martin@vista-silicon.com\u003e\nCc: Huang Shijie \u003cshijie8@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca279cf1065fb689abea1dc7d8c11787729bb185",
      "tree": "fdde907d1c3198f81c9085f858ac64c7a3cc50d8",
      "parents": [
        "e96875677fb2b7cb739c5d7769824dff7260d31d"
      ],
      "author": {
        "name": "Benjamin Gaignard",
        "email": "benjamin.gaignard@linaro.org",
        "time": "Thu Oct 04 17:13:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 06 03:04:57 2012 +0900"
      },
      "message": "genalloc: make it possible to use a custom allocation algorithm\n\nPremit use of another algorithm than the default first-fit one.  For\nexample a custom algorithm could be used to manage alignment requirements.\n\nAs I can\u0027t predict all the possible requirements/needs for all allocation\nuses cases, I add a \"free\" field \u0027void *data\u0027 to pass any needed\ninformation to the allocation function.  For example \u0027data\u0027 could be used\nto handle a structure where you store the alignment, the expected memory\nbank, the requester device, or any information that could influence the\nallocation algorithm.\n\nAn usage example may look like this:\nstruct my_pool_constraints {\n\tint align;\n\tint bank;\n\t...\n};\n\nunsigned long my_custom_algo(unsigned long *map, unsigned long size,\n\t\tunsigned long start, unsigned int nr, void *data)\n{\n\tstruct my_pool_constraints *constraints \u003d data;\n\t...\n\tdeal with allocation contraints\n\t...\n\treturn the index in bitmap where perform the allocation\n}\n\nvoid create_my_pool()\n{\n\tstruct my_pool_constraints c;\n\tstruct gen_pool *pool \u003d gen_pool_create(...);\n\tgen_pool_add(pool, ...);\n\tgen_pool_set_algo(pool, my_custom_algo, \u0026c);\n}\n\nAdd of best-fit algorithm function:\nmost of the time best-fit is slower then first-fit but memory fragmentation\nis lower. The random buffer allocation/free tests don\u0027t show any arithmetic\nrelation between the allocation time and fragmentation but the\nbest-fit algorithm\nis sometime able to perform the allocation when the first-fit can\u0027t.\n\nThis new algorithm help to remove static allocations on ESRAM, a small but\nfast on-chip RAM of few KB, used for high-performance uses cases like DMA\nlinked lists, graphic accelerators, encoders/decoders. On the Ux500\n(in the ARM tree) we have define 5 ESRAM banks of 128 KB each and use of\nstatic allocations becomes unmaintainable:\ncd arch/arm/mach-ux500 \u0026\u0026 grep -r ESRAM .\n./include/mach/db8500-regs.h:/* Base address and bank offsets for ESRAM */\n./include/mach/db8500-regs.h:#define U8500_ESRAM_BASE   0x40000000\n./include/mach/db8500-regs.h:#define U8500_ESRAM_BANK_SIZE      0x00020000\n./include/mach/db8500-regs.h:#define U8500_ESRAM_BANK0  U8500_ESRAM_BASE\n./include/mach/db8500-regs.h:#define U8500_ESRAM_BANK1       (U8500_ESRAM_BASE + U8500_ESRAM_BANK_SIZE)\n./include/mach/db8500-regs.h:#define U8500_ESRAM_BANK2       (U8500_ESRAM_BANK1 + U8500_ESRAM_BANK_SIZE)\n./include/mach/db8500-regs.h:#define U8500_ESRAM_BANK3       (U8500_ESRAM_BANK2 + U8500_ESRAM_BANK_SIZE)\n./include/mach/db8500-regs.h:#define U8500_ESRAM_BANK4       (U8500_ESRAM_BANK3 + U8500_ESRAM_BANK_SIZE)\n./include/mach/db8500-regs.h:#define U8500_ESRAM_DMA_LCPA_OFFSET     0x10000\n./include/mach/db8500-regs.h:#define U8500_DMA_LCPA_BASE\n(U8500_ESRAM_BANK0 + U8500_ESRAM_DMA_LCPA_OFFSET)\n./include/mach/db8500-regs.h:#define U8500_DMA_LCLA_BASE U8500_ESRAM_BANK4\n\nI want to use genalloc to do dynamic allocations but I need to be able to\nfine tune the allocation algorithm. I my case best-fit algorithm give\nbetter results than first-fit, but it will not be true for every use case.\n\nSigned-off-by: Benjamin Gaignard \u003cbenjamin.gaignard@stericsson.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f184275aa306046fe7edcbef3229754f0d97402",
      "tree": "e2f82957072dd1ada3a4bc6c0281a6296123d8a0",
      "parents": [
        "f49f23abf3dd786ddcac1c1e7db3c2013b07413f"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Wed Jul 13 13:14:24 2011 +0800"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Wed Aug 03 11:15:57 2011 -0400"
      },
      "message": "lib, Make gen_pool memory allocator lockless\n\nThis version of the gen_pool memory allocator supports lockless\noperation.\n\nThis makes it safe to use in NMI handlers and other special\nunblockable contexts that could otherwise deadlock on locks.  This is\nimplemented by using atomic operations and retries on any conflicts.\nThe disadvantage is that there may be livelocks in extreme cases.  For\nbetter scalability, one gen_pool allocator can be used for each CPU.\n\nThe lockless operation only works if there is enough memory available.\nIf new memory is added to the pool a lock has to be still taken.  So\nany user relying on locklessness has to ensure that sufficient memory\nis preallocated.\n\nThe basic atomic operation of this allocator is cmpxchg on long.  On\narchitectures that don\u0027t have NMI-safe cmpxchg implementation, the\nallocator can NOT be used in NMI handler.  So code uses the allocator\nin NMI handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nReviewed-by: Andi Kleen \u003cak@linux.intel.com\u003e\nReviewed-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "3c8f370ded3483b27f1218ff0051fcf0c7a2facd",
      "tree": "da0bcb089d586737ddf14e6d610ded5d3134e8d9",
      "parents": [
        "6aae6e0304d33e537298867dafb2703ec58c2e4f"
      ],
      "author": {
        "name": "Jean-Christophe PLAGNIOL-VILLARD",
        "email": "plagnioj@jcrosoft.com",
        "time": "Tue May 24 17:13:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:54 2011 -0700"
      },
      "message": "lib/genalloc.c: add support for specifying the physical address\n\nSo we can specify the virtual address as the base of the pool chunk and\nthen get physical addresses for hardware IP.\n\nFor example on at91 we will use this on spi, uart or macb\n\nSigned-off-by: Jean-Christophe PLAGNIOL-VILLARD \u003cplagnioj@jcrosoft.com\u003e\nCc: Nicolas Ferre \u003cnicolas.ferre@atmel.com\u003e\nCc: Patrice VILCHEZ \u003cpatrice.vilchez@atmel.com\u003e\nCc: Jes Sorensen \u003cjes@wildopensource.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6aae6e0304d33e537298867dafb2703ec58c2e4f",
      "tree": "6da4dff0d02cfd2b5bcb4fefbe640ccca59b5061",
      "parents": [
        "44ec7abe359204cc9186e32d31ef5b34c8d17274"
      ],
      "author": {
        "name": "Jean-Christophe PLAGNIOL-VILLARD",
        "email": "plagnioj@jcrosoft.com",
        "time": "Tue May 24 17:13:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:53 2011 -0700"
      },
      "message": "include/linux/genalloc.h: add multiple-inclusion guards\n\nSigned-off-by: Jean-Christophe PLAGNIOL-VILLARD \u003cplagnioj@jcrosoft.com\u003e\nCc: Nicolas Ferre \u003cnicolas.ferre@atmel.com\u003e\nCc: Patrice VILCHEZ \u003cpatrice.vilchez@atmel.com\u003e\nCc: Jes Sorensen \u003cjes@wildopensource.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "322acc96d4bd3debea11cd0160b18bd5d7ff0d73",
      "tree": "230e9c35e0ce4dac5bd1a49085152624045fb616",
      "parents": [
        "d834c16516d1ebec4766fc58c059bf01311e6045"
      ],
      "author": {
        "name": "Steve Wise",
        "email": "swise@opengridcomputing.com",
        "time": "Mon Oct 02 02:17:00 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:12 2006 -0700"
      },
      "message": "[PATCH] LIB: add gen_pool_destroy()\n\nModules using the genpool allocator need to be able to destroy the data\nstructure when unloading.\n\nSigned-off-by: Steve Wise \u003cswise@opengridcomputing.com\u003e\nCc: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc: Dean Nelson \u003cdcn@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "929f97276bcf7f4a95272ed08a85339b98ba210d",
      "tree": "4975698af9559279c83e4e268213ed13e3efee9a",
      "parents": [
        "833423143c3a7c6545e409d65febd0d92deb351b"
      ],
      "author": {
        "name": "Dean Nelson",
        "email": "dcn@sgi.com",
        "time": "Fri Jun 23 02:03:21 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:49 2006 -0700"
      },
      "message": "[PATCH] change gen_pool allocator to not touch managed memory\n\nModify the gen_pool allocator (lib/genalloc.c) to utilize a bitmap scheme\ninstead of the buddy scheme.  The purpose of this change is to eliminate\nthe touching of the actual memory being allocated.\n\nSince the change modifies the interface, a change to the uncached allocator\n(arch/ia64/kernel/uncached.c) is also required.\n\nBoth Andrey Volkov and Jes Sorenson have expressed a desire that the\ngen_pool allocator not write to the memory being managed. See the\nfollowing:\n\n  http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113518602713125\u0026w\u003d2\n  http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113533568827916\u0026w\u003d2\n\nSigned-off-by: Dean Nelson \u003cdcn@sgi.com\u003e\nCc: Andrey Volkov \u003cavolkov@varma-el.com\u003e\nAcked-by: Jes Sorensen \u003cjes@trained-monkey.org\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f14f75b81187cdbe10cc53a521bf9fdf97b59f8c",
      "tree": "5c0d48c8a3338e6f1747e6cd55f699be96ffef1a",
      "parents": [
        "2caaad41e4aa8f5dd999695b4ddeaa0e7f3912a4"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@wildopensource.com",
        "time": "Tue Jun 21 17:15:02 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:18 2005 -0700"
      },
      "message": "[PATCH] ia64 uncached alloc\n\nThis patch contains the ia64 uncached page allocator and the generic\nallocator (genalloc).  The uncached allocator was formerly part of the SN2\nmspec driver but there are several other users of it so it has been split\noff from the driver.\n\nThe generic allocator can be used by device driver to manage special memory\netc.  The generic allocator is based on the allocator from the sym53c8xx_2\ndriver.\n\nVarious users on ia64 needs uncached memory.  The SGI SN architecture requires\nit for inter-partition communication between partitions within a large NUMA\ncluster.  The specific user for this is the XPC code.  Another application is\nlarge MPI style applications which use it for synchronization, on SN this can\nbe done using special \u0027fetchop\u0027 operations but it also benefits non SN\nhardware which may use regular uncached memory for this purpose.  Performance\nof doing this through uncached vs cached memory is pretty substantial.  This\nis handled by the mspec driver which I will push out in a seperate patch.\n\nRather than creating a specific allocator for just uncached memory I came up\nwith genalloc which is a generic purpose allocator that can be used by device\ndrivers and other subsystems as they please.  For instance to handle onboard\ndevice memory.  It was derived from the sym53c7xx_2 driver\u0027s allocator which\nis also an example of a potential user (I am refraining from modifying sym2\nright now as it seems to have been under fairly heavy development recently).\n\nOn ia64 memory has various properties within a granule, ie.  it isn\u0027t safe to\naccess memory as uncached within the same granule as currently has memory\naccessed in cached mode.  The regular system therefore doesn\u0027t utilize memory\nin the lower granules which is mixed in with device PAL code etc.  The\nuncached driver walks the EFI memmap and pulls out the spill uncached pages\nand sticks them into the uncached pool.  Only after these chunks have been\nutilized, will it start converting regular cached memory into uncached memory.\nHence the reason for the EFI related code additions.\n\nSigned-off-by: Jes Sorensen \u003cjes@wildopensource.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
