On Thu, Nov 30, 2023 at 08:06:13PM -0800, Ira Weiny wrote: > Commit 9399aa667ab0 ("cxl/region: Add -f option for disable-region") > introduced a regression when destroying a region. > > Add a tests for destroying a region. > > Cc: Dave Jiang <dave.ji...@intel.com> > Signed-off-by: Ira Weiny <ira.we...@intel.com> > --- > test/cxl-destroy-region.sh | 76 > ++++++++++++++++++++++++++++++++++++++++++++++ > test/meson.build | 2 ++ > 2 files changed, 78 insertions(+) > > diff --git a/test/cxl-destroy-region.sh b/test/cxl-destroy-region.sh > new file mode 100644 > index 000000000000..251720a98688 > --- /dev/null > +++ b/test/cxl-destroy-region.sh > @@ -0,0 +1,76 @@ > +#!/bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (C) 2023 Intel Corporation. All rights reserved. > + > +. $(dirname $0)/common > + > +rc=77 > + > +set -ex > + > +trap 'err $LINENO' ERR > + > +check_prereq "jq" > + > +modprobe -r cxl_test > +modprobe cxl_test > +rc=1 > + > +check_destroy_ram() > +{ > + mem=$1 > + decoder=$2 > + > + region=$($CXL create-region -d "$decoder" -m "$mem" | jq -r ".region") > + if [ "$region" == "null" ]; then > + err "$LINENO" > + fi > + $CXL enable-region "$region" > + > + # default is memory is system-ram offline > + $CXL disable-region $region > + $CXL destroy-region $region > +} > + > +check_destroy_devdax() > +{ > + mem=$1 > + decoder=$2 > + > + region=$($CXL create-region -d "$decoder" -m "$mem" | jq -r ".region") > + if [ "$region" == "null" ]; then > + err "$LINENO" > + fi > + $CXL enable-region "$region" > + > + dax=$($CXL list -X -r "$region" | jq -r ".[].daxregion.devices" | jq -r > '.[].chardev') > + > + $DAXCTL reconfigure-device -m devdax "$dax" > + > + $CXL disable-region $region > + $CXL destroy-region $region > +} > + > +# Find a memory device to create regions on to test the destroy > +readarray -t mems < <("$CXL" list -b cxl_test -M | jq -r '.[].memdev') > +for mem in ${mems[@]}; do > + ramsize=$($CXL list -m $mem | jq -r '.[].ram_size') > + if [ "$ramsize" == "null" ]; then > + continue > + fi > + decoder=$($CXL list -b cxl_test -D -d root -m "$mem" | > + jq -r ".[] | > + select(.volatile_capable == true) | > + select(.nr_targets == 1) | > + select(.size >= ${ramsize}) | > + .decoder") > + if [[ $decoder ]]; then > + check_destroy_ram $mem $decoder > + check_destroy_devdax $mem $decoder > + break > + fi > +done
Does this need to check results of the region disable & destroy? Did the regression this is after leave a trace in the dmesg log, so checking that is all that's needed? > + > +check_dmesg "$LINENO" > + > +modprobe -r cxl_test > diff --git a/test/meson.build b/test/meson.build > index 2706fa5d633c..126d663dfce2 100644 > --- a/test/meson.build > +++ b/test/meson.build > @@ -158,6 +158,7 @@ cxl_xor_region = find_program('cxl-xor-region.sh') > cxl_update_firmware = find_program('cxl-update-firmware.sh') > cxl_events = find_program('cxl-events.sh') > cxl_poison = find_program('cxl-poison.sh') > +cxl_destroy_region = find_program('cxl-destroy-region.sh') > > tests = [ > [ 'libndctl', libndctl, 'ndctl' ], > @@ -188,6 +189,7 @@ tests = [ > [ 'cxl-xor-region.sh', cxl_xor_region, 'cxl' ], > [ 'cxl-events.sh', cxl_events, 'cxl' ], > [ 'cxl-poison.sh', cxl_poison, 'cxl' ], > + [ 'cxl-destroy-region.sh', cxl_destroy_region, 'cxl' ], > ] > > if get_option('destructive').enabled() > > -- > 2.42.0 > >