x86, bts: add selftest for BTS
Perform a selftest of branch trace store when a cpu is initialized. WARN and disable branch trace store support if the selftest fails. Signed-off-by: Markus Metzger <markus.t.metzger@intel.com> LKML-Reference: <20090313104507.A30125@sedona.ch.intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
bc44fb5f7d
commit
8a327f6d1b
@@ -29,6 +29,7 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
#include "ds_selftest.h"
|
||||
|
||||
/*
|
||||
* The configuration for a particular DS hardware implementation.
|
||||
@@ -940,6 +941,26 @@ ds_configure(const struct ds_configuration *cfg,
|
||||
printk(KERN_INFO "[ds] pebs not available\n");
|
||||
}
|
||||
|
||||
if (ds_cfg.sizeof_rec[ds_bts]) {
|
||||
int error;
|
||||
|
||||
error = ds_selftest_bts();
|
||||
if (error) {
|
||||
WARN(1, "[ds] selftest failed. disabling bts.\n");
|
||||
ds_cfg.sizeof_rec[ds_bts] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (ds_cfg.sizeof_rec[ds_pebs]) {
|
||||
int error;
|
||||
|
||||
error = ds_selftest_pebs();
|
||||
if (error) {
|
||||
WARN(1, "[ds] selftest failed. disabling pebs.\n");
|
||||
ds_cfg.sizeof_rec[ds_pebs] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
printk(KERN_INFO "[ds] sizes: address: %u bit, ",
|
||||
8 * ds_cfg.sizeof_ptr_field);
|
||||
printk("bts/pebs record: %u/%u bytes\n",
|
||||
|
Reference in New Issue
Block a user