summaryrefslogtreecommitdiff
path: root/arch/powerpc/platforms/pseries/papr-hvpipe.h
blob: c343f4230865c0f3fc8ed2a50d106dc2b22c07bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef _PAPR_HVPIPE_H
#define _PAPR_HVPIPE_H

#define	HVPIPE_HMC_ID_MASK	0x02000000 /*02-HMC,00-reserved and HMC ID */
#define	HVPIPE_MAX_WRITE_BUFFER_SIZE	4048
/*
 * hvpipe specific RTAS return values
 */
#define	RTAS_HVPIPE_CLOSED		-4

#define	HVPIPE_HDR_LEN	sizeof(struct papr_hvpipe_hdr)

enum hvpipe_migrate_action {
	HVPIPE_SUSPEND,
	HVPIPE_RESUME,
};

struct hvpipe_source_info {
	struct list_head list;	/* list of sources */
	u32 srcID;
	u32 hvpipe_status;
	wait_queue_head_t recv_wqh;	 /* wake up poll() waitq */
	struct task_struct *tsk;
};

/*
 * Source ID Format 0xCCRRQQQQ
 * CC = indicating value is source type (ex: 0x02 for HMC)
 * RR = 0x00 (reserved)
 * QQQQ = 0x0000 – 0xFFFF indicating the source index indetifier
 */
struct hvpipe_event_buf {
	__be32	srcID;		/* Source ID */
	u8	event_type;	/* 0x01 for hvpipe message available */
				/* from specified src ID */
				/* 0x02 for loss of pipe connection */
				/* with specified src ID */
};

void hvpipe_migration_handler(int action);
#endif /* _PAPR_HVPIPE_H */