162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Structures for hypfs interface
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright IBM Corp. 2013
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef _ASM_HYPFS_H
1162306a36Sopenharmony_ci#define _ASM_HYPFS_H
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include <linux/types.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/*
1662306a36Sopenharmony_ci * IOCTL for binary interface /sys/kernel/debug/diag_304
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_cistruct hypfs_diag304 {
1962306a36Sopenharmony_ci	__u32	args[2];
2062306a36Sopenharmony_ci	__u64	data;
2162306a36Sopenharmony_ci	__u64	rc;
2262306a36Sopenharmony_ci} __attribute__((packed));
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#define HYPFS_IOCTL_MAGIC 0x10
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci#define HYPFS_DIAG304 \
2762306a36Sopenharmony_ci	_IOWR(HYPFS_IOCTL_MAGIC, 0x20, struct hypfs_diag304)
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci/*
3062306a36Sopenharmony_ci * Structures for binary interface /sys/kernel/debug/diag_0c
3162306a36Sopenharmony_ci */
3262306a36Sopenharmony_cistruct hypfs_diag0c_hdr {
3362306a36Sopenharmony_ci	__u64	len;		/* Length of diag0c buffer without header */
3462306a36Sopenharmony_ci	__u16	version;	/* Version of header */
3562306a36Sopenharmony_ci	char	reserved1[6];	/* Reserved */
3662306a36Sopenharmony_ci	char	tod_ext[16];	/* TOD clock for diag0c */
3762306a36Sopenharmony_ci	__u64	count;		/* Number of entries (CPUs) in diag0c array */
3862306a36Sopenharmony_ci	char	reserved2[24];	/* Reserved */
3962306a36Sopenharmony_ci};
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cistruct hypfs_diag0c_entry {
4262306a36Sopenharmony_ci	char	date[8];	/* MM/DD/YY in EBCDIC */
4362306a36Sopenharmony_ci	char	time[8];	/* HH:MM:SS in EBCDIC */
4462306a36Sopenharmony_ci	__u64	virtcpu;	/* Virtual time consumed by the virt CPU (us) */
4562306a36Sopenharmony_ci	__u64	totalproc;	/* Total of virtual and simulation time (us) */
4662306a36Sopenharmony_ci	__u32	cpu;		/* Linux logical CPU number */
4762306a36Sopenharmony_ci	__u32	reserved;	/* Align to 8 byte */
4862306a36Sopenharmony_ci};
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_cistruct hypfs_diag0c_data {
5162306a36Sopenharmony_ci	struct hypfs_diag0c_hdr		hdr;		/* 64 byte header */
5262306a36Sopenharmony_ci	struct hypfs_diag0c_entry	entry[];	/* diag0c entry array */
5362306a36Sopenharmony_ci};
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci#endif
56