stm class: dummy_stm: Add link callback for fault injection
authorAlexander Shishkin <alexander.shishkin@linux.intel.com>
Mon, 15 Feb 2016 17:12:10 +0000 (19:12 +0200)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Wed, 1 Jun 2016 21:28:49 +0000 (15:28 -0600)
STM device's link callback has the power to abort master/channel
assignment by returning a negative error code. Use this in dummy
stm device to optionally abort assigning certain channel IDs.
This is useful as fault injection into the stm class core, for
testing purposes.

Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit adcde635f5d6b77e9f11087af09c6f62da2bf108)

drivers/hwtracing/stm/dummy_stm.c

index 4ff5961cd36f5d2948b8a14b23f5ceb034e18572..310adf57e7a178034c831c7baed855117b257890 100644 (file)
@@ -50,6 +50,19 @@ module_param(nr_dummies, int, 0600);
 
 static unsigned int dummy_stm_nr;
 
+static unsigned int fail_mode;
+
+module_param(fail_mode, int, 0600);
+
+static int dummy_stm_link(struct stm_data *data, unsigned int master,
+                         unsigned int channel)
+{
+       if (fail_mode && (channel & fail_mode))
+               return -EINVAL;
+
+       return 0;
+}
+
 static int dummy_stm_init(void)
 {
        int i, ret = -ENOMEM, __nr_dummies = ACCESS_ONCE(nr_dummies);
@@ -66,6 +79,7 @@ static int dummy_stm_init(void)
                dummy_stm[i].sw_end             = 0xffff;
                dummy_stm[i].sw_nchannels       = 0xffff;
                dummy_stm[i].packet             = dummy_stm_packet;
+               dummy_stm[i].link               = dummy_stm_link;
 
                ret = stm_register_device(NULL, &dummy_stm[i], THIS_MODULE);
                if (ret)