Skip to content

Commit f7c83bc

Browse files
shanweiklassert
authored andcommitted
net: xfrm: use __this_cpu_read per-cpu helper
this_cpu_ptr/this_cpu_read is faster than per_cpu_ptr(p, smp_processor_id()) and can reduce memory accesses. The latter helper needs to find the offset for current cpu, and needs more assembler instructions which objdump shows in following. this_cpu_ptr relocates and address. this_cpu_read() relocates the address and performs the fetch. this_cpu_read() saves you more instructions since it can do the relocation and the fetch in one instruction. per_cpu_ptr(p, smp_processor_id()): 1e: 65 8b 04 25 00 00 00 00 mov %gs:0x0,%eax 26: 48 98 cltq 28: 31 f6 xor %esi,%esi 2a: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 31: 48 8b 04 c5 00 00 00 00 mov 0x0(,%rax,8),%rax 39: c7 44 10 04 14 00 00 00 movl $0x14,0x4(%rax,%rdx,1) this_cpu_ptr(p) 1e: 65 48 03 14 25 00 00 00 00 add %gs:0x0,%rdx 27: 31 f6 xor %esi,%esi 29: c7 42 04 14 00 00 00 movl $0x14,0x4(%rdx) 30: 48 c7 c7 00 00 00 00 mov $0x0,%rdi Signed-off-by: Shan Wei <[email protected]> Signed-off-by: Steffen Klassert <[email protected]>
1 parent aafd0d8 commit f7c83bc

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

net/xfrm/xfrm_ipcomp.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -276,18 +276,16 @@ static struct crypto_comp * __percpu *ipcomp_alloc_tfms(const char *alg_name)
276276
struct crypto_comp * __percpu *tfms;
277277
int cpu;
278278

279-
/* This can be any valid CPU ID so we don't need locking. */
280-
cpu = raw_smp_processor_id();
281279

282280
list_for_each_entry(pos, &ipcomp_tfms_list, list) {
283281
struct crypto_comp *tfm;
284282

285-
tfms = pos->tfms;
286-
tfm = *per_cpu_ptr(tfms, cpu);
283+
/* This can be any valid CPU ID so we don't need locking. */
284+
tfm = __this_cpu_read(*pos->tfms);
287285

288286
if (!strcmp(crypto_comp_name(tfm), alg_name)) {
289287
pos->users++;
290-
return tfms;
288+
return pos->tfms;
291289
}
292290
}
293291

0 commit comments

Comments
 (0)