diff options
Diffstat (limited to 'arch/powerpc/include/asm/rtas.h')
| -rw-r--r-- | arch/powerpc/include/asm/rtas.h | 125 | 
1 files changed, 8 insertions, 117 deletions
diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h index 3c1887351c71..014968f25f7e 100644 --- a/arch/powerpc/include/asm/rtas.h +++ b/arch/powerpc/include/asm/rtas.h @@ -5,6 +5,7 @@  #include <linux/spinlock.h>  #include <asm/page.h> +#include <asm/rtas-types.h>  #include <linux/time.h>  #include <linux/cpumask.h> @@ -42,33 +43,6 @@   *   */ -typedef __be32 rtas_arg_t; - -struct rtas_args { -	__be32 token; -	__be32 nargs; -	__be32 nret;  -	rtas_arg_t args[16]; -	rtas_arg_t *rets;     /* Pointer to return values in args[]. */ -};   - -struct rtas_t { -	unsigned long entry;		/* physical address pointer */ -	unsigned long base;		/* physical address pointer */ -	unsigned long size; -	arch_spinlock_t lock; -	struct rtas_args args; -	struct device_node *dev;	/* virtual address pointer */ -}; - -struct rtas_suspend_me_data { -	atomic_t working; /* number of cpus accessing this struct */ -	atomic_t done; -	int token; /* ibm,suspend-me */ -	atomic_t error; -	struct completion *complete; /* wait on this until working == 0 */ -}; -  /* RTAS event classes */  #define RTAS_INTERNAL_ERROR		0x80000000 /* set bit 0 */  #define RTAS_EPOW_WARNING		0x40000000 /* set bit 1 */ @@ -148,31 +122,6 @@ struct rtas_suspend_me_data {  /* RTAS check-exception vector offset */  #define RTAS_VECTOR_EXTERNAL_INTERRUPT	0x500 -struct rtas_error_log { -	/* Byte 0 */ -	uint8_t		byte0;			/* Architectural version */ - -	/* Byte 1 */ -	uint8_t		byte1; -	/* XXXXXXXX -	 * XXX		3: Severity level of error -	 *    XX	2: Degree of recovery -	 *      X	1: Extended log present? -	 *       XX	2: Reserved -	 */ - -	/* Byte 2 */ -	uint8_t		byte2; -	/* XXXXXXXX -	 * XXXX		4: Initiator of event -	 *     XXXX	4: Target of failed operation -	 */ -	uint8_t		byte3;			/* General event or error*/ -	__be32		extended_log_length;	/* length in bytes */ -	unsigned char	buffer[1];		/* Start of extended log */ -						/* Variable length.      */ -}; -  static inline uint8_t rtas_error_severity(const struct rtas_error_log *elog)  {  	return (elog->byte1 & 0xE0) >> 5; @@ -212,47 +161,6 @@ uint32_t rtas_error_extended_log_length(const struct rtas_error_log *elog)  #define RTAS_V6EXT_COMPANY_ID_IBM	(('I' << 24) | ('B' << 16) | ('M' << 8)) -/* RTAS general extended event log, Version 6. The extended log starts - * from "buffer" field of struct rtas_error_log defined above. - */ -struct rtas_ext_event_log_v6 { -	/* Byte 0 */ -	uint8_t byte0; -	/* XXXXXXXX -	 * X		1: Log valid -	 *  X		1: Unrecoverable error -	 *   X		1: Recoverable (correctable or successfully retried) -	 *    X		1: Bypassed unrecoverable error (degraded operation) -	 *     X	1: Predictive error -	 *      X	1: "New" log (always 1 for data returned from RTAS) -	 *       X	1: Big Endian -	 *        X	1: Reserved -	 */ - -	/* Byte 1 */ -	uint8_t byte1;			/* reserved */ - -	/* Byte 2 */ -	uint8_t byte2; -	/* XXXXXXXX -	 * X		1: Set to 1 (indicating log is in PowerPC format) -	 *  XXX		3: Reserved -	 *     XXXX	4: Log format used for bytes 12-2047 -	 */ - -	/* Byte 3 */ -	uint8_t byte3;			/* reserved */ -	/* Byte 4-11 */ -	uint8_t reserved[8];		/* reserved */ -	/* Byte 12-15 */ -	__be32  company_id;		/* Company ID of the company	*/ -					/* that defines the format for	*/ -					/* the vendor specific log type	*/ -	/* Byte 16-end of log */ -	uint8_t vendor_log[1];		/* Start of vendor specific log	*/ -					/* Variable length.		*/ -}; -  static  inline uint8_t rtas_ext_event_log_format(struct rtas_ext_event_log_v6 *ext_log)  { @@ -287,16 +195,6 @@ inline uint32_t rtas_ext_event_company_id(struct rtas_ext_event_log_v6 *ext_log)  #define PSERIES_ELOG_SECT_ID_HOTPLUG		(('H' << 8) | 'P')  #define PSERIES_ELOG_SECT_ID_MCE		(('M' << 8) | 'C') -/* Vendor specific Platform Event Log Format, Version 6, section header */ -struct pseries_errorlog { -	__be16 id;			/* 0x00 2-byte ASCII section ID	*/ -	__be16 length;			/* 0x02 Section length in bytes	*/ -	uint8_t version;		/* 0x04 Section version		*/ -	uint8_t subtype;		/* 0x05 Section subtype		*/ -	__be16 creator_component;	/* 0x06 Creator component ID	*/ -	uint8_t data[];			/* 0x08 Start of section data	*/ -}; -  static  inline uint16_t pseries_errorlog_id(struct pseries_errorlog *sect)  { @@ -309,20 +207,6 @@ inline uint16_t pseries_errorlog_length(struct pseries_errorlog *sect)  	return be16_to_cpu(sect->length);  } -/* RTAS pseries hotplug errorlog section */ -struct pseries_hp_errorlog { -	u8	resource; -	u8	action; -	u8	id_type; -	u8	reserved; -	union { -		__be32	drc_index; -		__be32	drc_count; -		struct { __be32 count, index; } ic; -		char	drc_name[1]; -	} _drc_u; -}; -  #define PSERIES_HP_ELOG_RESOURCE_CPU	1  #define PSERIES_HP_ELOG_RESOURCE_MEM	2  #define PSERIES_HP_ELOG_RESOURCE_SLOT	3 @@ -352,6 +236,7 @@ extern struct rtas_t rtas;  extern int rtas_token(const char *service);  extern int rtas_service_present(const char *service);  extern int rtas_call(int token, int, int, int *, ...); +int rtas_call_reentrant(int token, int nargs, int nret, int *outputs, ...);  void rtas_call_unlocked(struct rtas_args *args, int token, int nargs,  			int nret, ...);  extern void __noreturn rtas_restart(char *cmd); @@ -483,5 +368,11 @@ static inline void rtas_initialize(void) { };  extern int call_rtas(const char *, int, int, unsigned long *, ...); +#ifdef CONFIG_HV_PERF_CTRS +void read_24x7_sys_info(void); +#else +static inline void read_24x7_sys_info(void) { } +#endif +  #endif /* __KERNEL__ */  #endif /* _POWERPC_RTAS_H */  | 
