Эх сурвалжийг харах

powerpc/powernv: Add invalid OPAL call

This call will not be understood by OPAL, and cause it to add an error
to it's log. Among other things, this is useful for testing the
behaviour of the log as it fills up.

Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Joel Stanley 11 жил өмнө
parent
commit
e28b05e7ae

+ 2 - 0
arch/powerpc/include/asm/opal.h

@@ -87,6 +87,7 @@ extern int opal_enter_rtas(struct rtas_args *args,
 #define OPAL_ASYNC_COMPLETION	-15
 #define OPAL_ASYNC_COMPLETION	-15
 
 
 /* API Tokens (in r0) */
 /* API Tokens (in r0) */
+#define OPAL_INVALID_CALL			-1
 #define OPAL_CONSOLE_WRITE			1
 #define OPAL_CONSOLE_WRITE			1
 #define OPAL_CONSOLE_READ			2
 #define OPAL_CONSOLE_READ			2
 #define OPAL_RTC_READ				3
 #define OPAL_RTC_READ				3
@@ -734,6 +735,7 @@ extern struct kobject *opal_kobj;
 extern struct device_node *opal_node;
 extern struct device_node *opal_node;
 
 
 /* API functions */
 /* API functions */
+int64_t opal_invalid_call(void);
 int64_t opal_console_write(int64_t term_number, __be64 *length,
 int64_t opal_console_write(int64_t term_number, __be64 *length,
 			   const uint8_t *buffer);
 			   const uint8_t *buffer);
 int64_t opal_console_read(int64_t term_number, __be64 *length,
 int64_t opal_console_read(int64_t term_number, __be64 *length,

+ 1 - 0
arch/powerpc/platforms/powernv/opal-wrappers.S

@@ -61,6 +61,7 @@ _STATIC(opal_return)
 	mtcr	r4;
 	mtcr	r4;
 	rfid
 	rfid
 
 
+OPAL_CALL(opal_invalid_call,			OPAL_INVALID_CALL);
 OPAL_CALL(opal_console_write,			OPAL_CONSOLE_WRITE);
 OPAL_CALL(opal_console_write,			OPAL_CONSOLE_WRITE);
 OPAL_CALL(opal_console_read,			OPAL_CONSOLE_READ);
 OPAL_CALL(opal_console_read,			OPAL_CONSOLE_READ);
 OPAL_CALL(opal_console_write_buffer_space,	OPAL_CONSOLE_WRITE_BUFFER_SPACE);
 OPAL_CALL(opal_console_write_buffer_space,	OPAL_CONSOLE_WRITE_BUFFER_SPACE);

+ 3 - 0
arch/powerpc/platforms/powernv/opal.c

@@ -635,3 +635,6 @@ void opal_shutdown(void)
 			mdelay(10);
 			mdelay(10);
 	}
 	}
 }
 }
+
+/* Export this so that test modules can use it */
+EXPORT_SYMBOL_GPL(opal_invalid_call);