From: Lee Revell <rlrevell@joe-job.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Florian Schmidt <mista.tapas@gmx.net>,
"K.R. Foley" <kr@cybsft.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
felipe_alfaro@linuxmail.org
Subject: Re: [patch] voluntary-preempt-2.6.9-rc1-bk12-R5
Date: Mon, 06 Sep 2004 03:44:16 -0400 [thread overview]
Message-ID: <1094456653.29921.45.camel@krustophenia.net> (raw)
In-Reply-To: <20040906063040.GA11541@elte.hu>
On Mon, 2004-09-06 at 02:30, Ingo Molnar wrote:
> * Lee Revell <rlrevell@joe-job.com> wrote:
>
> > http://krustophenia.net/testresults.php?dataset=2.6.9-rc1-R0#/var/www/2.6.9-rc1-R0/foo.hist
> >
> > I find the two smaller spikes to either side of the central spike
> > really odd. These showed up in my jackd tests too, I had attributed
> > them to some measurement artifact, but they seem real. Maybe a
> > rounding bug, or some kind of weird cache effect?
>
> interesting - the histograms are pretty symmetric around the center.
> E.g. the exponential foo.hist2 diagram is way too symmetric around 50
> usecs! What precisely is being measured?
>
Here's the program. It does mlockall(), acquires realtime scheduling,
then sets up a 2048 Hz stream of interupts from the RTC and measures the
delay. It's quite possible there's a bug, the amlat program did not
seem to work, something must have changed with the RTC from 2.4 to 2.6.
/*
* This was originally written by Mark Hahn. Obtained from
* http://brain.mcmaster.ca/~hahn/realfeel.c
*/
#include <linux/rtc.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
#include <sys/mman.h>
#include <sched.h>
#include <sys/signal.h>
#include <string.h>
#define _GNU_SOURCE
#include <getopt.h>
/* global vars */
int stopit; /* set to stop measuring */
#define SAMPLES 10000
int histogram[SAMPLES]; /* Milliseconds */
#define PAGE_SIZE 4096UL /* virtual memory page size */
#define OSCR_HZ 3686400 /* frequency of clock ticks */
#define OSCR 0x90000010 /* physical address of OSCR register */
unsigned long *oscr; /* ptr to OSCR */
void setup_clock (void)
{
int fd;
void *map_base;
off_t target;
off_t page;
#ifndef ARCHARM
return;
#endif
fd = open ("/dev/mem", O_RDWR | O_SYNC);
if (-1 == fd) {
perror ("open of /dev/mem failed\n");
exit (1);
}
/* Map one page */
target = OSCR;
page = target & ~(PAGE_SIZE - 1);
map_base = mmap (0, PAGE_SIZE, PROT_READ, MAP_SHARED, fd, page);
if (MAP_FAILED == map_base) {
perror ("mmap failed");
(void) close (fd);
exit (2);
}
oscr = map_base + (target - page);
/* This does not end the mmap,
* the mmap will go away when the process dies
*/
close (fd);
}
double second() {
struct timeval tv;
gettimeofday(&tv,0);
return tv.tv_sec + 1e-6 * tv.tv_usec;
}
typedef unsigned long long u64;
u64 rdtsc() {
u64 tsc;
#ifdef ARCHARM
tsc = *oscr;
#else
__asm__ __volatile__("rdtsc" : "=A" (tsc));
#endif
return tsc;
}
void selectsleep(unsigned us) {
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = us;
select(0,0,0,0,&tv);
}
double secondsPerTick, ticksPerSecond;
void calibrate()
{
double sumx = 0;
double sumy = 0;
double sumxx = 0;
double sumxy = 0;
double slope;
// least squares linear regression of ticks onto real time
// as returned by gettimeofday.
const unsigned n = 30;
unsigned i;
for (i=0; i<n; i++) {
double breal,real,ticks;
u64 bticks;
breal = second();
bticks = rdtsc();
selectsleep((unsigned)(10000 + drand48() * 200000));
ticks = rdtsc() - bticks;
real = second() - breal;
sumx += real;
sumxx += real * real;
sumxy += real * ticks;
sumy += ticks;
}
slope = ((sumxy - (sumx*sumy) / n) /
(sumxx - (sumx*sumx) / n));
ticksPerSecond = slope;
secondsPerTick = 1.0 / slope;
printf("%3.3f MHz\n",ticksPerSecond*1e-6);
}
void fatal(char *msg)
{
perror(msg);
exit(1);
}
int set_realtime_priority(void)
{
struct sched_param schp;
/*
* set the process to realtime privs
*/
memset(&schp, 0, sizeof(schp));
schp.sched_priority = sched_get_priority_max(SCHED_FIFO);
if (sched_setscheduler(0, SCHED_FIFO, &schp) != 0) {
perror("sched_setscheduler");
exit(1);
}
return 0;
}
void hist(char *file)
{
int i;
FILE *f;
f = fopen(file, "w");
if (f == 0) {
fprintf(stderr, "realfeel: can't open `%s':%s\n",
file, strerror(errno));
exit(1);
}
for (i = 0; i < SAMPLES; i++) {
if (histogram[i]) {
fprintf(f, "%d.%d %d\n",
i / 10, i % 10, histogram[i]);
}
}
fclose(f);
exit(0);
}
void signalled(int sig)
{
stopit = 1;
}
static void usage(void)
{
fprintf(stderr, "Usage: realfeel [--samples n] [--hertz n] filename.hist\n");
exit(1);
}
uint bounded=0;
uint ncycles=0;
uint current=0;
int hz = 2048;
char *parse_options(int argc, char **argv)
{
int c, option_index;
static struct option long_options[] = {
{"samples", required_argument, 0, 0},
{"hertz", required_argument, 0, 0},
{0, 0, 0, 0},
};
while ((c = getopt_long (argc, argv, "b:", long_options, &option_index)) != -1) {
switch (option_index) {
default:
case -1:
fprintf (stderr, "Bad option (%s)\n", optarg);
usage();
exit (1);
break;
case 0:
bounded = 1;
ncycles = atoi(optarg);
break;
case 1:
hz = atoi(optarg);
if (hz > 2048) {
fprintf(stderr, "max allowable interrupt frequency is 2048 Hz\n");
hz = 2048;
}
else if (hz <= 0) {
fprintf(stderr, "zero or negative frequency doesn't make sense!\n");
hz = 1;
}
}
}
if (argv[optind] == NULL) {
fprintf(stderr, "histogram file name required\n");
usage();
exit (2);
}
return argv[optind];
}
#define msec(f) (1e3 * (f))
#define usec(f) (1e6 * (f))
int main(int argc, char *argv[])
{
int fd;
double ideal;
u64 last;
double max_delay = 0;
char *histfile = parse_options(argc, argv);
if (mlockall(MCL_CURRENT|MCL_FUTURE) != 0) {
perror("mlockall");
exit(1);
}
setup_clock ();
set_realtime_priority();
calibrate();
printf("secondsPerTick=%f\n", secondsPerTick);
printf("ticksPerSecond=%f\n", ticksPerSecond);
fd = open("/dev/rtc",O_RDONLY);
if (fd == -1)
fatal("failed to open /dev/rtc");
ideal = 1.0 / hz;
if (ioctl(fd, RTC_IRQP_SET, hz) == -1)
fatal("ioctl(RTC_IRQP_SET) failed");
printf("Interrupt frequency: %d Hz\n",hz);
if (bounded) {
printf("running for %d samples\n", ncycles);
}
/* Enable periodic interrupts */
if (ioctl(fd, RTC_PIE_ON, 0) == -1)
fatal("ioctl(RTC_PIE_ON) failed");
signal(SIGINT, signalled);
last = rdtsc();
while (!stopit) {
u64 now;
double delay;
int data;
int ms;
if (read(fd, &data, sizeof(data)) == -1)
fatal("blocking read failed");
now = rdtsc();
delay = secondsPerTick * (now - last);
if (delay > max_delay) {
max_delay = delay;
// printf("%.3f msec\n", -(1e3 * (ideal - delay)));
}
ms = (-(ideal - delay) + 1.0/20000.0) * 10000000;
if (ms < 0)
ms = 0; /* hmmm */
if (ms >= SAMPLES)
ms = SAMPLES;
histogram[ms]++;
if (bounded) {
if (++current >= ncycles) {
printf ("finished collecting %d samples\n", ncycles);
printf ("maximum cycle time: %.3fms\n",
-msec(ideal - max_delay));
break;
}
if ((current % 10000) == 0) {
printf("%d cycles (max cycle time so far: %.3fus)\n",
current, -(usec(ideal - max_delay)));
}
}
last = now;
}
if (ioctl(fd, RTC_PIE_OFF, 0) == -1)
fatal("ioctl(RTC_PIE_OFF) failed");
hist(histfile);
return 0;
}
> Ingo
>
next prev parent reply other threads:[~2004-09-06 7:44 UTC|newest]
Thread overview: 223+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20040903120957.00665413@mango.fruits.de>
[not found] ` <20040903100946.GA22819@elte.hu>
[not found] ` <20040903123139.565c806b@mango.fruits.de>
2004-09-03 10:32 ` lockup with voluntary preempt R0 and VP, KP, etc, disabled Ingo Molnar
2004-09-03 11:59 ` Florian Schmidt
2004-09-03 11:55 ` Ingo Molnar
2004-09-03 13:01 ` Florian Schmidt
2004-09-03 12:04 ` Florian Schmidt
2004-09-03 12:08 ` Florian Schmidt
2004-09-03 18:28 ` Lee Revell
2004-09-03 18:54 ` Florian Schmidt
2004-09-03 18:52 ` Lee Revell
2004-09-03 19:06 ` K.R. Foley
2004-09-04 19:51 ` [patch] voluntary-preempt-2.6.9-rc1-bk4-R4 Ingo Molnar
2004-09-05 14:02 ` [patch] voluntary-preempt-2.6.9-rc1-bk12-R5 Ingo Molnar
2004-09-05 16:07 ` Matt Heler
2004-09-05 18:16 ` Lee Revell
2004-09-05 19:12 ` Ingo Molnar
2004-09-05 21:03 ` Lee Revell
2004-09-06 6:30 ` Ingo Molnar
2004-09-06 7:44 ` Lee Revell [this message]
2004-09-07 3:17 ` K.R. Foley
2004-09-06 11:06 ` [patch] voluntary-preempt-2.6.9-rc1-bk12-R6 Ingo Molnar
2004-09-06 11:48 ` Rafael J. Wysocki
2004-09-06 12:25 ` Alexander Nyberg
2004-09-06 12:29 ` Ingo Molnar
2004-09-07 9:26 ` [patch] voluntary-preempt-2.6.9-rc1-bk12-R7 Ingo Molnar
2004-09-07 11:57 ` [patch] voluntary-preempt-2.6.9-rc1-bk12-R8 Ingo Molnar
2004-09-07 14:50 ` Alexander Nyberg
2004-09-07 15:04 ` Ingo Molnar
2004-09-07 15:29 ` Alexander Nyberg
2004-09-07 19:56 ` Rafael J. Wysocki
2004-09-07 22:59 ` Lee Revell
2004-09-08 8:20 ` [patch] voluntary-preempt-2.6.9-rc1-bk12-R9 Ingo Molnar
2004-09-08 9:46 ` Rafael J. Wysocki
2004-09-08 9:56 ` Ingo Molnar
2004-09-08 22:37 ` Lee Revell
2004-09-09 6:17 ` [patch] voluntary-preempt-2.6.9-rc1-bk12-S0 Ingo Molnar
2004-09-09 19:30 ` Lee Revell
2004-09-09 20:23 ` Lee Revell
2004-09-19 12:26 ` [patch] voluntary-preempt-2.6.9-rc2-mm1-S1 Ingo Molnar
2004-09-19 17:05 ` Felipe Alfaro Solana
2004-09-20 17:14 ` K.R. Foley
2004-09-20 19:48 ` Ingo Molnar
2004-09-21 2:25 ` K.R. Foley
2004-09-20 19:47 ` Magnus Määttä
2004-09-21 2:07 ` BKL backtraces - was: " K.R. Foley
2004-09-21 7:18 ` Ingo Molnar
2004-09-21 7:44 ` [patch] voluntary-preempt-2.6.9-rc2-mm1-S2 Ingo Molnar
2004-09-21 18:51 ` K.R. Foley
2004-09-22 10:33 ` [patch] voluntary-preempt-2.6.9-rc2-mm1-S3 Ingo Molnar
2004-09-22 15:07 ` K.R. Foley
2004-09-22 17:16 ` Lee Revell
2004-09-22 17:40 ` K.R. Foley
2004-09-22 19:45 ` Ingo Molnar
2004-09-22 17:09 ` K.R. Foley
2004-09-22 19:08 ` Lee Revell
2004-09-23 1:13 ` Lee Revell
2004-09-23 12:28 ` [patch] voluntary-preempt-2.6.9-rc2-mm1-S4 Ingo Molnar
2004-09-23 12:57 ` Norberto Bensa
2004-09-23 13:01 ` Ingo Molnar
2004-09-23 13:07 ` Ingo Molnar
2004-09-23 13:09 ` Ingo Molnar
2004-09-23 16:46 ` Norberto Bensa
2004-09-23 17:13 ` Norberto Bensa
2004-09-23 18:20 ` Ingo Molnar
2004-09-23 13:35 ` Rui Nuno Capela
2004-09-23 13:40 ` Ingo Molnar
2004-09-23 16:23 ` Rui Nuno Capela
2004-09-23 18:07 ` Rui Nuno Capela
2004-09-24 12:43 ` OHCI_QUIRK_INITRESET (was: 2.6.9-rc2-mm2 ohci_hcd doesn't work) Rui Nuno Capela
2004-09-24 12:55 ` Ingo Molnar
2004-09-24 14:00 ` Rui Nuno Capela
2004-09-24 16:16 ` Bjorn Helgaas
2004-09-25 23:37 ` David Brownell
2004-09-26 13:09 ` Rui Nuno Capela
2004-09-27 15:11 ` Bjorn Helgaas
2004-09-23 21:12 ` [patch] voluntary-preempt-2.6.9-rc2-mm3-S5 Ingo Molnar
2004-09-24 0:32 ` Rui Nuno Capela
2004-09-24 2:22 ` K.R. Foley
2004-09-24 3:30 ` K.R. Foley
2004-09-24 7:40 ` Ingo Molnar
2004-09-24 11:05 ` K.R. Foley
2004-09-24 11:45 ` Ingo Molnar
2004-09-24 7:44 ` [patch] voluntary-preempt-2.6.9-rc2-mm3-S6 Ingo Molnar
2004-09-28 0:05 ` [patch] voluntary-preempt-2.6.9-rc2-mm4-S7 Ingo Molnar
2004-09-28 20:17 ` Rui Nuno Capela
2004-09-28 21:03 ` Rui Nuno Capela
2004-09-28 21:46 ` Rui Nuno Capela
2004-09-28 22:01 ` Matt Heler
2004-09-29 17:43 ` Lee Revell
2004-09-29 18:40 ` Lee Revell
2004-09-29 20:30 ` Ingo Molnar
2004-09-29 20:34 ` Lee Revell
2004-10-02 3:02 ` Lee Revell
2004-10-02 9:50 ` Ingo Molnar
2004-10-03 2:01 ` Lee Revell
2004-10-03 2:14 ` Lee Revell
2004-10-03 2:19 ` Lee Revell
2004-10-03 20:08 ` Ingo Molnar
2004-10-03 6:37 ` Lee Revell
2004-10-03 6:50 ` Lee Revell
2004-10-03 7:06 ` Lee Revell
2004-10-03 19:57 ` Ingo Molnar
2004-10-04 0:53 ` Lee Revell
2004-10-04 10:17 ` Ingo Molnar
2004-10-04 17:20 ` Lee Revell
2004-10-03 20:05 ` Ingo Molnar
2004-10-03 21:09 ` [patch] voluntary-preempt-2.6.9-rc3-mm1-S8 Ingo Molnar
2004-10-04 21:53 ` [patch] voluntary-preempt-2.6.9-rc3-mm1-S9 Ingo Molnar
2004-10-05 0:31 ` Lee Revell
2004-10-05 0:56 ` Florian Schmidt
2004-10-05 0:45 ` Lee Revell
2004-10-05 0:38 ` Andrew Rodland
2004-10-05 1:19 ` Rui Nuno Capela
2004-10-05 5:32 ` Peter Williams
2004-10-05 6:38 ` Ingo Molnar
2004-10-05 1:42 ` Florian Schmidt
2004-10-05 2:05 ` Florian Schmidt
2004-10-05 3:09 ` Andrew Rodland
2004-10-05 10:24 ` Florian Schmidt
2004-10-05 7:02 ` [patch] voluntary-preempt-2.6.9-rc3-mm2-T0 Ingo Molnar
2004-10-05 11:11 ` Rui Nuno Capela
2004-10-05 11:17 ` Ingo Molnar
2004-10-05 12:07 ` Hugh Dickins
2004-10-05 11:12 ` Florian Schmidt
2004-10-05 11:03 ` Ingo Molnar
2004-10-05 11:14 ` Rui Nuno Capela
2004-10-05 11:16 ` Ingo Molnar
2004-10-05 13:47 ` [patch] voluntary-preempt-2.6.9-rc3-mm2-T1 Ingo Molnar
2004-10-05 16:37 ` Rui Nuno Capela
2004-10-05 18:42 ` Ingo Molnar
2004-10-05 19:38 ` Rui Nuno Capela
2004-10-05 19:44 ` Ingo Molnar
2004-10-05 20:01 ` Rui Nuno Capela
2004-10-06 0:12 ` Lee Revell
2004-10-06 7:51 ` Ingo Molnar
2004-10-07 10:52 ` [patch] voluntary-preempt-2.6.9-rc3-mm3-T3 Ingo Molnar
[not found] ` <20041007134116.3e53b239.h.mth@web.de>
2004-10-07 11:44 ` Ingo Molnar
2004-10-07 12:08 ` Hanno Meyer-Thurow
2004-10-07 12:16 ` Rui Nuno Capela
2004-10-07 13:53 ` Rui Nuno Capela
2004-10-07 14:13 ` voluntary-preempt-2.6.9-rc3-mm3-T3 Con Kolivas
2004-10-07 23:26 ` [patch] voluntary-preempt-2.6.9-rc3-mm3-T3 Rui Nuno Capela
2004-10-08 5:36 ` Lee Revell
2004-10-08 6:49 ` Con Kolivas
2004-10-08 18:05 ` Lee Revell
2004-10-08 7:06 ` Ingo Molnar
2004-10-08 7:36 ` Peter Williams
2004-10-08 17:27 ` Lee Revell
2004-10-07 17:55 ` K.R. Foley
2004-10-07 20:29 ` K.R. Foley
2004-10-07 21:55 ` Ingo Molnar
2004-10-08 1:41 ` K.R. Foley
2004-10-08 7:02 ` Ingo Molnar
2004-10-08 14:03 ` K.R. Foley
2004-10-08 14:28 ` Ingo Molnar
2004-10-08 21:14 ` Lee Revell
2004-10-08 23:11 ` Lee Revell
2004-10-09 4:16 ` Lee Revell
2004-10-09 4:57 ` Lee Revell
2004-10-09 5:09 ` voluntary-preempt-2.6.9-rc3-mm3-T3 Con Kolivas
2004-10-09 5:21 ` voluntary-preempt-2.6.9-rc3-mm3-T3 Lee Revell
2004-10-09 5:23 ` voluntary-preempt-2.6.9-rc3-mm3-T3 Con Kolivas
2004-10-09 5:31 ` voluntary-preempt-2.6.9-rc3-mm3-T3 Lee Revell
2004-10-09 5:34 ` voluntary-preempt-2.6.9-rc3-mm3-T3 Con Kolivas
2004-10-09 5:50 ` Preemption model (was Re: voluntary-preempt-2.6.9-rc3-mm3-T3) Lee Revell
2004-10-09 5:53 ` Con Kolivas
2004-10-09 10:46 ` voluntary-preempt-2.6.9-rc3-mm3-T3 Ingo Molnar
2004-10-09 13:21 ` voluntary-preempt-2.6.9-rc3-mm3-T3 K.R. Foley
2004-10-09 18:16 ` [patch] voluntary-preempt-2.6.9-rc3-mm3-T3 Florian Schmidt
2004-10-11 14:29 ` [patch] CONFIG_PREEMPT_REALTIME, 'Fully Preemptible Kernel', VP-2.6.9-rc4-mm1-T4 Ingo Molnar
2004-10-11 17:48 ` Florian Schmidt
2004-10-11 21:22 ` Rui Nuno Capela
2004-10-11 21:37 ` Lee Revell
2004-10-12 4:30 ` [patch] voluntary-preempt-2.6.9-rc3-mm3-T3 Lee Revell
2004-10-12 9:17 ` Ingo Molnar
2004-10-13 16:52 ` Lee Revell
2004-10-13 16:48 ` Lee Revell
2004-10-08 11:16 ` [patch] voluntary-preempt-2.6.9-rc3-mm2-T1 William Lee Irwin III
2004-09-22 17:30 ` Oops in __posix_lock_file was:Re: [patch] voluntary-preempt-2.6.9-rc2-mm1-S2 K.R. Foley
2004-09-22 19:43 ` Ingo Molnar
2004-09-21 18:24 ` [patch] voluntary-preempt-2.6.9-rc2-mm1-S1 K.R. Foley
2004-09-21 19:21 ` Ingo Molnar
2004-09-21 19:37 ` K.R. Foley
2004-09-08 6:56 ` [patch] voluntary-preempt-2.6.9-rc1-bk12-R6 Lee Revell
2004-09-09 19:29 ` Ingo Molnar
2004-09-09 19:33 ` Lee Revell
2004-09-09 20:43 ` Lee Revell
2004-09-09 20:51 ` Ingo Molnar
2004-09-09 21:03 ` Scott Wood
2004-09-09 20:05 ` Andrew Morton
2004-09-09 20:09 ` Alan Cox
2004-09-09 21:28 ` Andrew Morton
2004-09-09 22:45 ` William Lee Irwin III
2004-09-09 22:11 ` Alan Cox
2004-09-09 23:20 ` William Lee Irwin III
2004-09-10 13:28 ` Ingo Molnar
2004-09-10 14:28 ` Paolo Ciarrocchi
2004-09-10 16:45 ` Lee Revell
2004-09-10 22:54 ` Lee Revell
2004-09-11 0:21 ` K.R. Foley
2004-09-09 20:13 ` Lee Revell
2004-09-22 0:17 ` William Lee Irwin III
2004-09-07 22:55 ` [patch] voluntary-preempt-2.6.9-rc1-bk12-R5 Lee Revell
2004-09-07 23:13 ` Lee Revell
2004-09-07 23:58 ` Rui Nuno Capela
2004-09-08 8:23 ` Ingo Molnar
2004-09-08 8:31 ` Ingo Molnar
2004-09-09 11:09 ` Rui Nuno Capela
2004-09-15 1:16 ` Lee Revell
2004-09-15 9:29 ` Rui Nuno Capela
2004-09-15 9:38 ` Ingo Molnar
2004-09-15 9:53 ` Rui Nuno Capela
2004-09-15 10:00 ` Ingo Molnar
2004-09-15 10:35 ` Rui Nuno Capela
2004-09-25 19:26 ` Lee Revell
2004-09-25 20:38 ` Ingo Molnar
2004-09-25 20:40 ` Lee Revell
2004-09-25 20:50 ` Duncan Sands
2004-09-25 23:54 ` Lee Revell
2004-09-26 13:42 ` Rui Nuno Capela
2004-09-08 8:46 ` Rui Nuno Capela
2004-09-08 8:52 ` Ingo Molnar
2004-09-05 14:49 ` [patch] voluntary-preempt-2.6.9-rc1-bk4-R4 Florian Schmidt
2004-09-05 14:53 ` K.R. Foley
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=1094456653.29921.45.camel@krustophenia.net \
--to=rlrevell@joe-job.com \
--cc=felipe_alfaro@linuxmail.org \
--cc=kr@cybsft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mista.tapas@gmx.net \
/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
Powered by JetHome