From: Nathan Fontenot <nfont@austin.ibm.com>
To: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linuxppc-dev@ozlabs.org
Cc: Greg KH <greg@kroah.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Dave Hansen <dave@linux.vnet.ibm.com>
Subject: [PATCH 5/8] v2 Add end_phys_index file
Date: Mon, 27 Sep 2010 14:26:18 -0500 [thread overview]
Message-ID: <4CA0EFDA.9020703@austin.ibm.com> (raw)
In-Reply-To: <4CA0EBEB.1030204@austin.ibm.com>
Update the 'phys_index' properties of a memory block to include a
'start_phys_index' which is the same as the current 'phys_index' property.
The property still appears as 'phys_index' in sysfs but the memory_block
struct name is updated to indicate the start and end values.
This also adds an 'end_phys_index' property to indicate the id of the
last section in th memory block.
Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
---
drivers/base/memory.c | 39 ++++++++++++++++++++++++++++++---------
include/linux/memory.h | 3 ++-
2 files changed, 32 insertions(+), 10 deletions(-)
Index: linux-next/drivers/base/memory.c
===================================================================
--- linux-next.orig/drivers/base/memory.c 2010-09-27 13:50:18.000000000 -0500
+++ linux-next/drivers/base/memory.c 2010-09-27 13:50:38.000000000 -0500
@@ -97,7 +97,7 @@
int error;
memory->sysdev.cls = &memory_sysdev_class;
- memory->sysdev.id = memory->phys_index / sections_per_block;
+ memory->sysdev.id = memory->start_phys_index / sections_per_block;
error = sysdev_register(&memory->sysdev);
return error;
@@ -138,12 +138,26 @@
* uses.
*/
-static ssize_t show_mem_phys_index(struct sys_device *dev,
+static ssize_t show_mem_start_phys_index(struct sys_device *dev,
struct sysdev_attribute *attr, char *buf)
{
struct memory_block *mem =
container_of(dev, struct memory_block, sysdev);
- return sprintf(buf, "%08lx\n", mem->phys_index / sections_per_block);
+ unsigned long phys_index;
+
+ phys_index = mem->start_phys_index / sections_per_block;
+ return sprintf(buf, "%08lx\n", phys_index);
+}
+
+static ssize_t show_mem_end_phys_index(struct sys_device *dev,
+ struct sysdev_attribute *attr, char *buf)
+{
+ struct memory_block *mem =
+ container_of(dev, struct memory_block, sysdev);
+ unsigned long phys_index;
+
+ phys_index = mem->end_phys_index / sections_per_block;
+ return sprintf(buf, "%08lx\n", phys_index);
}
/*
@@ -158,7 +172,7 @@
container_of(dev, struct memory_block, sysdev);
for (i = 0; i < sections_per_block; i++) {
- pfn = section_nr_to_pfn(mem->phys_index + i);
+ pfn = section_nr_to_pfn(mem->start_phys_index + i);
ret &= is_mem_section_removable(pfn, PAGES_PER_SECTION);
}
@@ -275,14 +289,15 @@
mem->state = MEM_GOING_OFFLINE;
for (i = 0; i < sections_per_block; i++) {
- ret = memory_section_action(mem->phys_index + i, to_state);
+ ret = memory_section_action(mem->start_phys_index + i,
+ to_state);
if (ret)
break;
}
if (ret) {
for (i = 0; i < sections_per_block; i++)
- memory_section_action(mem->phys_index + i,
+ memory_section_action(mem->start_phys_index + i,
from_state_req);
mem->state = from_state_req;
@@ -330,7 +345,8 @@
return sprintf(buf, "%d\n", mem->phys_device);
}
-static SYSDEV_ATTR(phys_index, 0444, show_mem_phys_index, NULL);
+static SYSDEV_ATTR(phys_index, 0444, show_mem_start_phys_index, NULL);
+static SYSDEV_ATTR(end_phys_index, 0444, show_mem_end_phys_index, NULL);
static SYSDEV_ATTR(state, 0644, show_mem_state, store_mem_state);
static SYSDEV_ATTR(phys_device, 0444, show_phys_device, NULL);
static SYSDEV_ATTR(removable, 0444, show_mem_removable, NULL);
@@ -514,17 +530,21 @@
return -ENOMEM;
scn_nr = __section_nr(section);
- mem->phys_index = base_memory_block_id(scn_nr) * sections_per_block;
+ mem->start_phys_index =
+ base_memory_block_id(scn_nr) * sections_per_block;
+ mem->end_phys_index = mem->start_phys_index + sections_per_block - 1;
mem->state = state;
atomic_inc(&mem->section_count);
mutex_init(&mem->state_mutex);
- start_pfn = section_nr_to_pfn(mem->phys_index);
+ start_pfn = section_nr_to_pfn(mem->start_phys_index);
mem->phys_device = arch_get_memory_phys_device(start_pfn);
ret = register_memory(mem);
if (!ret)
ret = mem_create_simple_file(mem, phys_index);
if (!ret)
+ ret = mem_create_simple_file(mem, end_phys_index);
+ if (!ret)
ret = mem_create_simple_file(mem, state);
if (!ret)
ret = mem_create_simple_file(mem, phys_device);
@@ -571,6 +591,7 @@
if (atomic_dec_and_test(&mem->section_count)) {
unregister_mem_sect_under_nodes(mem);
mem_remove_simple_file(mem, phys_index);
+ mem_remove_simple_file(mem, end_phys_index);
mem_remove_simple_file(mem, state);
mem_remove_simple_file(mem, phys_device);
mem_remove_simple_file(mem, removable);
Index: linux-next/include/linux/memory.h
===================================================================
--- linux-next.orig/include/linux/memory.h 2010-09-27 13:49:37.000000000 -0500
+++ linux-next/include/linux/memory.h 2010-09-27 13:50:38.000000000 -0500
@@ -22,7 +22,8 @@
#include <asm/atomic.h>
struct memory_block {
- unsigned long phys_index;
+ unsigned long start_phys_index;
+ unsigned long end_phys_index;
unsigned long state;
atomic_t section_count;
WARNING: multiple messages have this Message-ID (diff)
From: Nathan Fontenot <nfont@austin.ibm.com>
To: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linuxppc-dev@ozlabs.org
Cc: Greg KH <greg@kroah.com>, Dave Hansen <dave@linux.vnet.ibm.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: [PATCH 5/8] v2 Add end_phys_index file
Date: Mon, 27 Sep 2010 14:26:18 -0500 [thread overview]
Message-ID: <4CA0EFDA.9020703@austin.ibm.com> (raw)
In-Reply-To: <4CA0EBEB.1030204@austin.ibm.com>
Update the 'phys_index' properties of a memory block to include a
'start_phys_index' which is the same as the current 'phys_index' property.
The property still appears as 'phys_index' in sysfs but the memory_block
struct name is updated to indicate the start and end values.
This also adds an 'end_phys_index' property to indicate the id of the
last section in th memory block.
Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
---
drivers/base/memory.c | 39 ++++++++++++++++++++++++++++++---------
include/linux/memory.h | 3 ++-
2 files changed, 32 insertions(+), 10 deletions(-)
Index: linux-next/drivers/base/memory.c
===================================================================
--- linux-next.orig/drivers/base/memory.c 2010-09-27 13:50:18.000000000 -0500
+++ linux-next/drivers/base/memory.c 2010-09-27 13:50:38.000000000 -0500
@@ -97,7 +97,7 @@
int error;
memory->sysdev.cls = &memory_sysdev_class;
- memory->sysdev.id = memory->phys_index / sections_per_block;
+ memory->sysdev.id = memory->start_phys_index / sections_per_block;
error = sysdev_register(&memory->sysdev);
return error;
@@ -138,12 +138,26 @@
* uses.
*/
-static ssize_t show_mem_phys_index(struct sys_device *dev,
+static ssize_t show_mem_start_phys_index(struct sys_device *dev,
struct sysdev_attribute *attr, char *buf)
{
struct memory_block *mem =
container_of(dev, struct memory_block, sysdev);
- return sprintf(buf, "%08lx\n", mem->phys_index / sections_per_block);
+ unsigned long phys_index;
+
+ phys_index = mem->start_phys_index / sections_per_block;
+ return sprintf(buf, "%08lx\n", phys_index);
+}
+
+static ssize_t show_mem_end_phys_index(struct sys_device *dev,
+ struct sysdev_attribute *attr, char *buf)
+{
+ struct memory_block *mem =
+ container_of(dev, struct memory_block, sysdev);
+ unsigned long phys_index;
+
+ phys_index = mem->end_phys_index / sections_per_block;
+ return sprintf(buf, "%08lx\n", phys_index);
}
/*
@@ -158,7 +172,7 @@
container_of(dev, struct memory_block, sysdev);
for (i = 0; i < sections_per_block; i++) {
- pfn = section_nr_to_pfn(mem->phys_index + i);
+ pfn = section_nr_to_pfn(mem->start_phys_index + i);
ret &= is_mem_section_removable(pfn, PAGES_PER_SECTION);
}
@@ -275,14 +289,15 @@
mem->state = MEM_GOING_OFFLINE;
for (i = 0; i < sections_per_block; i++) {
- ret = memory_section_action(mem->phys_index + i, to_state);
+ ret = memory_section_action(mem->start_phys_index + i,
+ to_state);
if (ret)
break;
}
if (ret) {
for (i = 0; i < sections_per_block; i++)
- memory_section_action(mem->phys_index + i,
+ memory_section_action(mem->start_phys_index + i,
from_state_req);
mem->state = from_state_req;
@@ -330,7 +345,8 @@
return sprintf(buf, "%d\n", mem->phys_device);
}
-static SYSDEV_ATTR(phys_index, 0444, show_mem_phys_index, NULL);
+static SYSDEV_ATTR(phys_index, 0444, show_mem_start_phys_index, NULL);
+static SYSDEV_ATTR(end_phys_index, 0444, show_mem_end_phys_index, NULL);
static SYSDEV_ATTR(state, 0644, show_mem_state, store_mem_state);
static SYSDEV_ATTR(phys_device, 0444, show_phys_device, NULL);
static SYSDEV_ATTR(removable, 0444, show_mem_removable, NULL);
@@ -514,17 +530,21 @@
return -ENOMEM;
scn_nr = __section_nr(section);
- mem->phys_index = base_memory_block_id(scn_nr) * sections_per_block;
+ mem->start_phys_index =
+ base_memory_block_id(scn_nr) * sections_per_block;
+ mem->end_phys_index = mem->start_phys_index + sections_per_block - 1;
mem->state = state;
atomic_inc(&mem->section_count);
mutex_init(&mem->state_mutex);
- start_pfn = section_nr_to_pfn(mem->phys_index);
+ start_pfn = section_nr_to_pfn(mem->start_phys_index);
mem->phys_device = arch_get_memory_phys_device(start_pfn);
ret = register_memory(mem);
if (!ret)
ret = mem_create_simple_file(mem, phys_index);
if (!ret)
+ ret = mem_create_simple_file(mem, end_phys_index);
+ if (!ret)
ret = mem_create_simple_file(mem, state);
if (!ret)
ret = mem_create_simple_file(mem, phys_device);
@@ -571,6 +591,7 @@
if (atomic_dec_and_test(&mem->section_count)) {
unregister_mem_sect_under_nodes(mem);
mem_remove_simple_file(mem, phys_index);
+ mem_remove_simple_file(mem, end_phys_index);
mem_remove_simple_file(mem, state);
mem_remove_simple_file(mem, phys_device);
mem_remove_simple_file(mem, removable);
Index: linux-next/include/linux/memory.h
===================================================================
--- linux-next.orig/include/linux/memory.h 2010-09-27 13:49:37.000000000 -0500
+++ linux-next/include/linux/memory.h 2010-09-27 13:50:38.000000000 -0500
@@ -22,7 +22,8 @@
#include <asm/atomic.h>
struct memory_block {
- unsigned long phys_index;
+ unsigned long start_phys_index;
+ unsigned long end_phys_index;
unsigned long state;
atomic_t section_count;
WARNING: multiple messages have this Message-ID (diff)
From: Nathan Fontenot <nfont@austin.ibm.com>
To: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linuxppc-dev@ozlabs.org
Cc: Greg KH <greg@kroah.com>, Dave Hansen <dave@linux.vnet.ibm.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: [PATCH 5/8] v2 Add end_phys_index file
Date: Mon, 27 Sep 2010 14:26:18 -0500 [thread overview]
Message-ID: <4CA0EFDA.9020703@austin.ibm.com> (raw)
In-Reply-To: <4CA0EBEB.1030204@austin.ibm.com>
Update the 'phys_index' properties of a memory block to include a
'start_phys_index' which is the same as the current 'phys_index' property.
The property still appears as 'phys_index' in sysfs but the memory_block
struct name is updated to indicate the start and end values.
This also adds an 'end_phys_index' property to indicate the id of the
last section in th memory block.
Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
---
drivers/base/memory.c | 39 ++++++++++++++++++++++++++++++---------
include/linux/memory.h | 3 ++-
2 files changed, 32 insertions(+), 10 deletions(-)
Index: linux-next/drivers/base/memory.c
===================================================================
--- linux-next.orig/drivers/base/memory.c 2010-09-27 13:50:18.000000000 -0500
+++ linux-next/drivers/base/memory.c 2010-09-27 13:50:38.000000000 -0500
@@ -97,7 +97,7 @@
int error;
memory->sysdev.cls = &memory_sysdev_class;
- memory->sysdev.id = memory->phys_index / sections_per_block;
+ memory->sysdev.id = memory->start_phys_index / sections_per_block;
error = sysdev_register(&memory->sysdev);
return error;
@@ -138,12 +138,26 @@
* uses.
*/
-static ssize_t show_mem_phys_index(struct sys_device *dev,
+static ssize_t show_mem_start_phys_index(struct sys_device *dev,
struct sysdev_attribute *attr, char *buf)
{
struct memory_block *mem =
container_of(dev, struct memory_block, sysdev);
- return sprintf(buf, "%08lx\n", mem->phys_index / sections_per_block);
+ unsigned long phys_index;
+
+ phys_index = mem->start_phys_index / sections_per_block;
+ return sprintf(buf, "%08lx\n", phys_index);
+}
+
+static ssize_t show_mem_end_phys_index(struct sys_device *dev,
+ struct sysdev_attribute *attr, char *buf)
+{
+ struct memory_block *mem =
+ container_of(dev, struct memory_block, sysdev);
+ unsigned long phys_index;
+
+ phys_index = mem->end_phys_index / sections_per_block;
+ return sprintf(buf, "%08lx\n", phys_index);
}
/*
@@ -158,7 +172,7 @@
container_of(dev, struct memory_block, sysdev);
for (i = 0; i < sections_per_block; i++) {
- pfn = section_nr_to_pfn(mem->phys_index + i);
+ pfn = section_nr_to_pfn(mem->start_phys_index + i);
ret &= is_mem_section_removable(pfn, PAGES_PER_SECTION);
}
@@ -275,14 +289,15 @@
mem->state = MEM_GOING_OFFLINE;
for (i = 0; i < sections_per_block; i++) {
- ret = memory_section_action(mem->phys_index + i, to_state);
+ ret = memory_section_action(mem->start_phys_index + i,
+ to_state);
if (ret)
break;
}
if (ret) {
for (i = 0; i < sections_per_block; i++)
- memory_section_action(mem->phys_index + i,
+ memory_section_action(mem->start_phys_index + i,
from_state_req);
mem->state = from_state_req;
@@ -330,7 +345,8 @@
return sprintf(buf, "%d\n", mem->phys_device);
}
-static SYSDEV_ATTR(phys_index, 0444, show_mem_phys_index, NULL);
+static SYSDEV_ATTR(phys_index, 0444, show_mem_start_phys_index, NULL);
+static SYSDEV_ATTR(end_phys_index, 0444, show_mem_end_phys_index, NULL);
static SYSDEV_ATTR(state, 0644, show_mem_state, store_mem_state);
static SYSDEV_ATTR(phys_device, 0444, show_phys_device, NULL);
static SYSDEV_ATTR(removable, 0444, show_mem_removable, NULL);
@@ -514,17 +530,21 @@
return -ENOMEM;
scn_nr = __section_nr(section);
- mem->phys_index = base_memory_block_id(scn_nr) * sections_per_block;
+ mem->start_phys_index =
+ base_memory_block_id(scn_nr) * sections_per_block;
+ mem->end_phys_index = mem->start_phys_index + sections_per_block - 1;
mem->state = state;
atomic_inc(&mem->section_count);
mutex_init(&mem->state_mutex);
- start_pfn = section_nr_to_pfn(mem->phys_index);
+ start_pfn = section_nr_to_pfn(mem->start_phys_index);
mem->phys_device = arch_get_memory_phys_device(start_pfn);
ret = register_memory(mem);
if (!ret)
ret = mem_create_simple_file(mem, phys_index);
if (!ret)
+ ret = mem_create_simple_file(mem, end_phys_index);
+ if (!ret)
ret = mem_create_simple_file(mem, state);
if (!ret)
ret = mem_create_simple_file(mem, phys_device);
@@ -571,6 +591,7 @@
if (atomic_dec_and_test(&mem->section_count)) {
unregister_mem_sect_under_nodes(mem);
mem_remove_simple_file(mem, phys_index);
+ mem_remove_simple_file(mem, end_phys_index);
mem_remove_simple_file(mem, state);
mem_remove_simple_file(mem, phys_device);
mem_remove_simple_file(mem, removable);
Index: linux-next/include/linux/memory.h
===================================================================
--- linux-next.orig/include/linux/memory.h 2010-09-27 13:49:37.000000000 -0500
+++ linux-next/include/linux/memory.h 2010-09-27 13:50:38.000000000 -0500
@@ -22,7 +22,8 @@
#include <asm/atomic.h>
struct memory_block {
- unsigned long phys_index;
+ unsigned long start_phys_index;
+ unsigned long end_phys_index;
unsigned long state;
atomic_t section_count;
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-09-27 19:26 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-27 19:09 [PATCH 0/8] v2 De-Couple sysfs memory directories from memory sections Nathan Fontenot
2010-09-27 19:09 ` Nathan Fontenot
2010-09-27 19:09 ` Nathan Fontenot
2010-09-27 19:21 ` [PATCH 1/8] v2 Move find_memory_block() routine Nathan Fontenot
2010-09-27 19:21 ` Nathan Fontenot
2010-09-27 19:21 ` Nathan Fontenot
2010-09-27 19:22 ` [PATCH 2/8] v2 Add section count to memory_block struct Nathan Fontenot
2010-09-27 19:22 ` Nathan Fontenot
2010-09-27 19:22 ` Nathan Fontenot
2010-09-28 9:31 ` Robin Holt
2010-09-28 9:31 ` Robin Holt
2010-09-28 9:31 ` Robin Holt
2010-09-28 18:14 ` Nathan Fontenot
2010-09-28 18:14 ` Nathan Fontenot
2010-09-28 18:14 ` Nathan Fontenot
2010-09-27 19:23 ` [PATCH 3/8] v2 Add mutex for adding/removing memory blocks Nathan Fontenot
2010-09-27 19:23 ` Nathan Fontenot
2010-09-27 19:23 ` Nathan Fontenot
2010-09-27 19:25 ` [PATCH 4/8] v2 Allow memory block to span multiple memory sections Nathan Fontenot
2010-09-27 19:25 ` Nathan Fontenot
2010-09-27 19:25 ` Nathan Fontenot
2010-09-27 23:55 ` Dave Hansen
2010-09-27 23:55 ` Dave Hansen
2010-09-27 23:55 ` Dave Hansen
2010-09-28 18:06 ` Nathan Fontenot
2010-09-28 18:06 ` Nathan Fontenot
2010-09-28 18:06 ` Nathan Fontenot
2010-09-28 12:48 ` Robin Holt
2010-09-28 12:48 ` Robin Holt
2010-09-28 12:48 ` Robin Holt
2010-09-28 18:20 ` Nathan Fontenot
2010-09-28 18:20 ` Nathan Fontenot
2010-09-28 18:20 ` Nathan Fontenot
2010-09-27 19:26 ` Nathan Fontenot [this message]
2010-09-27 19:26 ` [PATCH 5/8] v2 Add end_phys_index file Nathan Fontenot
2010-09-27 19:26 ` Nathan Fontenot
2010-09-27 19:27 ` [PATCH 6/8] v2 Update node sysfs code Nathan Fontenot
2010-09-27 19:27 ` Nathan Fontenot
2010-09-27 19:27 ` Nathan Fontenot
2010-09-28 9:29 ` Robin Holt
2010-09-28 9:29 ` Robin Holt
2010-09-28 9:29 ` Robin Holt
2010-09-28 15:21 ` Dave Hansen
2010-09-28 15:21 ` Dave Hansen
2010-09-28 15:21 ` Dave Hansen
2010-09-27 19:28 ` [PATCH 7/8] v2 Define memory_block_size_bytes() for powerpc/pseries Nathan Fontenot
2010-09-27 19:28 ` Nathan Fontenot
2010-09-27 19:28 ` Nathan Fontenot
2010-09-27 19:28 ` [PATCH 8/8] v2 Update memory hotplug documentation Nathan Fontenot
2010-09-27 19:28 ` Nathan Fontenot
2010-09-27 19:28 ` Nathan Fontenot
2010-09-28 12:45 ` Avi Kivity
2010-09-28 12:45 ` Avi Kivity
2010-09-28 12:45 ` Avi Kivity
2010-09-28 18:18 ` Nathan Fontenot
2010-09-28 18:18 ` Nathan Fontenot
2010-09-28 18:18 ` Nathan Fontenot
2010-09-28 12:38 ` [PATCH 0/8] v2 De-Couple sysfs memory directories from memory sections Robin Holt
2010-09-28 12:38 ` Robin Holt
2010-09-28 12:38 ` Robin Holt
2010-09-28 18:17 ` Nathan Fontenot
2010-09-28 18:17 ` Nathan Fontenot
2010-09-28 18:17 ` Nathan Fontenot
2010-09-29 19:28 ` Robin Holt
2010-09-29 19:28 ` Robin Holt
2010-09-29 19:28 ` Robin Holt
2010-09-30 15:17 ` Nathan Fontenot
2010-09-30 15:17 ` Nathan Fontenot
2010-09-30 15:17 ` Nathan Fontenot
2010-09-30 16:39 ` Robin Holt
2010-09-30 16:39 ` Robin Holt
2010-09-30 16:39 ` Robin Holt
2010-09-28 12:44 ` Avi Kivity
2010-09-28 12:44 ` Avi Kivity
2010-09-28 12:44 ` Avi Kivity
2010-09-28 15:12 ` Robin Holt
2010-09-28 15:12 ` Robin Holt
2010-09-28 15:12 ` Robin Holt
2010-09-28 16:34 ` Avi Kivity
2010-09-28 16:34 ` Avi Kivity
2010-09-28 16:34 ` Avi Kivity
2010-09-29 2:50 ` Greg KH
2010-09-29 2:50 ` Greg KH
2010-09-29 2:50 ` Greg KH
2010-09-29 8:32 ` Avi Kivity
2010-09-29 8:32 ` Avi Kivity
2010-09-29 8:32 ` Avi Kivity
2010-09-29 12:37 ` Greg KH
2010-09-29 12:37 ` Greg KH
2010-09-29 12:37 ` Greg KH
2010-09-29 13:39 ` Kay Sievers
2010-09-29 13:39 ` Kay Sievers
2010-09-29 13:39 ` Kay Sievers
2010-10-03 7:52 ` Avi Kivity
2010-10-03 7:52 ` Avi Kivity
2010-10-03 7:52 ` Avi Kivity
2010-09-28 15:17 ` Dave Hansen
2010-09-28 15:17 ` Dave Hansen
2010-09-28 15:17 ` Dave Hansen
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=4CA0EFDA.9020703@austin.ibm.com \
--to=nfont@austin.ibm.com \
--cc=dave@linux.vnet.ibm.com \
--cc=greg@kroah.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@ozlabs.org \
/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 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.