From: peterz@infradead.org
To: "Ahmed S. Darwish" <a.darwish@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>, Will Deacon <will@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
"Sebastian A. Siewior" <bigeasy@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
Borislav Petkov <bp@alien8.de>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH v1 6/8] x86/tsc: Use seqcount_latch_t
Date: Mon, 7 Sep 2020 19:30:47 +0200 [thread overview]
Message-ID: <20200907173047.GO1362448@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <20200907162913.GA178765@lx-t490>
On Mon, Sep 07, 2020 at 06:29:13PM +0200, Ahmed S. Darwish wrote:
> I've been unsuccessful in reproducing this huge, 200+ bytes, difference.
> Can I please get the defconfig and GCC version?
I think I lost the config and it's either gcc-9.3 or gcc-10, I can't
remember.
I just tried with:
make defconfig
./scripts/config --enable PREEMPT --enable DEBUG_ATOMIC_SLEEP
make oldconfig
And that reproduces things a little, but nowhere near as horrible as I
reported. Clearly I had something mad enabled by accident.
> Here are the two competing implementations:
>
> noinline void cyc2ns_read_begin_v1(struct cyc2ns_data *data)
> {
> seqcount_latch_t *seqcount;
> int seq, idx;
>
> preempt_disable_notrace();
>
> seqcount = &this_cpu_ptr(&cyc2ns)->seq;
> do {
> seq = raw_read_seqcount_latch(seqcount);
> idx = seq & 1;
>
> data->cyc2ns_offset = this_cpu_read(cyc2ns.data[idx].cyc2ns_offset);
> data->cyc2ns_mul = this_cpu_read(cyc2ns.data[idx].cyc2ns_mul);
> data->cyc2ns_shift = this_cpu_read(cyc2ns.data[idx].cyc2ns_shift);
>
> } while (read_seqcount_latch_retry(seqcount, seq));
> }
>
> noinline void cyc2ns_read_begin_v2(struct cyc2ns_data *data)
> {
> int seq, idx;
>
> preempt_disable_notrace();
>
> do {
> seq = this_cpu_read(cyc2ns.seq.seqcount.sequence);
> idx = seq & 1;
>
> data->cyc2ns_offset = this_cpu_read(cyc2ns.data[idx].cyc2ns_offset);
> data->cyc2ns_mul = this_cpu_read(cyc2ns.data[idx].cyc2ns_mul);
> data->cyc2ns_shift = this_cpu_read(cyc2ns.data[idx].cyc2ns_shift);
>
> } while (unlikely(seq != this_cpu_read(cyc2ns.seq.seqcount.sequence)));
> }
Don't look at this function in isolation, look at native_sched_clock()
where it's used as a whole.
What happened (afaict) is that the change caused it to use more
registers and ended up spiling crap on the stack.
GCC-9.3 gives me:
(this_cpu variant)
0000 0000000000000c00 <native_sched_clock>:
0000 c00: e9 65 00 00 00 jmpq c6a <native_sched_clock+0x6a>
0005 c05: 0f 31 rdtsc
0007 c07: 48 c1 e2 20 shl $0x20,%rdx
000b c0b: 48 09 c2 or %rax,%rdx
000e c0e: 65 ff 05 00 00 00 00 incl %gs:0x0(%rip) # c15 <native_sched_clock+0x15>
0011 c11: R_X86_64_PC32 __preempt_count-0x4
0015 c15: 65 44 8b 05 00 00 00 mov %gs:0x0(%rip),%r8d # c1d <native_sched_clock+0x1d>
001c c1c: 00
0019 c19: R_X86_64_PC32 .data..percpu..shared_aligned+0x1c
001d c1d: 44 89 c0 mov %r8d,%eax
0020 c20: 83 e0 01 and $0x1,%eax
0023 c23: 48 c1 e0 04 shl $0x4,%rax
0027 c27: 48 8d 88 00 00 00 00 lea 0x0(%rax),%rcx
002a c2a: R_X86_64_32S .data..percpu..shared_aligned
002e c2e: 65 48 8b 79 08 mov %gs:0x8(%rcx),%rdi
0033 c33: 65 8b b0 00 00 00 00 mov %gs:0x0(%rax),%esi
0036 c36: R_X86_64_32S .data..percpu..shared_aligned
003a c3a: 65 8b 49 04 mov %gs:0x4(%rcx),%ecx
003e c3e: 65 8b 05 00 00 00 00 mov %gs:0x0(%rip),%eax # c45 <native_sched_clock+0x45>
0041 c41: R_X86_64_PC32 .data..percpu..shared_aligned+0x1c
0045 c45: 41 39 c0 cmp %eax,%r8d
0048 c48: 75 cb jne c15 <native_sched_clock+0x15>
004a c4a: 89 f0 mov %esi,%eax
004c c4c: 48 f7 e2 mul %rdx
004f c4f: 48 0f ad d0 shrd %cl,%rdx,%rax
0053 c53: 48 d3 ea shr %cl,%rdx
0056 c56: f6 c1 40 test $0x40,%cl
0059 c59: 48 0f 45 c2 cmovne %rdx,%rax
005d c5d: 48 01 f8 add %rdi,%rax
0060 c60: 65 ff 0d 00 00 00 00 decl %gs:0x0(%rip) # c67 <native_sched_clock+0x67>
0063 c63: R_X86_64_PC32 __preempt_count-0x4
0067 c67: 74 1a je c83 <native_sched_clock+0x83>
0069 c69: c3 retq
006a c6a: 48 69 05 00 00 00 00 imul $0xf4240,0x0(%rip),%rax # c75 <native_sched_clock+0x75>
0071 c71: 40 42 0f 00
006d c6d: R_X86_64_PC32 jiffies_64-0x8
0075 c75: 48 ba 00 b8 64 d9 05 movabs $0xfff0be05d964b800,%rdx
007c c7c: be f0 ff
007f c7f: 48 01 d0 add %rdx,%rax
0082 c82: c3 retq
0083 c83: 55 push %rbp
0084 c84: 48 89 e5 mov %rsp,%rbp
0087 c87: e8 00 00 00 00 callq c8c <native_sched_clock+0x8c>
0088 c88: R_X86_64_PLT32 preempt_schedule_notrace_thunk-0x4
008c c8c: 5d pop %rbp
008d c8d: c3 retq
(seqcount_latch variant)
0000 0000000000000c20 <native_sched_clock>:
0000 c20: e9 89 00 00 00 jmpq cae <native_sched_clock+0x8e>
0005 c25: 55 push %rbp
0006 c26: 48 89 e5 mov %rsp,%rbp
0009 c29: 41 54 push %r12
000b c2b: 53 push %rbx
000c c2c: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
0010 c30: 0f 31 rdtsc
0012 c32: 48 c1 e2 20 shl $0x20,%rdx
0016 c36: 48 89 d3 mov %rdx,%rbx
0019 c39: 48 09 c3 or %rax,%rbx
001c c3c: 65 ff 05 00 00 00 00 incl %gs:0x0(%rip) # c43 <native_sched_clock+0x23>
001f c3f: R_X86_64_PC32 __preempt_count-0x4
0023 c43: e8 00 00 00 00 callq c48 <native_sched_clock+0x28>
0024 c44: R_X86_64_PLT32 debug_smp_processor_id-0x4
0028 c48: 49 c7 c4 00 00 00 00 mov $0x0,%r12
002b c4b: R_X86_64_32S .data..percpu..shared_aligned+0x20
002f c4f: 89 c0 mov %eax,%eax
0031 c51: 4c 03 24 c5 00 00 00 add 0x0(,%rax,8),%r12
0038 c58: 00
0035 c55: R_X86_64_32S __per_cpu_offset
0039 c59: 4c 89 e0 mov %r12,%rax
003c c5c: 8b 30 mov (%rax),%esi
003e c5e: 89 f1 mov %esi,%ecx
0040 c60: 83 e1 01 and $0x1,%ecx
0043 c63: 48 c1 e1 04 shl $0x4,%rcx
0047 c67: 48 8d b9 00 00 00 00 lea 0x0(%rcx),%rdi
004a c6a: R_X86_64_32S .data..percpu..shared_aligned
004e c6e: 65 4c 8b 47 08 mov %gs:0x8(%rdi),%r8
0053 c73: 65 44 8b 89 00 00 00 mov %gs:0x0(%rcx),%r9d
005a c7a: 00
0057 c77: R_X86_64_32S .data..percpu..shared_aligned
005b c7b: 65 8b 4f 04 mov %gs:0x4(%rdi),%ecx
005f c7f: 8b 10 mov (%rax),%edx
0061 c81: 39 d6 cmp %edx,%esi
0063 c83: 75 d7 jne c5c <native_sched_clock+0x3c>
0065 c85: 44 89 c8 mov %r9d,%eax
0068 c88: 48 f7 e3 mul %rbx
006b c8b: 48 0f ad d0 shrd %cl,%rdx,%rax
006f c8f: 48 d3 ea shr %cl,%rdx
0072 c92: f6 c1 40 test $0x40,%cl
0075 c95: 48 0f 45 c2 cmovne %rdx,%rax
0079 c99: 4c 01 c0 add %r8,%rax
007c c9c: 65 ff 0d 00 00 00 00 decl %gs:0x0(%rip) # ca3 <native_sched_clock+0x83>
007f c9f: R_X86_64_PC32 __preempt_count-0x4
0083 ca3: 74 22 je cc7 <native_sched_clock+0xa7>
0085 ca5: 48 8d 65 f0 lea -0x10(%rbp),%rsp
0089 ca9: 5b pop %rbx
008a caa: 41 5c pop %r12
008c cac: 5d pop %rbp
008d cad: c3 retq
008e cae: 48 69 05 00 00 00 00 imul $0xf4240,0x0(%rip),%rax # cb9 <native_sched_clock+0x99>
0095 cb5: 40 42 0f 00
0091 cb1: R_X86_64_PC32 jiffies_64-0x8
0099 cb9: 49 b8 00 b8 64 d9 05 movabs $0xfff0be05d964b800,%r8
00a0 cc0: be f0 ff
00a3 cc3: 4c 01 c0 add %r8,%rax
00a6 cc6: c3 retq
00a7 cc7: e8 00 00 00 00 callq ccc <native_sched_clock+0xac>
00a8 cc8: R_X86_64_PLT32 preempt_schedule_notrace_thunk-0x4
00ac ccc: eb d7 jmp ca5 <native_sched_clock+0x85>
And you see it starting to spill stuff.
When we disable DEBUG_ATOMIC_SLEEP it becomes much saner again:
0000 0000000000000b40 <native_sched_clock>:
0000 b40: e9 6b 00 00 00 jmpq bb0 <native_sched_clock+0x70>
0005 b45: 0f 31 rdtsc
0007 b47: 48 c1 e2 20 shl $0x20,%rdx
000b b4b: 48 09 c2 or %rax,%rdx
000e b4e: 65 ff 05 00 00 00 00 incl %gs:0x0(%rip) # b55 <native_sched_clock+0x15>
0011 b51: R_X86_64_PC32 __preempt_count-0x4
0015 b55: 49 c7 c0 00 00 00 00 mov $0x0,%r8
0018 b58: R_X86_64_32S .data..percpu..shared_aligned+0x20
001c b5c: 65 4c 03 05 00 00 00 add %gs:0x0(%rip),%r8 # b64 <native_sched_clock+0x24>
0023 b63: 00
0020 b60: R_X86_64_PC32 this_cpu_off-0x4
0024 b64: 41 8b 30 mov (%r8),%esi
0027 b67: 89 f1 mov %esi,%ecx
0029 b69: 83 e1 01 and $0x1,%ecx
002c b6c: 48 c1 e1 04 shl $0x4,%rcx
0030 b70: 48 8d b9 00 00 00 00 lea 0x0(%rcx),%rdi
0033 b73: R_X86_64_32S .data..percpu..shared_aligned
0037 b77: 65 4c 8b 57 08 mov %gs:0x8(%rdi),%r10
003c b7c: 65 44 8b 89 00 00 00 mov %gs:0x0(%rcx),%r9d
0043 b83: 00
0040 b80: R_X86_64_32S .data..percpu..shared_aligned
0044 b84: 65 8b 4f 04 mov %gs:0x4(%rdi),%ecx
0048 b88: 41 8b 38 mov (%r8),%edi
004b b8b: 39 fe cmp %edi,%esi
004d b8d: 75 d5 jne b64 <native_sched_clock+0x24>
004f b8f: 44 89 c8 mov %r9d,%eax
0052 b92: 48 f7 e2 mul %rdx
0055 b95: 48 0f ad d0 shrd %cl,%rdx,%rax
0059 b99: 48 d3 ea shr %cl,%rdx
005c b9c: f6 c1 40 test $0x40,%cl
005f b9f: 48 0f 45 c2 cmovne %rdx,%rax
0063 ba3: 4c 01 d0 add %r10,%rax
0066 ba6: 65 ff 0d 00 00 00 00 decl %gs:0x0(%rip) # bad <native_sched_clock+0x6d>
0069 ba9: R_X86_64_PC32 __preempt_count-0x4
006d bad: 74 1a je bc9 <native_sched_clock+0x89>
006f baf: c3 retq
0070 bb0: 48 69 05 00 00 00 00 imul $0xf4240,0x0(%rip),%rax # bbb <native_sched_clock+0x7b>
0077 bb7: 40 42 0f 00
0073 bb3: R_X86_64_PC32 jiffies_64-0x8
007b bbb: 49 ba 00 b8 64 d9 05 movabs $0xfff0be05d964b800,%r10
0082 bc2: be f0 ff
0085 bc5: 4c 01 d0 add %r10,%rax
0088 bc8: c3 retq
0089 bc9: 55 push %rbp
008a bca: 48 89 e5 mov %rsp,%rbp
008d bcd: e8 00 00 00 00 callq bd2 <native_sched_clock+0x92>
008e bce: R_X86_64_PLT32 preempt_schedule_notrace_thunk-0x4
0092 bd2: 5d pop %rbp
0093 bd3: c3 retq
But that's still slightly larger.
Anyway, I frobbed the patch to use the this_cpu variant, and I've queued
the lot.
next prev parent reply other threads:[~2020-09-07 17:31 UTC|newest]
Thread overview: 287+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-19 21:45 [PATCH v1 00/25] seqlock: Extend seqcount API with associated locks Ahmed S. Darwish
2020-05-19 21:45 ` Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 01/25] net: core: device_rename: Use rwsem instead of a seqcount Ahmed S. Darwish
2020-05-19 22:01 ` Stephen Hemminger
2020-05-19 22:23 ` Thomas Gleixner
2020-05-19 23:11 ` Stephen Hemminger
2020-05-19 23:42 ` Thomas Gleixner
2020-05-20 0:06 ` Stephen Hemminger
2020-05-20 1:55 ` Thomas Gleixner
2020-05-20 2:57 ` David Miller
2020-05-20 3:18 ` Eric Dumazet
2020-05-20 4:36 ` Stephen Hemminger
2020-05-20 19:37 ` Thomas Gleixner
2020-05-20 21:36 ` Stephen Hemminger
2020-05-20 2:01 ` Eric Dumazet
2020-05-20 6:42 ` Ahmed S. Darwish
2020-05-20 12:51 ` Eric Dumazet
2020-06-03 14:33 ` Ahmed S. Darwish
2020-05-20 14:37 ` Dan Carpenter
2020-05-20 14:37 ` Dan Carpenter
2020-05-20 14:37 ` Dan Carpenter
2020-05-25 16:22 ` Ahmed S. Darwish
2020-05-25 16:22 ` Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 02/25] mm/swap: Don't abuse the seqcount latching API Ahmed S. Darwish
2020-05-20 11:24 ` Hillf Danton
2020-05-20 12:22 ` Konstantin Khlebnikov
2020-05-20 13:05 ` Peter Zijlstra
2020-05-22 14:57 ` Peter Zijlstra
2020-05-22 15:17 ` Sebastian A. Siewior
2020-05-22 16:23 ` Peter Zijlstra
2020-05-25 15:24 ` Ahmed S. Darwish
2020-05-25 15:45 ` Peter Zijlstra
2020-05-25 16:10 ` John Ogness
2020-05-25 16:10 ` John Ogness
2020-09-10 15:08 ` [tip: locking/core] mm/swap: Do not abuse the seqcount_t " tip-bot2 for Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 03/25] net: phy: fixed_phy: Remove unused seqcount Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 04/25] block: nr_sects_write(): Disable preemption on seqcount write Ahmed S. Darwish
2020-05-22 0:12 ` Sasha Levin
2020-05-25 10:12 ` Ahmed S. Darwish
2020-05-22 16:39 ` Peter Zijlstra
2020-05-25 9:56 ` Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 05/25] u64_stats: Document writer non-preemptibility requirement Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 06/25] dma-buf: Remove custom seqcount lockdep class key Ahmed S. Darwish
2020-05-19 21:45 ` Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 07/25] lockdep: Add preemption disabled assertion API Ahmed S. Darwish
2020-05-22 17:55 ` Peter Zijlstra
2020-05-23 14:59 ` Sebastian A. Siewior
2020-05-23 22:41 ` Peter Zijlstra
2020-05-24 10:50 ` Sebastian A. Siewior
2020-05-25 10:22 ` Peter Zijlstra
2020-05-26 0:52 ` Ahmed S. Darwish
2020-05-26 8:13 ` Peter Zijlstra
2020-05-26 9:45 ` Ahmed S. Darwish
2020-06-03 15:30 ` Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 08/25] seqlock: lockdep assert non-preemptibility on seqcount_t write Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 09/25] Documentation: locking: Describe seqlock design and usage Ahmed S. Darwish
2020-05-22 18:01 ` Peter Zijlstra
2020-05-22 22:24 ` Steven Rostedt
2020-05-25 10:50 ` Ahmed S. Darwish
2020-05-25 11:02 ` Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 10/25] seqlock: Add RST directives to kernel-doc code samples and notes Ahmed S. Darwish
2020-05-22 18:02 ` Peter Zijlstra
2020-05-22 18:03 ` Peter Zijlstra
2020-05-22 18:26 ` Thomas Gleixner
2020-05-22 18:32 ` Peter Zijlstra
2020-05-25 9:36 ` Ahmed S. Darwish
2020-05-25 13:44 ` Peter Zijlstra
2020-05-25 14:07 ` Peter Zijlstra
2020-05-19 21:45 ` [PATCH v1 11/25] seqlock: Add missing kernel-doc annotations Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 12/25] seqlock: Extend seqcount API with associated locks Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 13/25] dma-buf: Use sequence counter with associated wound/wait mutex Ahmed S. Darwish
2020-05-19 21:45 ` Ahmed S. Darwish
2020-05-19 21:45 ` Ahmed S. Darwish
2020-05-20 10:48 ` Christian König
2020-05-20 10:48 ` Christian König
2020-05-20 10:48 ` Christian König
2020-05-21 0:09 ` Ahmed S. Darwish
2020-05-21 0:09 ` Ahmed S. Darwish
2020-05-21 0:09 ` Ahmed S. Darwish
2020-05-21 13:20 ` Christian König
2020-05-21 13:20 ` Christian König
2020-05-21 13:20 ` Christian König
2020-05-19 21:45 ` [PATCH v1 14/25] sched: tasks: Use sequence counter with associated spinlock Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 15/25] netfilter: conntrack: " Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 16/25] netfilter: nft_set_rbtree: Use sequence counter with associated rwlock Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 17/25] xfrm: policy: Use sequence counters with associated lock Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 18/25] timekeeping: Use sequence counter with associated raw spinlock Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 19/25] vfs: Use sequence counter with associated spinlock Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 20/25] raid5: " Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 21/25] iocost: " Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 22/25] NFSv4: " Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 23/25] userfaultfd: " Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 24/25] kvm/eventfd: " Ahmed S. Darwish
2020-05-19 21:45 ` [PATCH v1 25/25] hrtimer: Use sequence counter with associated raw spinlock Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 00/18] seqlock: Extend seqcount API with associated locks Ahmed S. Darwish
2020-06-08 0:57 ` Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 01/18] Documentation: locking: Describe seqlock design and usage Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 02/18] seqlock: Properly format kernel-doc code samples Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 03/18] seqlock: Add missing kernel-doc annotations Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 04/18] seqlock: Extend seqcount API with associated locks Ahmed S. Darwish
2020-06-08 2:15 ` kernel test robot
2020-06-08 0:57 ` [PATCH v2 05/18] dma-buf: Remove custom seqcount lockdep class key Ahmed S. Darwish
2020-06-08 0:57 ` Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 06/18] dma-buf: Use sequence counter with associated wound/wait mutex Ahmed S. Darwish
2020-06-08 0:57 ` Ahmed S. Darwish
2020-06-08 0:57 ` Ahmed S. Darwish
2020-06-08 14:32 ` Daniel Vetter
2020-06-08 14:32 ` Daniel Vetter
2020-06-08 14:32 ` Daniel Vetter
2020-06-08 0:57 ` [PATCH v2 07/18] sched: tasks: Use sequence counter with associated spinlock Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 08/18] netfilter: conntrack: " Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 09/18] netfilter: nft_set_rbtree: Use sequence counter with associated rwlock Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 10/18] xfrm: policy: Use sequence counters with associated lock Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 11/18] timekeeping: Use sequence counter with associated raw spinlock Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 12/18] vfs: Use sequence counter with associated spinlock Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 13/18] raid5: " Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 14/18] iocost: " Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 15/18] NFSv4: " Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 16/18] userfaultfd: " Ahmed S. Darwish
2020-06-08 0:57 ` [PATCH v2 17/18] kvm/eventfd: " Ahmed S. Darwish
2020-06-08 12:57 ` Paolo Bonzini
2020-06-08 0:57 ` [PATCH v2 18/18] hrtimer: Use sequence counter with associated raw spinlock Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 00/20] seqlock: Extend seqcount API with associated locks Ahmed S. Darwish
2020-06-30 5:44 ` Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 01/20] Documentation: locking: Describe seqlock design and usage Ahmed S. Darwish
2020-07-06 21:04 ` Peter Zijlstra
2020-07-06 21:12 ` Jonathan Corbet
2020-07-06 21:16 ` Peter Zijlstra
2020-07-07 10:12 ` Ahmed S. Darwish
2020-07-07 12:47 ` Peter Zijlstra
2020-06-30 5:44 ` [PATCH v3 02/20] seqlock: Properly format kernel-doc code samples Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 03/20] seqlock: Add missing kernel-doc annotations Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 04/20] lockdep: Add preemption enabled/disabled assertion APIs Ahmed S. Darwish
2020-07-06 20:50 ` Peter Zijlstra
2020-07-07 7:34 ` Sebastian A. Siewior
2020-06-30 5:44 ` [PATCH v3 05/20] seqlock: lockdep assert non-preemptibility on seqcount_t write Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 06/20] seqlock: Extend seqcount API with associated locks Ahmed S. Darwish
2020-07-06 21:21 ` Peter Zijlstra
2020-07-07 8:40 ` Ahmed S. Darwish
2020-07-07 13:04 ` Peter Zijlstra
2020-07-07 14:37 ` Peter Zijlstra
2020-07-08 9:12 ` Peter Zijlstra
2020-07-08 10:43 ` Ahmed S. Darwish
2020-07-08 10:33 ` Ahmed S. Darwish
2020-07-08 12:29 ` Peter Zijlstra
2020-07-08 14:13 ` Peter Zijlstra
2020-07-08 14:25 ` Peter Zijlstra
2020-07-08 15:09 ` Ahmed S. Darwish
2020-07-08 15:35 ` Peter Zijlstra
2020-07-08 15:58 ` Ahmed S. Darwish
2020-07-08 16:16 ` Peter Zijlstra
2020-07-08 16:18 ` Peter Zijlstra
2020-07-08 16:01 ` Peter Zijlstra
2020-06-30 5:44 ` [PATCH v3 07/20] dma-buf: Remove custom seqcount lockdep class key Ahmed S. Darwish
2020-06-30 5:44 ` Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 08/20] dma-buf: Use sequence counter with associated wound/wait mutex Ahmed S. Darwish
2020-06-30 5:44 ` Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 09/20] sched: tasks: Use sequence counter with associated spinlock Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 10/20] netfilter: conntrack: " Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 11/20] netfilter: nft_set_rbtree: Use sequence counter with associated rwlock Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 12/20] xfrm: policy: Use sequence counters with associated lock Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 13/20] timekeeping: Use sequence counter with associated raw spinlock Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 14/20] vfs: Use sequence counter with associated spinlock Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 15/20] raid5: " Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 16/20] iocost: " Ahmed S. Darwish
2020-06-30 7:11 ` Daniel Wagner
2020-06-30 5:44 ` [PATCH v3 17/20] NFSv4: " Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 18/20] userfaultfd: " Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 19/20] kvm/eventfd: " Ahmed S. Darwish
2020-06-30 5:44 ` [PATCH v3 20/20] hrtimer: Use sequence counter with associated raw spinlock Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 00/24] seqlock: Extend seqcount API with associated locks Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 01/24] Documentation: locking: Describe seqlock design and usage Ahmed S. Darwish
2020-07-21 1:35 ` Steven Rostedt
2020-07-21 1:37 ` Steven Rostedt
2020-07-21 5:34 ` Ahmed S. Darwish
2020-07-21 1:44 ` Steven Rostedt
2020-07-21 1:51 ` Steven Rostedt
2020-07-21 7:15 ` Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 02/24] seqlock: Properly format kernel-doc code samples Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 03/24] seqlock: seqcount_t latch: End read sections with read_seqcount_retry() Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 04/24] seqlock: Reorder seqcount_t and seqlock_t API definitions Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 05/24] seqlock: Add kernel-doc for seqcount_t and seqlock_t APIs Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 06/24] seqlock: Implement raw_seqcount_begin() in terms of raw_read_seqcount() Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 07/24] lockdep: Add preemption enabled/disabled assertion APIs Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 08/24] seqlock: lockdep assert non-preemptibility on seqcount_t write Ahmed S. Darwish
2020-07-20 18:31 ` kernel test robot
2020-07-20 18:54 ` kernel test robot
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-08-08 23:21 ` [PATCH v4 08/24] " Guenter Roeck
2020-08-08 23:23 ` Guenter Roeck
2020-08-09 18:42 ` Ahmed S. Darwish
2020-08-10 8:59 ` Greg KH
2020-08-10 9:48 ` peterz
2020-08-10 10:03 ` Greg KH
2020-08-10 9:54 ` [PATCH] Revert "seqlock: lockdep assert non-preemptibility on seqcount_t write" Ahmed S. Darwish
2020-08-10 10:05 ` Greg KH
2020-08-10 10:35 ` Ahmed S. Darwish
2020-08-10 14:10 ` Guenter Roeck
2020-08-18 22:51 ` Valdis Klētnieks
2020-08-19 0:56 ` Guenter Roeck
2020-08-19 7:00 ` Sebastian Andrzej Siewior
2020-08-19 7:34 ` Valdis Klētnieks
2020-08-19 16:15 ` Guenter Roeck
2020-08-10 19:55 ` [PATCH v4 08/24] seqlock: lockdep assert non-preemptibility on seqcount_t write Thomas Gleixner
2020-08-11 10:06 ` Greg KH
2020-07-20 15:55 ` [PATCH v4 09/24] seqlock: Extend seqcount API with associated locks Ahmed S. Darwish
2020-07-21 9:08 ` kernel test robot
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 10/24] seqlock: Align multi-line macros newline escapes at 72 columns Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 11/24] dma-buf: Remove custom seqcount lockdep class key Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 12/24] dma-buf: Use sequence counter with associated wound/wait mutex Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 13/24] sched: tasks: Use sequence counter with associated spinlock Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 14/24] netfilter: conntrack: " Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 15/24] netfilter: nft_set_rbtree: Use sequence counter with associated rwlock Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 16/24] xfrm: policy: Use sequence counters with associated lock Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 17/24] timekeeping: Use sequence counter with associated raw spinlock Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 18/24] vfs: Use sequence counter with associated spinlock Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 19/24] raid5: " Ahmed S. Darwish
2020-07-22 6:40 ` Song Liu
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 20/24] iocost: " Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 21/24] NFSv4: " Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 22/24] userfaultfd: " Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 23/24] kvm/eventfd: " Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 15:55 ` [PATCH v4 24/24] hrtimer: Use sequence counter with associated raw spinlock Ahmed S. Darwish
2020-07-29 14:33 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-07-20 16:49 ` [PATCH v4 00/24] seqlock: Extend seqcount API with associated locks Eric Biggers
2020-07-20 17:33 ` Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 0/8] seqlock: Introduce seqcount_latch_t Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 1/8] time/sched_clock: Use raw_read_seqcount_latch() during suspend Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 2/8] mm/swap: Do not abuse the seqcount_t latching API Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 3/8] seqlock: Introduce seqcount_latch_t Ahmed S. Darwish
2020-09-10 15:08 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 4/8] time/sched_clock: Use seqcount_latch_t Ahmed S. Darwish
2020-09-10 15:08 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 5/8] timekeeping: " Ahmed S. Darwish
2020-09-10 15:08 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 6/8] x86/tsc: " Ahmed S. Darwish
2020-09-04 7:41 ` peterz
2020-09-04 8:03 ` peterz
2020-09-07 16:29 ` Ahmed S. Darwish
2020-09-07 17:30 ` peterz [this message]
2020-09-08 6:23 ` Ahmed S. Darwish
2020-09-10 15:08 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 7/8] rbtree_latch: " Ahmed S. Darwish
2020-09-10 15:08 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-08-27 11:40 ` [PATCH v1 8/8] seqlock: seqcount latch APIs: Only allow seqcount_latch_t Ahmed S. Darwish
2020-09-10 15:08 ` [tip: locking/core] " tip-bot2 for Ahmed S. Darwish
2020-08-28 1:07 ` [PATCH v1 0/5] seqlock: Introduce PREEMPT_RT support Ahmed S. Darwish
2020-08-28 1:07 ` [PATCH v1 1/5] seqlock: seqcount_LOCKTYPE_t: Standardize naming convention Ahmed S. Darwish
2020-08-28 8:18 ` peterz
2020-08-28 8:24 ` Ahmed S. Darwish
2020-08-28 1:07 ` [PATCH v1 2/5] seqlock: Use unique prefix for seqcount_t property accessors Ahmed S. Darwish
2020-08-28 8:27 ` peterz
2020-08-28 8:59 ` Ahmed S. Darwish
2020-08-28 1:07 ` [PATCH v1 3/5] seqlock: seqcount_t: Implement all read APIs as statement expressions Ahmed S. Darwish
2020-08-28 8:30 ` peterz
2020-08-28 8:37 ` Ahmed S. Darwish
2020-08-28 1:07 ` [PATCH v1 4/5] seqlock: seqcount_LOCKTYPE_t: Introduce PREEMPT_RT support Ahmed S. Darwish
2020-08-28 8:57 ` peterz
2020-08-28 8:59 ` peterz
2020-08-28 9:31 ` Ahmed S. Darwish
2020-08-28 14:36 ` Ahmed S. Darwish
2020-08-28 1:07 ` [PATCH v1 5/5] seqlock: PREEMPT_RT: Do not starve seqlock_t writers Ahmed S. Darwish
2020-09-04 6:52 ` [PATCH v1 0/5] seqlock: Introduce PREEMPT_RT support peterz
2020-09-04 7:30 ` Ahmed S. Darwish
2020-09-10 15:08 ` [tip: locking/core] seqlock: seqcount_LOCKNAME_t: " tip-bot2 for Ahmed S. Darwish
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=20200907173047.GO1362448@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=a.darwish@linutronix.de \
--cc=bigeasy@linutronix.de \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=will@kernel.org \
--cc=x86@kernel.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.