{"push_id":710442329,"size":46,"distinct_size":46,"ref":"refs/heads/master","head":"6aaf0da8728c55ff627619f933ed161cc89057c6","before":"1bc5e157ed2b4f5b206155fc772d860158acd201","commits":[{"sha":"ad5fb870c486d932a1749d7853dd70f436a7e03f","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"e820, efi: add ACPI 6.0 persistent memory types\n\nACPI 6.0 formalizes e820-type-7 and efi-type-14 as persistent memory.\nMark it \"reserved\" and allow it to be claimed by a persistent memory\ndevice driver.\n\nThis definition is in addition to the Linux kernel's existing type-12\ndefinition that was recently added in support of shipping platforms with\nNVDIMM support that predate ACPI 6.0 (which now classifies type-12 as\nOEM reserved).\n\nNote, /proc/iomem can be consulted for differentiating legacy\n\"Persistent Memory (legacy)\" E820_PRAM vs standard \"Persistent Memory\"\nE820_PMEM.\n\nCc: Boaz Harrosh <boaz@plexistor.com>\nCc: Ingo Molnar <mingo@kernel.org>\nCc: Christoph Hellwig <hch@lst.de>\nCc: Andrew Morton <akpm@linux-foundation.org>\nCc: Borislav Petkov <bp@alien8.de>\nCc: H. Peter Anvin <hpa@zytor.com>\nCc: Jens Axboe <axboe@fb.com>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Matthew Wilcox <willy@linux.intel.com>\nCc: Thomas Gleixner <tglx@linutronix.de>\nAcked-by: Jeff Moyer <jmoyer@redhat.com>\nAcked-by: Andy Lutomirski <luto@amacapital.net>\nReviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>\nAcked-by: Christoph Hellwig <hch@lst.de>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/ad5fb870c486d932a1749d7853dd70f436a7e03f"},{"sha":"c31df25f20e35add6a453328c61eca15434fae18","author":{"email":"b05121bc1076dfe178a210973695cebd90cde508@gmail.com","name":"Kent Overstreet"},"message":"md/raid10: make sync_request_write() call bio_copy_data()\n\nRefactor sync_request_write() of md/raid10 to use bio_copy_data()\ninstead of open coding bio_vec iterations.\n\nCc: Christoph Hellwig <hch@infradead.org>\nCc: Neil Brown <neilb@suse.de>\nCc: linux-raid@vger.kernel.org\nReviewed-by: Christoph Hellwig <hch@lst.de>\nAcked-by: NeilBrown <neilb@suse.de>\nSigned-off-by: Kent Overstreet <kent.overstreet@gmail.com>\n[dpark: add more description in commit message]\nSigned-off-by: Dongsu Park <dpark@posteo.net>\nSigned-off-by: Ming Lin <mlin@kernel.org>\nSigned-off-by: NeilBrown <neilb@suse.de>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/c31df25f20e35add6a453328c61eca15434fae18"},{"sha":"4c9309c0cce96ea93be638dd243616e56e4bfe7d","author":{"email":"b99bff5923d24d2fb8e844db9dac7cd59203da1d@gmail.com","name":"Alexey Dobriyan"},"message":"md: convert to kstrto*()\n\nConvert away from deprecated simple_strto*() functions.\n\nAdd \"fit into sector_t\" checks.\n\nSigned-off-by: Alexey Dobriyan <adobriyan@gmail.com>\nSigned-off-by: NeilBrown <neilb@suse.de>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/4c9309c0cce96ea93be638dd243616e56e4bfe7d"},{"sha":"9f3520c3115b451ac1301779fc3c769d94907a70","author":{"email":"5dcef21195e64c9c08aa779bb62b25e9133eaa33@linux.intel.com","name":"Yuanhan Liu"},"message":"wait: introduce wait_event_exclusive_cmd\n\nIt's just a variant of wait_event_cmd(), with exclusive flag being set.\n\nFor cases like RAID5, which puts many processes to sleep until 1/4\nresources are free, a wake_up wakes up all processes to run, but\nthere is one process being able to get the resource as it's protected\nby a spin lock. That ends up introducing heavy lock contentions, and\nhurts performance badly.\n\nHere introduce wait_event_exclusive_cmd to relieve the lock contention\nnaturally by letting wake_up just wake up one process.\n\nCc: Ingo Molnar <mingo@redhat.com>\nCc: Peter Zijlstra <peterz@infradead.org>\nv2: its assumed that wait*() and __wait*() have the same arguments - peterz\n\nAcked-by: Peter Zijlstra (Intel) <peterz@infradead.org>\nSigned-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>\nSigned-off-by: NeilBrown <neilb@suse.de>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/9f3520c3115b451ac1301779fc3c769d94907a70"},{"sha":"b1b4648648e18775082858eca2517322f63e57a1","author":{"email":"5dcef21195e64c9c08aa779bb62b25e9133eaa33@linux.intel.com","name":"Yuanhan Liu"},"message":"md/raid5: split wait_for_stripe and introduce wait_for_quiescent\n\nI noticed heavy spin lock contention at get_active_stripe(), introduced\nat being wake up stage, where a bunch of processes try to re-hold the\nspin lock again.\n\nAfter giving some thoughts on this issue, I found the lock could be\nrelieved(and even avoided) if we turn the wait_for_stripe to per\nwaitqueue for each lock hash and make the wake up exclusive: wake up\none process each time, which avoids the lock contention naturally.\n\nBefore go hacking with wait_for_stripe, I found it actually has 2\nusages: for the array to enter or leave the quiescent state, and also\nto wait for an available stripe in each of the hash lists.\n\nSo this patch splits the first usage off into a separate wait_queue,\nwait_for_quiescent, and the next patch will turn the second usage into\none waitqueue for each hash value, and make it exclusive, to relieve\nthe lock contention.\n\nv2: wake_up(wait_for_quiescent) when (active_stripes == 0)\n    Commit log refactor suggestion from Neil.\n\nSigned-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>\nSigned-off-by: NeilBrown <neilb@suse.de>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/b1b4648648e18775082858eca2517322f63e57a1"},{"sha":"e9e4c377e2f563892c50d1d093dd55c7d518fc3d","author":{"email":"5dcef21195e64c9c08aa779bb62b25e9133eaa33@linux.intel.com","name":"Yuanhan Liu"},"message":"md/raid5: per hash value and exclusive wait_for_stripe\n\nI noticed heavy spin lock contention at get_active_stripe() with fsmark\nmultiple thread write workloads.\n\nHere is how this hot contention comes from. We have limited stripes, and\nit's a multiple thread write workload. Hence, those stripes will be taken\nsoon, which puts later processes to sleep for waiting free stripes. When\nenough stripes(>= 1/4 total stripes) are released, all process are woken,\ntrying to get the lock. But there is one only being able to get this lock\nfor each hash lock, making other processes spinning out there for acquiring\nthe lock.\n\nThus, it's effectiveless to wakeup all processes and let them battle for\na lock that permits one to access only each time. Instead, we could make\nit be a exclusive wake up: wake up one process only. That avoids the heavy\nspin lock contention naturally.\n\nTo do the exclusive wake up, we've to split wait_for_stripe into multiple\nwait queues, to make it per hash value, just like the hash lock.\n\nHere are some test results I have got with this patch applied(all test run\n3 times):\n\n`fsmark.files_per_sec'\n=====================\n\nnext-20150317                 this patch\n-------------------------     -------------------------\nmetric_value     ±stddev      metric_value     ±stddev     change      testbox/benchmark/testcase-params\n-------------------------     -------------------------   --------     ------------------------------\n      25.600     ±0.0              92.700     ±2.5          262.1%     ivb44/fsmark/1x-64t-4BRD_12G-RAID5-btrfs-4M-30G-fsyncBeforeClose\n      25.600     ±0.0              77.800     ±0.6          203.9%     ivb44/fsmark/1x-64t-9BRD_6G-RAID5-btrfs-4M-30G-fsyncBeforeClose\n      32.000     ±0.0              93.800     ±1.7          193.1%     ivb44/fsmark/1x-64t-4BRD_12G-RAID5-ext4-4M-30G-fsyncBeforeClose\n      32.000     ±0.0              81.233     ±1.7          153.9%     ivb44/fsmark/1x-64t-9BRD_6G-RAID5-ext4-4M-30G-fsyncBeforeClose\n      48.800     ±14.5             99.667     ±2.0          104.2%     ivb44/fsmark/1x-64t-4BRD_12G-RAID5-xfs-4M-30G-fsyncBeforeClose\n       6.400     ±0.0              12.800     ±0.0          100.0%     ivb44/fsmark/1x-64t-3HDD-RAID5-btrfs-4M-40G-fsyncBeforeClose\n      63.133     ±8.2              82.800     ±0.7           31.2%     ivb44/fsmark/1x-64t-9BRD_6G-RAID5-xfs-4M-30G-fsyncBeforeClose\n     245.067     ±0.7             306.567     ±7.9           25.1%     ivb44/fsmark/1x-64t-4BRD_12G-RAID5-f2fs-4M-30G-fsyncBeforeClose\n      17.533     ±0.3              21.000     ±0.8           19.8%     ivb44/fsmark/1x-1t-3HDD-RAID5-xfs-4M-40G-fsyncBeforeClose\n     188.167     ±1.9             215.033     ±3.1           14.3%     ivb44/fsmark/1x-1t-4BRD_12G-RAID5-btrfs-4M-30G-NoSync\n     254.500     ±1.8             290.733     ±2.4           14.2%     ivb44/fsmark/1x-1t-9BRD_6G-RAID5-btrfs-4M-30G-NoSync\n\n`time.system_time'\n=====================\n\nnext-20150317                 this patch\n-------------------------    -------------------------\nmetric_value     ±stddev     metric_value     ±stddev     change       testbox/benchmark/testcase-params\n-------------------------    -------------------------    --------     ------------------------------\n    7235.603     ±1.2             185.163     ±1.9          -97.4%     ivb44/fsmark/1x-64t-4BRD_12G-RAID5-btrfs-4M-30G-fsyncBeforeClose\n    7666.883     ±2.9             202.750     ±1.0          -97.4%     ivb44/fsmark/1x-64t-9BRD_6G-RAID5-btrfs-4M-30G-fsyncBeforeClose\n   14567.893     ±0.7             421.230     ±0.4          -97.1%     ivb44/fsmark/1x-64t-3HDD-RAID5-btrfs-4M-40G-fsyncBeforeClose\n    3697.667     ±14.0            148.190     ±1.7          -96.0%     ivb44/fsmark/1x-64t-4BRD_12G-RAID5-xfs-4M-30G-fsyncBeforeClose\n    5572.867     ±3.8             310.717     ±1.4          -94.4%     ivb44/fsmark/1x-64t-9BRD_6G-RAID5-ext4-4M-30G-fsyncBeforeClose\n    5565.050     ±0.5             313.277     ±1.5          -94.4%     ivb44/fsmark/1x-64t-4BRD_12G-RAID5-ext4-4M-30G-fsyncBeforeClose\n    2420.707     ±17.1            171.043     ±2.7          -92.9%     ivb44/fsmark/1x-64t-9BRD_6G-RAID5-xfs-4M-30G-fsyncBeforeClose\n    3743.300     ±4.6             379.827     ±3.5          -89.9%     ivb44/fsmark/1x-64t-3HDD-RAID5-ext4-4M-40G-fsyncBeforeClose\n    3308.687     ±6.3             363.050     ±2.0          -89.0%     ivb44/fsmark/1x-64t-3HDD-RAID5-xfs-4M-40G-fsyncBeforeClose\n\nWhere,\n\n     1x: where 'x' means iterations or loop, corresponding to the 'L' option of fsmark\n\n     1t, 64t: where 't' means thread\n\n     4M: means the single file size, corresponding to the '-s' option of fsmark\n     40G, 30G, 120G: means the total test size\n\n     4BRD_12G: BRD is the ramdisk, where '4' means 4 ramdisk, and where '12G' means\n               the size of one ramdisk. So, it would be 48G in total. And we made a\n               raid on those ramdisk\n\nAs you can see, though there are no much performance gain for hard disk\nworkload, the system time is dropped heavily, up to 97%. And as expected,\nthe performance increased a lot, up to 260%, for fast device(ram disk).\n\nv2: use bits instead of array to note down wait queue need to wake up.\n\nSigned-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>\nSigned-off-by: NeilBrown <neilb@suse.de>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/e9e4c377e2f563892c50d1d093dd55c7d518fc3d"},{"sha":"713bc5c2deb437ef40d48374ae6a57e030bd9e35","author":{"email":"c0c0c8857ed6ec93282de3ee9d47e224acf995af@fb.com","name":"Shaohua Li"},"message":"md/raid5: ignore released_stripes check\n\nconf->released_stripes list isn't always related to where there are\nfree stripes pending. Active stripes can be in the list too.\nAnd even free stripes were active very recently.\n\nSigned-off-by: Shaohua Li <shli@fb.com>\nSigned-off-by: NeilBrown <neilb@suse.de>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/713bc5c2deb437ef40d48374ae6a57e030bd9e35"},{"sha":"4e023612325a9034a542bfab79f78b1fe5ebb841","author":{"email":"827495a222d0086ae863c74ccd3d093f23b2b6f6@gmail.com","name":"Firo Yang"},"message":"md: fix a build warning\n\nWarning like this:\n\ndrivers/md/md.c: In function \"update_array_info\":\ndrivers/md/md.c:6394:26: warning: logical not is only applied\nto the left hand side of comparison [-Wlogical-not-parentheses]\n      !mddev->persistent  != info->not_persistent||\n\nFix it as Neil Brown said:\nmddev->persistent != !info->not_persistent ||\n\nSigned-off-by: Firo Yang <firogm@gmail.com>\nSigned-off-by: NeilBrown <neilb@suse.de>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/4e023612325a9034a542bfab79f78b1fe5ebb841"},{"sha":"b94d5230d06eb930be82e67fb1a9a58271e78297","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm, nfit: initial libnvdimm infrastructure and NFIT support\n\nA struct nvdimm_bus is the anchor device for registering nvdimm\nresources and interfaces, for example, a character control device,\nnvdimm devices, and I/O region devices.  The ACPI NFIT (NVDIMM Firmware\nInterface Table) is one possible platform description for such\nnon-volatile memory resources in a system.  The nfit.ko driver attaches\nto the \"ACPI0012\" device that indicates the presence of the NFIT and\nparses the table to register a struct nvdimm_bus instance.\n\nCc: <linux-acpi@vger.kernel.org>\nCc: Lv Zheng <lv.zheng@intel.com>\nCc: Robert Moore <robert.moore@intel.com>\nCc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nAcked-by: Jeff Moyer <jmoyer@redhat.com>\nAcked-by: Christoph Hellwig <hch@lst.de>\nAcked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/b94d5230d06eb930be82e67fb1a9a58271e78297"},{"sha":"45def22c1fab85764646746ce38d45b2f3281fa5","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm: control character device and nvdimm_bus sysfs attributes\n\nThe control device for a nvdimm_bus is registered as an \"nd\" class\ndevice.  The expectation is that there will usually only be one \"nd\" bus\nregistered under /sys/class/nd.  However, we allow for the possibility\nof multiple buses and they will listed in discovery order as\nndctl0...ndctlN.  This character device hosts the ioctl for passing\ncontrol messages.  The initial command set has a 1:1 correlation with\nthe commands listed in the by the \"NFIT DSM Example\" document [1], but\nthis scheme is extensible to future command sets.\n\nNote, nd_ioctl() and the backing ->ndctl() implementation are defined in\na subsequent patch.  This is simply the initial registrations and sysfs\nattributes.\n\n[1]: http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf\n\nCc: Neil Brown <neilb@suse.de>\nCc: Greg KH <gregkh@linuxfoundation.org>\nCc: <linux-acpi@vger.kernel.org>\nCc: Robert Moore <robert.moore@intel.com>\nCc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nAcked-by: Christoph Hellwig <hch@lst.de>\nAcked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/45def22c1fab85764646746ce38d45b2f3281fa5"},{"sha":"e6dfb2de47768efe8cc37c9a1863d2aff81440fb","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm, nfit: dimm/memory-devices\n\nEnable nvdimm devices to be registered on a nvdimm_bus.  The kernel\nassigned device id for nvdimm devicesis dynamic.  If userspace needs a\nmore static identifier it should consult a provider-specific attribute.\nIn the case where NFIT is the provider, the 'nmemX/nfit/handle' or\n'nmemX/nfit/serial' attributes may be used for this purpose.\n\nCc: Neil Brown <neilb@suse.de>\nCc: <linux-acpi@vger.kernel.org>\nCc: Greg KH <gregkh@linuxfoundation.org>\nCc: Robert Moore <robert.moore@intel.com>\nCc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nAcked-by: Christoph Hellwig <hch@lst.de>\nAcked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/e6dfb2de47768efe8cc37c9a1863d2aff81440fb"},{"sha":"62232e45f4a265abb43f0acf16e58f5d0b6e1ec9","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm: control (ioctl) messages for nvdimm_bus and nvdimm devices\n\nMost discovery/configuration of the nvdimm-subsystem is done via sysfs\nattributes.  However, some nvdimm_bus instances, particularly the\nACPI.NFIT bus, define a small set of messages that can be passed to the\nplatform.  For convenience we derive the initial libnvdimm-ioctl command\nformats directly from the NFIT DSM Interface Example formats.\n\n    ND_CMD_SMART: media health and diagnostics\n    ND_CMD_GET_CONFIG_SIZE: size of the label space\n    ND_CMD_GET_CONFIG_DATA: read label space\n    ND_CMD_SET_CONFIG_DATA: write label space\n    ND_CMD_VENDOR: vendor-specific command passthrough\n    ND_CMD_ARS_CAP: report address-range-scrubbing capabilities\n    ND_CMD_ARS_START: initiate scrubbing\n    ND_CMD_ARS_STATUS: report on scrubbing state\n    ND_CMD_SMART_THRESHOLD: configure alarm thresholds for smart events\n\nIf a platform later defines different commands than this set it is\nstraightforward to extend support to those formats.\n\nMost of the commands target a specific dimm.  However, the\naddress-range-scrubbing commands target the bus.  The 'commands'\nattribute in sysfs of an nvdimm_bus, or nvdimm, enumerate the supported\ncommands for that object.\n\nCc: <linux-acpi@vger.kernel.org>\nCc: Robert Moore <robert.moore@intel.com>\nCc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nReported-by: Nicholas Moulin <nicholas.w.moulin@linux.intel.com>\nAcked-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/62232e45f4a265abb43f0acf16e58f5d0b6e1ec9"},{"sha":"4d88a97aa9e8cfa6460aab119c5da60ad2267423","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm, nvdimm: dimm driver and base libnvdimm device-driver infrastructure\n\n* Implement the device-model infrastructure for loading modules and\n  attaching drivers to nvdimm devices.  This is a simple association of a\n  nd-device-type number with a driver that has a bitmask of supported\n  device types.  To facilitate userspace bind/unbind operations 'modalias'\n  and 'devtype', that also appear in the uevent, are added as generic\n  sysfs attributes for all nvdimm devices.  The reason for the device-type\n  number is to support sub-types within a given parent devtype, be it a\n  vendor-specific sub-type or otherwise.\n\n* The first consumer of this infrastructure is the driver\n  for dimm devices.  It simply uses control messages to retrieve and\n  store the configuration-data image (label set) from each dimm.\n\nNote: nd_device_register() arranges for asynchronous registration of\n      nvdimm bus devices by default.\n\nCc: Greg KH <gregkh@linuxfoundation.org>\nCc: Neil Brown <neilb@suse.de>\nAcked-by: Christoph Hellwig <hch@lst.de>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/4d88a97aa9e8cfa6460aab119c5da60ad2267423"},{"sha":"1f7df6f88b9245a7f2d0f8ecbc97dc88c8d0d8e1","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm, nfit: regions (block-data-window, persistent memory, volatile memory)\n\nA \"region\" device represents the maximum capacity of a BLK range (mmio\nblock-data-window(s)), or a PMEM range (DAX-capable persistent memory or\nvolatile memory), without regard for aliasing.  Aliasing, in the\ndimm-local address space (DPA), is resolved by metadata on a dimm to\ndesignate which exclusive interface will access the aliased DPA ranges.\nSupport for the per-dimm metadata/label arrvies is in a subsequent\npatch.\n\nThe name format of \"region\" devices is \"regionN\" where, like dimms, N is\na global ida index assigned at discovery time.  This id is not reliable\nacross reboots nor in the presence of hotplug.  Look to attributes of\nthe region or static id-data of the sub-namespace to generate a\npersistent name.  However, if the platform configuration does not change\nit is reasonable to expect the same region id to be assigned at the next\nboot.\n\n\"region\"s have 2 generic attributes \"size\", and \"mapping\"s where:\n- size: the BLK accessible capacity or the span of the\n  system physical address range in the case of PMEM.\n\n- mappingN: a tuple describing a dimm's contribution to the region's\n  capacity in the format (<nmemX>,<dpa>,<size>).  For a PMEM-region\n  there will be at least one mapping per dimm in the interleave set.  For\n  a BLK-region there is only \"mapping0\" listing the starting DPA of the\n  BLK-region and the available DPA capacity of that space (matches \"size\"\n  above).\n\nThe max number of mappings per \"region\" is hard coded per the\nconstraints of sysfs attribute groups.  That said the number of mappings\nper region should never exceed the maximum number of possible dimms in\nthe system.  If the current number turns out to not be enough then the\n\"mappings\" attribute clarifies how many there are supposed to be. \"32\nshould be enough for anybody...\".\n\nCc: Neil Brown <neilb@suse.de>\nCc: <linux-acpi@vger.kernel.org>\nCc: Greg KH <gregkh@linuxfoundation.org>\nCc: Robert Moore <robert.moore@intel.com>\nCc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nAcked-by: Christoph Hellwig <hch@lst.de>\nAcked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/1f7df6f88b9245a7f2d0f8ecbc97dc88c8d0d8e1"},{"sha":"3d88002e4a7bd40f355550284c6cd140e6fe29dc","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm: support for legacy (non-aliasing) nvdimms\n\nThe libnvdimm region driver is an intermediary driver that translates\nnon-volatile \"region\"s into \"namespace\" sub-devices that are surfaced by\npersistent memory block-device drivers (PMEM and BLK).\n\nACPI 6 introduces the concept that a given nvdimm may simultaneously\noffer multiple access modes to its media through direct PMEM load/store\naccess, or windowed BLK mode.  Existing nvdimms mostly implement a PMEM\ninterface, some offer a BLK-like mode, but never both as ACPI 6 defines.\nIf an nvdimm is single interfaced, then there is no need for dimm\nmetadata labels.  For these devices we can take the region boundaries\ndirectly to create a child namespace device (nd_namespace_io).\n\nAcked-by: Christoph Hellwig <hch@lst.de>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/3d88002e4a7bd40f355550284c6cd140e6fe29dc"},{"sha":"18da2c9ee41a036bf470dbad73c18a815725d36e","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm, pmem: move pmem to drivers/nvdimm/\n\nPrepare the pmem driver to consume PMEM namespaces emitted by regions of\nan nvdimm_bus instance.  No functional change.\n\nAcked-by: Christoph Hellwig <hch@lst.de>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/18da2c9ee41a036bf470dbad73c18a815725d36e"},{"sha":"9f53f9fa4ad1d8bddd4d14359cdabc531aedffe8","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm, pmem: add libnvdimm support to the pmem driver\n\nnd_pmem attaches to persistent memory regions and namespaces emitted by\nthe libnvdimm subsystem, and, same as the original pmem driver, presents\nthe system-physical-address range as a block device.\n\nThe existing e820-type-12 to pmem setup is converted to an nvdimm_bus\nthat emits an nd_namespace_io device.\n\nNote that the X in 'pmemX' is now derived from the parent region.  This\nprovides some stability to the pmem devices names from boot-to-boot.\nThe minor numbers are also more predictable by passing 0 to\nalloc_disk().\n\nCc: Andy Lutomirski <luto@amacapital.net>\nCc: Boaz Harrosh <boaz@plexistor.com>\nCc: H. Peter Anvin <hpa@zytor.com>\nCc: Jens Axboe <axboe@fb.com>\nCc: Ingo Molnar <mingo@kernel.org>\nCc: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>\nAcked-by: Christoph Hellwig <hch@lst.de>\nTested-by: Toshi Kani <toshi.kani@hp.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/9f53f9fa4ad1d8bddd4d14359cdabc531aedffe8"},{"sha":"eaf961536e1622ad21247ac8d44acd48ba65566e","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm, nfit: add interleave-set state-tracking infrastructure\n\nOn platforms that have firmware support for reading/writing per-dimm\nlabel space, a portion of the dimm may be accessible via an interleave\nset PMEM mapping in addition to the dimm's BLK (block-data-window\naperture(s)) interface.  A label, stored in a \"configuration data\nregion\" on the dimm, disambiguates which dimm addresses are accessed\nthrough which exclusive interface.\n\nAdd infrastructure that allows the kernel to block modifications to a\nlabel in the set while any member dimm is active.  Note that this is\nmeant only for enforcing \"no modifications of active labels\" via the\ncoarse ioctl command.  Adding/deleting namespaces from an active\ninterleave set is always possible via sysfs.\n\nAnother aspect of tracking interleave sets is tracking their integrity\nwhen DIMMs in a set are physically re-ordered.  For this purpose we\ngenerate an \"interleave-set cookie\" that can be recorded in a label and\nvalidated against the current configuration.  It is the bus provider\nimplementation's responsibility to calculate the interleave set cookie\nand attach it to a given region.\n\nCc: Neil Brown <neilb@suse.de>\nCc: <linux-acpi@vger.kernel.org>\nCc: Greg KH <gregkh@linuxfoundation.org>\nCc: Robert Moore <robert.moore@intel.com>\nCc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nAcked-by: Christoph Hellwig <hch@lst.de>\nAcked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/eaf961536e1622ad21247ac8d44acd48ba65566e"},{"sha":"4a826c83db4edc040da3a66dbefd53f0cfcf457d","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm: namespace indices: read and validate\n\nThis on media label format [1] consists of two index blocks followed by\nan array of labels.  None of these structures are ever updated in place.\nA sequence number tracks the current active index and the next one to\nwrite, while labels are written to free slots.\n\n    +------------+\n    |            |\n    |  nsindex0  |\n    |            |\n    +------------+\n    |            |\n    |  nsindex1  |\n    |            |\n    +------------+\n    |   label0   |\n    +------------+\n    |   label1   |\n    +------------+\n    |            |\n     ....nslot...\n    |            |\n    +------------+\n    |   labelN   |\n    +------------+\n\nAfter reading valid labels, store the dpa ranges they claim into\nper-dimm resource trees.\n\n[1]: http://pmem.io/documents/NVDIMM_Namespace_Spec.pdf\n\nCc: Neil Brown <neilb@suse.de>\nAcked-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/4a826c83db4edc040da3a66dbefd53f0cfcf457d"},{"sha":"bf9bccc14c05dae8caba29df6187c731710f5380","author":{"email":"24ee2bf0bd8ac766c348bf1f0639943bac1535c6@intel.com","name":"Dan Williams"},"message":"libnvdimm: pmem label sets and namespace instantiation.\n\nA complete label set is a PMEM-label per-dimm per-interleave-set where\nall the UUIDs match and the interleave set cookie matches the hosting\ninterleave set.\n\nPresent sysfs attributes for manipulation of a PMEM-namespace's\n'alt_name', 'uuid', and 'size' attributes.  A later patch will make\nthese settings persistent by writing back the label.\n\nNote that PMEM allocations grow forwards from the start of an interleave\nset (lowest dimm-physical-address (DPA)).  BLK-namespaces that alias\nwith a PMEM interleave set will grow allocations backward from the\nhighest DPA.\n\nCc: Greg KH <gregkh@linuxfoundation.org>\nCc: Neil Brown <neilb@suse.de>\nAcked-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/bf9bccc14c05dae8caba29df6187c731710f5380"}]}