From: Alexandru Elisei <alexandru.elisei@arm.com>
To: Andrew Jones <andrew.jones@linux.dev>
Cc: eric.auger@redhat.com, lvivier@redhat.com, thuth@redhat.com,
frankja@linux.ibm.com, imbrenda@linux.ibm.com, nrb@linux.ibm.com,
david@redhat.com, pbonzini@redhat.com, kvm@vger.kernel.org,
kvmarm@lists.linux.dev, linuxppc-dev@lists.ozlabs.org,
kvm-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
will@kernel.org, julien.thierry.kdev@gmail.com, maz@kernel.org,
oliver.upton@linux.dev, suzuki.poulose@arm.com,
yuzenghui@huawei.com, joey.gouly@arm.com, andre.przywara@arm.com
Subject: Re: [kvm-unit-tests PATCH v3 08/16] scripts: Add 'kvmtool_params' to test definition
Date: Thu, 8 May 2025 16:54:46 +0100 [thread overview]
Message-ID: <aBzTxv6pO4rWu4CU@raptor> (raw)
In-Reply-To: <20250507-5b376c9bc878cbdffabdb3c2@orel>
Hi Drew,
On Wed, May 07, 2025 at 06:28:04PM +0200, Andrew Jones wrote:
> On Wed, May 07, 2025 at 04:12:48PM +0100, Alexandru Elisei wrote:
> > arm/arm64 supports running tests under kvmtool, but kvmtool's syntax for
> > running and configuring a virtual machine is different to qemu. To run
> > tests using the automated test infrastructure, add a new test parameter,
> > 'kvmtool_params'. The parameter serves the exact purpose as 'qemu_params',
> > but using kvmtool's syntax.
> >
> > Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
> > ---
> > arm/unittests.cfg | 24 +++++++++++++++++++++++
> > docs/unittests.txt | 8 ++++++++
> > scripts/common.bash | 47 +++++++++++++++++++++++++++++----------------
> > 3 files changed, 62 insertions(+), 17 deletions(-)
> >
> > diff --git a/arm/unittests.cfg b/arm/unittests.cfg
> > index a4192ed7e20b..f3c773e56933 100644
> > --- a/arm/unittests.cfg
> > +++ b/arm/unittests.cfg
> > @@ -17,6 +17,7 @@ file = selftest.flat
> > smp = 2
> > test_args = 'setup smp=2 mem=256'
> > qemu_params = -m 256
> > +kvmtool_params = --mem 256
> > groups = selftest
> >
> > # Test vector setup and exception handling (kernel mode).
> > @@ -48,66 +49,77 @@ groups = pci
> > file = pmu.flat
> > groups = pmu
> > test_args = "cycle-counter 0"
> > +kvmtool_params = --pmu
> >
> > [pmu-event-introspection]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-event-introspection
> > +kvmtool_params = --pmu
> >
> > [pmu-event-counter-config]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-event-counter-config
> > +kvmtool_params = --pmu
> >
> > [pmu-basic-event-count]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-basic-event-count
> > +kvmtool_params = --pmu
> >
> > [pmu-mem-access]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-mem-access
> > +kvmtool_params = --pmu
> >
> > [pmu-mem-access-reliability]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-mem-access-reliability
> > +kvmtool_params = --pmu
> >
> > [pmu-sw-incr]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-sw-incr
> > +kvmtool_params = --pmu
> >
> > [pmu-chained-counters]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-chained-counters
> > +kvmtool_params = --pmu
> >
> > [pmu-chained-sw-incr]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-chained-sw-incr
> > +kvmtool_params = --pmu
> >
> > [pmu-chain-promotion]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-chain-promotion
> > +kvmtool_params = --pmu
> >
> > [pmu-overflow-interrupt]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-overflow-interrupt
> > +kvmtool_params = --pmu
> >
> > # Test PMU support (TCG) with -icount IPC=1
> > #[pmu-tcg-icount-1]
> > @@ -131,6 +143,7 @@ file = gic.flat
> > smp = $((($MAX_SMP < 8)?$MAX_SMP:8))
> > test_args = ipi
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv2-mmio]
> > @@ -138,6 +151,7 @@ file = gic.flat
> > smp = $((($MAX_SMP < 8)?$MAX_SMP:8))
> > test_args = mmio
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv2-mmio-up]
> > @@ -145,6 +159,7 @@ file = gic.flat
> > smp = 1
> > test_args = mmio
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv2-mmio-3p]
> > @@ -152,6 +167,7 @@ file = gic.flat
> > smp = $((($MAX_SMP < 3)?$MAX_SMP:3))
> > test_args = mmio
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv3-ipi]
> > @@ -159,6 +175,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = ipi
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = gic
> >
> > [gicv2-active]
> > @@ -166,6 +183,7 @@ file = gic.flat
> > smp = $((($MAX_SMP < 8)?$MAX_SMP:8))
> > test_args = active
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv3-active]
> > @@ -173,6 +191,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = active
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = gic
> >
> > [its-introspection]
> > @@ -180,6 +199,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-introspection
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3-its
> > groups = its
> > arch = arm64
> >
> > @@ -188,6 +208,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-trigger
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3-its
> > groups = its
> > arch = arm64
> >
> > @@ -196,6 +217,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-migration
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = its migration
> > arch = arm64
> >
> > @@ -204,6 +226,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-pending-migration
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = its migration
> > arch = arm64
> >
> > @@ -212,6 +235,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-migrate-unmapped-collection
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = its migration
> > arch = arm64
> >
> > diff --git a/docs/unittests.txt b/docs/unittests.txt
> > index ea0da959f008..a9164bccc24c 100644
> > --- a/docs/unittests.txt
> > +++ b/docs/unittests.txt
> > @@ -78,6 +78,14 @@ extra_params
> > Alias for 'qemu_params', supported for compatibility purposes. Use
> > 'qemu_params' for new tests.
> >
> > +kvmtool_params
> > +--------------
> > +Extra parameters supplied to the kvmtool process. Works similarly to
> > +'qemu_params', but uses kvmtool's syntax for command line arguments. The
> > +example for 'qemu_params', applied to kvmtool, would be:
> > +
> > +kvmtool_params = --mem 256
> > +
> > groups
> > ------
> > groups = <group_name1> <group_name2> ...
> > diff --git a/scripts/common.bash b/scripts/common.bash
> > index 649f1c737617..0645235d8baa 100644
> > --- a/scripts/common.bash
> > +++ b/scripts/common.bash
> > @@ -1,6 +1,29 @@
> > source config.mak
> > source scripts/vmm.bash
> >
> > +function parse_opts()
> > +{
> > + local opts="$1"
> > + local fd="$2"
> > +
> > + while read -r -u $fd; do
> > + #escape backslash newline, but not double backslash
> > + if [[ $opts =~ [^\\]*(\\*)$'\n'$ ]]; then
> > + if (( ${#BASH_REMATCH[1]} % 2 == 1 )); then
> > + opts=${opts%\\$'\n'}
> > + fi
> > + fi
> > + if [[ "$REPLY" =~ ^(.*)'"""'[:blank:]*$ ]]; then
> > + opts+=${BASH_REMATCH[1]}
> > + break
> > + else
> > + opts+=$REPLY$'\n'
> > + fi
> > + done
> > +
> > + echo "$opts"
> > +}
> > +
> > function for_each_unittest()
> > {
> > local unittests="$1"
> > @@ -46,24 +69,14 @@ function for_each_unittest()
> > smp="${vmm_opts[$TARGET:nr_cpus]} ${BASH_REMATCH[1]}"
> > elif [[ $line =~ ^test_args\ *=\ *(.*)$ ]]; then
> > test_args="${vmm_opts[$TARGET:args]} ${BASH_REMATCH[1]}"
> > - elif [[ $line =~ ^(extra_params|qemu_params)\ *=\ *'"""'(.*)$ ]]; then
> > - opts=${BASH_REMATCH[2]}$'\n'
> > - while read -r -u $fd; do
> > - #escape backslash newline, but not double backslash
> > - if [[ $opts =~ [^\\]*(\\*)$'\n'$ ]]; then
> > - if (( ${#BASH_REMATCH[1]} % 2 == 1 )); then
> > - opts=${opts%\\$'\n'}
> > - fi
> > - fi
> > - if [[ "$REPLY" =~ ^(.*)'"""'[:blank:]*$ ]]; then
> > - opts+=${BASH_REMATCH[1]}
> > - break
> > - else
> > - opts+=$REPLY$'\n'
> > - fi
> > - done
> > - elif [[ $line =~ ^(extra_params|qemu_params)\ *=\ *(.*)$ ]]; then
> > + elif [[ $TARGET = "qemu" ]] && [[ $line =~ ^(extra_params|qemu_params)\ *=\ *'"""'(.*)$ ]]; then
>
> Should use == with [[ ]]
Ack.
>
> > + opts=$(parse_opts ${BASH_REMATCH[2]}$'\n' $fd)
> > + elif [[ $TARGET = "qemu" ]] && [[ $line =~ ^(extra_params|qemu_params)\ *=\ *(.*)$ ]]; then
> ^ extra space
>
> > opts=${BASH_REMATCH[2]}
> > + elif [[ $TARGET = "kvmtool" ]] && [[ $line =~ ^kvmtool_params\ *=\ *'"""'(.*)$ ]]; then
> > + opts=$(parse_opts ${BASH_REMATCH[1]}$'\n' $fd)
> > + elif [[ $TARGET = "kvmtool" ]] && [[ $line =~ ^kvmtool_params\ *=\ *(.*)$ ]]; then
> > + opts=${BASH_REMATCH[1]}
>
> I think we can do something like
>
> if [[ $TARGET == "qemu" ]]; then
> params='(extra_params|qemu_params)'
> elif [[ $TARGET == "kvmtool" ]]; then
> params='(kvmtool_params)'
> else
> ...fail...
> fi
>
> And then use $params in the regular expressions and always use
> BASH_REMATCH[2]. That would allow us to avoid duplicating the if
> statements and then we wouldn't need to factor out parse_opts either.
Sounds good. I can even wrap it with with a vmm function, something like
vmm_get_params_name().
Thanks,
Alex
>
> Thanks,
> drew
>
> > elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then
> > groups=${BASH_REMATCH[1]}
> > elif [[ $line =~ ^arch\ *=\ *(.*)$ ]]; then
> > --
> > 2.49.0
> >
> >
> > --
> > kvm-riscv mailing list
> > kvm-riscv@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/kvm-riscv
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Alexandru Elisei <alexandru.elisei@arm.com>
To: Andrew Jones <andrew.jones@linux.dev>
Cc: eric.auger@redhat.com, lvivier@redhat.com, thuth@redhat.com,
frankja@linux.ibm.com, imbrenda@linux.ibm.com, nrb@linux.ibm.com,
david@redhat.com, pbonzini@redhat.com, kvm@vger.kernel.org,
kvmarm@lists.linux.dev, linuxppc-dev@lists.ozlabs.org,
kvm-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
will@kernel.org, julien.thierry.kdev@gmail.com, maz@kernel.org,
oliver.upton@linux.dev, suzuki.poulose@arm.com,
yuzenghui@huawei.com, joey.gouly@arm.com, andre.przywara@arm.com
Subject: Re: [kvm-unit-tests PATCH v3 08/16] scripts: Add 'kvmtool_params' to test definition
Date: Thu, 8 May 2025 16:54:46 +0100 [thread overview]
Message-ID: <aBzTxv6pO4rWu4CU@raptor> (raw)
In-Reply-To: <20250507-5b376c9bc878cbdffabdb3c2@orel>
Hi Drew,
On Wed, May 07, 2025 at 06:28:04PM +0200, Andrew Jones wrote:
> On Wed, May 07, 2025 at 04:12:48PM +0100, Alexandru Elisei wrote:
> > arm/arm64 supports running tests under kvmtool, but kvmtool's syntax for
> > running and configuring a virtual machine is different to qemu. To run
> > tests using the automated test infrastructure, add a new test parameter,
> > 'kvmtool_params'. The parameter serves the exact purpose as 'qemu_params',
> > but using kvmtool's syntax.
> >
> > Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
> > ---
> > arm/unittests.cfg | 24 +++++++++++++++++++++++
> > docs/unittests.txt | 8 ++++++++
> > scripts/common.bash | 47 +++++++++++++++++++++++++++++----------------
> > 3 files changed, 62 insertions(+), 17 deletions(-)
> >
> > diff --git a/arm/unittests.cfg b/arm/unittests.cfg
> > index a4192ed7e20b..f3c773e56933 100644
> > --- a/arm/unittests.cfg
> > +++ b/arm/unittests.cfg
> > @@ -17,6 +17,7 @@ file = selftest.flat
> > smp = 2
> > test_args = 'setup smp=2 mem=256'
> > qemu_params = -m 256
> > +kvmtool_params = --mem 256
> > groups = selftest
> >
> > # Test vector setup and exception handling (kernel mode).
> > @@ -48,66 +49,77 @@ groups = pci
> > file = pmu.flat
> > groups = pmu
> > test_args = "cycle-counter 0"
> > +kvmtool_params = --pmu
> >
> > [pmu-event-introspection]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-event-introspection
> > +kvmtool_params = --pmu
> >
> > [pmu-event-counter-config]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-event-counter-config
> > +kvmtool_params = --pmu
> >
> > [pmu-basic-event-count]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-basic-event-count
> > +kvmtool_params = --pmu
> >
> > [pmu-mem-access]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-mem-access
> > +kvmtool_params = --pmu
> >
> > [pmu-mem-access-reliability]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-mem-access-reliability
> > +kvmtool_params = --pmu
> >
> > [pmu-sw-incr]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-sw-incr
> > +kvmtool_params = --pmu
> >
> > [pmu-chained-counters]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-chained-counters
> > +kvmtool_params = --pmu
> >
> > [pmu-chained-sw-incr]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-chained-sw-incr
> > +kvmtool_params = --pmu
> >
> > [pmu-chain-promotion]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-chain-promotion
> > +kvmtool_params = --pmu
> >
> > [pmu-overflow-interrupt]
> > file = pmu.flat
> > groups = pmu
> > arch = arm64
> > test_args = pmu-overflow-interrupt
> > +kvmtool_params = --pmu
> >
> > # Test PMU support (TCG) with -icount IPC=1
> > #[pmu-tcg-icount-1]
> > @@ -131,6 +143,7 @@ file = gic.flat
> > smp = $((($MAX_SMP < 8)?$MAX_SMP:8))
> > test_args = ipi
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv2-mmio]
> > @@ -138,6 +151,7 @@ file = gic.flat
> > smp = $((($MAX_SMP < 8)?$MAX_SMP:8))
> > test_args = mmio
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv2-mmio-up]
> > @@ -145,6 +159,7 @@ file = gic.flat
> > smp = 1
> > test_args = mmio
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv2-mmio-3p]
> > @@ -152,6 +167,7 @@ file = gic.flat
> > smp = $((($MAX_SMP < 3)?$MAX_SMP:3))
> > test_args = mmio
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv3-ipi]
> > @@ -159,6 +175,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = ipi
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = gic
> >
> > [gicv2-active]
> > @@ -166,6 +183,7 @@ file = gic.flat
> > smp = $((($MAX_SMP < 8)?$MAX_SMP:8))
> > test_args = active
> > qemu_params = -machine gic-version=2
> > +kvmtool_params = --irqchip=gicv2
> > groups = gic
> >
> > [gicv3-active]
> > @@ -173,6 +191,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = active
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = gic
> >
> > [its-introspection]
> > @@ -180,6 +199,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-introspection
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3-its
> > groups = its
> > arch = arm64
> >
> > @@ -188,6 +208,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-trigger
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3-its
> > groups = its
> > arch = arm64
> >
> > @@ -196,6 +217,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-migration
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = its migration
> > arch = arm64
> >
> > @@ -204,6 +226,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-pending-migration
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = its migration
> > arch = arm64
> >
> > @@ -212,6 +235,7 @@ file = gic.flat
> > smp = $MAX_SMP
> > test_args = its-migrate-unmapped-collection
> > qemu_params = -machine gic-version=3
> > +kvmtool_params = --irqchip=gicv3
> > groups = its migration
> > arch = arm64
> >
> > diff --git a/docs/unittests.txt b/docs/unittests.txt
> > index ea0da959f008..a9164bccc24c 100644
> > --- a/docs/unittests.txt
> > +++ b/docs/unittests.txt
> > @@ -78,6 +78,14 @@ extra_params
> > Alias for 'qemu_params', supported for compatibility purposes. Use
> > 'qemu_params' for new tests.
> >
> > +kvmtool_params
> > +--------------
> > +Extra parameters supplied to the kvmtool process. Works similarly to
> > +'qemu_params', but uses kvmtool's syntax for command line arguments. The
> > +example for 'qemu_params', applied to kvmtool, would be:
> > +
> > +kvmtool_params = --mem 256
> > +
> > groups
> > ------
> > groups = <group_name1> <group_name2> ...
> > diff --git a/scripts/common.bash b/scripts/common.bash
> > index 649f1c737617..0645235d8baa 100644
> > --- a/scripts/common.bash
> > +++ b/scripts/common.bash
> > @@ -1,6 +1,29 @@
> > source config.mak
> > source scripts/vmm.bash
> >
> > +function parse_opts()
> > +{
> > + local opts="$1"
> > + local fd="$2"
> > +
> > + while read -r -u $fd; do
> > + #escape backslash newline, but not double backslash
> > + if [[ $opts =~ [^\\]*(\\*)$'\n'$ ]]; then
> > + if (( ${#BASH_REMATCH[1]} % 2 == 1 )); then
> > + opts=${opts%\\$'\n'}
> > + fi
> > + fi
> > + if [[ "$REPLY" =~ ^(.*)'"""'[:blank:]*$ ]]; then
> > + opts+=${BASH_REMATCH[1]}
> > + break
> > + else
> > + opts+=$REPLY$'\n'
> > + fi
> > + done
> > +
> > + echo "$opts"
> > +}
> > +
> > function for_each_unittest()
> > {
> > local unittests="$1"
> > @@ -46,24 +69,14 @@ function for_each_unittest()
> > smp="${vmm_opts[$TARGET:nr_cpus]} ${BASH_REMATCH[1]}"
> > elif [[ $line =~ ^test_args\ *=\ *(.*)$ ]]; then
> > test_args="${vmm_opts[$TARGET:args]} ${BASH_REMATCH[1]}"
> > - elif [[ $line =~ ^(extra_params|qemu_params)\ *=\ *'"""'(.*)$ ]]; then
> > - opts=${BASH_REMATCH[2]}$'\n'
> > - while read -r -u $fd; do
> > - #escape backslash newline, but not double backslash
> > - if [[ $opts =~ [^\\]*(\\*)$'\n'$ ]]; then
> > - if (( ${#BASH_REMATCH[1]} % 2 == 1 )); then
> > - opts=${opts%\\$'\n'}
> > - fi
> > - fi
> > - if [[ "$REPLY" =~ ^(.*)'"""'[:blank:]*$ ]]; then
> > - opts+=${BASH_REMATCH[1]}
> > - break
> > - else
> > - opts+=$REPLY$'\n'
> > - fi
> > - done
> > - elif [[ $line =~ ^(extra_params|qemu_params)\ *=\ *(.*)$ ]]; then
> > + elif [[ $TARGET = "qemu" ]] && [[ $line =~ ^(extra_params|qemu_params)\ *=\ *'"""'(.*)$ ]]; then
>
> Should use == with [[ ]]
Ack.
>
> > + opts=$(parse_opts ${BASH_REMATCH[2]}$'\n' $fd)
> > + elif [[ $TARGET = "qemu" ]] && [[ $line =~ ^(extra_params|qemu_params)\ *=\ *(.*)$ ]]; then
> ^ extra space
>
> > opts=${BASH_REMATCH[2]}
> > + elif [[ $TARGET = "kvmtool" ]] && [[ $line =~ ^kvmtool_params\ *=\ *'"""'(.*)$ ]]; then
> > + opts=$(parse_opts ${BASH_REMATCH[1]}$'\n' $fd)
> > + elif [[ $TARGET = "kvmtool" ]] && [[ $line =~ ^kvmtool_params\ *=\ *(.*)$ ]]; then
> > + opts=${BASH_REMATCH[1]}
>
> I think we can do something like
>
> if [[ $TARGET == "qemu" ]]; then
> params='(extra_params|qemu_params)'
> elif [[ $TARGET == "kvmtool" ]]; then
> params='(kvmtool_params)'
> else
> ...fail...
> fi
>
> And then use $params in the regular expressions and always use
> BASH_REMATCH[2]. That would allow us to avoid duplicating the if
> statements and then we wouldn't need to factor out parse_opts either.
Sounds good. I can even wrap it with with a vmm function, something like
vmm_get_params_name().
Thanks,
Alex
>
> Thanks,
> drew
>
> > elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then
> > groups=${BASH_REMATCH[1]}
> > elif [[ $line =~ ^arch\ *=\ *(.*)$ ]]; then
> > --
> > 2.49.0
> >
> >
> > --
> > kvm-riscv mailing list
> > kvm-riscv@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/kvm-riscv
next prev parent reply other threads:[~2025-05-08 17:20 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-07 15:12 [kvm-unit-tests PATCH v3 00/16] arm/arm64: Add kvmtool to the runner script Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 01/16] scripts: unittests.cfg: Rename 'extra_params' to 'qemu_params' Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 15:40 ` Andrew Jones
2025-05-07 15:40 ` Andrew Jones
2025-05-14 2:57 ` Shaoqin Huang
2025-05-14 2:57 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 02/16] scripts: Add 'test_args' test definition parameter Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 15:58 ` Andrew Jones
2025-05-07 15:58 ` Andrew Jones
2025-05-14 3:16 ` Shaoqin Huang
2025-05-14 3:16 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 03/16] configure: Export TARGET unconditionally Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:02 ` Andrew Jones
2025-05-07 16:02 ` Andrew Jones
2025-05-08 8:52 ` Alexandru Elisei
2025-05-08 8:52 ` Alexandru Elisei
2025-05-08 9:39 ` Andrew Jones
2025-05-08 9:39 ` Andrew Jones
2025-05-08 10:05 ` Alexandru Elisei
2025-05-08 10:05 ` Alexandru Elisei
2025-05-08 10:17 ` Andrew Jones
2025-05-08 10:17 ` Andrew Jones
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 04/16] run_tests.sh: Document --probe-maxsmp argument Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-14 3:29 ` Shaoqin Huang
2025-05-14 3:29 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 05/16] scripts: Document environment variables Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-14 3:36 ` Shaoqin Huang
2025-05-14 3:36 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 06/16] scripts: Refuse to run the tests if not configured for qemu Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:10 ` Andrew Jones
2025-05-07 16:10 ` Andrew Jones
2025-05-07 16:14 ` Alexandru Elisei
2025-05-07 16:14 ` Alexandru Elisei
2025-05-14 7:49 ` Shaoqin Huang
2025-05-14 7:49 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 07/16] scripts: Use an associative array for qemu argument names Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:17 ` Andrew Jones
2025-05-07 16:17 ` Andrew Jones
2025-05-14 8:02 ` Shaoqin Huang
2025-05-14 8:02 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 08/16] scripts: Add 'kvmtool_params' to test definition Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:28 ` Andrew Jones
2025-05-07 16:28 ` Andrew Jones
2025-05-08 15:54 ` Alexandru Elisei [this message]
2025-05-08 15:54 ` Alexandru Elisei
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 09/16] scripts: Add support for kvmtool Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:38 ` Andrew Jones
2025-05-07 16:38 ` Andrew Jones
2025-05-19 8:55 ` Shaoqin Huang
2025-05-19 8:55 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 10/16] scripts: Add default arguments " Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:43 ` Andrew Jones
2025-05-07 16:43 ` Andrew Jones
2025-05-21 3:21 ` Shaoqin Huang
2025-05-21 3:21 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 11/16] scripts: Add KVMTOOL environment variable for kvmtool binary path Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:45 ` Andrew Jones
2025-05-07 16:45 ` Andrew Jones
2025-05-19 8:13 ` Shaoqin Huang
2025-05-19 8:13 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 12/16] scripts: Detect kvmtool failure in premature_failure() Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:47 ` Andrew Jones
2025-05-07 16:47 ` Andrew Jones
2025-05-21 5:58 ` Shaoqin Huang
2025-05-21 5:58 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 13/16] scripts: Do not probe for maximum number of VCPUs when using kvmtool Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:48 ` Andrew Jones
2025-05-07 16:48 ` Andrew Jones
2025-05-21 6:02 ` Shaoqin Huang
2025-05-21 6:02 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 14/16] scripts/mkstandalone: Export $TARGET Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-21 6:16 ` Shaoqin Huang
2025-05-21 6:16 ` Shaoqin Huang
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 15/16] scripts: Add 'disabled_if' test definition parameter for kvmtool to use Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:56 ` Andrew Jones
2025-05-07 16:56 ` Andrew Jones
2025-05-07 15:12 ` [kvm-unit-tests PATCH v3 16/16] scripts: Enable kvmtool Alexandru Elisei
2025-05-07 15:12 ` Alexandru Elisei
2025-05-07 16:59 ` Andrew Jones
2025-05-07 16:59 ` Andrew Jones
2025-05-21 6:20 ` Shaoqin Huang
2025-05-21 6:20 ` Shaoqin Huang
2025-05-19 8:56 ` [kvm-unit-tests PATCH v3 00/16] arm/arm64: Add kvmtool to the runner script Shaoqin Huang
2025-05-19 8:56 ` Shaoqin Huang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aBzTxv6pO4rWu4CU@raptor \
--to=alexandru.elisei@arm.com \
--cc=andre.przywara@arm.com \
--cc=andrew.jones@linux.dev \
--cc=david@redhat.com \
--cc=eric.auger@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=joey.gouly@arm.com \
--cc=julien.thierry.kdev@gmail.com \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-s390@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lvivier@redhat.com \
--cc=maz@kernel.org \
--cc=nrb@linux.ibm.com \
--cc=oliver.upton@linux.dev \
--cc=pbonzini@redhat.com \
--cc=suzuki.poulose@arm.com \
--cc=thuth@redhat.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.