crypto: xor - skip speed test if the xor function is selected automatically
If the architecture selected the xor function with XOR_SELECT_TEMPLATE the speed result of the do_xor_speed benchmark is of limited value. The speed measurement increases the bootup time a little, which can makes a difference for kernels used in container like virtual machines. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
ed0bd721c9
commit
39457acda9
1 changed files with 19 additions and 21 deletions
40
crypto/xor.c
40
crypto/xor.c
|
@ -109,6 +109,18 @@ calibrate_xor_blocks(void)
|
||||||
void *b1, *b2;
|
void *b1, *b2;
|
||||||
struct xor_block_template *f, *fastest;
|
struct xor_block_template *f, *fastest;
|
||||||
|
|
||||||
|
fastest = NULL;
|
||||||
|
|
||||||
|
#ifdef XOR_SELECT_TEMPLATE
|
||||||
|
fastest = XOR_SELECT_TEMPLATE(fastest);
|
||||||
|
if (fastest) {
|
||||||
|
printk(KERN_INFO "xor: automatically using best "
|
||||||
|
"checksumming function %-10s\n",
|
||||||
|
fastest->name);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note: Since the memory is not actually used for _anything_ but to
|
* Note: Since the memory is not actually used for _anything_ but to
|
||||||
* test the XOR speed, we don't really want kmemcheck to warn about
|
* test the XOR speed, we don't really want kmemcheck to warn about
|
||||||
|
@ -126,36 +138,22 @@ calibrate_xor_blocks(void)
|
||||||
* all the possible functions, just test the best one
|
* all the possible functions, just test the best one
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fastest = NULL;
|
|
||||||
|
|
||||||
#ifdef XOR_SELECT_TEMPLATE
|
|
||||||
fastest = XOR_SELECT_TEMPLATE(fastest);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define xor_speed(templ) do_xor_speed((templ), b1, b2)
|
#define xor_speed(templ) do_xor_speed((templ), b1, b2)
|
||||||
|
|
||||||
if (fastest) {
|
printk(KERN_INFO "xor: measuring software checksum speed\n");
|
||||||
printk(KERN_INFO "xor: automatically using best "
|
XOR_TRY_TEMPLATES;
|
||||||
"checksumming function:\n");
|
fastest = template_list;
|
||||||
xor_speed(fastest);
|
for (f = fastest; f; f = f->next)
|
||||||
goto out;
|
if (f->speed > fastest->speed)
|
||||||
} else {
|
fastest = f;
|
||||||
printk(KERN_INFO "xor: measuring software checksum speed\n");
|
|
||||||
XOR_TRY_TEMPLATES;
|
|
||||||
fastest = template_list;
|
|
||||||
for (f = fastest; f; f = f->next)
|
|
||||||
if (f->speed > fastest->speed)
|
|
||||||
fastest = f;
|
|
||||||
}
|
|
||||||
|
|
||||||
printk(KERN_INFO "xor: using function: %s (%d.%03d MB/sec)\n",
|
printk(KERN_INFO "xor: using function: %s (%d.%03d MB/sec)\n",
|
||||||
fastest->name, fastest->speed / 1000, fastest->speed % 1000);
|
fastest->name, fastest->speed / 1000, fastest->speed % 1000);
|
||||||
|
|
||||||
#undef xor_speed
|
#undef xor_speed
|
||||||
|
|
||||||
out:
|
|
||||||
free_pages((unsigned long)b1, 2);
|
free_pages((unsigned long)b1, 2);
|
||||||
|
out:
|
||||||
active_template = fastest;
|
active_template = fastest;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue