Commit f0479c4b authored by Haren Myneni's avatar Haren Myneni Committed by Michael Ellerman
Browse files

selftests/powerpc: Use proper error code to check fault address



ERR_NX_TRANSLATION(CSB.CC=5) is for internal to VAS for fault handling
and should not used by OS. ERR_NX_AT_FAULT(CSB.CC=250) is the proper
error code should be reported by OS when NX encounters address
translation failure.

This patch uses CC=250 to determine the fault address when the request
is not successful.

Signed-off-by: default avatarHaren Myneni <haren@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/0315251705baff94f678c33178491b5008723511.camel@linux.ibm.com
parent 6068e1a4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -698,13 +698,13 @@ restart_nx:

	switch (cc) {

	case ERR_NX_TRANSLATION:
	case ERR_NX_AT_FAULT:

		/* We touched the pages ahead of time.  In the most common case
		 * we shouldn't be here.  But may be some pages were paged out.
		 * Kernel should have placed the faulting address to fsaddr.
		 */
		NXPRT(fprintf(stderr, "ERR_NX_TRANSLATION %p\n",
		NXPRT(fprintf(stderr, "ERR_NX_AT_FAULT %p\n",
			      (void *)cmdp->crb.csb.fsaddr));

		if (pgfault_retries == NX_MAX_FAULTS) {
+2 −2
Original line number Diff line number Diff line
@@ -306,13 +306,13 @@ int compress_file(int argc, char **argv, void *handle)
			lzcounts, cmdp, handle);

		if (cc != ERR_NX_OK && cc != ERR_NX_TPBC_GT_SPBC &&
		    cc != ERR_NX_TRANSLATION) {
		    cc != ERR_NX_AT_FAULT) {
			fprintf(stderr, "nx error: cc= %d\n", cc);
			exit(-1);
		}

		/* Page faults are handled by the user code */
		if (cc == ERR_NX_TRANSLATION) {
		if (cc == ERR_NX_AT_FAULT) {
			NXPRT(fprintf(stderr, "page fault: cc= %d, ", cc));
			NXPRT(fprintf(stderr, "try= %d, fsa= %08llx\n",
				  fault_tries,