Re: [PATCH kvm-unit-tests v3 11/11] s390x: add sieve test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 02/13/2018 05:23 PM, David Hildenbrand wrote:
> Copied from x86/sieve.c. Modifications:
> - proper code formatting.
> - as setup_vm() is already called, temporarily disable DAT.
> 
> The test takes fairly long, especially because we only have 128MB of ram
> and allocate 3 times in a row ~100mb of virtual memory.

Does it make sense to change the memory size in the unittests.cfg file? e.g. via extra_params?


> 
> Signed-off-by: David Hildenbrand <david@xxxxxxxxxx>
> ---
>  s390x/Makefile      |  1 +
>  s390x/sieve.c       | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  s390x/unittests.cfg |  6 ++++++
>  3 files changed, 66 insertions(+)
>  create mode 100644 s390x/sieve.c
> 
> diff --git a/s390x/Makefile b/s390x/Makefile
> index d9bef37..2d3336c 100644
> --- a/s390x/Makefile
> +++ b/s390x/Makefile
> @@ -1,6 +1,7 @@
>  tests = $(TEST_DIR)/selftest.elf
>  tests += $(TEST_DIR)/intercept.elf
>  tests += $(TEST_DIR)/emulator.elf
> +tests += $(TEST_DIR)/sieve.elf
> 
>  all: directories test_cases
> 
> diff --git a/s390x/sieve.c b/s390x/sieve.c
> new file mode 100644
> index 0000000..28d4d1e
> --- /dev/null
> +++ b/s390x/sieve.c
> @@ -0,0 +1,59 @@
> +/*
> + * Copied from x86/sieve.c
> + */
> +
> +#include <libcflat.h>
> +#include <alloc.h>
> +#include <asm/pgtable.h>
> +
> +int sieve(char* data, int size)
> +{
> +	int i, j, r = 0;
> +
> +	for (i = 0; i < size; ++i)
> +		data[i] = 1;
> +
> +	data[0] = data[1] = 0;
> +
> +	for (i = 2; i < size; ++i)
> +		if (data[i]) {
> +			++r;
> +			for (j = i * 2; j < size; j += i)
> +				data[j] = 0;
> +		}
> +	return r;
> +}
> +
> +void test_sieve(const char *msg, char *data, int size)
> +{
> +	int r;
> +
> +	printf("%s:", msg);
> +	r = sieve(data, size);
> +	printf("%d out of %d\n", r, size);
> +}
> +
> +#define STATIC_SIZE 1000000
> +#define VSIZE 100000000
> +char static_data[STATIC_SIZE];
> +
> +int main()
> +{
> +	void *v;
> +	int i;
> +
> +	printf("starting sieve\n");
> +
> +	configure_dat(0);
> +	test_sieve("static", static_data, STATIC_SIZE);
> +	configure_dat(1);
> +
> +	test_sieve("mapped", static_data, STATIC_SIZE);
> +	for (i = 0; i < 3; ++i) {
> +		v = malloc(VSIZE);
> +		test_sieve("virtual", v, VSIZE);
> +		free(v);
> +	}
> +
> +	return 0;
> +}
> diff --git a/s390x/unittests.cfg b/s390x/unittests.cfg
> index 1343a19..4a1e469 100644
> --- a/s390x/unittests.cfg
> +++ b/s390x/unittests.cfg
> @@ -28,3 +28,9 @@ file = intercept.elf
> 
>  [emulator]
>  file = emulator.elf
> +
> +[sieve]
> +file = sieve.elf
> +groups = selftest
> +# can take fairly long even on KVM guests
> +timeout = 600
> 




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux