1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 242248979SPeter Oberparleiter /* 342248979SPeter Oberparleiter * Tracepoint header for the s390 Common I/O layer (CIO) 442248979SPeter Oberparleiter * 542248979SPeter Oberparleiter * Copyright IBM Corp. 2015 642248979SPeter Oberparleiter * Author(s): Peter Oberparleiter <oberpar@linux.vnet.ibm.com> 742248979SPeter Oberparleiter */ 842248979SPeter Oberparleiter 942248979SPeter Oberparleiter #include <linux/kernel.h> 1042248979SPeter Oberparleiter #include <asm/crw.h> 1142248979SPeter Oberparleiter #include <uapi/asm/chpid.h> 1242248979SPeter Oberparleiter #include <uapi/asm/schid.h> 1342248979SPeter Oberparleiter #include "cio.h" 1442248979SPeter Oberparleiter #include "orb.h" 1542248979SPeter Oberparleiter 1642248979SPeter Oberparleiter #undef TRACE_SYSTEM 1742248979SPeter Oberparleiter #define TRACE_SYSTEM s390 1842248979SPeter Oberparleiter 1942248979SPeter Oberparleiter #if !defined(_TRACE_S390_CIO_H) || defined(TRACE_HEADER_MULTI_READ) 2042248979SPeter Oberparleiter #define _TRACE_S390_CIO_H 2142248979SPeter Oberparleiter 2242248979SPeter Oberparleiter #include <linux/tracepoint.h> 2342248979SPeter Oberparleiter 2442248979SPeter Oberparleiter DECLARE_EVENT_CLASS(s390_class_schib, 2542248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, struct schib *schib, int cc), 2642248979SPeter Oberparleiter TP_ARGS(schid, schib, cc), 2742248979SPeter Oberparleiter TP_STRUCT__entry( 2842248979SPeter Oberparleiter __field(u8, cssid) 2942248979SPeter Oberparleiter __field(u8, ssid) 3042248979SPeter Oberparleiter __field(u16, schno) 3142248979SPeter Oberparleiter __field(u16, devno) 3242248979SPeter Oberparleiter __field_struct(struct schib, schib) 33d1de8633SThomas Richter __field(u8, pmcw_ena) 34d1de8633SThomas Richter __field(u8, pmcw_st) 35d1de8633SThomas Richter __field(u8, pmcw_dnv) 36d1de8633SThomas Richter __field(u16, pmcw_dev) 37d1de8633SThomas Richter __field(u8, pmcw_lpm) 38d1de8633SThomas Richter __field(u8, pmcw_pnom) 39d1de8633SThomas Richter __field(u8, pmcw_lpum) 40d1de8633SThomas Richter __field(u8, pmcw_pim) 41d1de8633SThomas Richter __field(u8, pmcw_pam) 42d1de8633SThomas Richter __field(u8, pmcw_pom) 43d1de8633SThomas Richter __field(u64, pmcw_chpid) 4442248979SPeter Oberparleiter __field(int, cc) 4542248979SPeter Oberparleiter ), 4642248979SPeter Oberparleiter TP_fast_assign( 4742248979SPeter Oberparleiter __entry->cssid = schid.cssid; 4842248979SPeter Oberparleiter __entry->ssid = schid.ssid; 4942248979SPeter Oberparleiter __entry->schno = schid.sch_no; 5042248979SPeter Oberparleiter __entry->devno = schib->pmcw.dev; 5142248979SPeter Oberparleiter __entry->schib = *schib; 52d1de8633SThomas Richter __entry->pmcw_ena = schib->pmcw.ena; 53*a750b846SPeter Oberparleiter __entry->pmcw_st = schib->pmcw.st; 54d1de8633SThomas Richter __entry->pmcw_dnv = schib->pmcw.dnv; 55d1de8633SThomas Richter __entry->pmcw_dev = schib->pmcw.dev; 56d1de8633SThomas Richter __entry->pmcw_lpm = schib->pmcw.lpm; 57d1de8633SThomas Richter __entry->pmcw_pnom = schib->pmcw.pnom; 58d1de8633SThomas Richter __entry->pmcw_lpum = schib->pmcw.lpum; 59d1de8633SThomas Richter __entry->pmcw_pim = schib->pmcw.pim; 60d1de8633SThomas Richter __entry->pmcw_pam = schib->pmcw.pam; 61d1de8633SThomas Richter __entry->pmcw_pom = schib->pmcw.pom; 62d1de8633SThomas Richter memcpy(&__entry->pmcw_chpid, &schib->pmcw.chpid, 8); 6342248979SPeter Oberparleiter __entry->cc = cc; 6442248979SPeter Oberparleiter ), 6542248979SPeter Oberparleiter TP_printk("schid=%x.%x.%04x cc=%d ena=%d st=%d dnv=%d dev=%04x " 6642248979SPeter Oberparleiter "lpm=0x%02x pnom=0x%02x lpum=0x%02x pim=0x%02x pam=0x%02x " 6742248979SPeter Oberparleiter "pom=0x%02x chpids=%016llx", 6842248979SPeter Oberparleiter __entry->cssid, __entry->ssid, __entry->schno, __entry->cc, 69d1de8633SThomas Richter __entry->pmcw_ena, __entry->pmcw_st, 70d1de8633SThomas Richter __entry->pmcw_dnv, __entry->pmcw_dev, 71d1de8633SThomas Richter __entry->pmcw_lpm, __entry->pmcw_pnom, 72d1de8633SThomas Richter __entry->pmcw_lpum, __entry->pmcw_pim, 73d1de8633SThomas Richter __entry->pmcw_pam, __entry->pmcw_pom, 74d1de8633SThomas Richter __entry->pmcw_chpid 7542248979SPeter Oberparleiter ) 7642248979SPeter Oberparleiter ); 7742248979SPeter Oberparleiter 7842248979SPeter Oberparleiter /** 7942248979SPeter Oberparleiter * s390_cio_stsch - Store Subchannel instruction (STSCH) was performed 8042248979SPeter Oberparleiter * @schid: Subchannel ID 8142248979SPeter Oberparleiter * @schib: Subchannel-Information block 8242248979SPeter Oberparleiter * @cc: Condition code 8342248979SPeter Oberparleiter */ 8442248979SPeter Oberparleiter DEFINE_EVENT(s390_class_schib, s390_cio_stsch, 8542248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, struct schib *schib, int cc), 8642248979SPeter Oberparleiter TP_ARGS(schid, schib, cc) 8742248979SPeter Oberparleiter ); 8842248979SPeter Oberparleiter 8942248979SPeter Oberparleiter /** 9042248979SPeter Oberparleiter * s390_cio_msch - Modify Subchannel instruction (MSCH) was performed 9142248979SPeter Oberparleiter * @schid: Subchannel ID 9242248979SPeter Oberparleiter * @schib: Subchannel-Information block 9342248979SPeter Oberparleiter * @cc: Condition code 9442248979SPeter Oberparleiter */ 9542248979SPeter Oberparleiter DEFINE_EVENT(s390_class_schib, s390_cio_msch, 9642248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, struct schib *schib, int cc), 9742248979SPeter Oberparleiter TP_ARGS(schid, schib, cc) 9842248979SPeter Oberparleiter ); 9942248979SPeter Oberparleiter 10042248979SPeter Oberparleiter /** 10142248979SPeter Oberparleiter * s390_cio_tsch - Test Subchannel instruction (TSCH) was performed 10242248979SPeter Oberparleiter * @schid: Subchannel ID 10342248979SPeter Oberparleiter * @irb: Interruption-Response Block 10442248979SPeter Oberparleiter * @cc: Condition code 10542248979SPeter Oberparleiter */ 10642248979SPeter Oberparleiter TRACE_EVENT(s390_cio_tsch, 10742248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, struct irb *irb, int cc), 10842248979SPeter Oberparleiter TP_ARGS(schid, irb, cc), 10942248979SPeter Oberparleiter TP_STRUCT__entry( 11042248979SPeter Oberparleiter __field(u8, cssid) 11142248979SPeter Oberparleiter __field(u8, ssid) 11242248979SPeter Oberparleiter __field(u16, schno) 11342248979SPeter Oberparleiter __field_struct(struct irb, irb) 114933df441SThomas Richter __field(u8, scsw_dcc) 115933df441SThomas Richter __field(u8, scsw_pno) 116933df441SThomas Richter __field(u8, scsw_fctl) 117933df441SThomas Richter __field(u8, scsw_actl) 118933df441SThomas Richter __field(u8, scsw_stctl) 119933df441SThomas Richter __field(u8, scsw_dstat) 120933df441SThomas Richter __field(u8, scsw_cstat) 12142248979SPeter Oberparleiter __field(int, cc) 12242248979SPeter Oberparleiter ), 12342248979SPeter Oberparleiter TP_fast_assign( 12442248979SPeter Oberparleiter __entry->cssid = schid.cssid; 12542248979SPeter Oberparleiter __entry->ssid = schid.ssid; 12642248979SPeter Oberparleiter __entry->schno = schid.sch_no; 12742248979SPeter Oberparleiter __entry->irb = *irb; 128933df441SThomas Richter __entry->scsw_dcc = scsw_cc(&irb->scsw); 129933df441SThomas Richter __entry->scsw_pno = scsw_pno(&irb->scsw); 130933df441SThomas Richter __entry->scsw_fctl = scsw_fctl(&irb->scsw); 131933df441SThomas Richter __entry->scsw_actl = scsw_actl(&irb->scsw); 132933df441SThomas Richter __entry->scsw_stctl = scsw_stctl(&irb->scsw); 133933df441SThomas Richter __entry->scsw_dstat = scsw_dstat(&irb->scsw); 134933df441SThomas Richter __entry->scsw_cstat = scsw_cstat(&irb->scsw); 13542248979SPeter Oberparleiter __entry->cc = cc; 13642248979SPeter Oberparleiter ), 13742248979SPeter Oberparleiter TP_printk("schid=%x.%x.%04x cc=%d dcc=%d pno=%d fctl=0x%x actl=0x%x " 13842248979SPeter Oberparleiter "stctl=0x%x dstat=0x%x cstat=0x%x", 13942248979SPeter Oberparleiter __entry->cssid, __entry->ssid, __entry->schno, __entry->cc, 140933df441SThomas Richter __entry->scsw_dcc, __entry->scsw_pno, 141933df441SThomas Richter __entry->scsw_fctl, __entry->scsw_actl, 142933df441SThomas Richter __entry->scsw_stctl, 143933df441SThomas Richter __entry->scsw_dstat, __entry->scsw_cstat 14442248979SPeter Oberparleiter ) 14542248979SPeter Oberparleiter ); 14642248979SPeter Oberparleiter 14742248979SPeter Oberparleiter /** 14842248979SPeter Oberparleiter * s390_cio_tpi - Test Pending Interruption instruction (TPI) was performed 14942248979SPeter Oberparleiter * @addr: Address of the I/O interruption code or %NULL 15042248979SPeter Oberparleiter * @cc: Condition code 15142248979SPeter Oberparleiter */ 15242248979SPeter Oberparleiter TRACE_EVENT(s390_cio_tpi, 15342248979SPeter Oberparleiter TP_PROTO(struct tpi_info *addr, int cc), 15442248979SPeter Oberparleiter TP_ARGS(addr, cc), 15542248979SPeter Oberparleiter TP_STRUCT__entry( 15642248979SPeter Oberparleiter __field(int, cc) 15742248979SPeter Oberparleiter __field_struct(struct tpi_info, tpi_info) 15842248979SPeter Oberparleiter __field(u8, cssid) 15942248979SPeter Oberparleiter __field(u8, ssid) 16042248979SPeter Oberparleiter __field(u16, schno) 1615925e819SThomas Richter __field(u8, adapter_IO) 1625925e819SThomas Richter __field(u8, isc) 1635925e819SThomas Richter __field(u8, type) 16442248979SPeter Oberparleiter ), 16542248979SPeter Oberparleiter TP_fast_assign( 16642248979SPeter Oberparleiter __entry->cc = cc; 16742248979SPeter Oberparleiter if (cc != 0) 16842248979SPeter Oberparleiter memset(&__entry->tpi_info, 0, sizeof(struct tpi_info)); 16942248979SPeter Oberparleiter else if (addr) 17042248979SPeter Oberparleiter __entry->tpi_info = *addr; 1710a500447SSven Schnelle else 1720a500447SSven Schnelle __entry->tpi_info = S390_lowcore.tpi_info; 17342248979SPeter Oberparleiter __entry->cssid = __entry->tpi_info.schid.cssid; 17442248979SPeter Oberparleiter __entry->ssid = __entry->tpi_info.schid.ssid; 17542248979SPeter Oberparleiter __entry->schno = __entry->tpi_info.schid.sch_no; 1765925e819SThomas Richter __entry->adapter_IO = __entry->tpi_info.adapter_IO; 1775925e819SThomas Richter __entry->isc = __entry->tpi_info.isc; 1785925e819SThomas Richter __entry->type = __entry->tpi_info.type; 17942248979SPeter Oberparleiter ), 18042248979SPeter Oberparleiter TP_printk("schid=%x.%x.%04x cc=%d a=%d isc=%d type=%d", 18142248979SPeter Oberparleiter __entry->cssid, __entry->ssid, __entry->schno, __entry->cc, 1825925e819SThomas Richter __entry->adapter_IO, __entry->isc, 1835925e819SThomas Richter __entry->type 18442248979SPeter Oberparleiter ) 18542248979SPeter Oberparleiter ); 18642248979SPeter Oberparleiter 18742248979SPeter Oberparleiter /** 18842248979SPeter Oberparleiter * s390_cio_ssch - Start Subchannel instruction (SSCH) was performed 18942248979SPeter Oberparleiter * @schid: Subchannel ID 19042248979SPeter Oberparleiter * @orb: Operation-Request Block 19142248979SPeter Oberparleiter * @cc: Condition code 19242248979SPeter Oberparleiter */ 19342248979SPeter Oberparleiter TRACE_EVENT(s390_cio_ssch, 19442248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, union orb *orb, int cc), 19542248979SPeter Oberparleiter TP_ARGS(schid, orb, cc), 19642248979SPeter Oberparleiter TP_STRUCT__entry( 19742248979SPeter Oberparleiter __field(u8, cssid) 19842248979SPeter Oberparleiter __field(u8, ssid) 19942248979SPeter Oberparleiter __field(u16, schno) 20042248979SPeter Oberparleiter __field_struct(union orb, orb) 20142248979SPeter Oberparleiter __field(int, cc) 20242248979SPeter Oberparleiter ), 20342248979SPeter Oberparleiter TP_fast_assign( 20442248979SPeter Oberparleiter __entry->cssid = schid.cssid; 20542248979SPeter Oberparleiter __entry->ssid = schid.ssid; 20642248979SPeter Oberparleiter __entry->schno = schid.sch_no; 20742248979SPeter Oberparleiter __entry->orb = *orb; 20842248979SPeter Oberparleiter __entry->cc = cc; 20942248979SPeter Oberparleiter ), 21042248979SPeter Oberparleiter TP_printk("schid=%x.%x.%04x cc=%d", __entry->cssid, __entry->ssid, 21142248979SPeter Oberparleiter __entry->schno, __entry->cc 21242248979SPeter Oberparleiter ) 21342248979SPeter Oberparleiter ); 21442248979SPeter Oberparleiter 21542248979SPeter Oberparleiter DECLARE_EVENT_CLASS(s390_class_schid, 21642248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, int cc), 21742248979SPeter Oberparleiter TP_ARGS(schid, cc), 21842248979SPeter Oberparleiter TP_STRUCT__entry( 21942248979SPeter Oberparleiter __field(u8, cssid) 22042248979SPeter Oberparleiter __field(u8, ssid) 22142248979SPeter Oberparleiter __field(u16, schno) 22242248979SPeter Oberparleiter __field(int, cc) 22342248979SPeter Oberparleiter ), 22442248979SPeter Oberparleiter TP_fast_assign( 22542248979SPeter Oberparleiter __entry->cssid = schid.cssid; 22642248979SPeter Oberparleiter __entry->ssid = schid.ssid; 22742248979SPeter Oberparleiter __entry->schno = schid.sch_no; 22842248979SPeter Oberparleiter __entry->cc = cc; 22942248979SPeter Oberparleiter ), 23042248979SPeter Oberparleiter TP_printk("schid=%x.%x.%04x cc=%d", __entry->cssid, __entry->ssid, 23142248979SPeter Oberparleiter __entry->schno, __entry->cc 23242248979SPeter Oberparleiter ) 23342248979SPeter Oberparleiter ); 23442248979SPeter Oberparleiter 23542248979SPeter Oberparleiter /** 23642248979SPeter Oberparleiter * s390_cio_csch - Clear Subchannel instruction (CSCH) was performed 23742248979SPeter Oberparleiter * @schid: Subchannel ID 23842248979SPeter Oberparleiter * @cc: Condition code 23942248979SPeter Oberparleiter */ 24042248979SPeter Oberparleiter DEFINE_EVENT(s390_class_schid, s390_cio_csch, 24142248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, int cc), 24242248979SPeter Oberparleiter TP_ARGS(schid, cc) 24342248979SPeter Oberparleiter ); 24442248979SPeter Oberparleiter 24542248979SPeter Oberparleiter /** 24642248979SPeter Oberparleiter * s390_cio_hsch - Halt Subchannel instruction (HSCH) was performed 24742248979SPeter Oberparleiter * @schid: Subchannel ID 24842248979SPeter Oberparleiter * @cc: Condition code 24942248979SPeter Oberparleiter */ 25042248979SPeter Oberparleiter DEFINE_EVENT(s390_class_schid, s390_cio_hsch, 25142248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, int cc), 25242248979SPeter Oberparleiter TP_ARGS(schid, cc) 25342248979SPeter Oberparleiter ); 25442248979SPeter Oberparleiter 25542248979SPeter Oberparleiter /** 25642248979SPeter Oberparleiter * s390_cio_xsch - Cancel Subchannel instruction (XSCH) was performed 25742248979SPeter Oberparleiter * @schid: Subchannel ID 25842248979SPeter Oberparleiter * @cc: Condition code 25942248979SPeter Oberparleiter */ 26042248979SPeter Oberparleiter DEFINE_EVENT(s390_class_schid, s390_cio_xsch, 26142248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, int cc), 26242248979SPeter Oberparleiter TP_ARGS(schid, cc) 26342248979SPeter Oberparleiter ); 26442248979SPeter Oberparleiter 26542248979SPeter Oberparleiter /** 26642248979SPeter Oberparleiter * s390_cio_rsch - Resume Subchannel instruction (RSCH) was performed 26742248979SPeter Oberparleiter * @schid: Subchannel ID 26842248979SPeter Oberparleiter * @cc: Condition code 26942248979SPeter Oberparleiter */ 27042248979SPeter Oberparleiter DEFINE_EVENT(s390_class_schid, s390_cio_rsch, 27142248979SPeter Oberparleiter TP_PROTO(struct subchannel_id schid, int cc), 27242248979SPeter Oberparleiter TP_ARGS(schid, cc) 27342248979SPeter Oberparleiter ); 27442248979SPeter Oberparleiter 27542248979SPeter Oberparleiter #define CHSC_MAX_REQUEST_LEN 64 27642248979SPeter Oberparleiter #define CHSC_MAX_RESPONSE_LEN 64 27742248979SPeter Oberparleiter 27842248979SPeter Oberparleiter /** 27942248979SPeter Oberparleiter * s390_cio_chsc - Channel Subsystem Call (CHSC) instruction was performed 28042248979SPeter Oberparleiter * @chsc: CHSC block 28142248979SPeter Oberparleiter * @cc: Condition code 28242248979SPeter Oberparleiter */ 28342248979SPeter Oberparleiter TRACE_EVENT(s390_cio_chsc, 28442248979SPeter Oberparleiter TP_PROTO(struct chsc_header *chsc, int cc), 28542248979SPeter Oberparleiter TP_ARGS(chsc, cc), 28642248979SPeter Oberparleiter TP_STRUCT__entry( 28742248979SPeter Oberparleiter __field(int, cc) 28842248979SPeter Oberparleiter __field(u16, code) 28942248979SPeter Oberparleiter __field(u16, rcode) 29042248979SPeter Oberparleiter __array(u8, request, CHSC_MAX_REQUEST_LEN) 29142248979SPeter Oberparleiter __array(u8, response, CHSC_MAX_RESPONSE_LEN) 29242248979SPeter Oberparleiter ), 29342248979SPeter Oberparleiter TP_fast_assign( 29442248979SPeter Oberparleiter __entry->cc = cc; 29542248979SPeter Oberparleiter __entry->code = chsc->code; 29642248979SPeter Oberparleiter memcpy(&entry->request, chsc, 29742248979SPeter Oberparleiter min_t(u16, chsc->length, CHSC_MAX_REQUEST_LEN)); 29842248979SPeter Oberparleiter chsc = (struct chsc_header *) ((char *) chsc + chsc->length); 29942248979SPeter Oberparleiter __entry->rcode = chsc->code; 30042248979SPeter Oberparleiter memcpy(&entry->response, chsc, 30142248979SPeter Oberparleiter min_t(u16, chsc->length, CHSC_MAX_RESPONSE_LEN)); 30242248979SPeter Oberparleiter ), 30342248979SPeter Oberparleiter TP_printk("code=0x%04x cc=%d rcode=0x%04x", __entry->code, 30442248979SPeter Oberparleiter __entry->cc, __entry->rcode) 30542248979SPeter Oberparleiter ); 30642248979SPeter Oberparleiter 30742248979SPeter Oberparleiter /** 30842248979SPeter Oberparleiter * s390_cio_interrupt - An I/O interrupt occurred 30942248979SPeter Oberparleiter * @tpi_info: Address of the I/O interruption code 31042248979SPeter Oberparleiter */ 31142248979SPeter Oberparleiter TRACE_EVENT(s390_cio_interrupt, 31242248979SPeter Oberparleiter TP_PROTO(struct tpi_info *tpi_info), 31342248979SPeter Oberparleiter TP_ARGS(tpi_info), 31442248979SPeter Oberparleiter TP_STRUCT__entry( 31542248979SPeter Oberparleiter __field_struct(struct tpi_info, tpi_info) 31642248979SPeter Oberparleiter __field(u8, cssid) 31742248979SPeter Oberparleiter __field(u8, ssid) 31842248979SPeter Oberparleiter __field(u16, schno) 319661c959bSThomas Richter __field(u8, isc) 320661c959bSThomas Richter __field(u8, type) 32142248979SPeter Oberparleiter ), 32242248979SPeter Oberparleiter TP_fast_assign( 32342248979SPeter Oberparleiter __entry->tpi_info = *tpi_info; 324661c959bSThomas Richter __entry->cssid = tpi_info->schid.cssid; 325661c959bSThomas Richter __entry->ssid = tpi_info->schid.ssid; 326661c959bSThomas Richter __entry->schno = tpi_info->schid.sch_no; 327661c959bSThomas Richter __entry->isc = tpi_info->isc; 328661c959bSThomas Richter __entry->type = tpi_info->type; 32942248979SPeter Oberparleiter ), 33042248979SPeter Oberparleiter TP_printk("schid=%x.%x.%04x isc=%d type=%d", 33142248979SPeter Oberparleiter __entry->cssid, __entry->ssid, __entry->schno, 332661c959bSThomas Richter __entry->isc, __entry->type 33342248979SPeter Oberparleiter ) 33442248979SPeter Oberparleiter ); 33542248979SPeter Oberparleiter 33642248979SPeter Oberparleiter /** 33742248979SPeter Oberparleiter * s390_cio_adapter_int - An adapter interrupt occurred 33842248979SPeter Oberparleiter * @tpi_info: Address of the I/O interruption code 33942248979SPeter Oberparleiter */ 34042248979SPeter Oberparleiter TRACE_EVENT(s390_cio_adapter_int, 34142248979SPeter Oberparleiter TP_PROTO(struct tpi_info *tpi_info), 34242248979SPeter Oberparleiter TP_ARGS(tpi_info), 34342248979SPeter Oberparleiter TP_STRUCT__entry( 34442248979SPeter Oberparleiter __field_struct(struct tpi_info, tpi_info) 34527c0620cSThomas Richter __field(u8, isc) 34642248979SPeter Oberparleiter ), 34742248979SPeter Oberparleiter TP_fast_assign( 34842248979SPeter Oberparleiter __entry->tpi_info = *tpi_info; 34927c0620cSThomas Richter __entry->isc = tpi_info->isc; 35042248979SPeter Oberparleiter ), 35127c0620cSThomas Richter TP_printk("isc=%d", __entry->isc) 35242248979SPeter Oberparleiter ); 35342248979SPeter Oberparleiter 35442248979SPeter Oberparleiter /** 35542248979SPeter Oberparleiter * s390_cio_stcrw - Store Channel Report Word (STCRW) was performed 35642248979SPeter Oberparleiter * @crw: Channel Report Word 35742248979SPeter Oberparleiter * @cc: Condition code 35842248979SPeter Oberparleiter */ 35942248979SPeter Oberparleiter TRACE_EVENT(s390_cio_stcrw, 36042248979SPeter Oberparleiter TP_PROTO(struct crw *crw, int cc), 36142248979SPeter Oberparleiter TP_ARGS(crw, cc), 36242248979SPeter Oberparleiter TP_STRUCT__entry( 36342248979SPeter Oberparleiter __field_struct(struct crw, crw) 36442248979SPeter Oberparleiter __field(int, cc) 36567faae15SThomas Richter __field(u8, slct) 36667faae15SThomas Richter __field(u8, oflw) 36767faae15SThomas Richter __field(u8, chn) 36867faae15SThomas Richter __field(u8, rsc) 36967faae15SThomas Richter __field(u8, anc) 37067faae15SThomas Richter __field(u8, erc) 37167faae15SThomas Richter __field(u16, rsid) 37242248979SPeter Oberparleiter ), 37342248979SPeter Oberparleiter TP_fast_assign( 37442248979SPeter Oberparleiter __entry->crw = *crw; 37542248979SPeter Oberparleiter __entry->cc = cc; 37667faae15SThomas Richter __entry->slct = crw->slct; 37767faae15SThomas Richter __entry->oflw = crw->oflw; 37867faae15SThomas Richter __entry->chn = crw->chn; 37967faae15SThomas Richter __entry->rsc = crw->rsc; 38067faae15SThomas Richter __entry->anc = crw->anc; 38167faae15SThomas Richter __entry->erc = crw->erc; 38267faae15SThomas Richter __entry->rsid = crw->rsid; 38342248979SPeter Oberparleiter ), 38442248979SPeter Oberparleiter TP_printk("cc=%d slct=%d oflw=%d chn=%d rsc=%d anc=%d erc=0x%x " 38542248979SPeter Oberparleiter "rsid=0x%x", 38667faae15SThomas Richter __entry->cc, __entry->slct, __entry->oflw, 38767faae15SThomas Richter __entry->chn, __entry->rsc, __entry->anc, 38867faae15SThomas Richter __entry->erc, __entry->rsid 38942248979SPeter Oberparleiter ) 39042248979SPeter Oberparleiter ); 39142248979SPeter Oberparleiter 39242248979SPeter Oberparleiter #endif /* _TRACE_S390_CIO_H */ 39342248979SPeter Oberparleiter 39442248979SPeter Oberparleiter /* This part must be outside protection */ 39542248979SPeter Oberparleiter #undef TRACE_INCLUDE_PATH 39642248979SPeter Oberparleiter #define TRACE_INCLUDE_PATH . 39742248979SPeter Oberparleiter 39842248979SPeter Oberparleiter #undef TRACE_INCLUDE_FILE 39942248979SPeter Oberparleiter #define TRACE_INCLUDE_FILE trace 40042248979SPeter Oberparleiter 40142248979SPeter Oberparleiter #include <trace/define_trace.h> 402