[PATCH v3-UPDATE 1/3] acpi: Add acpi_map_pxm_to_online_node()
by Toshi Kani
The kernel initializes CPU & memory's NUMA topology from ACPI
SRAT table. Some other ACPI tables, such as NFIT and DMAR, also
contain proximity IDs for their device's NUMA topology. This
information can be used to improve performance of these devices.
This patch introduces acpi_map_pxm_to_online_node(), which is
similar to acpi_map_pxm_to_node(), but always returns an online
node. When the mapped node from a given proximity ID is offline,
it looks up the node distance table and returns the nearest
online node.
ACPI device drivers, which are called after the NUMA initialization
has completed in the kernel, can call this interface to obtain their
device NUMA topology from ACPI tables. Such drivers do not have to
deal with offline nodes. A node may be offline when a device
proximity ID is unique, SRAT memory entry does not exist, or NUMA is
disabled, ex. "numa=off" on x86.
This patch also moves the pxm range check from acpi_get_node() to
acpi_map_pxm_to_node().
Signed-off-by: Toshi Kani <toshi.kani(a)hp.com>
---
UPDATE: Remove "-" from "on-line" and "off-line".
---
drivers/acpi/numa.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++---
include/linux/acpi.h | 5 +++++
2 files changed, 52 insertions(+), 3 deletions(-)
diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index 1333cbdc..acaa3b4 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -29,6 +29,8 @@
#include <linux/errno.h>
#include <linux/acpi.h>
#include <linux/numa.h>
+#include <linux/nodemask.h>
+#include <linux/topology.h>
#define PREFIX "ACPI: "
@@ -70,7 +72,12 @@ static void __acpi_map_pxm_to_node(int pxm, int node)
int acpi_map_pxm_to_node(int pxm)
{
- int node = pxm_to_node_map[pxm];
+ int node;
+
+ if (pxm < 0 || pxm >= MAX_PXM_DOMAINS)
+ return NUMA_NO_NODE;
+
+ node = pxm_to_node_map[pxm];
if (node == NUMA_NO_NODE) {
if (nodes_weight(nodes_found_map) >= MAX_NUMNODES)
@@ -83,6 +90,45 @@ int acpi_map_pxm_to_node(int pxm)
return node;
}
+/**
+ * acpi_map_pxm_to_online_node - Map proximity ID to online node
+ * @pxm: ACPI proximity ID
+ *
+ * This is similar to acpi_map_pxm_to_node(), but always returns an online
+ * node. When the mapped node from a given proximity ID is offline, it
+ * looks up the node distance table and returns the nearest online node.
+ *
+ * ACPI device drivers, which are called after the NUMA initialization has
+ * completed in the kernel, can call this interface to obtain their device
+ * NUMA topology from ACPI tables. Such drivers do not have to deal with
+ * offline nodes. A node may be offline when a device proximity ID is
+ * unique, SRAT memory entry does not exist, or NUMA is disabled, ex.
+ * "numa=off" on x86.
+ */
+int acpi_map_pxm_to_online_node(int pxm)
+{
+ int node, n, dist, min_dist;
+
+ node = acpi_map_pxm_to_node(pxm);
+
+ if (node == NUMA_NO_NODE)
+ node = 0;
+
+ if (!node_online(node)) {
+ min_dist = INT_MAX;
+ for_each_online_node(n) {
+ dist = node_distance(node, n);
+ if (dist < min_dist) {
+ min_dist = dist;
+ node = n;
+ }
+ }
+ }
+
+ return node;
+}
+EXPORT_SYMBOL(acpi_map_pxm_to_online_node);
+
static void __init
acpi_table_print_srat_entry(struct acpi_subtable_header *header)
{
@@ -328,8 +374,6 @@ int acpi_get_node(acpi_handle handle)
int pxm;
pxm = acpi_get_pxm(handle);
- if (pxm < 0 || pxm >= MAX_PXM_DOMAINS)
- return NUMA_NO_NODE;
return acpi_map_pxm_to_node(pxm);
}
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index e4da5e3..1b3bbb1 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -289,8 +289,13 @@ extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d);
extern void acpi_osi_setup(char *str);
#ifdef CONFIG_ACPI_NUMA
+int acpi_map_pxm_to_online_node(int pxm);
int acpi_get_node(acpi_handle handle);
#else
+static inline int acpi_map_pxm_to_online_node(int pxm)
+{
+ return 0;
+}
static inline int acpi_get_node(acpi_handle handle)
{
return 0;
5 years, 7 months
[-tip PATCH v4 0/6] pmem api, generic ioremap_cache, and memremap
by Dan Williams
The pmem api is responsible for shepherding data out to persistent
media. The pmem driver uses this api, when available, to assert that
data is durable by the time bio_endio() is invoked. When an
architecture or cpu can not make persistence guarantees the driver warns
and falls back to "best effort" implementation.
Changes since v3 [1]:
Rebased on tip/master now that Toshi's ioremap_wt() patches have landed
in -tip. The primary change was reflowing the patches against the newly
alphabetized 'select' options under config X86.
[1]: https://lists.01.org/pipermail/linux-nvdimm/2015-June/001081.html
---
Dan Williams (5):
arch: unify ioremap prototypes and macro aliases
cleanup IORESOURCE_CACHEABLE vs ioremap()
arch/*/asm/io.h: add ioremap_cache() to all architectures
devm: fix ioremap_cache() usage
arch: introduce memremap_cache() and memremap_wt()
Ross Zwisler (1):
arch, x86: pmem api for ensuring durability of persistent memory updates
arch/arc/include/asm/io.h | 1
arch/arm/Kconfig | 1
arch/arm/include/asm/io.h | 2 +
arch/arm/mach-clps711x/board-cdb89712.c | 2 -
arch/arm64/Kconfig | 1
arch/arm64/include/asm/io.h | 3 +
arch/arm64/kernel/efi.c | 4 +
arch/arm64/kernel/smp_spin_table.c | 10 ++-
arch/avr32/include/asm/io.h | 1
arch/cris/include/asm/io.h | 8 +-
arch/cris/mm/ioremap.c | 6 +-
arch/frv/Kconfig | 1
arch/frv/include/asm/io.h | 6 ++
arch/ia64/include/asm/io.h | 9 +--
arch/ia64/mm/ioremap.c | 4 +
arch/m32r/include/asm/io.h | 1
arch/m68k/Kconfig | 1
arch/m68k/include/asm/io_mm.h | 7 ++
arch/m68k/include/asm/io_no.h | 5 ++
arch/metag/Kconfig | 1
arch/metag/include/asm/io.h | 5 ++
arch/microblaze/include/asm/io.h | 1
arch/mips/Kconfig | 1
arch/mips/include/asm/io.h | 17 ++++-
arch/mn10300/include/asm/io.h | 1
arch/nios2/include/asm/io.h | 1
arch/powerpc/Kconfig | 1
arch/powerpc/include/asm/io.h | 2 -
arch/powerpc/kernel/pci_of_scan.c | 2 -
arch/s390/include/asm/io.h | 1
arch/sparc/include/asm/io_32.h | 1
arch/sparc/include/asm/io_64.h | 9 ++-
arch/sparc/kernel/pci.c | 3 -
arch/tile/include/asm/io.h | 1
arch/x86/Kconfig | 2 +
arch/x86/include/asm/cacheflush.h | 36 +++++++++++
arch/x86/include/asm/io.h | 7 ++
arch/x86/kernel/crash_dump_64.c | 6 +-
arch/x86/kernel/kdebugfs.c | 8 +-
arch/x86/kernel/ksysfs.c | 28 ++++-----
arch/x86/mm/ioremap.c | 10 +--
arch/xtensa/Kconfig | 1
arch/xtensa/include/asm/io.h | 3 +
drivers/acpi/apei/einj.c | 8 +-
drivers/acpi/apei/erst.c | 4 +
drivers/block/Kconfig | 1
drivers/block/pmem.c | 76 +++++++++++++++++++++--
drivers/firmware/google/memconsole.c | 4 +
drivers/pci/probe.c | 3 -
drivers/pnp/manager.c | 2 -
drivers/scsi/aic94xx/aic94xx_init.c | 7 --
drivers/scsi/arcmsr/arcmsr_hba.c | 5 --
drivers/scsi/mvsas/mv_init.c | 15 +----
drivers/video/fbdev/ocfb.c | 1
include/asm-generic/io.h | 8 ++
include/asm-generic/iomap.h | 4 +
include/linux/compiler.h | 2 +
include/linux/device.h | 5 ++
include/linux/io.h | 6 ++
include/linux/pmem.h | 102 +++++++++++++++++++++++++++++++
kernel/resource.c | 41 ++++++++++++
lib/Kconfig | 8 ++
lib/devres.c | 48 ++++++---------
lib/pci_iomap.c | 7 +-
64 files changed, 440 insertions(+), 138 deletions(-)
create mode 100644 include/linux/pmem.h
5 years, 7 months
[PATCH v2 0/3] Add NUMA support for NVDIMM devices
by Toshi Kani
Since NVDIMMs are installed on memory slots, they expose the NUMA
topology of a platform. This patchset adds support of sysfs
'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
This enables numactl(8) to accept 'block:' and 'file:' paths of
pmem and btt devices as shown in the examples below.
numactl --preferred block:pmem0 --show
numactl --preferred file:/dev/pmem0s --show
numactl can be used to bind an application to the locality of
a target NVDIMM for better performance. Here is a result of fio
benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
remote settings.
Local [1] : 4098.3MB/s
Remote [2]: 3718.4MB/s
[1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio <fs-on-pmem0>
[2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio <fs-on-pmem0>
Patch 1/3 applies on top of the acpica branch of the pm tree.
Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of
"libnvdimm: non-volatile memory devices".
---
v2:
- Add acpi_map_pxm_to_online_node(), which returns an online node.
- Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
- Check ACPI_NFIT_PROXIMITY_VALID in spa->flags.
---
Toshi Kani (3):
1/3 acpi: Add acpi_map_pxm_to_online_node()
2/3 libnvdimm: Set numa_node to NVDIMM devices
3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices
---
drivers/acpi/nfit.c | 7 +++++++
drivers/acpi/numa.c | 40 +++++++++++++++++++++++++++++++++++++---
drivers/nvdimm/btt.c | 2 ++
drivers/nvdimm/btt_devs.c | 1 +
drivers/nvdimm/bus.c | 30 ++++++++++++++++++++++++++++++
drivers/nvdimm/namespace_devs.c | 1 +
drivers/nvdimm/nd.h | 1 +
drivers/nvdimm/region.c | 1 +
drivers/nvdimm/region_devs.c | 1 +
include/linux/acpi.h | 5 +++++
include/linux/libnvdimm.h | 2 ++
11 files changed, 88 insertions(+), 3 deletions(-)
5 years, 7 months
看看项目到底该怎么做
by 谈攒有
〇
《项目管理实战操作》——(2天实践型)
【培训时间】2015年7月09-10上海 7月23-24深圳
【培训对象】项目总监、部门经理、高级项目经理、项目团队成员等,特别适合正在从事项目管理的人员
【授课方式】讲师讲授 + 视频演绎 + 案例研讨 +角色扮演 + 讲师点评
【培训费用】5200元/人/两天( 含授课、午餐、茶点饮料、教材资料 )
【值班手机】 0512-6870.0651 (0)189.1255.4177
课程背景:
随着市场竞争的日益加剧,企业只靠维持现状的执行系统越来越不能满足不断变化的市场需求,因而项
目管理也越来越受到企业的重视。本课程通过讲师讲解、案例分析、小组讨论、学员练习等授课方式,给你
带来全新的思维视角,让深陷项目困扰的你蓦然回首、茅塞顿开。整个课程远离理论上的说教,而是强调如
何把项目管理的工具和技巧应用到实际的项目中去,去解决项目管理过程中经常出现的范围不清、质量缺陷
、进度拖期等具体问题。
课程收益:
对企业而言,我们确保学员在培训完成后,大家能用同一种理念,同一种方法,同一种图解,同一种表
格来完成项目。
1、参训的每一位学员培训后都将培养成具有以下,项目经理必备的,三种能力:
A、确定范围
B、在范围内完成任务的可置信度
C、分析趋势的能力
课程宗旨:
“今天培训结束,明天开始动手。”---培训就是为了改变理念,把所学到的管理工具运用到平时的工作中
去。“没有图表就是没有管理,没有数字就是没有控制”。
课程大纲:
第一天
一、项目及项目管理
什么叫项目
项目的特点
什么叫管理
什么叫项目管理
课堂练习
回答参加者问题
学员练习:
做练习题
讨论
学员提问
二、项目及其所处的环境分析
项目中投资人与项目经理的关系
项目经理的职责
项目中利害关系人分析
项目早期估算的一般工具
项目阶段图和资源图的制作方法
讨论
提问
三、项目沟通管理
项目的横向沟通
项目中跨部门协调的问题解决方法
项目的归属和项目目标SMART分析方法
项目管理的发展历史
项目工作陈述表的制作方法
提问
做跨部门协调表格练习
课堂作业:
完成项目启动阶段的“二图一表”
完成案例中的“阶段图”、“资源图”和“工作陈述表”
第二天:
四、项目范围管理(WBS 和RAM 的制作方法和规定)
项目的工作分解结构(WBS)
WBS的评估方法
WBS中的注意事项
一个完整的WBS系统应该达到什么目的
项目的责任矩阵表(RAM)
布置课堂作业(学员案例中的WBS和RAM )
提问
交流
每人做案例模拟的开头3个模块
课堂作业:
完成项目范围阶段的“一图一表”
课堂完成案例中的WBS和RAM
五、项目时间管理(网络图的基本制作方法)
制作任务与任务之间的逻辑网络图(PDM,ADM,GERT,Network Board)的四种方法
讨论所做的案例
发表对项目时间管理的看法
根据项目时间管理的规定,各自发表个人的意见
六、项目时间管理(带有CPM网络图的制作方法)
课堂练习:
初级网络图制作
高级网络图内容及制作方法
小组练习
课堂练习---初级网络图制作
小组练习---以小组形式完成高级网络图等练习
七、项目时间管理(9大工具及CPM网络图的10大用途)
带有CPM的网络图的特点及十大功能
甘特图的作用
做阿尔法案例
总结项目时间管理的九大工具
解答学员问题
做阿尔法案例练习
学员提问
掌握项目经理必备的4个工具(WBS,RAM,CPM图,甘特图)
课程结束总结:
学员问题与答疑
项目“五图二表”的总结
布置课后作业
学员积极提问
收集完成回家作业的基本方法
9:54:56
5 years, 7 months
[ndctl PATCH 0/6] nvdimm flags, read-only devices, and a fix for zeroing-labels
by Dan Williams
The bulk of this update is unit test extensions for verifying that
libnvdimm properly marks namespaces and btts as read-only depending on
the state of the "energy-source armed" flag in the NFIT. See patch14
[1] and patch15 [2] in the latest kernel updates.
The ndctl_dimm_zero_labels() library call was neglecting to flush the
cached copy of the labels being held by the kernel. That is now fixed.
Finally, some minor cleanups to the debug output to make it more
relevant/readable.
[1]: https://lists.01.org/pipermail/linux-nvdimm/2015-June/001260.html
[2]: https://lists.01.org/pipermail/linux-nvdimm/2015-June/001261.html
---
Dan Williams (6):
ndctl: quiet ndctl_cmd command debug
ndctl: trigger the kernel to re-read labels after zeroing
ndctl: add README.md
ndctl: nvdimm flags
ndctl: improve module binding debug
ndctl: update local ndctl.h
README.md | 43 ++++++++++
lib/libndctl.c | 193 +++++++++++++++++++++++++++++++++++++------
lib/libndctl.sym | 8 ++
lib/ndctl/libndctl.h | 8 ++
lib/test-libndctl.c | 225 ++++++++++++++++++++++++++++++++++++++++++--------
ndctl.h | 12 +--
6 files changed, 420 insertions(+), 69 deletions(-)
create mode 100644 README.md
5 years, 7 months
[PATCH v6 00/21] libnvdimm: non-volatile memory devices
by Dan Williams
A new sub-system in support of non-volatile memory storage devices. See
"[PATCH v6 21/21] libnvdimm: Non-Volatile Devices" for an overview.
Changes since v5 [1]:
1/ Add rationale/justification to the changelog for "[PATCH v6 20/21]
tools/testing/nvdimm: libnvdimm unit test infrastructure". Explain
why QEMU is not suitable. (Christoph)
2/ Expand the changelog of "[PATCH v6 18/21] nd_btt: atomic sector
updates" to give the reasoning behind architecture decisions related
to scaling. (Christoph)
3/ Introduce ->rw_bytes() to struct block_device_operations and kill off
the "ndio" implementation (save a couple hundred lines of glue code).
(Christoph)
4/ Kill usage of __iomem in the namespace label implementation in favor
of properly using byte-order helpers. (Christoph)
5/ Kill the include path munging in "[PATCH v6 20/21]
tools/testing/nvdimm: libnvdimm unit test infrastructure" this makes
the unit test implementation have near zero impact on the libnvdimm
code base. (Christoph)
6/ Miscellaneous 80 column fixups. (Christoph)
7/ Restore BLK_DEV and PHYS_ADDR_T_64BIT dependencies to LIBNVDIMM.
Diffstat since v5 [1]: "ebba6912e36e libnvdimm: Non-Volatile Devices"
[1]: https://lists.01.org/pipermail/linux-nvdimm/2015-June/001035.html
drivers/acpi/Makefile | 1 -
drivers/acpi/nfit.c | 228 +++++++++++++++++++++-----------------
drivers/acpi/nfit.h | 20 ++--
drivers/nvdimm/Kconfig | 6 +-
drivers/nvdimm/Makefile | 1 -
drivers/nvdimm/blk.c | 39 +++----
drivers/nvdimm/btt.c | 85 ++++++++-------
drivers/nvdimm/btt_devs.c | 163 +++++++++++++--------------
drivers/nvdimm/bus.c | 156 +++++++++++---------------
drivers/nvdimm/core.c | 72 ++----------
drivers/nvdimm/dimm.c | 4 +-
drivers/nvdimm/dimm_devs.c | 31 +++---
drivers/nvdimm/label.c | 284 ++++++++++++++++++++++++------------------------
drivers/nvdimm/label.h | 8 +-
drivers/nvdimm/namespace_devs.c | 142 ++++++++++++------------
drivers/nvdimm/nd-core.h | 28 +++--
drivers/nvdimm/nd.h | 113 ++-----------------
drivers/nvdimm/pmem.c | 38 +++----
drivers/nvdimm/region.c | 2 +-
drivers/nvdimm/region_devs.c | 90 +++++++--------
include/linux/blkdev.h | 44 ++++++++
include/linux/libnvdimm.h | 14 ++-
include/uapi/linux/ndctl.h | 8 +-
tools/testing/nvdimm/Kbuild | 2 -
tools/testing/nvdimm/test/nfit.c | 63 ++++++-----
tools/testing/nvdimm/test/nfit_test.h | 3 +-
26 files changed, 768 insertions(+), 877 deletions(-)
---
[PATCH v6 01/21] e820, efi: add ACPI 6.0 persistent memory types
[PATCH v6 02/21] libnvdimm, nfit: initial libnvdimm infrastructure and NFIT support
[PATCH v6 03/21] libnvdimm: control character device and nvdimm_bus sysfs attributes
[PATCH v6 04/21] libnvdimm, nfit: dimm/memory-devices
[PATCH v6 05/21] libnvdimm: control (ioctl) messages for nvdimm_bus and nvdimm devices
[PATCH v6 06/21] libnvdimm, nvdimm: dimm driver and base libnvdimm device-driver infrastructure
[PATCH v6 07/21] libnvdimm, nfit: regions (block-data-window, persistent memory, volatile memory)
[PATCH v6 08/21] libnvdimm: support for legacy (non-aliasing) nvdimms
[PATCH v6 09/21] libnvdimm, pmem: move pmem to drivers/nvdimm/
[PATCH v6 10/21] libnvdimm, pmem: add libnvdimm support to the pmem driver
[PATCH v6 11/21] libnvdimm, nfit: add interleave-set state-tracking infrastructure
[PATCH v6 12/21] libnvdimm: namespace indices: read and validate
[PATCH v6 13/21] libnvdimm: pmem label sets and namespace instantiation.
[PATCH v6 14/21] libnvdimm: blk labels and namespace instantiation
[PATCH v6 15/21] libnvdimm: write pmem label set
[PATCH v6 16/21] libnvdimm: write blk label set
[PATCH v6 17/21] libnvdimm: infrastructure for btt devices
[PATCH v6 18/21] nd_btt: atomic sector updates
[PATCH v6 19/21] libnvdimm, nfit, nd_blk: driver for BLK-mode access persistent memory
[PATCH v6 20/21] tools/testing/nvdimm: libnvdimm unit test infrastructure
[PATCH v6 21/21] libnvdimm: Non-Volatile Devices
Documentation/nvdimm/btt.txt | 273 +++++
Documentation/nvdimm/nvdimm.txt | 805 ++++++++++++++++
MAINTAINERS | 39 +
arch/arm64/kernel/efi.c | 1
arch/ia64/kernel/efi.c | 4
arch/x86/Kconfig | 3
arch/x86/boot/compressed/eboot.c | 4
arch/x86/include/uapi/asm/e820.h | 1
arch/x86/kernel/e820.c | 28 -
arch/x86/kernel/pmem.c | 92 +-
arch/x86/platform/efi/efi.c | 3
drivers/Kconfig | 2
drivers/Makefile | 1
drivers/acpi/Kconfig | 26 +
drivers/acpi/Makefile | 1
drivers/acpi/nfit.c | 1546 ++++++++++++++++++++++++++++++
drivers/acpi/nfit.h | 155 +++
drivers/block/Kconfig | 11
drivers/block/Makefile | 1
drivers/nvdimm/Kconfig | 75 +
drivers/nvdimm/Makefile | 20
drivers/nvdimm/blk.c | 241 +++++
drivers/nvdimm/btt.c | 1449 ++++++++++++++++++++++++++++
drivers/nvdimm/btt.h | 186 ++++
drivers/nvdimm/btt_devs.c | 432 ++++++++
drivers/nvdimm/bus.c | 746 ++++++++++++++
drivers/nvdimm/core.c | 416 ++++++++
drivers/nvdimm/dimm.c | 115 ++
drivers/nvdimm/dimm_devs.c | 517 ++++++++++
drivers/nvdimm/label.c | 926 ++++++++++++++++++
drivers/nvdimm/label.h | 141 +++
drivers/nvdimm/namespace_devs.c | 1698 +++++++++++++++++++++++++++++++++
drivers/nvdimm/nd-core.h | 111 ++
drivers/nvdimm/nd.h | 168 +++
drivers/nvdimm/pmem.c | 107 +-
drivers/nvdimm/region.c | 189 ++++
drivers/nvdimm/region_devs.c | 667 +++++++++++++
include/linux/blkdev.h | 44 +
include/linux/efi.h | 3
include/linux/libnvdimm.h | 139 +++
include/linux/nd.h | 98 ++
include/uapi/linux/Kbuild | 1
include/uapi/linux/ndctl.h | 199 ++++
tools/testing/nvdimm/Kbuild | 35 +
tools/testing/nvdimm/Makefile | 7
tools/testing/nvdimm/test/Kbuild | 8
tools/testing/nvdimm/test/iomap.c | 151 +++
tools/testing/nvdimm/test/nfit.c | 1112 ++++++++++++++++++++++
tools/testing/nvdimm/test/nfit_test.h | 29 +
49 files changed, 12934 insertions(+), 92 deletions(-)
create mode 100644 Documentation/nvdimm/btt.txt
create mode 100644 Documentation/nvdimm/nvdimm.txt
create mode 100644 drivers/acpi/nfit.c
create mode 100644 drivers/acpi/nfit.h
create mode 100644 drivers/nvdimm/Kconfig
create mode 100644 drivers/nvdimm/Makefile
create mode 100644 drivers/nvdimm/blk.c
create mode 100644 drivers/nvdimm/btt.c
create mode 100644 drivers/nvdimm/btt.h
create mode 100644 drivers/nvdimm/btt_devs.c
create mode 100644 drivers/nvdimm/bus.c
create mode 100644 drivers/nvdimm/core.c
create mode 100644 drivers/nvdimm/dimm.c
create mode 100644 drivers/nvdimm/dimm_devs.c
create mode 100644 drivers/nvdimm/label.c
create mode 100644 drivers/nvdimm/label.h
create mode 100644 drivers/nvdimm/namespace_devs.c
create mode 100644 drivers/nvdimm/nd-core.h
create mode 100644 drivers/nvdimm/nd.h
rename drivers/{block/pmem.c => nvdimm/pmem.c} (69%)
create mode 100644 drivers/nvdimm/region.c
create mode 100644 drivers/nvdimm/region_devs.c
create mode 100644 include/linux/libnvdimm.h
create mode 100644 include/linux/nd.h
create mode 100644 include/uapi/linux/ndctl.h
create mode 100644 tools/testing/nvdimm/Kbuild
create mode 100644 tools/testing/nvdimm/Makefile
create mode 100644 tools/testing/nvdimm/test/Kbuild
create mode 100644 tools/testing/nvdimm/test/iomap.c
create mode 100644 tools/testing/nvdimm/test/nfit.c
create mode 100644 tools/testing/nvdimm/test/nfit_test.h
5 years, 7 months
Publish Press Release to 1000 Relevant Authority PR Sites
by Engaging Marketing
Write & Submit Press Release to 1000 PR Sites
Worldwide - USA - Canada Targeting available
Boost your keywords ranks in the Google News.
- Press release boosts your site�s ranking in search engine.
- Press release also helps to gain increased online visibility for your
website.
- Increases high quality backlinks to your website.
- Press release increases your product sales.
- It helps to get maximum exposure to your latest news/events.
- 7-10 days delivery time, full reports provided
Visit our website for more information:
http://www.seobuzz.cn/detail.php?id=51
Unsubscribe option is available on the footer of our website
5 years, 7 months