From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
Venkatesh Pallipadi <venki@google.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@elte.hu>, Mike Galbraith <efault@gmx.de>
Subject: [098/115] sched: Fix softirq time accounting
Date: Tue, 15 Feb 2011 17:46:04 -0800 [thread overview]
Message-ID: <20110216014704.061683652@clark.kroah.org> (raw)
In-Reply-To: <20110216014741.GA24678@kroah.com>
2.6.32-longterm review patch. If anyone has any objections, please let us know.
------------------
Commit: 75e1056f5c57050415b64cb761a3acc35d91f013 upstream
Peter Zijlstra found a bug in the way softirq time is accounted in
VIRT_CPU_ACCOUNTING on this thread:
http://lkml.indiana.edu/hypermail//linux/kernel/1009.2/01366.html
The problem is, softirq processing uses local_bh_disable internally. There
is no way, later in the flow, to differentiate between whether softirq is
being processed or is it just that bh has been disabled. So, a hardirq when bh
is disabled results in time being wrongly accounted as softirq.
Looking at the code a bit more, the problem exists in !VIRT_CPU_ACCOUNTING
as well. As account_system_time() in normal tick based accouting also uses
softirq_count, which will be set even when not in softirq with bh disabled.
Peter also suggested solution of using 2*SOFTIRQ_OFFSET as irq count
for local_bh_{disable,enable} and using just SOFTIRQ_OFFSET while softirq
processing. The patch below does that and adds API in_serving_softirq() which
returns whether we are currently processing softirq or not.
Also changes one of the usages of softirq_count in net/sched/cls_cgroup.c
to in_serving_softirq.
Looks like many usages of in_softirq really want in_serving_softirq. Those
changes can be made individually on a case by case basis.
Signed-off-by: Venkatesh Pallipadi <venki@google.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1286237003-12406-2-git-send-email-venki@google.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Mike Galbraith <efault@gmx.de>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
include/linux/hardirq.h | 5 ++++
include/linux/sched.h | 6 ++---
kernel/sched.c | 2 -
kernel/softirq.c | 51 ++++++++++++++++++++++++++++++++----------------
net/sched/cls_cgroup.c | 2 -
5 files changed, 44 insertions(+), 22 deletions(-)
--- a/include/linux/hardirq.h
+++ b/include/linux/hardirq.h
@@ -64,6 +64,8 @@
#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT)
#define NMI_OFFSET (1UL << NMI_SHIFT)
+#define SOFTIRQ_DISABLE_OFFSET (2 * SOFTIRQ_OFFSET)
+
#ifndef PREEMPT_ACTIVE
#define PREEMPT_ACTIVE_BITS 1
#define PREEMPT_ACTIVE_SHIFT (NMI_SHIFT + NMI_BITS)
@@ -82,10 +84,13 @@
/*
* Are we doing bottom half or hardware interrupt processing?
* Are we in a softirq context? Interrupt context?
+ * in_softirq - Are we currently processing softirq or have bh disabled?
+ * in_serving_softirq - Are we currently processing softirq?
*/
#define in_irq() (hardirq_count())
#define in_softirq() (softirq_count())
#define in_interrupt() (irq_count())
+#define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET)
/*
* Are we in NMI context?
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2401,9 +2401,9 @@ extern int __cond_resched_lock(spinlock_
extern int __cond_resched_softirq(void);
-#define cond_resched_softirq() ({ \
- __might_sleep(__FILE__, __LINE__, SOFTIRQ_OFFSET); \
- __cond_resched_softirq(); \
+#define cond_resched_softirq() ({ \
+ __might_sleep(__FILE__, __LINE__, SOFTIRQ_DISABLE_OFFSET); \
+ __cond_resched_softirq(); \
})
/*
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -5178,7 +5178,7 @@ void account_system_time(struct task_str
tmp = cputime_to_cputime64(cputime);
if (hardirq_count() - hardirq_offset)
cpustat->irq = cputime64_add(cpustat->irq, tmp);
- else if (softirq_count())
+ else if (in_serving_softirq())
cpustat->softirq = cputime64_add(cpustat->softirq, tmp);
else
cpustat->system = cputime64_add(cpustat->system, tmp);
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -77,11 +77,21 @@ void wakeup_softirqd(void)
}
/*
+ * preempt_count and SOFTIRQ_OFFSET usage:
+ * - preempt_count is changed by SOFTIRQ_OFFSET on entering or leaving
+ * softirq processing.
+ * - preempt_count is changed by SOFTIRQ_DISABLE_OFFSET (= 2 * SOFTIRQ_OFFSET)
+ * on local_bh_disable or local_bh_enable.
+ * This lets us distinguish between whether we are currently processing
+ * softirq and whether we just have bh disabled.
+ */
+
+/*
* This one is for softirq.c-internal use,
* where hardirqs are disabled legitimately:
*/
#ifdef CONFIG_TRACE_IRQFLAGS
-static void __local_bh_disable(unsigned long ip)
+static void __local_bh_disable(unsigned long ip, unsigned int cnt)
{
unsigned long flags;
@@ -95,32 +105,43 @@ static void __local_bh_disable(unsigned
* We must manually increment preempt_count here and manually
* call the trace_preempt_off later.
*/
- preempt_count() += SOFTIRQ_OFFSET;
+ preempt_count() += cnt;
/*
* Were softirqs turned off above:
*/
- if (softirq_count() == SOFTIRQ_OFFSET)
+ if (softirq_count() == cnt)
trace_softirqs_off(ip);
raw_local_irq_restore(flags);
- if (preempt_count() == SOFTIRQ_OFFSET)
+ if (preempt_count() == cnt)
trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1));
}
#else /* !CONFIG_TRACE_IRQFLAGS */
-static inline void __local_bh_disable(unsigned long ip)
+static inline void __local_bh_disable(unsigned long ip, unsigned int cnt)
{
- add_preempt_count(SOFTIRQ_OFFSET);
+ add_preempt_count(cnt);
barrier();
}
#endif /* CONFIG_TRACE_IRQFLAGS */
void local_bh_disable(void)
{
- __local_bh_disable((unsigned long)__builtin_return_address(0));
+ __local_bh_disable((unsigned long)__builtin_return_address(0),
+ SOFTIRQ_DISABLE_OFFSET);
}
EXPORT_SYMBOL(local_bh_disable);
+static void __local_bh_enable(unsigned int cnt)
+{
+ WARN_ON_ONCE(in_irq());
+ WARN_ON_ONCE(!irqs_disabled());
+
+ if (softirq_count() == cnt)
+ trace_softirqs_on((unsigned long)__builtin_return_address(0));
+ sub_preempt_count(cnt);
+}
+
/*
* Special-case - softirqs can safely be enabled in
* cond_resched_softirq(), or by __do_softirq(),
@@ -128,12 +149,7 @@ EXPORT_SYMBOL(local_bh_disable);
*/
void _local_bh_enable(void)
{
- WARN_ON_ONCE(in_irq());
- WARN_ON_ONCE(!irqs_disabled());
-
- if (softirq_count() == SOFTIRQ_OFFSET)
- trace_softirqs_on((unsigned long)__builtin_return_address(0));
- sub_preempt_count(SOFTIRQ_OFFSET);
+ __local_bh_enable(SOFTIRQ_DISABLE_OFFSET);
}
EXPORT_SYMBOL(_local_bh_enable);
@@ -147,13 +163,13 @@ static inline void _local_bh_enable_ip(u
/*
* Are softirqs going to be turned on now:
*/
- if (softirq_count() == SOFTIRQ_OFFSET)
+ if (softirq_count() == SOFTIRQ_DISABLE_OFFSET)
trace_softirqs_on(ip);
/*
* Keep preemption disabled until we are done with
* softirq processing:
*/
- sub_preempt_count(SOFTIRQ_OFFSET - 1);
+ sub_preempt_count(SOFTIRQ_DISABLE_OFFSET - 1);
if (unlikely(!in_interrupt() && local_softirq_pending()))
do_softirq();
@@ -198,7 +214,8 @@ asmlinkage void __do_softirq(void)
pending = local_softirq_pending();
account_system_vtime(current);
- __local_bh_disable((unsigned long)__builtin_return_address(0));
+ __local_bh_disable((unsigned long)__builtin_return_address(0),
+ SOFTIRQ_OFFSET);
lockdep_softirq_enter();
cpu = smp_processor_id();
@@ -245,7 +262,7 @@ restart:
lockdep_softirq_exit();
account_system_vtime(current);
- _local_bh_enable();
+ __local_bh_enable(SOFTIRQ_OFFSET);
}
#ifndef __ARCH_HAS_DO_SOFTIRQ
--- a/net/sched/cls_cgroup.c
+++ b/net/sched/cls_cgroup.c
@@ -110,7 +110,7 @@ static int cls_cgroup_classify(struct sk
* calls by looking at the number of nested bh disable calls because
* softirqs always disables bh.
*/
- if (softirq_count() != SOFTIRQ_OFFSET)
+ if (in_serving_softirq())
return -1;
rcu_read_lock();
next prev parent reply other threads:[~2011-02-16 1:56 UTC|newest]
Thread overview: 137+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-16 1:47 [000/115] 2.6.32.29-longterm review Greg KH
2011-02-16 1:44 ` [001/115] staging: usbip: remove double giveback of URB Greg KH
2011-02-16 1:44 ` [002/115] USB: EHCI: ASPM quirk of ISOC on AMD SB800 Greg KH
2011-02-16 1:44 ` [003/115] rt2x00: add device id for windy31 usb device Greg KH
2011-02-16 1:44 ` [004/115] ALSA: snd-usb-us122l: Fix missing NULL checks Greg KH
2011-02-16 1:44 ` [005/115] hwmon: (via686a) Initialize fan_div values Greg KH
2011-02-16 1:44 ` [006/115] USB: serial: handle Data Carrier Detect changes Greg KH
2011-02-16 1:44 ` [007/115] USB: CP210x Add two device IDs Greg KH
2011-02-16 1:44 ` [008/115] USB: CP210x Removed incorrect device ID Greg KH
2011-02-16 1:44 ` [009/115] USB: usb-storage: unusual_devs update for Cypress ATACB Greg KH
2011-02-16 1:44 ` [010/115] USB: usb-storage: unusual_devs update for TrekStor DataStation maxi g.u external hard drive enclosure Greg KH
2011-02-16 1:44 ` [011/115] USB: usb-storage: unusual_devs entry for CamSport Evo Greg KH
2011-02-16 1:44 ` [012/115] USB: usb-storage: unusual_devs entry for Coby MP3 player Greg KH
2011-02-16 1:44 ` [013/115] USB: serial: Updated support for ICOM devices Greg KH
2011-02-16 1:44 ` [014/115] USB: adding USB support for Cinterions HC2x, EU3 and PH8 products Greg KH
2011-02-16 1:44 ` [015/115] USB: EHCI: ASPM quirk of ISOC on AMD Hudson Greg KH
2011-02-16 1:44 ` [016/115] USB: EHCI: fix DMA deallocation bug Greg KH
2011-02-16 1:44 ` [017/115] USB: g_printer: fix bug in module parameter definitions Greg KH
2011-02-16 1:44 ` [018/115] USB: io_edgeport: fix the reported firmware major and minor Greg KH
2011-02-16 1:44 ` [019/115] USB: ti_usb: fix module removal Greg KH
2011-02-16 1:44 ` [020/115] USB: Storage: Add unusual_devs entry for VTech Kidizoom Greg KH
2011-02-16 1:44 ` [021/115] USB: ftdi_sio: add ST Micro Connect Lite uart support Greg KH
2011-02-16 1:44 ` [022/115] USB: cdc-acm: Adding second ACM channel support for Nokia N8 Greg KH
2011-02-16 1:44 ` [023/115] USB: ftdi_sio: Add VID=0x0647, PID=0x0100 for Acton Research spectrograph Greg KH
2011-02-16 1:44 ` [024/115] USB: prevent buggy hubs from crashing the USB stack Greg KH
2011-02-23 8:06 ` Alexander Holler
2011-02-23 8:40 ` Alexander Holler
2011-02-23 15:26 ` Alan Stern
2011-02-24 8:57 ` Felipe Balbi
2011-02-24 9:15 ` Alexander Holler
2011-02-24 9:16 ` Felipe Balbi
2011-02-24 17:18 ` Greg KH
2011-02-24 17:23 ` Felipe Balbi
2011-02-24 17:57 ` Alan Stern
2011-02-24 18:11 ` Alexander Holler
2011-02-24 18:24 ` Greg KH
2011-02-24 18:12 ` Greg KH
2011-02-24 18:16 ` Greg KH
2011-02-24 9:53 ` Michael Jones
2011-02-16 1:44 ` [025/115] staging: comedi: add support for newer jr3 1-channel pci board Greg KH
2011-02-16 1:44 ` [026/115] staging: comedi: ni_labpc: Use shared IRQ for PCMCIA card Greg KH
2011-02-16 1:44 ` [027/115] Staging: hv: fix sysfs symlink on hv block device Greg KH
2011-02-16 1:44 ` [028/115] staging: hv: Enable sending GARP packet after live migration Greg KH
2011-02-16 1:44 ` [029/115] [S390] hvc_iucv: allocate memory buffers for IUCV in zone DMA Greg KH
2011-02-16 1:44 ` [030/115] iwlagn: enable only rfkill interrupt when device is down Greg KH
2011-02-16 1:44 ` [031/115] ath9k: Fix bug in delimiter padding computation Greg KH
2011-02-16 1:44 ` [032/115] [S390] correct vdso version string Greg KH
2011-02-16 1:44 ` [033/115] [SCSI] fix medium error problems with some arrays which can cause data corruption Greg KH
2011-02-16 1:45 ` [034/115] [SCSI] libsas: fix runaway error handler problem Greg KH
2011-02-16 1:45 ` [035/115] [SCSI] mpt2sas: Fix device removal handshake for zoned devices Greg KH
2011-02-16 1:45 ` [036/115] [SCSI] mpt2sas: Correct resizing calculation for max_queue_depth Greg KH
2011-02-16 1:45 ` [037/115] [SCSI] mpt2sas: Kernel Panic during Large Topology discovery Greg KH
2011-02-16 1:45 ` [038/115] [media] radio-aimslab.c: Fix gcc 4.5+ bug Greg KH
2011-02-16 1:45 ` [039/115] [media] em28xx: Fix audio input for Terratec Grabby Greg KH
2011-02-16 1:45 ` [040/115] ALSA : au88x0 - Limit number of channels to fix Oops via OSS emu Greg KH
2011-02-16 1:45 ` [041/115] ALSA: HDA: Fix dmesg output of HDMI supported bits Greg KH
2011-02-16 1:45 ` [042/115] ALSA: hda - Fix memory leaks in conexant jack arrays Greg KH
2011-02-16 1:45 ` [043/115] Input: i8042 - introduce notimeout blacklist for Dell Vostro V13 Greg KH
2011-02-16 1:45 ` [044/115] input: bcm5974: Add support for MacBookAir3 Greg KH
2011-02-16 1:45 ` [045/115] ALSA: hrtimer: handle delayed timer interrupts Greg KH
2011-02-16 1:45 ` [046/115] ASoC: WM8990: msleep() takes milliseconds not jiffies Greg KH
2011-02-16 1:45 ` [047/115] ASoC: Blackfin AC97: fix build error after multi-component update Greg KH
2011-02-16 1:45 ` [048/115] NFS: Fix "kernel BUG at fs/aio.c:554!" Greg KH
2011-02-16 1:45 ` [049/115] rtc-cmos: fix suspend/resume Greg KH
2011-02-16 1:45 ` [050/115] iwlagn: Re-enable RF_KILL interrupt when down Greg KH
2011-02-16 1:45 ` [051/115] rapidio: fix hang on RapidIO doorbell queue full condition Greg KH
2011-02-16 1:45 ` [052/115] PCI: pci-stub: ignore zero-length id parameters Greg KH
2011-02-16 1:45 ` [053/115] virtio: remove virtio-pci root device Greg KH
2011-02-16 1:45 ` [054/115] ds2760_battery: Fix calculation of time_to_empty_now Greg KH
2011-02-16 1:45 ` [055/115] p54: fix sequence no. accounting off-by-one error Greg KH
2011-02-16 1:45 ` [056/115] i2c: Unregister dummy devices last on adapter removal Greg KH
2011-02-16 1:45 ` [057/115] serial: unbreak billionton CF card Greg KH
2011-02-16 1:45 ` [058/115] ptrace: use safer wake up on ptrace_detach() Greg KH
2011-02-16 1:45 ` [059/115] x86, mtrr: Avoid MTRR reprogramming on BP during boot on UP platforms Greg KH
2011-02-16 1:45 ` [060/115] fix jiffy calculations in calibrate_delay_direct to handle overflow Greg KH
2011-02-16 1:45 ` [061/115] USB: serial: pl2303: Hybrid reader Uniform HCR331 Greg KH
2011-02-16 1:45 ` [062/115] drivers: update to pl2303 usb-serial to support Motorola cables Greg KH
2011-02-16 1:45 ` [063/115] klist: Fix object alignment on 64-bit Greg KH
2011-02-16 1:45 ` [064/115] powerpc: Fix some 6xx/7xxx CPU setup functions Greg KH
2011-02-16 1:45 ` [065/115] parisc : Remove broken line wrapping handling pdc_iodc_print() Greg KH
2011-02-16 1:45 ` [066/115] kernel/smp.c: fix smp_call_function_many() SMP race Greg KH
2011-02-16 1:45 ` [067/115] hostap_cs: fix sleeping function called from invalid context Greg KH
2011-02-16 1:45 ` [068/115] md: fix regression with re-adding devices to arrays with no metadata Greg KH
2011-02-16 1:45 ` [069/115] pata_mpc52xx: inherit from ata_bmdma_port_ops Greg KH
2011-02-16 1:45 ` [070/115] TPM: Long default timeout fix Greg KH
2011-02-16 1:45 ` [071/115] tpm_tis: Use timeouts returned from TPM Greg KH
2011-02-16 1:45 ` [072/115] SELinux: define permissions for DCB netlink messages Greg KH
2011-02-16 1:45 ` [073/115] SELinux: do not compute transition labels on mountpoint labeled filesystems Greg KH
2011-02-16 1:45 ` [074/115] ieee80211: correct IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK macro Greg KH
2011-02-16 1:45 ` [075/115] dm: dont take i_mutex to change device size Greg KH
2011-02-16 1:45 ` [076/115] dm mpath: disable blk_abort_queue Greg KH
2011-02-16 1:45 ` [077/115] drm/radeon/kms: add quirk for Mac Radeon HD 2600 card Greg KH
2011-02-16 1:45 ` [078/115] drm/radeon/kms: make the mac rv630 quirk generic Greg KH
2011-02-16 1:45 ` [079/115] drm/radeon/kms: add pll debugging output Greg KH
2011-02-16 1:45 ` [080/115] drm/radeon: remove 0x4243 pci id Greg KH
2011-02-16 1:45 ` [081/115] drm/radeon/kms: fix s/r issues with bios scratch regs Greg KH
2011-02-16 1:45 ` [082/115] drm/i915/lvds: Add AOpen i915GMm-HFS to the list of false-positive LVDS Greg KH
2011-02-16 1:45 ` [083/115] drm/i915: Add dependency on CONFIG_TMPFS Greg KH
2011-02-16 1:45 ` [084/115] x86, mm: avoid possible bogus tlb entries by clearing prev mm_cpumask after switching mm Greg KH
2011-02-16 1:45 ` [085/115] usb: Realloc xHCI structures after a hub is verified Greg KH
2011-02-16 1:45 ` [086/115] sched: Remove USER_SCHED Greg KH
2011-02-16 1:45 ` [087/115] sched: Remove remaining USER_SCHED code Greg KH
2011-02-16 1:45 ` [088/115] sched: Move sched_avg_update() to update_cpu_load() Greg KH
2011-02-16 1:45 ` [089/115] sched: Increment cache_nice_tries only on periodic lb Greg KH
2011-02-16 1:45 ` [090/115] sched: Try not to migrate higher priority RT tasks Greg KH
2011-02-16 1:45 ` [091/115] sched: Give CPU bound RT tasks preference Greg KH
2011-02-16 1:45 ` [092/115] sched: suppress RCU lockdep splat in task_fork_fair Greg KH
2011-02-16 1:45 ` [093/115] sched: fix RCU lockdep splat from task_group() Greg KH
2011-02-16 1:46 ` [094/115] sched: Do not consider SCHED_IDLE tasks to be cache hot Greg KH
2011-02-16 1:46 ` [095/115] sched: Set group_imb only a task can be pulled from the busiest cpu Greg KH
2011-02-16 1:46 ` [096/115] sched: Force balancing on newidle balance if local group has capacity Greg KH
2011-02-16 1:46 ` [097/115] sched: Drop group_capacity to 1 only if local group has extra capacity Greg KH
2011-02-16 1:46 ` Greg KH [this message]
2011-02-16 1:46 ` [099/115] sched: Consolidate account_system_vtime extern declaration Greg KH
2011-02-16 1:46 ` [100/115] sched: Remove unused PF_ALIGNWARN flag Greg KH
2011-02-16 1:46 ` [101/115] sched: Add a PF flag for ksoftirqd identification Greg KH
2011-02-16 1:46 ` [102/115] sched: Add IRQ_TIME_ACCOUNTING, finer accounting of irq time Greg KH
2011-02-16 1:46 ` [103/115] x86: Add IRQ_TIME_ACCOUNTING Greg KH
2011-02-16 1:46 ` [104/115] sched: Do not account irq time to current task Greg KH
2011-02-16 1:46 ` [105/115] sched: Remove irq time from available CPU power Greg KH
2011-02-16 1:46 ` [106/115] sched: Call tick_check_idle before __irq_enter Greg KH
2011-02-16 1:46 ` [107/115] sched: Export account_system_vtime() Greg KH
2011-02-16 1:46 ` [108/115] sched, cgroup: Fixup broken cgroup movement Greg KH
2011-02-16 1:46 ` [109/115] sched: Use group weight, idle cpu metrics to fix imbalances during idle Greg KH
2011-02-16 1:46 ` [110/115] sched: Fix cross-sched-class wakeup preemption Greg KH
2011-02-16 1:46 ` [111/115] sched: Fix volanomark performance regression Greg KH
2011-02-16 1:46 ` [112/115] sched: Fix idle balancing Greg KH
2011-02-16 1:46 ` [113/115] sched: Fix wake_affine() vs RT tasks Greg KH
2011-02-16 1:46 ` [114/115] sched: Remove some dead code Greg KH
2011-02-16 7:37 ` Dan Carpenter
2011-02-16 7:56 ` Mike Galbraith
2011-02-16 8:30 ` Ingo Molnar
2011-02-16 9:24 ` [Stable-review] " Willy Tarreau
2011-02-16 1:46 ` [115/115] kernel/user.c: add lock release annotation on free_user() Greg KH
2011-02-16 13:51 ` [000/115] 2.6.32.29-longterm review Ian Campbell
2011-02-17 0:35 ` Greg KH
2011-02-17 9:22 ` Ian Campbell
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=20110216014704.061683652@clark.kroah.org \
--to=gregkh@suse.de \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=stable-review@kernel.org \
--cc=stable@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=venki@google.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
all inboxes | Powered by JetHome®