Thread (31 messages) flat view 31 messages, 2 authors, 2017-08-28

Re: [PATCH v7 12/12] powerpc/vas: Define copy/paste interfaces

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2017-08-28 11:45:32
Also in: lkml

Sukadev Bhattiprolu [off-list ref] writes:
Michael Ellerman [mpe@ellerman.id.au] wrote:
quoted
Hi Suka,

A few more things ...

Sukadev Bhattiprolu [off-list ref] writes:
quoted
diff --git a/arch/powerpc/platforms/powernv/copy-paste.h b/arch/powerpc/platforms/powernv/copy-paste.h
new file mode 100644
index 0000000..7783bb8
--- /dev/null
+++ b/arch/powerpc/platforms/powernv/copy-paste.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2016 IBM Corp.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+/*
+ * Macros taken from tools/testing/selftests/powerpc/context_switch/cp_abort.c
+ */
These are both out of date, they're changed in v3.0B.
quoted
+#define PASTE(RA, RB, L, RC) \
+	.long (0x7c00070c | (RA) << (31-15) | (RB) << (31-20) \
+			  | (L) << (31-10) | (RC) << (31-31))
You should define PPC_PASTE() in ppc-opcode.h

We already have PPC_INST_PASTE, so use that.

L and RC are gone.
Ok. I thought they would come back later, but of course we can update
these kernel-only calls then.
Possible, but if they do we can update them then.
quoted
quoted
+#define CR0_SHIFT	28
+#define CR0_MASK	0xF
Not used.
Will need them now to return value in cr0?
Yes.
quoted
quoted
+/*
+ * Copy/paste instructions:
+ *
+ *	copy RA,RB,L
+ *		Copy contents of address (RA) + effective_address(RB)
+ *		to internal copy-buffer.
+ *
+ *		L == 1 indicates this is the first copy.
+ *
+ *		L == 0 indicates its a continuation of a prior first copy.
+ *
+ *	paste RA,RB,L
+ *		Paste contents of internal copy-buffer to the address
+ *		(RA) + effective_address(RB)
+ *
+ *		L == 0 indicates its a continuation of a prior paste. i.e.
+ *		don't wait for the completion or update status.
+ *
+ *		L == 1 indicates this is the last paste in the group (i.e.
+ *		wait for the group to complete and update status in CR0).
+ *
+ *	For Power9, the L bit must be 'true' in both copy and paste.
+ */
+
+static inline int vas_copy(void *crb, int offset, int first)
+{
+	WARN_ON_ONCE(!first);
Please change the API to not require unused parameters.

Same for offset.
Ok, Haren's NX patches will need to drop those parameters as well.
That's fine, I'm merging them all via my tree. I can fix that up.

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help