From owner-svn-src-head@freebsd.org Wed Aug 17 01:57:59 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 75C41BBCE2E; Wed, 17 Aug 2016 01:57:59 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 50E39152C; Wed, 17 Aug 2016 01:57:59 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7H1vwGt082021; Wed, 17 Aug 2016 01:57:58 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7H1vwrg082020; Wed, 17 Aug 2016 01:57:58 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201608170157.u7H1vwrg082020@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 17 Aug 2016 01:57:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r304248 - head/sys/dev/qlxgbe X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Aug 2016 01:57:59 -0000 Author: davidcs Date: Wed Aug 17 01:57:58 2016 New Revision: 304248 URL: https://svnweb.freebsd.org/changeset/base/304248 Log: Add ql_minidump.h MFC after:5 days Added: head/sys/dev/qlxgbe/ql_minidump.h (contents, props changed) Added: head/sys/dev/qlxgbe/ql_minidump.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/qlxgbe/ql_minidump.h Wed Aug 17 01:57:58 2016 (r304248) @@ -0,0 +1,470 @@ +/* + * Copyright (c) 2013-2016 Qlogic Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * File: ql_minidump.h + * + * $FreeBSD$ + */ +#ifndef _QL_MINIDUMP_H_ +#define _QL_MINIDUMP_H_ + +#define QL_DBG_STATE_ARRAY_LEN 16 +#define QL_DBG_CAP_SIZE_ARRAY_LEN 8 +#define QL_NO_OF_OCM_WINDOWS 16 + + +typedef struct ql_mdump_tmplt_hdr { + uint32_t entry_type ; + uint32_t first_entry_offset ; + uint32_t size_of_template ; + uint32_t recommended_capture_mask; + + uint32_t num_of_entries ; + uint32_t version ; + uint32_t driver_timestamp ; + uint32_t checksum ; + + uint32_t driver_capture_mask ; + uint32_t driver_info_word2 ; + uint32_t driver_info_word3 ; + uint32_t driver_info_word4 ; + + uint32_t saved_state_array[QL_DBG_STATE_ARRAY_LEN] ; + uint32_t capture_size_array[QL_DBG_CAP_SIZE_ARRAY_LEN] ; + + uint32_t ocm_window_array[QL_NO_OF_OCM_WINDOWS] ; +} ql_minidump_template_hdr_t ; + +/* + * MIU AGENT ADDRESSES. + */ + +#define MD_TA_CTL_ENABLE 0x2 +#define MD_TA_CTL_START 0x1 +#define MD_TA_CTL_BUSY 0x8 +#define MD_TA_CTL_CHECK 1000 + +#define MD_MIU_TEST_AGT_CTRL 0x41000090 +#define MD_MIU_TEST_AGT_ADDR_LO 0x41000094 +#define MD_MIU_TEST_AGT_ADDR_HI 0x41000098 + +#define MD_MIU_TEST_AGT_RDDATA_0_31 0x410000A8 +#define MD_MIU_TEST_AGT_RDDATA_32_63 0x410000AC +#define MD_MIU_TEST_AGT_RDDATA_64_95 0x410000B8 +#define MD_MIU_TEST_AGT_RDDATA_96_127 0x410000BC + +#define MD_MIU_TEST_AGT_WRDATA_0_31 0x410000A0 +#define MD_MIU_TEST_AGT_WRDATA_32_63 0x410000A4 +#define MD_MIU_TEST_AGT_WRDATA_64_95 0x410000B0 +#define MD_MIU_TEST_AGT_WRDATA_96_127 0x410000B4 + +/* + * ROM Read Address + */ + +#define MD_DIRECT_ROM_WINDOW 0x42110030 +#define MD_DIRECT_ROM_READ_BASE 0x42150000 + +/* + * Entry Type Defines + */ + +#define RDNOP 0 +#define RDCRB 1 +#define RDMUX 2 +#define QUEUE 3 +#define BOARD 4 +#define RDOCM 6 +#define L1DAT 11 +#define L1INS 12 +#define L2DTG 21 +#define L2ITG 22 +#define L2DAT 23 +#define L2INS 24 +#define POLLRD 35 +#define RDMUX2 36 +#define POLLRDMWR 37 +#define RDROM 71 +#define RDMEM 72 +#define CNTRL 98 +#define TLHDR 99 +#define RDEND 255 + +/* + * Index of State Table. The Template header maintains + * an array of 8 (0..7) words that is used to store some + * "State Information" from the board. + */ + +#define QL_PCIE_FUNC_INDX 0 +#define QL_CLK_STATE_INDX 1 +#define QL_SRE_STATE_INDX 2 +#define QL_OCM0_ADDR_INDX 3 + +#define QL_REVID_STATE_INDX 4 +#define QL_MAJVER_STATE_INDX 5 +#define QL_MINVER_STATE_INDX 6 +#define QL_SUBVER_STATE_INDX 7 + +/* + * Opcodes for Control Entries. + * These Flags are bit fields. + */ + +#define QL_DBG_OPCODE_WR 0x01 +#define QL_DBG_OPCODE_RW 0x02 +#define QL_DBG_OPCODE_AND 0x04 +#define QL_DBG_OPCODE_OR 0x08 +#define QL_DBG_OPCODE_POLL 0x10 +#define QL_DBG_OPCODE_RDSTATE 0x20 +#define QL_DBG_OPCODE_WRSTATE 0x40 +#define QL_DBG_OPCODE_MDSTATE 0x80 + +typedef struct ql_minidump_entry_hdr_s { + uint32_t entry_type ; + uint32_t entry_size ; + uint32_t entry_capture_size ; + union { + struct { + uint8_t entry_capture_mask ; + uint8_t entry_code ; + uint8_t driver_code ; + uint8_t driver_flags ; + }; + uint32_t entry_ctrl_word ; + }; +} ql_minidump_entry_hdr_t ; + +/* + * Driver Flags + */ +#define QL_DBG_SKIPPED_FLAG 0x80 /* driver skipped this entry */ +#define QL_DBG_SIZE_ERR_FLAG 0x40 /* entry size vs capture size mismatch*/ + +/* + * Generic Entry Including Header + */ + +typedef struct ql_minidump_entry_s { + ql_minidump_entry_hdr_t hdr ; + + uint32_t entry_data00 ; + uint32_t entry_data01 ; + uint32_t entry_data02 ; + uint32_t entry_data03 ; + + uint32_t entry_data04 ; + uint32_t entry_data05 ; + uint32_t entry_data06 ; + uint32_t entry_data07 ; +} ql_minidump_entry_t; + +/* + * Read CRB Entry Header + */ + +typedef struct ql_minidump_entry_rdcrb_s { + ql_minidump_entry_hdr_t h; + + uint32_t addr ; + union { + struct { + uint8_t addr_stride ; + uint8_t rsvd_0; + uint16_t rsvd_1 ; + } ; + uint32_t addr_cntrl ; + } ; + + uint32_t data_size ; + uint32_t op_count; + + uint32_t rsvd_2 ; + uint32_t rsvd_3 ; + uint32_t rsvd_4 ; + uint32_t rsvd_5 ; + +} ql_minidump_entry_rdcrb_t ; + +/* + * Cache Entry Header + */ + +typedef struct ql_minidump_entry_cache_s { + ql_minidump_entry_hdr_t h; + + uint32_t tag_reg_addr ; + union { + struct { + uint16_t tag_value_stride ; + uint16_t init_tag_value ; + } ; + uint32_t select_addr_cntrl ; + } ; + + uint32_t data_size ; + uint32_t op_count; + + uint32_t control_addr ; + union { + struct { + uint16_t write_value ; + uint8_t poll_mask ; + uint8_t poll_wait ; + }; + uint32_t control_value ; + } ; + + uint32_t read_addr ; + union { + struct { + uint8_t read_addr_stride ; + uint8_t read_addr_cnt ; + uint16_t rsvd_1 ; + } ; + uint32_t read_addr_cntrl ; + } ; +} ql_minidump_entry_cache_t ; + + +/* + * Read OCM Entry Header + */ + +typedef struct ql_minidump_entry_rdocm_s { + ql_minidump_entry_hdr_t h; + + uint32_t rsvd_0 ; + uint32_t rsvd_1 ; + + uint32_t data_size ; + uint32_t op_count; + + uint32_t rsvd_2 ; + uint32_t rsvd_3 ; + + uint32_t read_addr ; + uint32_t read_addr_stride ; + +} ql_minidump_entry_rdocm_t ; + +/* + * Read MEM Entry Header + */ + +typedef struct ql_minidump_entry_rdmem_s { + ql_minidump_entry_hdr_t h; + + uint32_t rsvd_0[6] ; + + uint32_t read_addr ; + uint32_t read_data_size ; + +} ql_minidump_entry_rdmem_t ; + +/* + * Read ROM Entry Header + */ + +typedef struct ql_minidump_entry_rdrom_s { + ql_minidump_entry_hdr_t h; + + uint32_t rsvd_0[6] ; + + uint32_t read_addr ; + uint32_t read_data_size ; + +} ql_minidump_entry_rdrom_t ; + +/* + * Read MUX Entry Header + */ + +typedef struct ql_minidump_entry_mux_s { + ql_minidump_entry_hdr_t h; + + uint32_t select_addr ; + union { + struct { + uint32_t rsvd_0 ; + } ; + uint32_t select_addr_cntrl ; + } ; + + uint32_t data_size ; + uint32_t op_count; + + uint32_t select_value ; + uint32_t select_value_stride ; + + uint32_t read_addr ; + uint32_t rsvd_1 ; + +} ql_minidump_entry_mux_t ; + +/* + * Read MUX2 Entry Header + */ + +typedef struct ql_minidump_entry_mux2_s { + ql_minidump_entry_hdr_t h; + + uint32_t select_addr_1; + uint32_t select_addr_2; + uint32_t select_value_1; + uint32_t select_value_2; + uint32_t select_value_count; + uint32_t select_value_mask; + uint32_t read_addr; + union { + struct { + uint8_t select_value_stride; + uint8_t data_size; + uint8_t reserved_0; + uint8_t reserved_1; + }; + uint32_t select_addr_value_cntrl; + }; + +} ql_minidump_entry_mux2_t; + +/* + * Read QUEUE Entry Header + */ + +typedef struct ql_minidump_entry_queue_s { + ql_minidump_entry_hdr_t h; + + uint32_t select_addr ; + union { + struct { + uint16_t queue_id_stride ; + uint16_t rsvd_0 ; + } ; + uint32_t select_addr_cntrl ; + } ; + + uint32_t data_size ; + uint32_t op_count ; + + uint32_t rsvd_1 ; + uint32_t rsvd_2 ; + + uint32_t read_addr ; + union { + struct { + uint8_t read_addr_stride ; + uint8_t read_addr_cnt ; + uint16_t rsvd_3 ; + } ; + uint32_t read_addr_cntrl ; + } ; + +} ql_minidump_entry_queue_t ; + +/* + * Control Entry Header + */ + +typedef struct ql_minidump_entry_cntrl_s { + ql_minidump_entry_hdr_t h; + + uint32_t addr ; + union { + struct { + uint8_t addr_stride ; + uint8_t state_index_a ; + uint16_t poll_timeout ; + } ; + uint32_t addr_cntrl ; + } ; + + uint32_t data_size ; + uint32_t op_count; + + union { + struct { + uint8_t opcode ; + uint8_t state_index_v ; + uint8_t shl ; + uint8_t shr ; + } ; + uint32_t control_value ; + } ; + + uint32_t value_1 ; + uint32_t value_2 ; + uint32_t value_3 ; +} ql_minidump_entry_cntrl_t ; + +/* + * Read with poll. + */ + +typedef struct ql_minidump_entry_rdcrb_with_poll_s { + ql_minidump_entry_hdr_t h; + + uint32_t select_addr; + uint32_t read_addr; + uint32_t select_value; + union { + struct { + uint16_t select_value_stride; + uint16_t op_count; + }; + uint32_t select_value_cntrl; + }; + + uint32_t poll; + uint32_t mask; + + uint32_t data_size; + uint32_t rsvd_0; + +} ql_minidump_entry_pollrd_t; + +/* + * Read_Modify_Write with poll. + */ + +typedef struct ql_minidump_entry_rd_modify_wr_with_poll_s { + ql_minidump_entry_hdr_t h; + + uint32_t addr_1; + uint32_t addr_2; + uint32_t value_1; + uint32_t value_2; + uint32_t poll; + uint32_t mask; + uint32_t modify_mask; + uint32_t data_size; + +} ql_minidump_entry_rd_modify_wr_with_poll_t; + +#endif /* #ifndef _QL_MINIDUMP_H_ */ +