All of lore.kernel.org
 help / color / mirror / Atom feed
From: dave@linux.vnet.ibm.com (Dave Hansen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 00/10] mm: Linux VM Infrastructure to support Memory Power Management
Date: Wed, 29 Jun 2011 10:06:24 -0700	[thread overview]
Message-ID: <1309367184.11430.594.camel@nimitz> (raw)
In-Reply-To: <20110629130038.GA7909@in.ibm.com>

I was kinda hoping for something a bit simpler than that.  I'd boil down
what you were saying to this:

     1. The kernel must be aware of how the pieces of hardware are
        mapped in to the system's physical address space
     2. The kernel must have a mechanism in place to minimize access to
        specific pieces of hardware 
     3. For destructive power-down operations, the kernel should have a
        mechanism in place to ensure that no valuable data is contained
        in the memory to be powered down.

Is that complete?

On Wed, 2011-06-29 at 18:30 +0530, Ankita Garg wrote:
> 1) Dynamic Power Transition: The memory controller can have the ability
> to automatically transition regions of memory into lower power states
> when they are devoid of references for a pre-defined threshold amount of
> time. Memory contents are preserved in the low power states and accessing
> memory that is at a low power state takes a latency hit.
> 
> 2) Dynamic Power Off: If a region is free/unallocated, the software can
> indicate to the controller to completely turn off power to a certain
> region. Memory contents are lost and hence the software has to be
> absolutely sure about the usage statistics of the particular region. This
> is a runtime capability, where the required amount of memory can be
> powered 'ON' to match the workload demands.
> 
> 3) Partial Array Self-Refresh (PASR): If a certain regions of memory is
> free/unallocated, the software can indicate to the controller to not
> refresh that region when the system goes to suspend-to-ram state and
> thereby save standby power consumption.

(3) is simply a subset of (2), but with the additional restriction that
the power off can only occur during a suspend operation.  

Let's say we fully implemented support for (2).  What would be missing
to support PASR?

-- Dave

WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <dave@linux.vnet.ibm.com>
To: Ankita Garg <ankita@in.ibm.com>
Cc: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	linux-pm@lists.linux-foundation.org, svaidy@linux.vnet.ibm.com,
	thomas.abraham@linaro.org,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Matthew Garrett <mjg59@srcf.ucam.org>,
	Arjan van de Ven <arjan@infradead.org>
Subject: Re: [PATCH 00/10] mm: Linux VM Infrastructure to support Memory Power Management
Date: Wed, 29 Jun 2011 10:06:24 -0700	[thread overview]
Message-ID: <1309367184.11430.594.camel@nimitz> (raw)
In-Reply-To: <20110629130038.GA7909@in.ibm.com>

I was kinda hoping for something a bit simpler than that.  I'd boil down
what you were saying to this:

     1. The kernel must be aware of how the pieces of hardware are
        mapped in to the system's physical address space
     2. The kernel must have a mechanism in place to minimize access to
        specific pieces of hardware 
     3. For destructive power-down operations, the kernel should have a
        mechanism in place to ensure that no valuable data is contained
        in the memory to be powered down.

Is that complete?

On Wed, 2011-06-29 at 18:30 +0530, Ankita Garg wrote:
> 1) Dynamic Power Transition: The memory controller can have the ability
> to automatically transition regions of memory into lower power states
> when they are devoid of references for a pre-defined threshold amount of
> time. Memory contents are preserved in the low power states and accessing
> memory that is at a low power state takes a latency hit.
> 
> 2) Dynamic Power Off: If a region is free/unallocated, the software can
> indicate to the controller to completely turn off power to a certain
> region. Memory contents are lost and hence the software has to be
> absolutely sure about the usage statistics of the particular region. This
> is a runtime capability, where the required amount of memory can be
> powered 'ON' to match the workload demands.
> 
> 3) Partial Array Self-Refresh (PASR): If a certain regions of memory is
> free/unallocated, the software can indicate to the controller to not
> refresh that region when the system goes to suspend-to-ram state and
> thereby save standby power consumption.

(3) is simply a subset of (2), but with the additional restriction that
the power off can only occur during a suspend operation.  

Let's say we fully implemented support for (2).  What would be missing
to support PASR?

-- Dave


WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <dave@linux.vnet.ibm.com>
To: Ankita Garg <ankita@in.ibm.com>
Cc: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	linux-pm@lists.linux-foundation.org, svaidy@linux.vnet.ibm.com,
	thomas.abraham@linaro.org,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Matthew Garrett <mjg59@srcf.ucam.org>,
	Arjan van de Ven <arjan@infradead.org>
Subject: Re: [PATCH 00/10] mm: Linux VM Infrastructure to support Memory Power Management
Date: Wed, 29 Jun 2011 10:06:24 -0700	[thread overview]
Message-ID: <1309367184.11430.594.camel@nimitz> (raw)
In-Reply-To: <20110629130038.GA7909@in.ibm.com>

I was kinda hoping for something a bit simpler than that.  I'd boil down
what you were saying to this:

     1. The kernel must be aware of how the pieces of hardware are
        mapped in to the system's physical address space
     2. The kernel must have a mechanism in place to minimize access to
        specific pieces of hardware 
     3. For destructive power-down operations, the kernel should have a
        mechanism in place to ensure that no valuable data is contained
        in the memory to be powered down.

Is that complete?

On Wed, 2011-06-29 at 18:30 +0530, Ankita Garg wrote:
> 1) Dynamic Power Transition: The memory controller can have the ability
> to automatically transition regions of memory into lower power states
> when they are devoid of references for a pre-defined threshold amount of
> time. Memory contents are preserved in the low power states and accessing
> memory that is at a low power state takes a latency hit.
> 
> 2) Dynamic Power Off: If a region is free/unallocated, the software can
> indicate to the controller to completely turn off power to a certain
> region. Memory contents are lost and hence the software has to be
> absolutely sure about the usage statistics of the particular region. This
> is a runtime capability, where the required amount of memory can be
> powered 'ON' to match the workload demands.
> 
> 3) Partial Array Self-Refresh (PASR): If a certain regions of memory is
> free/unallocated, the software can indicate to the controller to not
> refresh that region when the system goes to suspend-to-ram state and
> thereby save standby power consumption.

(3) is simply a subset of (2), but with the additional restriction that
the power off can only occur during a suspend operation.  

Let's say we fully implemented support for (2).  What would be missing
to support PASR?

-- Dave

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2011-06-29 17:06 UTC|newest]

