Commit c405b738 authored by Sandipan Das's avatar Sandipan Das Committed by Michael Ellerman
Browse files

selftests/powerpc: Move Hash MMU check to utilities



This moves a function to test if the MMU is in Hash mode
under the generic test utilities.

Signed-off-by: default avatarSandipan Das <sandipan@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200604125610.649668-3-sandipan@linux.ibm.com
parent 828ca432
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ static inline bool have_hwcap2(unsigned long ftr2)
#endif

bool is_ppc64le(void);
int using_hash_mmu(bool *using_hash);

/* Yes, this is evil */
#define FAIL_IF(x)						\
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ TEST_GEN_FILES := tempfile
top_srcdir = ../../../../..
include ../../lib.mk

$(TEST_GEN_PROGS): ../harness.c
$(TEST_GEN_PROGS): ../harness.c ../utils.c

$(OUTPUT)/prot_sao: ../utils.c

+0 −28
Original line number Diff line number Diff line
@@ -64,34 +64,6 @@ int bad_access(char *p, bool write)
	return 0;
}

static int using_hash_mmu(bool *using_hash)
{
	char line[128];
	FILE *f;
	int rc;

	f = fopen("/proc/cpuinfo", "r");
	FAIL_IF(!f);

	rc = 0;
	while (fgets(line, sizeof(line), f) != NULL) {
		if (strcmp(line, "MMU		: Hash\n") == 0) {
			*using_hash = true;
			goto out;
		}

		if (strcmp(line, "MMU		: Radix\n") == 0) {
			*using_hash = false;
			goto out;
		}
	}

	rc = -1;
out:
	fclose(f);
	return rc;
}

static int test(void)
{
	unsigned long i, j, addr, region_shift, page_shift, page_size;
+28 −0
Original line number Diff line number Diff line
@@ -293,3 +293,31 @@ void set_dscr(unsigned long val)

	asm volatile("mtspr %1,%0" : : "r" (val), "i" (SPRN_DSCR));
}

int using_hash_mmu(bool *using_hash)
{
	char line[128];
	FILE *f;
	int rc;

	f = fopen("/proc/cpuinfo", "r");
	FAIL_IF(!f);

	rc = 0;
	while (fgets(line, sizeof(line), f) != NULL) {
		if (strcmp(line, "MMU		: Hash\n") == 0) {
			*using_hash = true;
			goto out;
		}

		if (strcmp(line, "MMU		: Radix\n") == 0) {
			*using_hash = false;
			goto out;
		}
	}

	rc = -1;
out:
	fclose(f);
	return rc;
}