Messages in this thread Patch in this message | | | From | "Liu, Chuansheng" <> | Subject | RE: [PATCH] Fix the race between smp_call_function and CPU booting | Date | Thu, 22 Mar 2012 00:59:40 +0000 |
| |
Below is the complete test patch. Just run the simpl_loop_onoffline.sh and simpl_loop_smpcalling.sh concurrently to reproduce the race.
From: liu chuansheng <chuansheng.liu@intel.com> Subject: [PATCH] Test scripts to verify the race between CPU booting and smp_call
Signed-off-by: liu chuansheng <chuansheng.liu@intel.com> --- drivers/misc/Makefile | 1 + drivers/misc/smp_call_test.c | 61 ++++++++++++++++++++++++++++++++++++++ scripts/simpl_loop_onoffline.sh | 5 +++ scripts/simpl_loop_smpcalling.sh | 5 +++ 4 files changed, 72 insertions(+), 0 deletions(-) create mode 100644 drivers/misc/smp_call_test.c create mode 100644 scripts/simpl_loop_onoffline.sh create mode 100644 scripts/simpl_loop_smpcalling.sh
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index 571ffd1..003f883 100755 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -59,3 +59,4 @@ obj-$(CONFIG_MID_I2S_DEV) += mid_i2s_dev/ obj-$(CONFIG_EMMC_IPANIC) += emmc_ipanic.o obj-$(CONFIG_SCU_LOGGING) += intel_fabric_logging.o obj-$(CONFIG_UUID) += uuid.o +obj-y += smp_call_test.o diff --git a/drivers/misc/smp_call_test.c b/drivers/misc/smp_call_test.c new file mode 100644 index 0000000..95a14fc --- /dev/null +++ b/drivers/misc/smp_call_test.c @@ -0,0 +1,61 @@ +/* + * drivers/misc/smp_call_test.c + * + * Author: chuansheng.liu@intel.com + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/string.h> +#include <linux/errno.h> +#include <linux/init.h> +#include <linux/interrupt.h> +#include <linux/device.h> +#include <linux/types.h> +#include <linux/delay.h> +#include <linux/sched.h> +#include <linux/debugfs.h> +#include <linux/fs.h> +#include <linux/proc_fs.h> + +static int smp_call_dbg_get(void *data, u64 *val) +{ + return 0; +} + +static void smp_call_func(void *info) +{ + return; +} + +static int smp_call_dbg_set(void *data, u64 val) +{ + smp_call_function(smp_call_func, NULL, 1); + printk(KERN_ERR "test smp_call_function\n"); + return 0; +} + + +DEFINE_SIMPLE_ATTRIBUTE(smp_call_dbg_fops, smp_call_dbg_get, smp_call_dbg_set, "%llu\n"); + + +int __init smp_call_test_init(void) +{ + debugfs_create_file("smp_call_test", 0644, NULL, NULL, &smp_call_dbg_fops); + return 0; +} + +module_init(smp_call_test_init); + diff --git a/scripts/simpl_loop_onoffline.sh b/scripts/simpl_loop_onoffline.sh new file mode 100644 index 0000000..c2c640d --- /dev/null +++ b/scripts/simpl_loop_onoffline.sh @@ -0,0 +1,5 @@ +while true +do + echo 0 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu1/online +done diff --git a/scripts/simpl_loop_smpcalling.sh b/scripts/simpl_loop_smpcalling.sh new file mode 100644 index 0000000..37cef74 --- /dev/null +++ b/scripts/simpl_loop_smpcalling.sh @@ -0,0 +1,5 @@ +while true +do +echo 1 > /sys/kernel/debug/smp_call_test +usleep 500000 +done -- 1.7.0.4 > -----Original Message----- > From: Peter Zijlstra [mailto:peterz@infradead.org] > Sent: Wednesday, March 21, 2012 8:26 PM > To: Liu, Chuansheng > Cc: linux-kernel@vger.kernel.org; Yanmin Zhang; tglx@linutronix.de > Subject: RE: [PATCH] Fix the race between smp_call_function and CPU booting > > > Can you send me your exact kernel patch (the sysfs knob you use to trigger this) > and test scripts?
| |