All of lore.kernel.org
 help / color / mirror / Atom feed
* another pmem variant
@ 2015-03-25 16:04 Christoph Hellwig
  2015-03-25 16:04 ` [PATCH 1/3] pmem: Initial version of persistent memory driver Christoph Hellwig
                   ` (5 more replies)
  0 siblings, 6 replies; 37+ messages in thread
From: Christoph Hellwig @ 2015-03-25 16:04 UTC (permalink / raw)
  To: linux-nvdimm, linux-fsdevel, linux-kernel, x86; +Cc: ross.zwisler, boaz, axboe

Here is another version of the same trivial pmem driver, because two
obviously aren't enough.  The first patch is the same pmem driver
that Ross posted a short time ago, just modified to use platform_devices
to find the persistant memory region instead of hardconding it in the
Kconfig.  This allows to keep pmem.c separate from any discovery mechanism,
but still allow auto-discovery.

The other two patches are a heavily rewritten version of the code that
Intel gave to various storage vendors to discover the type 12 (and earlier
type 6) nvdimms, which I massaged into a form that is hopefully suitable
for mainline.

Note that pmem.c really is the minimal version as I think we need something
included ASAP.  We'll eventually need to be able to do other I/O from and
to it, and as most people know everyone has their own preferre method to
do it, which I'd like to discuss once we have the basic driver in.

This has been tested both with a real NVDIMM on a system with a type 12
capable bios, as well as with "fake persistent" memory using the memmap=
option.


