From owner-svn-src-head@freebsd.org Thu Oct 10 12:46:44 2019 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 85A74135395; Thu, 10 Oct 2019 12:46:44 +0000 (UTC) (envelope-from br@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46prSN327dz3PvV; Thu, 10 Oct 2019 12:46:44 +0000 (UTC) (envelope-from br@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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4AE832182; Thu, 10 Oct 2019 12:46:44 +0000 (UTC) (envelope-from br@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x9ACkiU6094270; Thu, 10 Oct 2019 12:46:44 GMT (envelope-from br@FreeBSD.org) Received: (from br@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x9ACkZrl094222; Thu, 10 Oct 2019 12:46:35 GMT (envelope-from br@FreeBSD.org) Message-Id: <201910101246.x9ACkZrl094222@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: br set sender to br@FreeBSD.org using -f From: Ruslan Bukin Date: Thu, 10 Oct 2019 12:46:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r353390 - in head: contrib/processor-trace/include contrib/processor-trace/include/posix contrib/processor-trace/include/windows contrib/processor-trace/libipt contrib/processor-trace/l... X-SVN-Group: head X-SVN-Commit-Author: br X-SVN-Commit-Paths: in head: contrib/processor-trace/include contrib/processor-trace/include/posix contrib/processor-trace/include/windows contrib/processor-trace/libipt contrib/processor-trace/libipt/include contrib/pro... X-SVN-Commit-Revision: 353390 X-SVN-Commit-Repository: base 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.29 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: Thu, 10 Oct 2019 12:46:44 -0000 Author: br Date: Thu Oct 10 12:46:34 2019 New Revision: 353390 URL: https://svnweb.freebsd.org/changeset/base/353390 Log: Update Intel Processor Trace decoder library. Its latest version merged from: ^/vendor/processor-trace/892e12c5a27bda5806d1e63269986bb4171b5a8b Sponsored by: DARPA, AFRL Added: head/contrib/processor-trace/include/pt_version.h (contents, props changed) head/contrib/processor-trace/libipt/internal/include/pti-disp_default.h (contents, props changed) head/contrib/processor-trace/libipt/internal/include/pti-sib.h (contents, props changed) head/contrib/processor-trace/libipt/test/src/ptunit-block_decoder.c (contents, props changed) head/contrib/processor-trace/libipt/test/src/ptunit-encoder.c (contents, props changed) head/contrib/processor-trace/libipt/test/src/ptunit-insn_decoder.c (contents, props changed) head/contrib/processor-trace/libipt/test/src/ptunit-packet_decoder.c (contents, props changed) Deleted: head/contrib/processor-trace/libipt/src/posix/init.c head/contrib/processor-trace/libipt/src/windows/init.c Modified: head/contrib/processor-trace/include/posix/threads.h head/contrib/processor-trace/include/pt_compiler.h head/contrib/processor-trace/include/windows/inttypes.h head/contrib/processor-trace/include/windows/threads.h head/contrib/processor-trace/libipt/CMakeLists.txt head/contrib/processor-trace/libipt/include/intel-pt.h head/contrib/processor-trace/libipt/include/intel-pt.h.in head/contrib/processor-trace/libipt/internal/include/posix/pt_section_posix.h head/contrib/processor-trace/libipt/internal/include/pt_asid.h head/contrib/processor-trace/libipt/internal/include/pt_block_cache.h head/contrib/processor-trace/libipt/internal/include/pt_block_decoder.h head/contrib/processor-trace/libipt/internal/include/pt_config.h head/contrib/processor-trace/libipt/internal/include/pt_cpu.h head/contrib/processor-trace/libipt/internal/include/pt_cpuid.h head/contrib/processor-trace/libipt/internal/include/pt_decoder_function.h head/contrib/processor-trace/libipt/internal/include/pt_encoder.h head/contrib/processor-trace/libipt/internal/include/pt_event_queue.h head/contrib/processor-trace/libipt/internal/include/pt_ild.h head/contrib/processor-trace/libipt/internal/include/pt_image.h head/contrib/processor-trace/libipt/internal/include/pt_image_section_cache.h head/contrib/processor-trace/libipt/internal/include/pt_insn.h head/contrib/processor-trace/libipt/internal/include/pt_insn_decoder.h head/contrib/processor-trace/libipt/internal/include/pt_last_ip.h head/contrib/processor-trace/libipt/internal/include/pt_mapped_section.h head/contrib/processor-trace/libipt/internal/include/pt_msec_cache.h head/contrib/processor-trace/libipt/internal/include/pt_opcodes.h head/contrib/processor-trace/libipt/internal/include/pt_packet.h head/contrib/processor-trace/libipt/internal/include/pt_packet_decoder.h head/contrib/processor-trace/libipt/internal/include/pt_query_decoder.h head/contrib/processor-trace/libipt/internal/include/pt_retstack.h head/contrib/processor-trace/libipt/internal/include/pt_section.h head/contrib/processor-trace/libipt/internal/include/pt_section_file.h head/contrib/processor-trace/libipt/internal/include/pt_sync.h head/contrib/processor-trace/libipt/internal/include/pt_time.h head/contrib/processor-trace/libipt/internal/include/pt_tnt_cache.h head/contrib/processor-trace/libipt/internal/include/pti-disp-defs.h head/contrib/processor-trace/libipt/internal/include/pti-disp.h head/contrib/processor-trace/libipt/internal/include/pti-imm-defs.h head/contrib/processor-trace/libipt/internal/include/pti-imm.h head/contrib/processor-trace/libipt/internal/include/pti-modrm-defs.h head/contrib/processor-trace/libipt/internal/include/pti-modrm.h head/contrib/processor-trace/libipt/internal/include/windows/pt_section_windows.h head/contrib/processor-trace/libipt/src/posix/pt_cpuid.c head/contrib/processor-trace/libipt/src/posix/pt_section_posix.c head/contrib/processor-trace/libipt/src/pt_asid.c head/contrib/processor-trace/libipt/src/pt_block_cache.c head/contrib/processor-trace/libipt/src/pt_block_decoder.c head/contrib/processor-trace/libipt/src/pt_config.c head/contrib/processor-trace/libipt/src/pt_cpu.c head/contrib/processor-trace/libipt/src/pt_decoder_function.c head/contrib/processor-trace/libipt/src/pt_encoder.c head/contrib/processor-trace/libipt/src/pt_error.c head/contrib/processor-trace/libipt/src/pt_event_queue.c head/contrib/processor-trace/libipt/src/pt_ild.c head/contrib/processor-trace/libipt/src/pt_image.c head/contrib/processor-trace/libipt/src/pt_image_section_cache.c head/contrib/processor-trace/libipt/src/pt_insn.c head/contrib/processor-trace/libipt/src/pt_insn_decoder.c head/contrib/processor-trace/libipt/src/pt_last_ip.c head/contrib/processor-trace/libipt/src/pt_msec_cache.c head/contrib/processor-trace/libipt/src/pt_packet.c head/contrib/processor-trace/libipt/src/pt_packet_decoder.c head/contrib/processor-trace/libipt/src/pt_query_decoder.c head/contrib/processor-trace/libipt/src/pt_retstack.c head/contrib/processor-trace/libipt/src/pt_section.c head/contrib/processor-trace/libipt/src/pt_section_file.c head/contrib/processor-trace/libipt/src/pt_sync.c head/contrib/processor-trace/libipt/src/pt_time.c head/contrib/processor-trace/libipt/src/pt_tnt_cache.c head/contrib/processor-trace/libipt/src/pt_version.c head/contrib/processor-trace/libipt/src/windows/pt_cpuid.c head/contrib/processor-trace/libipt/src/windows/pt_section_windows.c head/contrib/processor-trace/libipt/test/src/ptunit-asid.c head/contrib/processor-trace/libipt/test/src/ptunit-block_cache.c head/contrib/processor-trace/libipt/test/src/ptunit-config.c head/contrib/processor-trace/libipt/test/src/ptunit-cpp.cpp head/contrib/processor-trace/libipt/test/src/ptunit-cpu.c head/contrib/processor-trace/libipt/test/src/ptunit-event_queue.c head/contrib/processor-trace/libipt/test/src/ptunit-fetch.c head/contrib/processor-trace/libipt/test/src/ptunit-ild.c head/contrib/processor-trace/libipt/test/src/ptunit-image.c head/contrib/processor-trace/libipt/test/src/ptunit-image_section_cache.c head/contrib/processor-trace/libipt/test/src/ptunit-last_ip.c head/contrib/processor-trace/libipt/test/src/ptunit-mapped_section.c head/contrib/processor-trace/libipt/test/src/ptunit-msec_cache.c head/contrib/processor-trace/libipt/test/src/ptunit-packet.c head/contrib/processor-trace/libipt/test/src/ptunit-query.c head/contrib/processor-trace/libipt/test/src/ptunit-retstack.c head/contrib/processor-trace/libipt/test/src/ptunit-section-file.c head/contrib/processor-trace/libipt/test/src/ptunit-section.c head/contrib/processor-trace/libipt/test/src/ptunit-sync.c head/contrib/processor-trace/libipt/test/src/ptunit-time.c head/contrib/processor-trace/libipt/test/src/ptunit-tnt_cache.c head/lib/libipt/Makefile Modified: head/contrib/processor-trace/include/posix/threads.h ============================================================================== --- head/contrib/processor-trace/include/posix/threads.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/include/posix/threads.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/include/pt_compiler.h ============================================================================== --- head/contrib/processor-trace/include/pt_compiler.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/include/pt_compiler.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018, Intel Corporation + * Copyright (c) 2017-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Added: head/contrib/processor-trace/include/pt_version.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/processor-trace/include/pt_version.h Thu Oct 10 12:46:34 2019 (r353390) @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2018-2019, Intel Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * 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. + */ + +#ifndef PT_VERSION_H +#define PT_VERSION_H + +#include "intel-pt.h" + +#include +#include + + +static inline int pt_fprint_version(FILE *file, struct pt_version version) +{ + if (version.build) { + if (version.ext && version.ext[0]) + return fprintf(file, "%" PRIu8 ".%" PRIu8 ".%" PRIu16 + "-%" PRIu32 "-%s", version.major, + version.minor, version.patch, + version.build, version.ext); + else + return fprintf(file, "%" PRIu8 ".%" PRIu8 ".%" PRIu16 + "-%" PRIu32 "", version.major, + version.minor, version.patch, + version.build); + } else { + if (version.ext && version.ext[0]) + return fprintf(file, "%" PRIu8 ".%" PRIu8 ".%" PRIu16 + "-%s", version.major, version.minor, + version.patch, version.ext); + else + return fprintf(file, "%" PRIu8 ".%" PRIu8 ".%" PRIu16, + version.major, version.minor, + version.patch); + } +} + +static inline int pt_print_version(struct pt_version version) +{ + return pt_fprint_version(stdout, version); +} + +static inline void pt_print_tool_version(const char *name) +{ + struct pt_version v = { + /* .major = */ PT_VERSION_MAJOR, + /* .minor = */ PT_VERSION_MINOR, + /* .patch = */ PT_VERSION_PATCH, + /* .build = */ PT_VERSION_BUILD, + /* .ext = */ PT_VERSION_EXT + }; + + if (!name) + name = ""; + + printf("%s-", name); + pt_print_version(v); + printf(" / libipt-"); + pt_print_version(pt_library_version()); + printf("\n"); +} + +#endif /* PT_VERSION_H */ Modified: head/contrib/processor-trace/include/windows/inttypes.h ============================================================================== --- head/contrib/processor-trace/include/windows/inttypes.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/include/windows/inttypes.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/include/windows/threads.h ============================================================================== --- head/contrib/processor-trace/include/windows/threads.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/include/windows/threads.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/CMakeLists.txt ============================================================================== --- head/contrib/processor-trace/libipt/CMakeLists.txt Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/CMakeLists.txt Thu Oct 10 12:46:34 2019 (r353390) @@ -1,4 +1,4 @@ -# Copyright (c) 2013-2018, Intel Corporation +# Copyright (c) 2013-2019, Intel Corporation # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -64,28 +64,28 @@ if (CMAKE_HOST_UNIX) internal/include/posix ) - set(LIBIPT_FILES ${LIBIPT_FILES} src/posix/init.c) set(LIBIPT_SECTION_FILES ${LIBIPT_SECTION_FILES} src/posix/pt_section_posix.c) endif (CMAKE_HOST_UNIX) if (CMAKE_HOST_WIN32) - add_definitions( - # export libipt symbols - # - /Dpt_export=__declspec\(dllexport\) - ) + if (BUILD_SHARED_LIBS) + add_definitions( + # export libipt symbols + # + /Dpt_export=__declspec\(dllexport\) + ) + endif (BUILD_SHARED_LIBS) include_directories( internal/include/windows ) - set(LIBIPT_FILES ${LIBIPT_FILES} src/windows/init.c) set(LIBIPT_SECTION_FILES ${LIBIPT_SECTION_FILES} src/windows/pt_section_windows.c) endif (CMAKE_HOST_WIN32) set(LIBIPT_FILES ${LIBIPT_FILES} ${LIBIPT_SECTION_FILES}) -add_library(libipt SHARED +add_library(libipt ${LIBIPT_FILES} ) @@ -167,6 +167,24 @@ add_ptunit_c_test(fetch src/pt_encoder.c src/pt_config.c ) +add_ptunit_c_test(encoder + src/pt_encoder.c + src/pt_config.c +) +add_ptunit_c_test(packet_decoder + src/pt_packet_decoder.c + src/pt_packet.c + src/pt_config.c + src/pt_sync.c + src/pt_decoder_function.c + src/pt_query_decoder.c + src/pt_event_queue.c + src/pt_last_ip.c + src/pt_tnt_cache.c + src/pt_time.c +) +add_ptunit_c_test(insn_decoder ${LIBIPT_FILES}) +add_ptunit_c_test(block_decoder ${LIBIPT_FILES}) add_ptunit_cpp_test(cpp) add_ptunit_libraries(cpp libipt) Modified: head/contrib/processor-trace/libipt/include/intel-pt.h ============================================================================== --- head/contrib/processor-trace/libipt/include/intel-pt.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/include/intel-pt.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -80,6 +80,7 @@ struct pt_block_decoder; /** The header version. */ #define LIBIPT_VERSION_MAJOR ${PT_VERSION_MAJOR} #define LIBIPT_VERSION_MINOR ${PT_VERSION_MINOR} +#define LIBIPT_VERSION_PATCH ${PT_VERSION_PATCH} #define LIBIPT_VERSION ((LIBIPT_VERSION_MAJOR << 8) + LIBIPT_VERSION_MINOR) @@ -92,8 +93,8 @@ struct pt_version { /** Minor version number. */ uint8_t minor; - /** Reserved bits. */ - uint16_t reserved; + /** Patch level. */ + uint16_t patch; /** Build number. */ uint32_t build; @@ -330,6 +331,16 @@ struct pt_errata { */ uint32_t apl11:1; + /** SKL168: Intel(R) PT CYC Packets Can be Dropped When Immediately + * Preceding PSB + * + * Due to a rare microarchitectural condition, generation of an Intel + * PT (Processor Trace) PSB (Packet Stream Boundary) packet can cause a + * single CYC (Cycle Count) packet, possibly along with an associated + * MTC (Mini Time Counter) packet, to be dropped. + */ + uint32_t skl168:1; + /* Reserve a few bytes for the future. */ uint32_t reserved[15]; }; @@ -348,13 +359,25 @@ struct pt_conf_flags { /** End a block after a jump instruction. */ uint32_t end_on_jump:1; + + /** Preserve timing calibration on overflow. */ + uint32_t keep_tcal_on_ovf:1; } block; /** Flags for the instruction flow decoder. */ struct { /** Enable tick events for timing updates. */ uint32_t enable_tick_events:1; + + /** Preserve timing calibration on overflow. */ + uint32_t keep_tcal_on_ovf:1; } insn; + + /** Flags for the query decoder. */ + struct { + /** Preserve timing calibration on overflow. */ + uint32_t keep_tcal_on_ovf:1; + } query; /* Reserve a few bytes for future extensions. */ uint32_t reserved[4]; Modified: head/contrib/processor-trace/libipt/include/intel-pt.h.in ============================================================================== --- head/contrib/processor-trace/libipt/include/intel-pt.h.in Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/include/intel-pt.h.in Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -80,6 +80,7 @@ struct pt_block_decoder; /** The header version. */ #define LIBIPT_VERSION_MAJOR ${PT_VERSION_MAJOR} #define LIBIPT_VERSION_MINOR ${PT_VERSION_MINOR} +#define LIBIPT_VERSION_PATCH ${PT_VERSION_PATCH} #define LIBIPT_VERSION ((LIBIPT_VERSION_MAJOR << 8) + LIBIPT_VERSION_MINOR) @@ -92,8 +93,8 @@ struct pt_version { /** Minor version number. */ uint8_t minor; - /** Reserved bits. */ - uint16_t reserved; + /** Patch level. */ + uint16_t patch; /** Build number. */ uint32_t build; @@ -330,6 +331,16 @@ struct pt_errata { */ uint32_t apl11:1; + /** SKL168: Intel(R) PT CYC Packets Can be Dropped When Immediately + * Preceding PSB + * + * Due to a rare microarchitectural condition, generation of an Intel + * PT (Processor Trace) PSB (Packet Stream Boundary) packet can cause a + * single CYC (Cycle Count) packet, possibly along with an associated + * MTC (Mini Time Counter) packet, to be dropped. + */ + uint32_t skl168:1; + /* Reserve a few bytes for the future. */ uint32_t reserved[15]; }; @@ -348,13 +359,25 @@ struct pt_conf_flags { /** End a block after a jump instruction. */ uint32_t end_on_jump:1; + + /** Preserve timing calibration on overflow. */ + uint32_t keep_tcal_on_ovf:1; } block; /** Flags for the instruction flow decoder. */ struct { /** Enable tick events for timing updates. */ uint32_t enable_tick_events:1; + + /** Preserve timing calibration on overflow. */ + uint32_t keep_tcal_on_ovf:1; } insn; + + /** Flags for the query decoder. */ + struct { + /** Preserve timing calibration on overflow. */ + uint32_t keep_tcal_on_ovf:1; + } query; /* Reserve a few bytes for future extensions. */ uint32_t reserved[4]; Modified: head/contrib/processor-trace/libipt/internal/include/posix/pt_section_posix.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/posix/pt_section_posix.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/posix/pt_section_posix.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2018, Intel Corporation + * Copyright (c) 2015-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_asid.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_asid.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_asid.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_block_cache.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_block_cache.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_block_cache.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018, Intel Corporation + * Copyright (c) 2016-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_block_decoder.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_block_decoder.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_block_decoder.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018, Intel Corporation + * Copyright (c) 2016-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_config.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_config.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_config.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2018, Intel Corporation + * Copyright (c) 2015-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_cpu.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_cpu.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_cpu.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_cpuid.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_cpuid.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_cpuid.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_decoder_function.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_decoder_function.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_decoder_function.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_encoder.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_encoder.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_encoder.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_event_queue.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_event_queue.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_event_queue.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_ild.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_ild.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_ild.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -96,11 +96,6 @@ static inline uint8_t pti_get_modrm_rm(const struct pt { return ild->modrm_byte & 7; } - -/* MAIN ENTRANCE POINTS */ - -/* one time call. not thread safe init. call when single threaded. */ -extern void pt_ild_init(void); /* all decoding is multithread safe. */ Modified: head/contrib/processor-trace/libipt/internal/include/pt_image.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_image.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_image.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_image_section_cache.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_image_section_cache.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_image_section_cache.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018, Intel Corporation + * Copyright (c) 2016-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_insn.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_insn.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_insn.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018, Intel Corporation + * Copyright (c) 2016-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_insn_decoder.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_insn_decoder.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_insn_decoder.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_last_ip.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_last_ip.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_last_ip.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_mapped_section.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_mapped_section.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_mapped_section.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_msec_cache.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_msec_cache.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_msec_cache.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018, Intel Corporation + * Copyright (c) 2017-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_opcodes.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_opcodes.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_opcodes.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_packet.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_packet.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_packet.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_packet_decoder.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_packet_decoder.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_packet_decoder.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_query_decoder.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_query_decoder.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_query_decoder.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_retstack.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_retstack.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_retstack.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_section.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_section.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_section.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -162,10 +162,15 @@ struct pt_section { * The returned section is not mapped and starts with a user count of one and * instruction caching enabled. * - * Returns a new section on success, NULL otherwise. + * Returns zero on success, a negative pt_error_code otherwise. + * Returns -pte_internal if @psection is NULL. + * Returns -pte_nomem when running out of memory. + * Returns -pte_bad_file if @filename cannot be opened. + * Returns -pte_invalid if @offset lies beyond @file. + * Returns -pte_invalid if @filename is too long. */ -extern struct pt_section *pt_mk_section(const char *file, uint64_t offset, - uint64_t size); +extern int pt_mk_section(struct pt_section **psection, const char *filename, + uint64_t offset, uint64_t size); /* Lock a section. * Modified: head/contrib/processor-trace/libipt/internal/include/pt_section_file.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_section_file.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_section_file.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_sync.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_sync.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_sync.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pt_time.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_time.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_time.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2018, Intel Corporation + * Copyright (c) 2014-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -166,6 +166,9 @@ struct pt_time_cal { /* A flag saying whether we have seen a MTC packet. */ uint32_t have_mtc:1; + + /* A flag saying whether we need to check for erratum SKL168. */ + uint32_t check_skl168:1; }; enum { @@ -227,6 +230,10 @@ extern int pt_tcal_update_mtc(struct pt_time_cal *, const struct pt_config *); extern int pt_tcal_update_cyc(struct pt_time_cal *, const struct pt_packet_cyc *, + const struct pt_config *); +extern int pt_tcal_update_psb(struct pt_time_cal *, + const struct pt_config *); +extern int pt_tcal_update_ovf(struct pt_time_cal *, const struct pt_config *); #endif /* PT_TIME_H */ Modified: head/contrib/processor-trace/libipt/internal/include/pt_tnt_cache.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pt_tnt_cache.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pt_tnt_cache.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pti-disp-defs.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pti-disp-defs.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pti-disp-defs.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pti-disp.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pti-disp.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pti-disp.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Added: head/contrib/processor-trace/libipt/internal/include/pti-disp_default.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/processor-trace/libipt/internal/include/pti-disp_default.h Thu Oct 10 12:46:34 2019 (r353390) @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2017-2019, Intel Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * 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. + */ + +#ifndef PTI_DISP_DEFAULT_H +#define PTI_DISP_DEFAULT_H + +#include + + +static const uint8_t disp_default[4][4][8] = { + /* Effective Addressing Mode: ptem_unknown. */ { + /* MOD: 0 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + }, + /* MOD: 1 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + }, + /* MOD: 2 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + }, + /* MOD: 3 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + } + }, + + /* Effective Addressing Mode: ptem_16bit. */ { + /* MOD: 0 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 2, + /* RM: 7 */ 0 + }, + /* MOD: 1 */ { + /* RM: 0 */ 1, + /* RM: 1 */ 1, + /* RM: 2 */ 1, + /* RM: 3 */ 1, + /* RM: 4 */ 1, + /* RM: 5 */ 1, + /* RM: 6 */ 1, + /* RM: 7 */ 1 + }, + /* MOD: 2 */ { + /* RM: 0 */ 2, + /* RM: 1 */ 2, + /* RM: 2 */ 2, + /* RM: 3 */ 2, + /* RM: 4 */ 2, + /* RM: 5 */ 2, + /* RM: 6 */ 2, + /* RM: 7 */ 2 + }, + /* MOD: 3 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + } + }, + + /* Effective Addressing Mode: ptem_32bit. */ { + /* MOD: 0 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 4, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + }, + /* MOD: 1 */ { + /* RM: 0 */ 1, + /* RM: 1 */ 1, + /* RM: 2 */ 1, + /* RM: 3 */ 1, + /* RM: 4 */ 1, + /* RM: 5 */ 1, + /* RM: 6 */ 1, + /* RM: 7 */ 1 + }, + /* MOD: 2 */ { + /* RM: 0 */ 4, + /* RM: 1 */ 4, + /* RM: 2 */ 4, + /* RM: 3 */ 4, + /* RM: 4 */ 4, + /* RM: 5 */ 4, + /* RM: 6 */ 4, + /* RM: 7 */ 4 + }, + /* MOD: 3 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + } + }, + + /* Effective Addressing Mode: ptem_64bit. */ { + /* MOD: 0 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 4, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + }, + /* MOD: 1 */ { + /* RM: 0 */ 1, + /* RM: 1 */ 1, + /* RM: 2 */ 1, + /* RM: 3 */ 1, + /* RM: 4 */ 1, + /* RM: 5 */ 1, + /* RM: 6 */ 1, + /* RM: 7 */ 1 + }, + /* MOD: 2 */ { + /* RM: 0 */ 4, + /* RM: 1 */ 4, + /* RM: 2 */ 4, + /* RM: 3 */ 4, + /* RM: 4 */ 4, + /* RM: 5 */ 4, + /* RM: 6 */ 4, + /* RM: 7 */ 4 + }, + /* MOD: 3 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + } + } +}; + +#endif /* PTI_DISP_DEFAULT_H */ Modified: head/contrib/processor-trace/libipt/internal/include/pti-imm-defs.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pti-imm-defs.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pti-imm-defs.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pti-imm.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pti-imm.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pti-imm.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pti-modrm-defs.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pti-modrm-defs.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pti-modrm-defs.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Modified: head/contrib/processor-trace/libipt/internal/include/pti-modrm.h ============================================================================== --- head/contrib/processor-trace/libipt/internal/include/pti-modrm.h Thu Oct 10 12:20:25 2019 (r353389) +++ head/contrib/processor-trace/libipt/internal/include/pti-modrm.h Thu Oct 10 12:46:34 2019 (r353390) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2018, Intel Corporation + * Copyright (c) 2013-2019, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: Added: head/contrib/processor-trace/libipt/internal/include/pti-sib.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/processor-trace/libipt/internal/include/pti-sib.h Thu Oct 10 12:46:34 2019 (r353390) @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2017-2019, Intel Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * 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. + */ + +#ifndef PTI_SIB_H +#define PTI_SIB_H + +#include + + +static const uint8_t has_sib[4][4][8] = { + /* Effective Addressing Mode: ptem_unknown. */ { + /* MOD: 0 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + }, + /* MOD: 1 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + }, + /* MOD: 2 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + }, + /* MOD: 3 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 + } + }, + + /* Effective Addressing Mode: ptem_16bit. */ { + /* MOD: 0 */ { + /* RM: 0 */ 0, + /* RM: 1 */ 0, + /* RM: 2 */ 0, + /* RM: 3 */ 0, + /* RM: 4 */ 0, + /* RM: 5 */ 0, + /* RM: 6 */ 0, + /* RM: 7 */ 0 *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***