@@ -276,7 +276,6 @@ tools/tests/x86_emulator/test_x86_emulator
tools/tests/x86_emulator/x86_emulate
tools/tests/x86_emulator/xop*.[ch]
tools/tests/xenstore/xs-test
-tools/tests/mce-test/tools/xen-mceinj
tools/tests/vpci/list.h
tools/tests/vpci/vpci.[hc]
tools/tests/vpci/test_vpci
@@ -1,4 +1,5 @@
xen-access
+xen-mceinj
xen-memshare
xen-ucode
xen-vmtrace
@@ -22,6 +22,7 @@ INSTALL_SBIN-$(CONFIG_MIGRATE) += xen-hptool
INSTALL_SBIN-$(CONFIG_X86) += xen-hvmcrash
INSTALL_SBIN-$(CONFIG_X86) += xen-hvmctx
INSTALL_SBIN-$(CONFIG_X86) += xen-lowmemd
+INSTALL_SBIN-$(CONFIG_X86) += xen-mceinj
INSTALL_SBIN-$(CONFIG_X86) += xen-memshare
INSTALL_SBIN-$(CONFIG_X86) += xen-mfndump
INSTALL_SBIN-$(CONFIG_X86) += xen-ucode
@@ -97,6 +98,9 @@ xen-memshare: xen-memshare.o
xen-vmtrace: xen-vmtrace.o
$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(LDLIBS_libxenforeignmemory) $(APPEND_LDFLAGS)
+xen-mceinj: xen-mceinj.o
+ $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(LDLIBS_libxenstore) $(APPEND_LDFLAGS)
+
xenperf: xenperf.o
$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS)
similarity index 97%
rename from tools/tests/mce-test/tools/xen-mceinj.c
rename to tools/misc/xen-mceinj.c
@@ -137,7 +137,7 @@ static void err(xc_interface *xc_handle, const char *fmt, ...)
va_list args;
va_start(args, fmt);
- if (vasprintf(&buf, fmt, args) < 0)
+ if ( vasprintf(&buf, fmt, args) < 0 )
abort();
perror(buf);
va_end(args);
@@ -173,7 +173,7 @@ static unsigned int mca_cpuinfo(xc_interface *xc_handle)
mc.cmd = XEN_MC_physcpuinfo;
mc.interface_version = XEN_MCA_INTERFACE_VERSION;
- if (!xc_mca_op(xc_handle, &mc))
+ if ( !xc_mca_op(xc_handle, &mc) )
return mc.u.mc_physcpuinfo.ncpus;
else
return 0;
@@ -187,9 +187,9 @@ static int inject_cmci(xc_interface *xc_handle, unsigned int cpu_nr)
memset(&mc, 0, sizeof(struct xen_mc));
nr_cpus = mca_cpuinfo(xc_handle);
- if (!nr_cpus)
+ if ( !nr_cpus )
err(xc_handle, "Failed to get mca_cpuinfo");
- if (cpu_nr >= nr_cpus)
+ if ( cpu_nr >= nr_cpus )
err(xc_handle, "-c %u is larger than %u", cpu_nr, nr_cpus - 1);
mc.cmd = XEN_MC_inject_v2;
@@ -284,7 +284,7 @@ static int add_msr_intpose(xc_interface *xc_handle,
flush_msr_inj(xc_handle);
init_msr_inj();
}
- count= msr_inj.mcinj_count;
+ count = msr_inj.mcinj_count;
if ( !count )
{
@@ -422,7 +422,7 @@ static long xs_get_dom_mem(int domid)
if (!memstr || !plen)
return -1;
- mem = atoll(memstr)*1024;
+ mem = atoll(memstr) * 1024;
free(memstr);
return mem;
@@ -474,17 +474,20 @@ int main(int argc, char *argv[])
cpu_nr = 0;
init_msr_inj();
- xc_handle = xc_interface_open(0, 0, 0);
- if ( !xc_handle ) {
+ xc_handle = xc_interface_open(NULL, NULL, 0);
+ if ( !xc_handle )
+ {
Lprintf("Failed to get xc interface");
exit(EXIT_FAILURE);
}
- while ( 1 ) {
+ while ( 1 )
+ {
c = getopt_long(argc, argv, "c:Dd:t:hp:l", opts, &opt_index);
if ( c == -1 )
break;
- switch ( c ) {
+ switch ( c )
+ {
case 'D':
dump=1;
break;
@@ -516,7 +519,8 @@ int main(int argc, char *argv[])
}
}
- if ( domid != DOMID_XEN ) {
+ if ( domid != DOMID_XEN )
+ {
max_gpa = xs_get_dom_mem(domid);
Lprintf("get domain %d max gpa is: 0x%lx", domid, max_gpa);
if ( gaddr >= max_gpa )
@@ -524,7 +528,8 @@ int main(int argc, char *argv[])
}
Lprintf("get gaddr of error inject is: 0x%lx", gaddr);
- if ( dump ) {
+ if ( dump )
+ {
if ( domid == DOMID_XEN )
Lprintf("Xen: gaddr=0x%lx", gaddr);
else
@@ -532,7 +537,8 @@ int main(int argc, char *argv[])
goto out;
}
- if ( type < 0 || type >= MCE_TABLE_SIZE ) {
+ if ( type < 0 || type >= MCE_TABLE_SIZE )
+ {
err(xc_handle, "Unsupported error type");
goto out;
}
@@ -4,7 +4,6 @@ include $(XEN_ROOT)/tools/Rules.mk
SUBDIRS-y :=
SUBDIRS-y += resource
SUBDIRS-$(CONFIG_X86) += cpu-policy
-SUBDIRS-$(CONFIG_X86) += mce-test
ifneq ($(clang),y)
SUBDIRS-$(CONFIG_X86) += x86_emulator
endif
deleted file mode 100644
@@ -1,12 +0,0 @@
-.PHONY: all clean distclean
-
-all:
- $(MAKE) -C tools
-
-clean:
- $(MAKE) -C tools clean
-
-distclean:
- $(MAKE) -C tools distclean
-
-install uninstall:
deleted file mode 100644
@@ -1,75 +0,0 @@
-Xen MCE test suite
----------------
-
-The Xen MCE test suite is a collection of tools and test scripts for
-testing the Xen MCE processing features. The goal is to cover
-most Xen MCE processing code paths and features with automation tests.
-
-
-In the Package
---------------
-
-Here is a short description of what is included in the package
-
-README
- This is document
-
-Makefile
- For compile
-
-cases/*
- Contains all test cases, which may be organized in sub-directories,
- the interface of test case is a shell script under cases/, such as:
- -- cases/srao_mem/dom0/cases.sh
-
-config/*
- Contains test configuration files, which specifies the parameters
- for test cases, etc.
-
-lib/*
- Contains some shell scripts, in which some common shell
- functions and variable definitions are defined to be used by
- test cases.
-
-tools/*
- Tools used by MCE test suites, now only xen-mceinj tool.
-
-results/
- When test is done, the test result will be placed in this
- directory, test results of various cases may be in corresponding
- directory.
- For example, files in
- results/srao_mem_dom0/result
- is the result for test case cases/srao_mem/dom0/cases.sh, there will
- be 3 result conditions: PASSED/FAILED/NORESULT.
- results/<test_case>/testlog #the test log during testing
- results/<test_case>/mcelog #mcelog output during testing
- results/<test_case>/xenlog #Xen log during testing
- results/<test_case>/gklog #VM guest kernel log during testing
- results/<test_case>/guest_config #config file used to create guest
-
-
-Test Instruction
-----------------
-
-1. make sure you have a dom0 with mce support
- CONFIG_X86_MCE=y
- CONFIG_X86_MCE_INTEL=y
- CONFIG_X86_MCE_AMD=y
- CONFIG_X86_MCE_THRESHOLD=y
- CONFIG_X86_MCE_INJECT=y
-
-2. run system at xen and start xend. A installed guest image is
- necessary when do guest MCE error injection.
-3. compile tools that used to test. in mce-test, $make.
- Note: make sure compile xen/tools before do this step
-4. run test cases that you want.
- e.g. $sh cases/srao_mem/dom0/cases.sh -d 0 -p 0x0200 -c 2 -t 1
-5. get test result in results directory
-
-
-Notes
-----------------
-All test cases fake a error and inject this error in 0x180020, For Xen
-test cases(e.g. cases/srao_mem/xen/cases.sh), error happen on every page
-may cause a Xen panic.
deleted file mode 100644
@@ -1,73 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=srao_llc_dom0
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the optional options================"
- echo -e "\t-d domainID\t: 0"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-while getopts ":c:d:p:h" option
-do
- case "$option" in
- c) injcpu=$OPTARG;;
- d) domid=$OPTARG;;
- p) pageaddr=$OPTARG;;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-[ -z $domid ] && domid=0
-
-inject()
-{
- mce_inject_trigger $MCE_SRAO_LLC -d $domid -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- inject || ret_val=1
- xen_verify || ret_val=1
- mcelog_verify $MCE_SRAO_LLC || ret_val=1
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,94 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=srao_llc_guest
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the must have options==============="
- echo -e "\t-i image\t: guest image"
- echo -e "\t-m memory\t: set guest virtual memory"
- echo "======== ========"
- echo "================Below are the optional options================"
- echo -e "\t-u vcpus\t: set guest virtual cpus number"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-[ $# -lt 1 ] && usage
-
-while getopts ":i:u:m:c:p:hl:" option
-do
- case "$option" in
- i) image=$OPTARG; offset=`kpartx -l $image | awk '{print $NF*512}'`;;
- u) vcpus=$OPTARG;;
- m) memory=$OPTARG;;
- c) injcpu=$OPTARG;;
- p) pageaddr=$OPTARG;;
- l) early_kill="0";;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-
-start_guest()
-{
- create_hvm_guest $image -u $vcpus -m $memory
- if [ $? -ne 0 ]; then
- echo " Create guest fail!"
- return 1
- fi
- return 0
-}
-
-inject()
-{
- mce_inject_trigger $MCE_SRAO_LLC -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- start_guest || ret_val=1
- inject || ret_val=1
- xen_verify || ret_val=1
- guest_verify || ret_val=1
- mcelog_verify $MCE_SRAO_LLC || ret_val=1
- des_guest
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,69 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=srao_llc_xen
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the optional options================"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-while getopts ":c:p:h" option
-do
- case "$option" in
- c) injcpu=$OPTARG;;
- p) pageaddr=$OPTARG;;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-inject()
-{
- mce_inject_trigger $MCE_SRAO_LLC -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- inject || ret_val=1
- xen_verify || ret_val=1
- mcelog_verify $MCE_SRAO_LLC || ret_val=1
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,73 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=srao_mem_dom0
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the optional options================"
- echo -e "\t-d domainID\t: 0"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-while getopts ":c:d:p:h" option
-do
- case "$option" in
- c) injcpu=$OPTARG;;
- d) domid=$OPTARG;;
- p) pageaddr=$OPTARG;;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-[ -z $domid ] && domid=0
-
-inject()
-{
- mce_inject_trigger $MCE_SRAO_MEM -d $domid -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- inject || ret_val=1
- xen_verify || ret_val=1
- mcelog_verify $MCE_SRAO_MEM || ret_val=1
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,94 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=srao_mem_guest
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the must have options==============="
- echo -e "\t-i image\t: guest image"
- echo -e "\t-m memory\t: set guest virtual memory"
- echo "======== ========"
- echo "================Below are the optional options================"
- echo -e "\t-u vcpus\t: set guest virtual cpus number"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-[ $# -lt 1 ] && usage
-
-while getopts ":i:u:m:c:p:hl:" option
-do
- case "$option" in
- i) image=$OPTARG; offset=`kpartx -l $image | awk '{print $NF*512}'`;;
- u) vcpus=$OPTARG;;
- m) memory=$OPTARG;;
- c) injcpu=$OPTARG;;
- p) pageaddr=$OPTARG;;
- l) early_kill="0";;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-
-start_guest()
-{
- create_hvm_guest $image -u $vcpus -m $memory
- if [ $? -ne 0 ]; then
- echo " Create guest fail!"
- return 1
- fi
- return 0
-}
-
-inject()
-{
- mce_inject_trigger $MCE_SRAO_MEM -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- start_guest || ret_val=1
- inject || ret_val=1
- xen_verify || ret_val=1
- guest_verify || ret_val=1
- mcelog_verify $MCE_SRAO_MEM || ret_val=1
- des_guest
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,69 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=srao_mem_xen
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the optional options================"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-while getopts ":c:p:h" option
-do
- case "$option" in
- c) injcpu=$OPTARG;;
- p) pageaddr=$OPTARG;;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-inject()
-{
- mce_inject_trigger $MCE_SRAO_MEM -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- inject || ret_val=1
- xen_verify || ret_val=1
- mcelog_verify $MCE_SRAO_MEM || ret_val=1
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,72 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=ucna_llc_dom0
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the optional options================"
- echo -e "\t-d domainID\t: 0"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-while getopts ":c:d:p:h" option
-do
- case "$option" in
- c) injcpu=$OPTARG;;
- d) domid=$OPTARG;;
- p) pageaddr=$OPTARG;;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-[ -z $domid ] && domid=0
-
-inject()
-{
- mce_inject_trigger $CMCI_UCNA_LLC -d $domid -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- inject || ret_val=1
- mcelog_verify $CMCI_UCNA_LLC || ret_val=1
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,92 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=ucna_llc_guest
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the must have options==============="
- echo -e "\t-i image\t: guest image"
- echo -e "\t-m memory\t: set guest virtual memory"
- echo "======== ========"
- echo "================Below are the optional options================"
- echo -e "\t-u vcpus\t: set guest virtual cpus number"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-[ $# -lt 1 ] && usage
-
-while getopts ":i:u:m:c:p:hl:" option
-do
- case "$option" in
- i) image=$OPTARG; offset=`kpartx -l $image | awk '{print $NF*512}'`;;
- u) vcpus=$OPTARG;;
- m) memory=$OPTARG;;
- c) injcpu=$OPTARG;;
- p) pageaddr=$OPTARG;;
- l) early_kill="0";;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-
-start_guest()
-{
- create_hvm_guest $image -u $vcpus -m $memory
- if [ $? -ne 0 ]; then
- echo " Create guest fail!"
- return 1
- fi
- return 0
-}
-
-inject()
-{
- mce_inject_trigger $CMCI_UCNA_LLC -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- start_guest || ret_val=1
- inject || ret_val=1
- mcelog_verify $CMCI_UCNA_LLC || ret_val=1
- des_guest
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,68 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-sd=$(dirname $0)
-export ROOT=`(cd $sd/../../../; pwd)`
-export this_case=ucna_llc_xen
-
-. $ROOT/lib/xen-mceinj-tool.sh
-
-usage()
-{
- echo "Usage: ./cases.sh [-options] [arguments]"
- echo "================Below are the optional options================"
- echo -e "\t-c injcpu\t: which cpu to inject error"
- echo -e "\t-p pageaddr\t: Guest Physical Address to inject error"
- echo -e "\t\t\tBy default, the GPA is 0x180020"
- echo -e "\t-h help"
- exit 0
-}
-
-while getopts ":c:p:h" option
-do
- case "$option" in
- c) injcpu=$OPTARG;;
- p) pageaddr=$OPTARG;;
- h) usage;;
- *) echo "invalid option!"; usage;;
- esac
-done
-
-inject()
-{
- mce_inject_trigger $CMCI_UCNA_LLC -u $injcpu -p $pageaddr
- if [ $? -eq 0 ]; then
- show " Passed: Successfully to fake and inject a MCE error"
- else
- show " Failed: Fake error and inject fail !!"
- return 1
- fi
- return 0
-}
-
-do_main()
-{
- ret_val=0
- clean_env
- inject || ret_val=1
- mcelog_verify $CMCI_UCNA_LLC || ret_val=1
- gen_result $ret_val
-}
-
-do_main "$@"
deleted file mode 100644
@@ -1,24 +0,0 @@
-#!/bin/bash
-#
-# Software injection based test cases: test cases are triggered via
-# mce-inject tool.
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-export MCE_SRAO_MEM=0
-export MCE_SRAO_LLC=1
-export CMCI_UCNA_LLC=2
deleted file mode 100644
@@ -1,260 +0,0 @@
-#!/bin/bash
-#
-# Software injection based test cases: test cases are triggered via
-# mce-inject tool.
-# Copyright (c) 2010, Intel Corporation
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version
-# 2 as published by the Free Software Foundation.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-# Author: Xudong Hao <xudong.hao@intel.com>
-#
-
-. $ROOT/config/setup.conf
-
-#Guest Image Preparation
-hvm_image_prepare()
-{
- local image=$1
- local tmpdir=`mktemp -d`
- local tmpfile=`mktemp`
- local offset=`kpartx -l $image | awk '{print $NF*512}'`
- mount -oloop,offset=$offset $image $tmpdir && echo "mount image to $tmpdir"
- local g_grub=$tmpdir/boot/grub/grub.conf
- if [ $? -ne 0 ]; then
- show " Mount image failed!"
- return 1
- fi
-
- if ! grep FLAG_CONSOLE $g_grub; then
- sed -e '/kernel/s/$/ console=ttyS0,115200,8n1 console=tty0/g' \
- $g_grub > $tmpfile
- mv -f $tmpfile $g_grub
- rm -f $tmpfile
- echo "
-#### FLAG_CONSOLE #### " >> $g_grub
- fi
- umount $tmpdir
- rm -fr $tmpdir
-
- return 0
-}
-
-create_hvm_guest()
-{
- local image=$1
- local originconfig="/etc/xen/xmexample.hvm"
- local TF=`mktemp`
- local case_dir=$ROOT/results/$this_case
- local config=$case_dir/guest_config
- [ -d $case_dir ] || mkdir $case_dir
- [ -f $logfile ] || touch $logfile
- local File=`echo $image|sed "s/\//\\\\\\\\\\//g"`
- local g_name="`basename $image`_`date +%H%M%S`"
-
- hvm_image_prepare $image
-
- while getopts ":u:m:" Option
- do
- case $Option in
- u ) vcpus=$OPTARG;;
- m ) memory=$OPTARG;;
- e ) bridge_name=$OPTARG;;
- * ) ;;
- esac
- done
-
- cp $originconfig $config -f
-
- if [ -z $image ]; then
- show "Image file $image does not exist, Please input one valid file"
- return 1
- fi
-
- sed -e "/^disk/s/file:.*,\(hda\)/file:${File},\1/" $config \
- | sed -e "/^disk/s/phy:.*,\(hda\)/file:${File},\1/" >$TF
- mv -f $TF $config
-
- [ -z $memory ] || sed -i "/^memory/s/^.*$/memory = $memory/" $config
- [ -z $vcpus ] || sed -i "1,/^#vcpus/s/^#vcpus.*$/vcpus=$vcpus/;1d" $config
- sed -i "/^vif/s/vif/#vif/" $config
- sed -i "/^name/s/^.*$/name = \"$g_name\"/" $config
-
- string1=$(ls /dev/pts | sort)
- xm cr $config
- [ $? -eq 0 ] && domid=`xm list $g_name | tail -n1 | awk '{print $2}'`
- if [ -z $domid ]; then
- show " Guest can not boot up"
- return 1
- fi
-
- sleep 10
-
- string2=$(ls /dev/pts | sort)
-
- get_guest_klog
- sleep 40
-
- return 0
-}
-
-get_guest_klog()
-{
- local case_dir=$ROOT/results/$this_case
- gklog=$case_dir/gklog
- [ -d $case_dir ] || mkdir $case_dir
- [ -f $gklog ] || touch $gklog
- for fo in $string2; do
- echo $string1 | grep $fo -wq
- [ $? -eq 1 ] && num=$fo
- done
- cat /dev/pts/$num > $gklog &
-}
-
-mce_inject_trigger()
-{
- local errtype=$1
- local append=""
- while getopts ":d:u:p:" Option
- do
- case $Option in
- d ) domid=$OPTARG;;
- u ) cpu=$OPTARG;;
- p ) pageaddr=$OPTARG;;
- * ) ;;
- esac
- done
-
- [ -z $domid ] || append=$append" -d $domid"
- [ -z $cpu ] || append=$append" -c $cpu"
- [ -z $pageaddr ] || append=$append" -p $pageaddr"
-
- [ -f $ROOT/tools/xen-mceinj ]
- if [ $? -eq 0 ]; then
- xm dmesg -c
- $ROOT/tools/xen-mceinj -t $errtype $append
- if [ $? -ne 0 ]; then
- show " Failed: Maybe the memory addr is out of range. \
- Please check whether used xen-mceinj tool correctlly"
- return 1
- fi
- else
- show " Failed: please compile xen-mce inject tool firstly"
- return 1
- fi
- return 0
-}
-
-xen_verify()
-{
- local case_dir=$ROOT/results/$this_case
- local xenlog=$case_dir/xenlog
- [ -d $case_dir ] || mkdir $case_dir
- [ -f $xenlog ] || touch $xenlog
- xm dmesg > $xenlog
- grep "Error is successfully recovered" $xenlog > /dev/null
- if [ $? -eq 0 ]; then
- show " Passed: Xen handle this MCE error successfully"
- else
- show " Failed: Xen does not handle MCE error correctly !!"
- return 1
- fi
- return 0
-}
-
-guest_verify()
-{
- grep "kernel page recovery" $gklog > /dev/null
- if [ $? -eq 0 ]; then
- show " Passed: Guest recive MCE error and solved correctly"
- else
- show " Failed: Guest fail to solve MCE error"
- return 1
- fi
- return 0
-}
-
-mcelog_verify()
-{
- local err_type=$1
- local ret=0
- local case_dir=$ROOT/results/$this_case
- local mcelog=$case_dir/mcelog
- [ -d $case_dir ] || mkdir $case_dir
- [ -f $mcelog ] || touch $mcelog
- mcelog > $mcelog
- if [ -z $mcelog ]; then
- show " Failed: MCELOG does not catch anything"
- return 1
- else
- if [ $err_type -eq 0 ]; then
- grep "MEMORY CONTROLLER MS_CHANNELunspecified_ERR" $mcelog \
- > /dev/null
- ret=$?
- elif [ $err_type -eq 1 ]; then
- grep "Generic CACHE Level-2 Eviction Error" $mcelog > /dev/null
- ret=$?
- elif [ $err_type -eq 2 ]; then
- grep "Data CACHE Level-2 Data-Read Error" $mcelog > /dev/null
- ret=$?
- fi
-
- if [ $ret -eq 0 ]; then
- show " Passed: MCElog catch a correct error"
- else
- show " Failed: MCE log catch a incorrect error !!"
- return 1
- fi
- fi
-
- return 0
-}
-
-function des_guest()
-{
- xm des $domid
-}
-
-function clean_env()
-{
- [ -d $ROOT/results ] || mkdir $ROOT/results
- # clean logs and results of last test for this case
- rm -fr $ROOT/results/$this_case/*
-}
-
-function show()
-{
- local case_dir=$ROOT/results/$this_case
- local logfile=$case_dir/testlog
- [ -d $case_dir ] || mkdir $case_dir
- [ -f $logfile ] || touch $logfile
- echo -e $* | tee -a $logfile > /dev/null
-}
-
-function gen_result()
-{
- local ret=$1
- local case_dir=$ROOT/results/$this_case
- local result=$case_dir/result
- [ -d $case_dir ] || mkdir $case_dir
- [ -f $result ] || touch $result
-
- if [ $ret -eq 0 ]; then
- echo "PASSED" > $result
- elif [ $ret -eq 1 ]; then
- echo "FAILED" > $result
- echo " Please check testlog for details!!! " >> $result
- else
- echo "NORESULT" > $result
- echo " Please check testlog for details!!! " >> $result
- fi
-}
deleted file mode 100644
@@ -1,24 +0,0 @@
-XEN_ROOT=$(CURDIR)/../../../..
-include $(XEN_ROOT)/tools/Rules.mk
-
-CFLAGS += -Werror
-CFLAGS += $(CFLAGS_libxenctrl)
-CFLAGS += $(CFLAGS_libxenguest)
-CFLAGS += $(CFLAGS_libxenstore)
-CFLAGS += $(CFLAGS_xeninclude)
-
-.PHONY: all
-all: xen-mceinj
-
-install: xen-mceinj
- $(INSTALL_PROG) xen-mceinj $(DESTDIR)$(sbindir)
-
-.PHONY: clean
-clean:
- $(RM) *.o xen-mceinj
-
-.PHONY: distclean
-distclean: clean
-
-xen-mceinj: xen-mceinj.o Makefile
- $(CC) -o $@ $< $(LDFLAGS) $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(LDLIBS_libxenstore)
deleted file mode 100644
@@ -1,24 +0,0 @@
-Xen Machine Check Exception(MCE) error inject tool
-----------------------------------------------
-
-xen-mceinj is a software MCE injection tool, which is based on Xen
-MCE injection mechanism. It allows to inject machine check errors on the
-software level into a running Xen/dom0/VM. This is intended for
-validation of the Xen machine check handler.
-
-With the help of the Makefile, it is possible to compile a binary file
-named "xen-mceinj".
-
-Usage
------
-$make (make install) --Note: make sure compile xen/tools before do this step
-$./xen-mceinj [OPTION]...
-
-OPTION arguments can be:
- -D, --dump dump addr info without error injection
- -c, --cpu=CPU_ID target CPU, the default is CPU0
- -d, --domain=DomID target domain, the default is Xen itself
- -p, --page physical page address, the default is 0x180020
- -t, --type=error error type
-
-For detail help, please refer to "./xen-mceinj -h"
mce-test has a test suite, but it depends on xend, needs to run in-tree, and requires manual setup of at least one guest, and manual parameters to pass into cases. Drop the test infrasturcture. Move the one useful remaining item, xen-mceinj, into misc/, fixing some minor style issues as it goes. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Ian Jackson <iwj@xenproject.org> CC: Wei Liu <wl@xen.org> CC: Jan Beulich <JBeulich@suse.com> CC: Roger Pau Monné <roger.pau@citrix.com> CC: Juergen Gross <jgross@suse.com> --- .gitignore | 1 - tools/misc/.gitignore | 1 + tools/misc/Makefile | 4 + tools/{tests/mce-test/tools => misc}/xen-mceinj.c | 32 +-- tools/tests/Makefile | 1 - tools/tests/mce-test/Makefile | 12 - tools/tests/mce-test/README | 75 ------ tools/tests/mce-test/cases/srao_llc/dom0/cases.sh | 73 ------ tools/tests/mce-test/cases/srao_llc/guest/cases.sh | 94 -------- tools/tests/mce-test/cases/srao_llc/xen/cases.sh | 69 ------ tools/tests/mce-test/cases/srao_mem/dom0/cases.sh | 73 ------ tools/tests/mce-test/cases/srao_mem/guest/cases.sh | 94 -------- tools/tests/mce-test/cases/srao_mem/xen/cases.sh | 69 ------ tools/tests/mce-test/cases/ucna_llc/dom0/cases.sh | 72 ------ tools/tests/mce-test/cases/ucna_llc/guest/cases.sh | 92 -------- tools/tests/mce-test/cases/ucna_llc/xen/cases.sh | 68 ------ tools/tests/mce-test/config/setup.conf | 24 -- tools/tests/mce-test/lib/xen-mceinj-tool.sh | 260 --------------------- tools/tests/mce-test/tools/Makefile | 24 -- tools/tests/mce-test/tools/README | 24 -- 20 files changed, 24 insertions(+), 1138 deletions(-) rename tools/{tests/mce-test/tools => misc}/xen-mceinj.c (97%) delete mode 100644 tools/tests/mce-test/Makefile delete mode 100644 tools/tests/mce-test/README delete mode 100644 tools/tests/mce-test/cases/srao_llc/dom0/cases.sh delete mode 100644 tools/tests/mce-test/cases/srao_llc/guest/cases.sh delete mode 100644 tools/tests/mce-test/cases/srao_llc/xen/cases.sh delete mode 100644 tools/tests/mce-test/cases/srao_mem/dom0/cases.sh delete mode 100644 tools/tests/mce-test/cases/srao_mem/guest/cases.sh delete mode 100644 tools/tests/mce-test/cases/srao_mem/xen/cases.sh delete mode 100644 tools/tests/mce-test/cases/ucna_llc/dom0/cases.sh delete mode 100644 tools/tests/mce-test/cases/ucna_llc/guest/cases.sh delete mode 100644 tools/tests/mce-test/cases/ucna_llc/xen/cases.sh delete mode 100644 tools/tests/mce-test/config/setup.conf delete mode 100644 tools/tests/mce-test/lib/xen-mceinj-tool.sh delete mode 100644 tools/tests/mce-test/tools/Makefile delete mode 100644 tools/tests/mce-test/tools/README