^ permalink raw reply	[flat|nested] 37+ messages in thread
* another pmem variant V2
@ 2015-03-26  8:32 Christoph Hellwig
  2015-03-26  8:32 ` [PATCH 1/3] pmem: Initial version of persistent memory driver Christoph Hellwig
  0 siblings, 1 reply; 37+ messages in thread
From: Christoph Hellwig @ 2015-03-26  8:32 UTC (permalink / raw)
  To: linux-nvdimm, linux-fsdevel, linux-kernel, x86; +Cc: ross.zwisler, axboe, boaz

Here is another version of the same trivial pmem driver, because two
obviously aren't enough.  The first patch is the same pmem driver
that Ross posted a short time ago, just modified to use platform_devices
to find the persistant memory region instead of hardconding it in the
Kconfig.  This allows to keep pmem.c separate from any discovery mechanism,
but still allow auto-discovery.

The other two patches are a heavily rewritten version of the code that
Intel gave to various storage vendors to discover the type 12 (and earlier
type 6) nvdimms, which I massaged into a form that is hopefully suitable
for mainline.

Note that pmem.c really is the minimal version as I think we need something
included ASAP.  We'll eventually need to be able to do other I/O from and
to it, and as most people know everyone has their own preferre method to
do it, which I'd like to discuss once we have the basic driver in.

This has been tested both with a real NVDIMM on a system with a type 12
capable bios, as well as with "fake persistent" memory using the memmap=
option.

Changes since V1:
  - s/E820_PROTECTED_KERN/E820_PMEM/g
  - map the persistent memory as uncached
  - better kernel parameter description
  - various typo fixes
  - MODULE_LICENSE fix


^ permalink raw reply	[flat|nested] 37+ messages in thread
* Re: [PATCH 1/3] pmem: Initial version of persistent memory driver
@ 2015-04-08 18:33 Dr. Greg Wettstein
  0 siblings, 0 replies; 37+ messages in thread
From: Dr. Greg Wettstein @ 2015-04-08 18:33 UTC (permalink / raw)
  To: Christoph Hellwig, linux-nvdimm, linux-fsdevel, linux-kernel, x86
  Cc: ross.zwisler, axboe, boaz

On Mar 26,  9:32am, Christoph Hellwig wrote:
} Subject: [PATCH 1/3] pmem: Initial version of persistent memory driver

Hi, I hope the week has been going well for everyone.

> From: Ross Zwisler <ross.zwisler@linux.intel.com>
> 
> PMEM is a new driver that presents a reserved range of memory as a
> block device.  This is useful for developing with NV-DIMMs, and
> can be used with volatile memory as a development platform.

We are interested in NV-DIMM's for a variety of reasons so the
discussion on this has been interesting, particularly the 'correct'
method of abstracting access.

We needed a block device representation of memory for a number of
projects we are working on and put the following together:

ftp://ftp.enjellic.com/pub/hpd/hpd_driver-1.1beta.tar.gz

Which has patches for 3.10 and 3.14.

We built HPD on top of the hugepage kernel infrastructure.  In our
opinion, for whatever that is worth, there were a number of advantages
to building this on a page based abstraction.  Not the least of which
was that NUMA awareness just naturally fell out of that model.

While the above patches don't have support for 1GB pages in them that
was also a straight forward exercise.

I don't even pretend to understand all the complexities and mechanics
of the E820/EFI memory mapping issues involved or the various issues
with persistency triggers and such but mapping these through something
like the hugepage infrastructure 'feels' like it would have a number
of longterm advantages with respect to isolating implementations from
the block layer interface.

Have a good remainder of the week.

Greg

}-- End of excerpt from Christoph Hellwig

As always,
Dr. G.W. Wettstein, Ph.D.   Enjellic Systems Development, LLC.
4206 N. 19th Ave.           Specializing in information infra-structure
Fargo, ND  58102            development.
PH: 701-281-1686
FAX: 701-281-3949           EMAIL: greg@enjellic.com
------------------------------------------------------------------------------
"This patch causes a CONFIG_PREEMPT=y, CONFIG_PREEMPT_BKL=y,
 CONFIG_DEBUG_PREEMPT=y kernel on a ppc64 G5 to hang immediately after
 displaying the penguins, but apparently not before having set the
 hardware clock backwards 101 years."

"After having carefully reviewed the above description and having
 decided that these effects were not a part of the patch's design
 intent I have temporarily set it aside, thanks."
                                -- Andrew Morton
                                   linux-kernel

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2015-05-07  8:35 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-25 16:04 another pmem variant Christoph Hellwig
2015-03-25 16:04 ` [PATCH 1/3] pmem: Initial version of persistent memory driver Christoph Hellwig
2015-03-25 20:19   ` Paul Bolle
2015-03-25 20:26     ` Ross Zwisler
2015-03-26  8:04       ` Christoph Hellwig
2015-03-25 20:21   ` Ross Zwisler
2015-03-26  8:06     ` Christoph Hellwig
2015-05-04 16:43       ` Ross Zwisler
2015-05-04 16:43         ` Ross Zwisler
2015-05-07  7:26         ` Christoph Hellwig
2015-05-07  8:35           ` Boaz Harrosh
2015-03-25 16:04 ` [PATCH 2/3] x86: add a is_e820_ram() helper Christoph Hellwig
2015-03-26  2:15   ` [Linux-nvdimm] " Dan Williams
2015-03-26  8:01     ` Christoph Hellwig
2015-03-26 13:57       ` Dan Williams
2015-03-26 14:32         ` Christoph Hellwig
2015-03-25 16:04 ` [PATCH 3/3] x86: add support for the non-standard protected e820 type Christoph Hellwig
2015-03-25 19:47   ` Elliott, Robert (Server Storage)
2015-03-26  8:02     ` Christoph Hellwig
2015-03-25 20:23   ` Ross Zwisler
2015-03-25 20:29     ` [Linux-nvdimm] " Dan Williams
2015-03-25 20:25   ` Ross Zwisler
2015-03-26  8:03     ` Christoph Hellwig
2015-03-25 20:35   ` [Linux-nvdimm] " Dan Williams
2015-03-25 16:33 ` [Linux-nvdimm] another pmem variant Dan Williams
2015-03-25 16:44   ` Christoph Hellwig
2015-03-25 17:00     ` Dan Williams
2015-03-25 17:04       ` Christoph Hellwig
2015-03-25 17:18         ` Dan Williams
2015-04-13  9:01       ` Greg KH
2015-04-13 16:02         ` Dan Williams
2015-03-25 18:09 ` Brooks, Adam J
2015-03-25 18:09   ` Brooks, Adam J
2015-03-25 18:46   ` Christoph Hellwig
2015-03-25 21:02 ` Ross Zwisler
2015-03-26  8:32 another pmem variant V2 Christoph Hellwig
2015-03-26  8:32 ` [PATCH 1/3] pmem: Initial version of persistent memory driver Christoph Hellwig
2015-04-08 18:33 Dr. Greg Wettstein

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.