cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

036 (3991B)


      1#!/usr/bin/env bash
      2# group: rw auto quick
      3#
      4# Test qcow2 feature bits
      5#
      6# Copyright (C) 2011 Red Hat, Inc.
      7# Copyright IBM, Corp. 2010
      8#
      9# Based on test 031.
     10#
     11# This program is free software; you can redistribute it and/or modify
     12# it under the terms of the GNU General Public License as published by
     13# the Free Software Foundation; either version 2 of the License, or
     14# (at your option) any later version.
     15#
     16# This program is distributed in the hope that it will be useful,
     17# but WITHOUT ANY WARRANTY; without even the implied warranty of
     18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     19# GNU General Public License for more details.
     20#
     21# You should have received a copy of the GNU General Public License
     22# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     23#
     24
     25# creator
     26owner=stefanha@linux.vnet.ibm.com
     27
     28seq=`basename $0`
     29echo "QA output created by $seq"
     30
     31status=1	# failure is the default!
     32
     33_cleanup()
     34{
     35	_cleanup_test_img
     36}
     37trap "_cleanup; exit \$status" 0 1 2 3 15
     38
     39# get standard environment, filters and checks
     40. ./common.rc
     41. ./common.filter
     42. ./common.pattern
     43
     44# This tests qcow2-specific low-level functionality
     45_supported_fmt qcow2
     46_supported_proto file fuse
     47# Only qcow2v3 and later supports feature bits;
     48# qcow2.py does not support external data files;
     49# this test requires a cluster size large enough for the feature table
     50_unsupported_imgopts 'compat=0.10' data_file \
     51		     'cluster_size=\(512\|1024\|2048\|4096\)'
     52
     53echo
     54echo === Image with unknown incompatible feature bit ===
     55echo
     56_make_test_img 64M
     57$PYTHON qcow2.py "$TEST_IMG" set-feature-bit incompatible 63
     58
     59# Without feature table
     60$PYTHON qcow2.py "$TEST_IMG" del-header-ext 0x6803f857
     61$PYTHON qcow2.py "$TEST_IMG" dump-header | grep features
     62$PYTHON qcow2.py "$TEST_IMG" dump-header-exts
     63_img_info
     64
     65# With feature table containing bit 63
     66printf "\x00\x3f%s" "Test feature" | $PYTHON qcow2.py "$TEST_IMG" add-header-ext-stdio 0x6803f857
     67_img_info
     68
     69echo
     70echo === Image with multiple incompatible feature bits ===
     71echo
     72_make_test_img 64M
     73$PYTHON qcow2.py "$TEST_IMG" set-feature-bit incompatible 61
     74$PYTHON qcow2.py "$TEST_IMG" set-feature-bit incompatible 62
     75$PYTHON qcow2.py "$TEST_IMG" set-feature-bit incompatible 63
     76
     77# Without feature table
     78$PYTHON qcow2.py "$TEST_IMG" del-header-ext 0x6803f857
     79_img_info
     80
     81# With feature table containing bit 63
     82printf "\x00\x3f%s" "Test feature" | $PYTHON qcow2.py "$TEST_IMG" add-header-ext-stdio 0x6803f857
     83_img_info
     84
     85# With feature table containing bit 61
     86$PYTHON qcow2.py "$TEST_IMG" del-header-ext 0x6803f857
     87printf "\x00\x3d%s" "Test feature" | $PYTHON qcow2.py "$TEST_IMG" add-header-ext-stdio 0x6803f857
     88_img_info
     89
     90# With feature table containing bits 61 and 62
     91$PYTHON qcow2.py "$TEST_IMG" del-header-ext 0x6803f857
     92printf "\x00\x3d%s\x00%40s\x00\x3e%s\x00%40s" "test1" "" "test2" "" | $PYTHON qcow2.py "$TEST_IMG" add-header-ext-stdio 0x6803f857
     93_img_info
     94
     95# With feature table containing all bits
     96$PYTHON qcow2.py "$TEST_IMG" del-header-ext 0x6803f857
     97printf "\x00\x3d%s\x00%40s\x00\x3e%s\x00%40s\x00\x3f%s\x00%40s" "test1" "" "test2" "" "test3" "" | $PYTHON qcow2.py "$TEST_IMG" add-header-ext-stdio 0x6803f857
     98_img_info
     99
    100# With feature table containing unrelated bits, including compatible/autoclear
    101$PYTHON qcow2.py "$TEST_IMG" del-header-ext 0x6803f857
    102printf "\x01\x3d%s\x00%40s\x00\x3e%s\x00%40s\x02\x3f%s\x00%40s\x00\x3c%s\x00%40s" "test1" "" "test2" "" "test3" "" "test4" "" | $PYTHON qcow2.py "$TEST_IMG" add-header-ext-stdio 0x6803f857
    103_img_info
    104
    105
    106echo === Create image with unknown autoclear feature bit ===
    107echo
    108_make_test_img 64M
    109$PYTHON qcow2.py "$TEST_IMG" set-feature-bit autoclear 63
    110$PYTHON qcow2.py "$TEST_IMG" dump-header | grep features
    111$PYTHON qcow2.py "$TEST_IMG" dump-header-exts
    112
    113echo
    114echo === Repair image ===
    115echo
    116_check_test_img -r all
    117
    118$PYTHON qcow2.py "$TEST_IMG" dump-header | grep features
    119$PYTHON qcow2.py "$TEST_IMG" dump-header-exts
    120
    121# success, all done
    122echo "*** done"
    123rm -f $seq.full
    124status=0