aboutsummaryrefslogtreecommitdiffstats
path: root/tools/tests/mce-test/cases/ucna_llc/guest/cases.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/tests/mce-test/cases/ucna_llc/guest/cases.sh')
-rw-r--r--tools/tests/mce-test/cases/ucna_llc/guest/cases.sh93
1 files changed, 93 insertions, 0 deletions
diff --git a/tools/tests/mce-test/cases/ucna_llc/guest/cases.sh b/tools/tests/mce-test/cases/ucna_llc/guest/cases.sh
new file mode 100644
index 0000000000..5212770b51
--- /dev/null
+++ b/tools/tests/mce-test/cases/ucna_llc/guest/cases.sh
@@ -0,0 +1,93 @@
+#!/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, write to the Free Software Foundation,
+# Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# 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 "$@"