From: "Williams, Dan J" <dan.j.williams@intel.com>
To: "rafael@kernel.org" <rafael@kernel.org>
Cc: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"Zheng, Lv" <lv.zheng@intel.com>,
"mingo@kernel.org" <mingo@kernel.org>,
"nicholas.w.moulin@linux.intel.com"
<nicholas.w.moulin@linux.intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"neilb@suse.de" <neilb@suse.de>,
"jmoyer@redhat.com" <jmoyer@redhat.com>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"torvalds@linux-foundation.org" <torvalds@linux-foundation.org>,
"hch@lst.de" <hch@lst.de>, "axboe@kernel.dk" <axboe@kernel.dk>,
"Moore, Robert" <robert.moore@intel.com>,
"Wysocki, Rafael J" <rafael.j.wysocki@intel.com>,
"hpa@zytor.com" <hpa@zytor.com>,
"sfr@canb.auug.org.au" <sfr@canb.auug.org.au>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>,
"vishal.l.verma@linux.intel.com" <vishal.l.verma@linux.intel.com>,
"willy@linux.intel.com" <willy@linux.intel.com>,
"bp@alien8.de" <bp@alien8.de>,
"ross.zwisler@linux.intel.com" <ross.zwisler@linux.intel.com>,
"luto@amacapital.net" <luto@amacapital.net>,
"axboe@fb.com" <axboe@fb.com>,
"boaz@plexistor.com" <boaz@plexistor.com>,
"david@fromorbit.com" <david@fromorbit.com>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>
Subject: Re: [GIT PULL v4 00/21] libnd: non-volatile memory device support
Date: Thu, 28 May 2015 05:21:17 +0000 [thread overview]
Message-ID: <1432790477.723.20.camel@intel.com> (raw)
In-Reply-To: <CAJZ5v0ghKkf01T=HMYJJ0yFs0eN9T8JD_tTxm0vArSRZAfbG4w@mail.gmail.com>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 12384 bytes --]
On Thu, 2015-05-28 at 03:01 +0200, Rafael J. Wysocki wrote:
> >> And how much time is it going to take to rebase it, actually?
> >>
> >> If all is so clean as you're suggesting, a "git rebase" should be
> >> sufficient for that really. Is it not the case?
> >
> > Of course the rebase is trivial, it's the testing that has gone into
> > the baseline being forfeited for no good reason that I take issue.
> >
> >> I do believe that having a clean history in the repository is
> >> important, especially for big new and complicated features like this
> >> one.
> >
> > Sure, in the general case, but this is one extra commit for
> > autogenerated acpica history.
> >
> >> For the same reason I don't believe that rushing such features in no
> >> matter what is the right approach.
> >>
> >> If Jens decides to pull it regardless, it's his call, but I wouldn't
> >> do that if I were him.
> >
> > I'm not going to push code around your objection. I understand and
> > agree with the general policy, but in this specific case I believe an
> > exception is warranted. If you still don't ack the approach I'll
> > proceed with the rebase.
>
> Please do a rebase, then. I don't think it's an unreasonable request.
>
So, first, the bad news... right on queue the acpica baseline throws me
this unrelated to libnd splat:
------------[ cut here ]------------
WARNING: CPU: 26 PID: 1 at kernel/locking/lockdep.c:3002 lockdep_init_map+0x462
DEBUG_LOCKS_WARN_ON(1)
Modules linked in:
CPU: 26 PID: 1 Comm: swapper/0 Not tainted 4.1.0-rc3+ #34
ffffffff81cb0f60 ffff880360c83bc8 ffffffff818a274f 0000000000002355
ffff880360c83c18 ffff880360c83c08 ffffffff81061d6a ffff8803581141f0
ffff8803511e6908 ffff8803581141f0 0000000000000000 0000000000001000
Call Trace:
[<ffffffff818a274f>] dump_stack+0x4c/0x65
[<ffffffff81061d6a>] warn_slowpath_common+0x8a/0xc0
[<ffffffff81061de6>] warn_slowpath_fmt+0x46/0x50
[<ffffffff810bd5c2>] lockdep_init_map+0x462/0x560
[<ffffffff8128e232>] ? __kernfs_new_node+0x62/0xe0
[<ffffffff81291006>] __kernfs_create_file+0x76/0xd0
[<ffffffff812919da>] sysfs_add_file_mode_ns+0x9a/0x1d0
[<ffffffff8129268e>] internal_create_group+0xee/0x2a0
[<ffffffff8129296a>] sysfs_create_groups+0x4a/0xa0
[<ffffffff81591c3d>] device_add+0x30d/0x640
[<ffffffff81fb1b86>] ? perf_workqueue_init+0x66/0x66
[<ffffffff8117a66f>] pmu_dev_alloc+0x8f/0xd0
[<ffffffff81fb1bd3>] perf_event_sysfs_init+0x4d/0x95
[<ffffffff810002fc>] do_one_initcall+0xbc/0x1f0
[<ffffffff81f8e1cf>] kernel_init_freeable+0x1b1/0x23e
[<ffffffff81f8d8eb>] ? initcall_blacklist+0xb6/0xb6
[<ffffffff81891f90>] ? rest_init+0x150/0x150
[<ffffffff81891f9e>] kernel_init+0xe/0xf0
[<ffffffff818adf12>] ret_from_fork+0x42/0x70
[<ffffffff81891f90>] ? rest_init+0x150/0x150
---[ end trace 36f5d28ae115ea20 ]---
Luckily that seems to be the only immediate breakage as our unit tests
pass, and we already had good lockdep coverage of libnd plus nfit driver
on the previous baseline.
The good news is that upstream, since our old baseline, has fixed a
sysfs bug that we were relying on for our namespace-device
size-attribute permission settings (fix below). Also, moving the
baseline seems to have shaken another 0day report loose (although this
sparse report was equally valid on the old baseline).
The changes on top of the rebase are small enough to include inline.
I've also posted the latest tree to nvdimm.git/libnd-for-next. Given
this is now based on the acpica bits for 4.2 is it still suitable to go
through the block tree?
diff --git a/drivers/acpi/nfit.c b/drivers/acpi/nfit.c
index c31d0ae87293..34f879808ada 100644
--- a/drivers/acpi/nfit.c
+++ b/drivers/acpi/nfit.c
@@ -895,7 +895,7 @@ static u64 to_interleave_offset(u64 offset, struct nfit_blk_mmio *mmio)
static u64 read_blk_stat(struct nfit_blk *nfit_blk, unsigned int bw)
{
- struct nfit_blk_mmio *mmio = &nfit_blk->mmio[DCR];
+ struct nfit_blk_mmio __iomem *mmio = &nfit_blk->mmio[DCR];
u64 offset = nfit_blk->stat_offset + mmio->size * bw;
if (mmio->num_lines)
@@ -908,7 +908,7 @@ static void write_blk_ctl(struct nfit_blk *nfit_blk, unsigned int bw,
resource_size_t dpa, unsigned int len, unsigned int write)
{
u64 cmd, offset;
- struct nfit_blk_mmio *mmio = &nfit_blk->mmio[DCR];
+ struct nfit_blk_mmio __iomem *mmio = &nfit_blk->mmio[DCR];
enum {
BCW_OFFSET_MASK = (1ULL << 48)-1,
@@ -959,9 +959,9 @@ static int acpi_nfit_blk_single_io(struct nfit_blk *nfit_blk, void *iobuf,
}
if (write)
- memcpy(mmio->base + offset, iobuf + copied, c);
+ memcpy_fromio(mmio->base + offset, iobuf + copied, c);
else
- memcpy(iobuf + copied, mmio->base + offset, c);
+ memcpy_toio(iobuf + copied, mmio->base + offset, c);
copied += c;
len -= c;
@@ -1036,7 +1036,7 @@ static void nfit_spa_unmap(struct acpi_nfit_desc *acpi_desc,
mutex_unlock(&acpi_desc->spa_map_mutex);
}
-static void *__nfit_spa_map(struct acpi_nfit_desc *acpi_desc,
+static void __iomem *__nfit_spa_map(struct acpi_nfit_desc *acpi_desc,
struct acpi_nfit_system_address *spa)
{
resource_size_t start = spa->address;
@@ -1092,16 +1092,16 @@ static void *__nfit_spa_map(struct acpi_nfit_desc *acpi_desc,
* when all region devices referencing the same mapping are disabled /
* unbound.
*/
-static void *nfit_spa_map(struct acpi_nfit_desc *acpi_desc,
+static void __iomem *nfit_spa_map(struct acpi_nfit_desc *acpi_desc,
struct acpi_nfit_system_address *spa)
{
- struct nfit_spa_mapping *spa_map;
+ void __iomem *iomem;
mutex_lock(&acpi_desc->spa_map_mutex);
- spa_map = __nfit_spa_map(acpi_desc, spa);
+ iomem = __nfit_spa_map(acpi_desc, spa);
mutex_unlock(&acpi_desc->spa_map_mutex);
- return spa_map;
+ return iomem;
}
static int nfit_blk_init_interleave(struct nfit_blk_mmio *mmio,
diff --git a/drivers/acpi/nfit.h b/drivers/acpi/nfit.h
index 880e7b3a9da0..e462214f94cd 100644
--- a/drivers/acpi/nfit.h
+++ b/drivers/acpi/nfit.h
@@ -115,7 +115,7 @@ enum nd_blk_mmio_selector {
struct nfit_blk {
struct nfit_blk_mmio {
- void *base;
+ void __iomem *base;
u64 size;
u64 base_offset;
u32 line_size;
@@ -135,7 +135,7 @@ struct nfit_spa_mapping {
struct acpi_nfit_system_address *spa;
struct list_head list;
struct kref kref;
- void *iomem;
+ void __iomem *iomem;
};
static inline struct nfit_spa_mapping *to_spa_map(struct kref *kref)
diff --git a/drivers/block/nd/namespace_devs.c b/drivers/block/nd/namespace_devs.c
index 8e75c881bc7b..d3042662f4b6 100644
--- a/drivers/block/nd/namespace_devs.c
+++ b/drivers/block/nd/namespace_devs.c
@@ -1101,7 +1101,7 @@ static umode_t nd_namespace_attr_visible(struct kobject *kobj, struct attribute
if (is_namespace_pmem(dev) || is_namespace_blk(dev)) {
if (a == &dev_attr_size.attr)
- return S_IWUSR;
+ return S_IWUSR | S_IRUGO;
if (is_namespace_pmem(dev) && a == &dev_attr_sector_size.attr)
return 0;
===
The following changes since commit f3b6ced236259a87829b829e8e542ff53bfb9a4f:
ACPICA: Fix for ill-formed GUID strings for NFIT tables. (2015-05-25 23:42:34 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm libnd-for-next
for you to fetch changes up to 9872c2c54572cd7e7410b4eac293efb58ace2fc3:
libnd: Non-Volatile Devices (2015-05-27 23:36:01 -0400)
----------------------------------------------------------------
Dan Williams (18):
e820, efi: add ACPI 6.0 persistent memory types
libnd, nfit: initial libnd infrastructure and NFIT support
libnd: control character device and libnd bus sysfs attributes
libnd, nfit: dimm/memory-devices
libnd: control (ioctl) messages for libnd bus and dimm devices
libnd, nd_dimm: dimm driver and base libnd device-driver infrastructure
libnd, nfit: regions (block-data-window, persistent memory, volatile memory)
libnd: support for legacy (non-aliasing) nvdimms
libnd, nd_pmem: add libnd support to the pmem driver
libnd, nfit: add interleave-set state-tracking infrastructure
libnd: namespace indices: read and validate
libnd: pmem label sets and namespace instantiation.
libnd: blk labels and namespace instantiation
libnd: write pmem label set
libnd: write blk label set
libnd: infrastructure for btt devices
nfit-test: manufactured NFITs for interface development
libnd: Non-Volatile Devices
Ross Zwisler (2):
pmem: Dynamically allocate partition numbers
libnd, nfit, nd_blk: driver for BLK-mode access persistent memory
Vishal Verma (1):
nd_btt: atomic sector updates
Documentation/blockdev/btt.txt | 273 ++++++
Documentation/blockdev/libnd.txt | 804 ++++++++++++++++++
MAINTAINERS | 39 +-
arch/arm64/kernel/efi.c | 1 +
arch/ia64/kernel/efi.c | 4 +
arch/x86/Kconfig | 4 +
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/acpi/Kconfig | 27 +
drivers/acpi/Makefile | 1 +
drivers/acpi/nfit.c | 1474 ++++++++++++++++++++++++++++++++
drivers/acpi/nfit.h | 160 ++++
drivers/block/Kconfig | 13 +-
drivers/block/Makefile | 2 +-
drivers/block/nd/Kconfig | 101 +++
drivers/block/nd/Makefile | 29 +
drivers/block/nd/blk.c | 252 ++++++
drivers/block/nd/btt.c | 1438 +++++++++++++++++++++++++++++++
drivers/block/nd/btt.h | 186 ++++
drivers/block/nd/btt_devs.c | 443 ++++++++++
drivers/block/nd/bus.c | 770 +++++++++++++++++
drivers/block/nd/core.c | 472 ++++++++++
drivers/block/nd/dimm.c | 115 +++
drivers/block/nd/dimm_devs.c | 516 +++++++++++
drivers/block/nd/label.c | 922 ++++++++++++++++++++
drivers/block/nd/label.h | 143 ++++
drivers/block/nd/namespace_devs.c | 1702 +++++++++++++++++++++++++++++++++++++
drivers/block/nd/nd-private.h | 111 +++
drivers/block/nd/nd.h | 257 ++++++
drivers/block/{ => nd}/pmem.c | 107 ++-
drivers/block/nd/region.c | 189 ++++
drivers/block/nd/region_devs.c | 667 +++++++++++++++
drivers/block/nd/test/Makefile | 5 +
drivers/block/nd/test/iomap.c | 151 ++++
drivers/block/nd/test/nfit.c | 1171 +++++++++++++++++++++++++
drivers/block/nd/test/nfit_test.h | 28 +
include/linux/efi.h | 3 +-
include/linux/libnd.h | 129 +++
include/linux/nd.h | 98 +++
include/uapi/linux/Kbuild | 1 +
include/uapi/linux/ndctl.h | 199 +++++
44 files changed, 13046 insertions(+), 89 deletions(-)
create mode 100644 Documentation/blockdev/btt.txt
create mode 100644 Documentation/blockdev/libnd.txt
create mode 100644 drivers/acpi/nfit.c
create mode 100644 drivers/acpi/nfit.h
create mode 100644 drivers/block/nd/Kconfig
create mode 100644 drivers/block/nd/Makefile
create mode 100644 drivers/block/nd/blk.c
create mode 100644 drivers/block/nd/btt.c
create mode 100644 drivers/block/nd/btt.h
create mode 100644 drivers/block/nd/btt_devs.c
create mode 100644 drivers/block/nd/bus.c
create mode 100644 drivers/block/nd/core.c
create mode 100644 drivers/block/nd/dimm.c
create mode 100644 drivers/block/nd/dimm_devs.c
create mode 100644 drivers/block/nd/label.c
create mode 100644 drivers/block/nd/label.h
create mode 100644 drivers/block/nd/namespace_devs.c
create mode 100644 drivers/block/nd/nd-private.h
create mode 100644 drivers/block/nd/nd.h
rename drivers/block/{ => nd}/pmem.c (70%)
create mode 100644 drivers/block/nd/region.c
create mode 100644 drivers/block/nd/region_devs.c
create mode 100644 drivers/block/nd/test/Makefile
create mode 100644 drivers/block/nd/test/iomap.c
create mode 100644 drivers/block/nd/test/nfit.c
create mode 100644 drivers/block/nd/test/nfit_test.h
create mode 100644 include/linux/libnd.h
create mode 100644 include/linux/nd.h
create mode 100644 include/uapi/linux/ndctl.h
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
next prev parent reply other threads:[~2015-05-28 5:21 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-27 22:24 [GIT PULL v4 00/21] libnd: non-volatile memory device support Dan Williams
2015-05-27 22:24 ` [PATCH v4 01/21] e820, efi: add ACPI 6.0 persistent memory types Dan Williams
2015-05-27 22:24 ` [PATCH v4 02/21] libnd, nfit: initial libnd infrastructure and NFIT support Dan Williams
2015-05-27 22:24 ` [PATCH v4 03/21] libnd: control character device and libnd bus sysfs attributes Dan Williams
2015-05-27 22:25 ` [PATCH v4 04/21] libnd, nfit: dimm/memory-devices Dan Williams
2015-05-27 22:25 ` [PATCH v4 05/21] libnd: control (ioctl) messages for libnd bus and dimm devices Dan Williams
2015-05-27 22:25 ` [PATCH v4 06/21] libnd, nd_dimm: dimm driver and base libnd device-driver infrastructure Dan Williams
2015-05-27 22:25 ` [PATCH v4 07/21] libnd, nfit: regions (block-data-window, persistent memory, volatile memory) Dan Williams
2015-05-27 22:25 ` [PATCH v4 08/21] libnd: support for legacy (non-aliasing) nvdimms Dan Williams
2015-05-27 22:25 ` [PATCH v4 09/21] libnd, nd_pmem: add libnd support to the pmem driver Dan Williams
2015-05-27 22:25 ` [PATCH v4 10/21] pmem: Dynamically allocate partition numbers Dan Williams
2015-05-27 22:25 ` [PATCH v4 11/21] libnd, nfit: add interleave-set state-tracking infrastructure Dan Williams
2015-05-27 22:25 ` [PATCH v4 12/21] libnd: namespace indices: read and validate Dan Williams
2015-05-27 22:25 ` [PATCH v4 13/21] libnd: pmem label sets and namespace instantiation Dan Williams
2015-05-27 22:25 ` [PATCH v4 14/21] libnd: blk labels " Dan Williams
2015-05-27 22:26 ` [PATCH v4 15/21] libnd: write pmem label set Dan Williams
2015-05-27 22:26 ` [PATCH v4 16/21] libnd: write blk " Dan Williams
2015-05-27 22:26 ` [PATCH v4 17/21] libnd: infrastructure for btt devices Dan Williams
2015-05-27 22:26 ` [PATCH v4 18/21] nd_btt: atomic sector updates Dan Williams
2015-05-27 22:26 ` [PATCH v4 19/21] libnd, nfit, nd_blk: driver for BLK-mode access persistent memory Dan Williams
2015-05-27 22:26 ` [PATCH v4 20/21] nfit-test: manufactured NFITs for interface development Dan Williams
2015-05-27 22:26 ` [PATCH v4 21/21] libnd: Non-Volatile Devices Dan Williams
2015-05-27 22:36 ` [GIT PULL v4 00/21] libnd: non-volatile memory device support Rafael J. Wysocki
2015-05-27 22:52 ` Dan Williams
2015-05-27 23:17 ` Rafael J. Wysocki
2015-05-28 0:34 ` Dan Williams
2015-05-28 0:42 ` Rafael J. Wysocki
2015-05-28 0:55 ` Dan Williams
2015-05-28 1:01 ` Rafael J. Wysocki
2015-05-28 5:21 ` Williams, Dan J [this message]
2015-05-28 8:51 ` Christoph Hellwig
2015-05-28 14:55 ` Dan Williams
2015-06-03 6:55 ` Christoph Hellwig
2015-06-03 7:02 ` Dan Williams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1432790477.723.20.camel@intel.com \
--to=dan.j.williams@intel.com \
--cc=akpm@linux-foundation.org \
--cc=axboe@fb.com \
--cc=axboe@kernel.dk \
--cc=boaz@plexistor.com \
--cc=bp@alien8.de \
--cc=david@fromorbit.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@lst.de \
--cc=hpa@zytor.com \
--cc=jmoyer@redhat.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvdimm@ml01.01.org \
--cc=luto@amacapital.net \
--cc=lv.zheng@intel.com \
--cc=mingo@kernel.org \
--cc=neilb@suse.de \
--cc=nicholas.w.moulin@linux.intel.com \
--cc=rafael.j.wysocki@intel.com \
--cc=rafael@kernel.org \
--cc=robert.moore@intel.com \
--cc=ross.zwisler@linux.intel.com \
--cc=sfr@canb.auug.org.au \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vishal.l.verma@linux.intel.com \
--cc=willy@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).