Thread overview: 285+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-27 12:31 [PATCH 00/10] mm: Linux VM Infrastructure to support Memory Power Management Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31 ` [PATCH 01/10] mm: Introduce the memory regions data structure Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 15:30   ` Dave Hansen
2011-05-27 15:30   ` Dave Hansen
2011-05-27 15:30   ` Dave Hansen
2011-05-27 15:30     ` Dave Hansen
2011-05-27 15:30     ` Dave Hansen
2011-05-27 18:20     ` Vaidyanathan Srinivasan
2011-05-27 18:20     ` Vaidyanathan Srinivasan
2011-05-27 18:20       ` Vaidyanathan Srinivasan
2011-05-27 18:20       ` Vaidyanathan Srinivasan
2011-05-27 21:31       ` Dave Hansen
2011-05-27 21:31         ` Dave Hansen
2011-05-27 21:31         ` Dave Hansen
2011-05-29  8:16         ` Ankita Garg
2011-05-29  8:16           ` Ankita Garg
2011-05-29  8:16           ` Ankita Garg
2011-05-31 17:34           ` Dave Hansen
2011-05-31 17:34             ` Dave Hansen
2011-05-31 17:34             ` Dave Hansen
2011-06-02  8:54             ` Ankita Garg
2011-06-02  8:54             ` Ankita Garg
2011-06-02  8:54               ` Ankita Garg
2011-06-02  8:54               ` Ankita Garg
2011-05-31 17:34           ` Dave Hansen
2011-05-31 17:34           ` Dave Hansen
2011-05-29  8:16         ` Ankita Garg
2011-05-27 21:31       ` Dave Hansen
2011-05-27 21:31       ` Dave Hansen
2011-05-27 21:31       ` Dave Hansen
2011-05-27 15:30   ` Dave Hansen
2011-05-27 12:31 ` [PATCH 02/10] mm: Helper routines Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31 ` [PATCH 03/10] mm: Init zones inside memory regions Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31 ` [PATCH 04/10] mm: Refer to zones from " Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31 ` [PATCH 05/10] mm: Create zonelists Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31 ` [PATCH 06/10] mm: Verify zonelists Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31 ` [PATCH 07/10] mm: Modify vmstat Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31 ` [PATCH 08/10] mm: Modify vmscan Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31 ` [PATCH 09/10] mm: Reflect memory region changes in zoneinfo Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31 ` [PATCH 10/10] mm: Create memory regions at boot-up Ankita Garg
2011-05-27 12:31 ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-27 12:31   ` Ankita Garg
2011-05-28 14:39   ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-28 14:39     ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-28 14:39     ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-28 14:39   ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-28  7:56 ` [PATCH 00/10] mm: Linux VM Infrastructure to support Memory Power Management Andrew Morton
2011-05-28  7:56 ` Andrew Morton
2011-05-28  7:56   ` Andrew Morton
2011-05-28  7:56   ` Andrew Morton
2011-05-28 13:16   ` Ankita Garg
2011-05-28 13:16   ` Ankita Garg
2011-05-28 13:16     ` Ankita Garg
2011-05-28 13:16     ` Ankita Garg
2011-06-09 18:52   ` Paul E. McKenney
2011-06-09 18:52   ` Paul E. McKenney
2011-06-09 18:52     ` Paul E. McKenney
2011-06-09 18:52     ` Paul E. McKenney
2011-06-10  0:51     ` Kyungmin Park
2011-06-10  0:51       ` Kyungmin Park
2011-06-10  0:51       ` Kyungmin Park
2011-06-10 15:11       ` Paul E. McKenney
2011-06-10 15:11         ` Paul E. McKenney
2011-06-10 15:11         ` Paul E. McKenney
2011-06-10 15:59         ` Matthew Garrett
2011-06-10 15:59         ` Matthew Garrett
2011-06-10 15:59           ` Matthew Garrett
2011-06-10 15:59           ` Matthew Garrett
2011-06-10 16:55           ` Paul E. McKenney
2011-06-10 16:55           ` Paul E. McKenney
2011-06-10 16:55             ` Paul E. McKenney
2011-06-10 16:55             ` Paul E. McKenney
2011-06-10 17:05             ` Matthew Garrett
2011-06-10 17:05               ` Matthew Garrett
2011-06-10 17:05               ` Matthew Garrett
2011-06-10 17:19               ` Paul E. McKenney
2011-06-10 17:19                 ` Paul E. McKenney
2011-06-10 17:19                 ` Paul E. McKenney
2011-06-10 17:23                 ` Matthew Garrett
2011-06-10 17:23                 ` Matthew Garrett
2011-06-10 17:23                   ` Matthew Garrett
2011-06-10 17:23                   ` Matthew Garrett
2011-06-10 17:52                   ` Paul E. McKenney
2011-06-10 17:52                     ` Paul E. McKenney
2011-06-10 17:52                     ` Paul E. McKenney
2011-06-10 18:08                     ` Matthew Garrett
2011-06-10 18:08                       ` Matthew Garrett
2011-06-10 18:08                       ` Matthew Garrett
2011-06-10 18:47                       ` Paul E. McKenney
2011-06-10 18:47                       ` Paul E. McKenney
2011-06-10 18:47                         ` Paul E. McKenney
2011-06-10 18:47                         ` Paul E. McKenney
2011-06-10 19:23                         ` Matthew Garrett
2011-06-10 19:23                         ` Matthew Garrett
2011-06-10 19:23                           ` Matthew Garrett
2011-06-10 19:23                           ` Matthew Garrett
2011-06-10 19:37                           ` Paul E. McKenney
2011-06-10 19:37                           ` Paul E. McKenney
2011-06-10 19:37                             ` Paul E. McKenney
2011-06-10 19:37                             ` Paul E. McKenney
2011-06-10 20:12                             ` Matthew Garrett
2011-06-10 20:12                             ` Matthew Garrett
2011-06-10 20:12                               ` Matthew Garrett
2011-06-10 20:12                               ` Matthew Garrett
2011-06-11  3:02                             ` Arjan van de Ven
2011-06-11  3:02                               ` Arjan van de Ven
2011-06-11  3:02                               ` Arjan van de Ven
2011-06-11 17:06                               ` Paul E. McKenney
2011-06-11 17:06                               ` Paul E. McKenney
2011-06-11 17:06                                 ` Paul E. McKenney
2011-06-11 17:06                                 ` Paul E. McKenney
2011-06-11 17:26                                 ` Arjan van de Ven
2011-06-11 17:26                                   ` Arjan van de Ven
2011-06-11 17:26                                   ` Arjan van de Ven
2011-06-12 23:07                                   ` Paul E. McKenney
2011-06-12 23:07                                   ` Paul E. McKenney
2011-06-12 23:07                                     ` Paul E. McKenney
2011-06-12 23:07                                     ` Paul E. McKenney
2011-06-13 14:28                                     ` Arjan van de Ven
2011-06-13 14:28                                       ` Arjan van de Ven
2011-06-13 14:28                                       ` Arjan van de Ven
2011-06-13 23:04                                       ` Paul E. McKenney
2011-06-13 23:04                                         ` Paul E. McKenney
2011-06-13 23:04                                         ` Paul E. McKenney
2011-06-13 23:04                                       ` Paul E. McKenney
2011-06-13 14:28                                     ` Arjan van de Ven
2011-06-11 17:26                                 ` Arjan van de Ven
2011-06-14  8:51                               ` Ankita Garg
2011-06-14  8:51                                 ` Ankita Garg
2011-06-14  8:51                                 ` Ankita Garg
2011-06-14  8:51                               ` Ankita Garg
2011-06-15 16:53                               ` Ankita Garg
2011-06-15 16:53                               ` Ankita Garg
2011-06-15 16:53                                 ` Ankita Garg
2011-06-15 16:53                                 ` Ankita Garg
2011-06-18  4:08                                 ` Arjan van de Ven
2011-06-18  4:08                                 ` Arjan van de Ven
2011-06-18  4:08                                   ` Arjan van de Ven
2011-06-18  4:08                                   ` Arjan van de Ven
2011-06-11  3:02                             ` Arjan van de Ven
2011-06-10 18:08                     ` Matthew Garrett
2011-06-10 17:52                   ` Paul E. McKenney
2011-06-10 17:33                 ` Ankita Garg
2011-06-10 17:33                 ` Ankita Garg
2011-06-10 17:33                   ` Ankita Garg
2011-06-10 17:33                   ` Ankita Garg
2011-06-11 17:08                   ` Paul E. McKenney
2011-06-11 17:08                     ` Paul E. McKenney
2011-06-11 17:08                     ` Paul E. McKenney
2011-06-11 17:08                   ` Paul E. McKenney
2011-06-10 17:19               ` Paul E. McKenney
2011-06-10 17:05             ` Matthew Garrett
2011-06-10 15:11       ` Paul E. McKenney
2011-06-10  0:51     ` Kyungmin Park
2011-07-12  5:31   ` amit kachhap
2011-07-12  5:31     ` amit kachhap
2011-07-12  5:31     ` amit kachhap
2011-07-12  5:31   ` amit kachhap
2011-06-13  4:47 ` KAMEZAWA Hiroyuki
2011-06-13  4:47 ` KAMEZAWA Hiroyuki
2011-06-13  4:47   ` KAMEZAWA Hiroyuki
2011-06-13  4:47   ` KAMEZAWA Hiroyuki
2011-06-16  4:20   ` Ankita Garg
2011-06-16  4:20   ` Ankita Garg
2011-06-16  4:20     ` Ankita Garg
2011-06-16  4:20     ` Ankita Garg
2011-06-16  9:12     ` KAMEZAWA Hiroyuki
2011-06-16  9:12     ` KAMEZAWA Hiroyuki
2011-06-16  9:12       ` KAMEZAWA Hiroyuki
2011-06-16  9:12       ` KAMEZAWA Hiroyuki
2011-06-17 15:28       ` Ankita Garg
2011-06-17 15:28       ` Ankita Garg
2011-06-17 15:28         ` Ankita Garg
2011-06-17 15:28         ` Ankita Garg
2011-06-19 23:53         ` KAMEZAWA Hiroyuki
2011-06-19 23:53         ` KAMEZAWA Hiroyuki
2011-06-19 23:53           ` KAMEZAWA Hiroyuki
2011-06-19 23:53           ` KAMEZAWA Hiroyuki
2011-06-16 16:04     ` Dave Hansen
2011-06-16 16:04     ` Dave Hansen
2011-06-16 16:04       ` Dave Hansen
2011-06-16 16:04       ` Dave Hansen
2011-06-17 10:03       ` Ankita Garg
2011-06-17 10:03         ` Ankita Garg
2011-06-17 10:03         ` Ankita Garg
2011-06-17 10:03       ` Ankita Garg
2011-06-29 13:00 ` Ankita Garg
2011-06-29 13:00   ` Ankita Garg
2011-06-29 13:00   ` Ankita Garg
2011-06-29 17:06   ` Dave Hansen
2011-06-29 17:06   ` Dave Hansen [this message]
2011-06-29 17:06     ` Dave Hansen
2011-06-29 17:06     ` Dave Hansen
2011-06-29 17:42     ` Ankita Garg
2011-06-29 17:42     ` Ankita Garg
2011-06-29 17:42       ` Ankita Garg
2011-06-29 17:42       ` Ankita Garg
2011-06-29 17:59       ` Dave Hansen
2011-06-29 17:59       ` Dave Hansen
2011-06-29 17:59         ` Dave Hansen
2011-06-29 17:59         ` Dave Hansen
2011-06-29 18:17         ` Vaidyanathan Srinivasan
2011-06-29 18:17         ` Vaidyanathan Srinivasan
2011-06-29 18:17           ` Vaidyanathan Srinivasan
2011-06-29 18:17           ` Vaidyanathan Srinivasan
2011-06-30  4:37           ` Ankita Garg
2011-06-30  4:37           ` Ankita Garg
2011-06-30  4:37             ` Ankita Garg
2011-06-30  4:37             ` Ankita Garg
2011-06-29 20:11         ` Andi Kleen
2011-06-29 20:11         ` Andi Kleen
2011-06-29 20:11           ` Andi Kleen
2011-06-29 20:11           ` Andi Kleen
2011-06-30  5:11           ` Ankita Garg
2011-06-30  5:11           ` Ankita Garg
2011-06-30  5:11             ` Ankita Garg
2011-06-30  5:11             ` Ankita Garg
2011-06-29 18:07     ` Vaidyanathan Srinivasan
2011-06-29 18:07       ` Vaidyanathan Srinivasan
2011-06-29 18:07       ` Vaidyanathan Srinivasan
2011-06-29 18:07     ` Vaidyanathan Srinivasan
2011-07-06  8:45   ` Pekka Enberg
2011-07-06  8:45   ` Pekka Enberg
2011-07-06  8:45     ` Pekka Enberg
2011-07-06  8:45     ` Pekka Enberg
2011-07-06  9:01     ` Pekka Enberg
2011-07-06  9:01     ` Pekka Enberg
2011-07-06  9:01       ` Pekka Enberg
2011-07-06  9:01       ` Pekka Enberg
2011-07-06 16:50       ` Vaidyanathan Srinivasan
2011-07-06 16:50       ` Vaidyanathan Srinivasan
2011-07-06 16:50         ` Vaidyanathan Srinivasan
2011-07-06 16:50         ` Vaidyanathan Srinivasan
2011-07-06 16:41     ` Vaidyanathan Srinivasan
2011-07-06 16:41       ` Vaidyanathan Srinivasan
2011-07-06 16:41       ` Vaidyanathan Srinivasan
2011-07-06 16:41     ` Vaidyanathan Srinivasan
2011-07-06 20:20     ` david
2011-07-06 20:20     ` david at lang.hm
2011-07-06 20:20       ` david
2011-07-06 20:20       ` david
2011-07-07  4:54       ` Ankita Garg
2011-07-07  4:54         ` Ankita Garg
2011-07-07  4:54         ` Ankita Garg
2011-07-07  4:54       ` Ankita Garg
2011-07-07 18:00       ` Pekka Enberg
2011-07-07 18:00       ` Pekka Enberg
2011-07-07 18:00         ` Pekka Enberg
2011-07-07 18:00         ` Pekka Enberg
2011-07-08  1:32         ` david
2011-07-08  1:32         ` david at lang.hm
2011-07-08  1:32           ` david
2011-07-08  1:32           ` david
2011-06-29 13:00 ` Ankita Garg
  -- strict thread matches above, loose matches on Subject: below --
2011-05-27 12:31 Ankita Garg

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=1309367184.11430.594.camel@nimitz \
    --to=dave@linux.vnet.ibm.com \
    --cc=linux-arm-kernel@lists.infradead.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.