From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753677AbcBORNZ (ORCPT ); Mon, 15 Feb 2016 12:13:25 -0500 Received: from mga04.intel.com ([192.55.52.120]:30016 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753659AbcBORNX (ORCPT ); Mon, 15 Feb 2016 12:13:23 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,451,1449561600"; d="scan'208";a="885401370" From: Alexander Shishkin To: Greg KH Cc: Mathieu Poirier , Chunyan Zhang , laurent.fert@intel.com, yann.fouassier@intel.com, linux-kernel@vger.kernel.org, Alexander Shishkin Subject: [PATCH 20/20] stm class: dummy_stm: Add link callback for fault injection Date: Mon, 15 Feb 2016 19:12:10 +0200 Message-Id: <1455556330-12473-21-git-send-email-alexander.shishkin@linux.intel.com> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1455556330-12473-1-git-send-email-alexander.shishkin@linux.intel.com> References: <20160215164411.GA25556@kroah.com> <1455556330-12473-1-git-send-email-alexander.shishkin@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- drivers/hwtracing/stm/dummy_stm.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/hwtracing/stm/dummy_stm.c b/drivers/hwtracing/stm/dummy_stm.c index 4ff5961cd3..310adf57e7 100644 --- a/drivers/hwtracing/stm/dummy_stm.c +++ b/drivers/hwtracing/stm/dummy_stm.c @@ -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) -- 2.7.0