1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2fd5ada04SMartin Schwidefsky /* 3fd5ada04SMartin Schwidefsky * Copyright IBM Corp. 2006 4fd5ada04SMartin Schwidefsky * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 5fd5ada04SMartin Schwidefsky */ 6fd5ada04SMartin Schwidefsky #ifndef __S390_STP_H 7fd5ada04SMartin Schwidefsky #define __S390_STP_H 8fd5ada04SMartin Schwidefsky 9bb7d066aSSven Schnelle #include <linux/compiler.h> 10bb7d066aSSven Schnelle 11fd5ada04SMartin Schwidefsky /* notifier for syncs */ 12fd5ada04SMartin Schwidefsky extern struct atomic_notifier_head s390_epoch_delta_notifier; 13fd5ada04SMartin Schwidefsky 14fd5ada04SMartin Schwidefsky /* STP interruption parameter */ 15fd5ada04SMartin Schwidefsky struct stp_irq_parm { 164ab79ed2SSven Schnelle u32 : 14; 174ab79ed2SSven Schnelle u32 tsc : 1; /* Timing status change */ 184ab79ed2SSven Schnelle u32 lac : 1; /* Link availability change */ 194ab79ed2SSven Schnelle u32 tcpc : 1; /* Time control parameter change */ 204ab79ed2SSven Schnelle u32 : 15; 21bb7d066aSSven Schnelle } __packed; 22fd5ada04SMartin Schwidefsky 23fd5ada04SMartin Schwidefsky #define STP_OP_SYNC 1 24fd5ada04SMartin Schwidefsky #define STP_OP_CTRL 3 25fd5ada04SMartin Schwidefsky 26fd5ada04SMartin Schwidefsky struct stp_sstpi { 274ab79ed2SSven Schnelle u32 : 32; 28b2539aa0SSven Schnelle u32 tu : 1; 29b2539aa0SSven Schnelle u32 lu : 1; 30b2539aa0SSven Schnelle u32 : 6; 314ab79ed2SSven Schnelle u32 stratum : 8; 324ab79ed2SSven Schnelle u32 vbits : 16; 334ab79ed2SSven Schnelle u32 leaps : 16; 344ab79ed2SSven Schnelle u32 tmd : 4; 354ab79ed2SSven Schnelle u32 ctn : 4; 364ab79ed2SSven Schnelle u32 : 3; 374ab79ed2SSven Schnelle u32 c : 1; 384ab79ed2SSven Schnelle u32 tst : 4; 394ab79ed2SSven Schnelle u32 tzo : 16; 404ab79ed2SSven Schnelle u32 dsto : 16; 414ab79ed2SSven Schnelle u32 ctrl : 16; 424ab79ed2SSven Schnelle u32 : 16; 434ab79ed2SSven Schnelle u32 tto; 444ab79ed2SSven Schnelle u32 : 32; 454ab79ed2SSven Schnelle u32 ctnid[3]; 464ab79ed2SSven Schnelle u32 : 32; 47*03780c83SSven Schnelle u64 todoff; 48*03780c83SSven Schnelle u32 rsvd[50]; 49bb7d066aSSven Schnelle } __packed; 50fd5ada04SMartin Schwidefsky 51b2539aa0SSven Schnelle struct stp_tzib { 52b2539aa0SSven Schnelle u32 tzan : 16; 53b2539aa0SSven Schnelle u32 : 16; 54b2539aa0SSven Schnelle u32 tzo : 16; 55b2539aa0SSven Schnelle u32 dsto : 16; 56b2539aa0SSven Schnelle u32 stn; 57b2539aa0SSven Schnelle u32 dstn; 58b2539aa0SSven Schnelle u64 dst_on_alg; 59b2539aa0SSven Schnelle u64 dst_off_alg; 60b2539aa0SSven Schnelle } __packed; 61b2539aa0SSven Schnelle 62b2539aa0SSven Schnelle struct stp_tcpib { 63b2539aa0SSven Schnelle u32 atcode : 4; 64b2539aa0SSven Schnelle u32 ntcode : 4; 65b2539aa0SSven Schnelle u32 d : 1; 66b2539aa0SSven Schnelle u32 : 23; 67b2539aa0SSven Schnelle s32 tto; 68b2539aa0SSven Schnelle struct stp_tzib atzib; 69b2539aa0SSven Schnelle struct stp_tzib ntzib; 70b2539aa0SSven Schnelle s32 adst_offset : 16; 71b2539aa0SSven Schnelle s32 ndst_offset : 16; 72b2539aa0SSven Schnelle u32 rsvd1; 73b2539aa0SSven Schnelle u64 ntzib_update; 74b2539aa0SSven Schnelle u64 ndsto_update; 75b2539aa0SSven Schnelle } __packed; 76b2539aa0SSven Schnelle 77b2539aa0SSven Schnelle struct stp_lsoib { 78b2539aa0SSven Schnelle u32 p : 1; 79b2539aa0SSven Schnelle u32 : 31; 80b2539aa0SSven Schnelle s32 also : 16; 81b2539aa0SSven Schnelle s32 nlso : 16; 82b2539aa0SSven Schnelle u64 nlsout; 83b2539aa0SSven Schnelle } __packed; 84b2539aa0SSven Schnelle 85b2539aa0SSven Schnelle struct stp_stzi { 86b2539aa0SSven Schnelle u32 rsvd0[3]; 87b2539aa0SSven Schnelle u64 data_ts; 88b2539aa0SSven Schnelle u32 rsvd1[22]; 89b2539aa0SSven Schnelle struct stp_tcpib tcpib; 90b2539aa0SSven Schnelle struct stp_lsoib lsoib; 91b2539aa0SSven Schnelle } __packed; 92b2539aa0SSven Schnelle 93fd5ada04SMartin Schwidefsky /* Functions needed by the machine check handler */ 94fd5ada04SMartin Schwidefsky int stp_sync_check(void); 95fd5ada04SMartin Schwidefsky int stp_island_check(void); 96fd5ada04SMartin Schwidefsky void stp_queue_work(void); 97fd5ada04SMartin Schwidefsky 98fd5ada04SMartin Schwidefsky #endif /* __S390_STP_H */ 99