1*6f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 207be0382SMartin Schwidefsky /* 334c0dad7SMichael Holzheu * Structures for hypfs interface 407be0382SMartin Schwidefsky * 507be0382SMartin Schwidefsky * Copyright IBM Corp. 2013 607be0382SMartin Schwidefsky * 707be0382SMartin Schwidefsky * Author: Martin Schwidefsky <schwidefsky@de.ibm.com> 807be0382SMartin Schwidefsky */ 907be0382SMartin Schwidefsky 1034c0dad7SMichael Holzheu #ifndef _ASM_HYPFS_H 1134c0dad7SMichael Holzheu #define _ASM_HYPFS_H 1207be0382SMartin Schwidefsky 1307be0382SMartin Schwidefsky #include <linux/types.h> 1407be0382SMartin Schwidefsky 1534c0dad7SMichael Holzheu /* 1634c0dad7SMichael Holzheu * IOCTL for binary interface /sys/kernel/debug/diag_304 1734c0dad7SMichael Holzheu */ 1807be0382SMartin Schwidefsky struct hypfs_diag304 { 1907be0382SMartin Schwidefsky __u32 args[2]; 2007be0382SMartin Schwidefsky __u64 data; 2107be0382SMartin Schwidefsky __u64 rc; 2207be0382SMartin Schwidefsky } __attribute__((packed)); 2307be0382SMartin Schwidefsky 2407be0382SMartin Schwidefsky #define HYPFS_IOCTL_MAGIC 0x10 2507be0382SMartin Schwidefsky 2607be0382SMartin Schwidefsky #define HYPFS_DIAG304 \ 2707be0382SMartin Schwidefsky _IOWR(HYPFS_IOCTL_MAGIC, 0x20, struct hypfs_diag304) 2807be0382SMartin Schwidefsky 2934c0dad7SMichael Holzheu /* 3034c0dad7SMichael Holzheu * Structures for binary interface /sys/kernel/debug/diag_0c 3134c0dad7SMichael Holzheu */ 3234c0dad7SMichael Holzheu struct hypfs_diag0c_hdr { 3334c0dad7SMichael Holzheu __u64 len; /* Length of diag0c buffer without header */ 3434c0dad7SMichael Holzheu __u16 version; /* Version of header */ 3534c0dad7SMichael Holzheu char reserved1[6]; /* Reserved */ 3634c0dad7SMichael Holzheu char tod_ext[16]; /* TOD clock for diag0c */ 3734c0dad7SMichael Holzheu __u64 count; /* Number of entries (CPUs) in diag0c array */ 3834c0dad7SMichael Holzheu char reserved2[24]; /* Reserved */ 3934c0dad7SMichael Holzheu }; 4034c0dad7SMichael Holzheu 4134c0dad7SMichael Holzheu struct hypfs_diag0c_entry { 4234c0dad7SMichael Holzheu char date[8]; /* MM/DD/YY in EBCDIC */ 4334c0dad7SMichael Holzheu char time[8]; /* HH:MM:SS in EBCDIC */ 4434c0dad7SMichael Holzheu __u64 virtcpu; /* Virtual time consumed by the virt CPU (us) */ 4534c0dad7SMichael Holzheu __u64 totalproc; /* Total of virtual and simulation time (us) */ 4634c0dad7SMichael Holzheu __u32 cpu; /* Linux logical CPU number */ 4734c0dad7SMichael Holzheu __u32 reserved; /* Align to 8 byte */ 4834c0dad7SMichael Holzheu }; 4934c0dad7SMichael Holzheu 5034c0dad7SMichael Holzheu struct hypfs_diag0c_data { 5134c0dad7SMichael Holzheu struct hypfs_diag0c_hdr hdr; /* 64 byte header */ 5234c0dad7SMichael Holzheu struct hypfs_diag0c_entry entry[]; /* diag0c entry array */ 5334c0dad7SMichael Holzheu }; 5434c0dad7SMichael Holzheu 5507be0382SMartin Schwidefsky #endif 56