From patchwork Wed Aug 29 12:41:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viktor Prutyanov X-Patchwork-Id: 963434 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="iYEkSoVU"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 420llb2zFzz9ryn for ; Wed, 29 Aug 2018 22:47:55 +1000 (AEST) Received: from localhost ([::1]:42939 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuzt3-0000Ta-2Q for incoming@patchwork.ozlabs.org; Wed, 29 Aug 2018 08:47:53 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42924) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuzpA-00069q-UT for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:43:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fuznk-000315-SB for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:42:28 -0400 Received: from mail-eopbgr40138.outbound.protection.outlook.com ([40.107.4.138]:19424 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fuznk-0002zG-Fq for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:42:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yqrgcIBrHXK+JyEyeeExLKypeExnFuxUQQE3Tjl5o0U=; b=iYEkSoVU+1V5AyCD3TIsIF/psg/O/RZ1N4S3N3+5uiW9e7RKV/HeBJDhtOvbTFnl0J0fTJJ7W6yj6qVEc9OidHSx1FDYZgVabG+825rhTg1TCk8I0I4OPAshzEVWHx1vKLUK9d3d27Mak7PCVHJIdWKz5jBl+laZELYCvBqwsdI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=viktor.prutyanov@virtuozzo.com; Received: from vp-pc.sw.ru (185.231.240.5) by DB7PR08MB3611.eurprd08.prod.outlook.com (2603:10a6:10:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Wed, 29 Aug 2018 12:42:21 +0000 From: Viktor Prutyanov To: qemu-devel@nongnu.org Date: Wed, 29 Aug 2018 15:41:24 +0300 Message-Id: <1535546488-30208-2-git-send-email-viktor.prutyanov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535546488-30208-1-git-send-email-viktor.prutyanov@virtuozzo.com> References: <1535546488-30208-1-git-send-email-viktor.prutyanov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [185.231.240.5] X-ClientProxiedBy: AM5PR0102CA0003.eurprd01.prod.exchangelabs.com (2603:10a6:206::16) To DB7PR08MB3611.eurprd08.prod.outlook.com (2603:10a6:10:4a::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 403611d9-911a-4f26-a833-08d60dacdd3d X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:DB7PR08MB3611; X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 3:tlAn/qNkRkrwBOW8swdy8cbWE2TJ8G2STcQ+YdaYY+cX/Db0I+0Ysf8EXAHj1RppKwtxTM3Z9ZK7OU258hhTpoKPvY55RKyoM4sdhd45KEYuTbdBbAiY4WpSdqt7doCy+Bh36KoqK0sxLs+7pBBSC405WJXTsNeMR+1aAWUbo2pH9I85Dmw1YFuYYXnG+fdF2RaO2XFLwWRDrwk5MZ9Koz/00XE71Yecm1jjolpponQFQ534eYpRVPeh1Gc651jq; 25:He0kOGe+e9aMunEA00m9wLzIXIQrA/MM3yqHLpU1l3SxnzbB0xmYI6PtUKOqBftNDw91k4PEXeEVmdpLMrlUDzdTj0qND+ghP+mJKui0azpZPmABIbrXRbZNHL3WwuKzVxU8YnxFZdu2uYqMW+bcMIkGnGqwhZZMYpfE89Ek40AITTYvbIHpEAxamjXrlf+Tp89zRhD+qg/MLLTCIF3XL3fSOthC9zZCLY1Sw5SDhs5pj52E6IqiSaAMP/icuQ+uoSEe5flIdR7tr8Lgn5f0WJPRPFU/uacMy8I/K17KYwpPIBu9oUtv5M8m1fvs0HrSx7BzX6TjhkAvstr/5pWpfw==; 31:O7hA4c5jyGYde0jMoMk5QN8EkH7AtdUV1uIHwp989XFpgkPt2rqLcADMdU6VxS0EZfx/52C4PE931Kv1np2j293Jmz+1DS+nY77eAGRAlW/WSDvvNyb8gM6VL382QbDG5k3f8jyIiv4RwKrVOjnpDUmOIpjWp89YVuBttR1SRHXJ461KaYIplNrLDn/QI37gmfN7l7nfah8rNrmcvsq5niWoTKS9WhES0jpIXRnPc9U= X-MS-TrafficTypeDiagnostic: DB7PR08MB3611: X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 20:/n+TCTeWQ7tm1ODaa9c4PKgSG8rYo3db1yiQ3x8DgdxDWOz8CrY8kZbz/tHalNpZ0dxswGvERYBOhJmS2+AZvEF5d9hYUG0wA8zGlQRI/vS8PPLz38+xr48w398peTsdCOo1JFaKtYk8ECSIKFwgYiHOJ75vrblUBXZsIbZoqBzYTsfyaNIDmbcMvPqbVDGdBnI+m/2IRPi8u9Aowvmpy1c+8BxkUH/GOY7Hwf/bfZAONA7Ltuz34P4cKnUMpZjYDjQ5JgwTxyv4JU/rvRWX7EohiMZfRsxTuz1ZJcMeqo7DU19OjzBVnf3NDNHVuePojvWWHRRsy1d9e/u1Z5vz3+ujuIGlLeuxt2HNVFbE7uHS9QPwF6pAw2ilRxs7jbPl6g7KIFRVSs9SFeOLd81guREeFSS2+W9MZ9I9UbXbDk+pmV5hw6tBfsAuOxKfIqdElT//9Wxxva1DwHkxMvXrWx8X5TIfwoNTAJOwdrS6Zrv3/YilibJMUyIRCXH5+R0v; 4:EVhzaxX7ojF3r2s/d0jCBfTlPvR2n/z6CXt7RVIgS0G+Pd+MM+dTfpYU4j89e+XuwrFoqt70TEOLbQ8w7yOm0HGkIbfZakqvK0jiWs3DSVjQUdCvEWaVH6onc5Fkp6s517LrQ21CR7F5+96GPtoX20D6mewzadDU66uCYXahMcgjAdcQaSDztujP2v8yRvkoKWNllWt2lxZeWyK644r1IH7bwEk934jPgwqZBZe6HPWBTxlXMVeplwqI/dwMDtqe9RM9PtKm+ywwEqw2pCoyMQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201708071742011)(7699016); SRVR:DB7PR08MB3611; BCL:0; PCL:0; RULEID:; SRVR:DB7PR08MB3611; X-Forefront-PRVS: 077929D941 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39840400004)(396003)(136003)(346002)(376002)(366004)(189003)(199004)(51416003)(97736004)(45954006)(5660300001)(105586002)(50226002)(25786009)(76176011)(4326008)(386003)(6506007)(6512007)(68736007)(53416004)(6486002)(2906002)(52116002)(69596002)(53936002)(107886003)(19627235002)(8676002)(36756003)(81156014)(48376002)(8936002)(50466002)(16586007)(956004)(81166006)(2361001)(6916009)(446003)(478600001)(2616005)(11346002)(86362001)(3846002)(486006)(26005)(186003)(316002)(16526019)(476003)(305945005)(106356001)(47776003)(66066001)(6116002)(44832011)(2351001)(7736002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB7PR08MB3611; H:vp-pc.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR08MB3611; 23:gJXDp05LUrFE1++rxQczRRwcl7rFqLuaUaPf6ghr0?= CUdoAea9M0NY+AokAeVmv4TfteCYwIHSpOMu1RZ66lZFcK7MUVUH8T/i3lD9Izyte92gxeVWq6HMx+cO8Yc9RqK7RJeQRPKhlTAyQ4oEJ3nEiEoLMZLy0m6Bxkxuh1UqXNZYYwQdVv9Xe+84QhcvBkU1c+/SJN3D6ACu4OIF7+A8NtfcPJV+STnGCYsRoWqSz5QMWyKWNcZO56r80kcqZixsONuNmKVEKINk9ba63EVtQePIMiHgdk/EMD+ARInpnd4j+a8ZTaOoaPrtai5RM1+b6oB0KswUZ9Zu2R7y+fZ6vk6LR5mxt5r5aZjULGEv6ZALURCzlt8kvsjfytQMhLvBtPAxwalLjz/Hj6RSS4+9/9+Kljj8SCCgXXrLu6rKo+ARkcPR07tRHRR9LCfkVdZtB49soU65bFrSbpc7ujVipZBiJKUjFgKT+YrQm+Y8LOkpJv00NzmzL8cFcVxOBL8WsQlewr7jtVsKzv9P06PkeoVWhJpuoZrF79Jr+gsdQH19ERIfX5983TfdLxb0XKsyuLVBwwWSJ99kzykyI9zjpryY3wajZacvpQkZ1uF9zLJm0qvStH/iAu+kfQYz4wgZLEUhxNbjsAFvStUm2aj8vNAXpULzzegxDOUeuPXEradgPiqC7/93dnpX7wx3gJFywOWJUygZXnzloYC+VLvydMJbaqhRyTxTT0ltEroE8zZLegTSoaflPZYWXPVg4aNMkIsQWtq2if6524LMNGQ46/OW4iLgxhn+vyjNAIDzIGYuQ0oVa93HYp37gss5+1j/jkjuwGGi9oubyzVbgzmqb6W2UoIqtY/lC+CH7a1dhQu3PcVNfvZETMFmLx/mYdwfGp6Rf0eqU6Xp/JiY2hMj4kkD/gpls6LQY7z9WHUBROG76gkTH4bRHN1h8Omi1RpOT8fg0HhPB8oqqKMY/lrK+UCCv8uyCbEhmoOQyGURmB1TTitm9wYfzbU9e3g2NEcajJOXSAKQGtmUjC6m2yXJ+M172dot4hmxwFBu28NYRMXCm37l4OPIWmydh7oErVXThXCA/DdYP96LM+gvneceYgq8dQhirb7Or3w0EyhK+uXVgph4kPgAD39YIyQpH4lEkXF1z9iBjTcULriiGzlym9JHfDHgT9YsUctSs4hJmsk43IrS00GcSdU4fisVEP6MpZI2P4vYT+0qVefynk0xhaNUyJj++GjKT7fUimI94g3abRkwtbfbqCqO7kIq1N82VL/VynKM0dr8ShGIHeo83RrPLF2t7ZQXSWzhpU03ocKoquozekMfxIqLEgIJMNv/T2NwUlpaP1DhkD33jgoAg== X-Microsoft-Antispam-Message-Info: 9KzP8A7QplLADmy28vCbmhXsYh9iNbVRdxMxRv0RKc+xk9ZD0F1Dpm5ItE7ksOfn6T2qT/IopAgPbHXh0CfeeB+oj7iO7BqfwaYIqG1lVLDveg00akkJgtu6Env0B2fUGbZXkBS6qDDX4bpDkM38Oslb/6xswfyZRtwq6tFQTeMiNV74CqLj1gi3HAUaAsFlLrHZl4Hk4enf9R4zXw5eaCYNPN5SWRLvz8m1WPBkVwshmITOQlOmTkKuR+x+7xcxXLzDcsBX7lkMdB1H8lL89IuXSQ8ZzvM9k9AXilOMIoGgZpX59QDoOsbOPiqu/Ja3ud8MCzhqTToInoOFAMSB9pabCnzH6R3Gw0+l7u4Yby0= X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 6:URjSwbD9WtLSZ4oiFaG98JLnhm4ghaN0qzQja+9VzWdF6uY0TfWE3ztbkdbxT4pNPEGpciJP7/S38pVrn6mzsLX0/OW5oDoZf24EhlEyGeUURvf+7A5Egn9/UITEGSnjJBnrA0C1yrQCgnGI2IhIknJxxXLbd8SpEYk+mO3jSVvD+tIw+8is1NIpR4k4ic8xcUhP/YmEds/7ozxjhj3AWzuAwDSZVczzsStgR1X9zBjjLQK5pSzMIeUXpM4KLDvfCgP+qr6Arc/5y+KvRRAjlKXA/k7oArpLhBiHeu0Dbeqt0GQ7vGdPF0AadF7lqq6b945idZ103WU1J9588Plkfethqn2mWAXe9u5JE184cre4Rn7ANTwyGr6Xkdg9whHJrTx0H2Hzlq8is+MXTA3wSiLsfC6KHuoTPJ6GGuk2wRSAXWU4Crr0Ijs0dFF8KZKKE5Nsf7SKM5kwfkti3G4iPw==; 5:Cvtx0s5xMEmW8w3Twa0Xph+KHNw2ioP0/Hs/j4HWloH1XuH0ltBbZpbdrpla5q9OzSvpBNSC+1AkP518qKSEEmgMcKlosriW4yy3dhERKzziNhjY8rxLR+rW6VQx1iibR+qNaUjweqTtnGLZN0kbe2olgTLlJm5zTqE6UrphAu8=; 7:EHrBNLJkU/J8DeD9yHNrU5PmhrAkKMEP9vXqTV/scikDlEo6nNTJ4PKfat8wUaMj6LuqUQvxp+07H/kY9KxH1OeSastGS1hwRAglBMaxHibic9dZgl9w2Zt94tziWYgWZ4MwySNjlVoXjQXOAJKpC/P1gIKE0gF3jEgcx03pbZS+yLtLd9HS3vJTCclczRoYvkPjoniYUQq/vBBqs1pMX11tOUEbIM6opqbZ8nPVf2qW8s95Q3vCT1AEd71gLRoj SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 20:cyt8EKVu29B36Lx6Asak8I2w2h+jfjsJCcR8nCwPUIhCKEfovM/kY8+3/mrEs9RcvJGgRPJxxUeUHheUd2f1uk60LWp1q+5SVZclPEboel6KSLi1Ti3GnR9P1IJsEf04PSW0MzmhC2g8LjTb1ZaZ07Guvvsgbv7eheaDchoe4Qw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2018 12:42:21.0595 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 403611d9-911a-4f26-a833-08d60dacdd3d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3611 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.138 Subject: [Qemu-devel] [PATCH 1/5] dump: move Windows dump structures definitions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: viktor.prutyanov@phystech.edu, armbru@redhat.com, dgilbert@redhat.com, Viktor Prutyanov , rkagan@virtuozzo.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This patch moves definitions of Windows dump structures to include/qemu/win_dump_defs.h to keep create_win_dump() prototype separate. Signed-off-by: Viktor Prutyanov --- include/qemu/win_dump_defs.h | 179 +++++++++++++++++++++++++++++++++++++++++++ win_dump.h | 166 +-------------------------------------- 2 files changed, 183 insertions(+), 162 deletions(-) create mode 100644 include/qemu/win_dump_defs.h diff --git a/include/qemu/win_dump_defs.h b/include/qemu/win_dump_defs.h new file mode 100644 index 0000000..145096e --- /dev/null +++ b/include/qemu/win_dump_defs.h @@ -0,0 +1,179 @@ +/* + * Windows crashdump definitions + * + * Copyright (c) 2018 Virtuozzo International GmbH + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_WIN_DUMP_DEFS_H +#define QEMU_WIN_DUMP_DEFS_H + +typedef struct WinDumpPhyMemRun64 { + uint64_t BasePage; + uint64_t PageCount; +} QEMU_PACKED WinDumpPhyMemRun64; + +typedef struct WinDumpPhyMemDesc64 { + uint32_t NumberOfRuns; + uint32_t unused; + uint64_t NumberOfPages; + WinDumpPhyMemRun64 Run[43]; +} QEMU_PACKED WinDumpPhyMemDesc64; + +typedef struct WinDumpExceptionRecord { + uint32_t ExceptionCode; + uint32_t ExceptionFlags; + uint64_t ExceptionRecord; + uint64_t ExceptionAddress; + uint32_t NumberParameters; + uint32_t unused; + uint64_t ExceptionInformation[15]; +} QEMU_PACKED WinDumpExceptionRecord; + +typedef struct WinDumpHeader64 { + char Signature[4]; + char ValidDump[4]; + uint32_t MajorVersion; + uint32_t MinorVersion; + uint64_t DirectoryTableBase; + uint64_t PfnDatabase; + uint64_t PsLoadedModuleList; + uint64_t PsActiveProcessHead; + uint32_t MachineImageType; + uint32_t NumberProcessors; + union { + struct { + uint32_t BugcheckCode; + uint32_t unused0; + uint64_t BugcheckParameter1; + uint64_t BugcheckParameter2; + uint64_t BugcheckParameter3; + uint64_t BugcheckParameter4; + }; + uint8_t BugcheckData[40]; + }; + uint8_t VersionUser[32]; + uint64_t KdDebuggerDataBlock; + union { + WinDumpPhyMemDesc64 PhysicalMemoryBlock; + uint8_t PhysicalMemoryBlockBuffer[704]; + }; + union { + uint8_t ContextBuffer[3000]; + }; + WinDumpExceptionRecord Exception; + uint32_t DumpType; + uint32_t unused1; + uint64_t RequiredDumpSpace; + uint64_t SystemTime; + char Comment[128]; + uint64_t SystemUpTime; + uint32_t MiniDumpFields; + uint32_t SecondaryDataState; + uint32_t ProductType; + uint32_t SuiteMask; + uint32_t WriterStatus; + uint8_t unused2; + uint8_t KdSecondaryVersion; + uint8_t reserved[4018]; +} QEMU_PACKED WinDumpHeader64; + +#define KDBG_OWNER_TAG_OFFSET64 0x10 +#define KDBG_MM_PFN_DATABASE_OFFSET64 0xC0 +#define KDBG_KI_BUGCHECK_DATA_OFFSET64 0x88 +#define KDBG_KI_PROCESSOR_BLOCK_OFFSET64 0x218 +#define KDBG_OFFSET_PRCB_CONTEXT_OFFSET64 0x338 + +#define VMCOREINFO_ELF_NOTE_HDR_SIZE 24 + +#define WIN_CTX_X64 0x00100000L + +#define WIN_CTX_CTL 0x00000001L +#define WIN_CTX_INT 0x00000002L +#define WIN_CTX_SEG 0x00000004L +#define WIN_CTX_FP 0x00000008L +#define WIN_CTX_DBG 0x00000010L + +#define WIN_CTX_FULL (WIN_CTX_X64 | WIN_CTX_CTL | WIN_CTX_INT | WIN_CTX_FP) +#define WIN_CTX_ALL (WIN_CTX_FULL | WIN_CTX_SEG | WIN_CTX_DBG) + +#define LIVE_SYSTEM_DUMP 0x00000161 + +typedef struct WinM128A { + uint64_t low; + int64_t high; +} QEMU_ALIGNED(16) WinM128A; + +typedef struct WinContext { + uint64_t PHome[6]; + + uint32_t ContextFlags; + uint32_t MxCsr; + + uint16_t SegCs; + uint16_t SegDs; + uint16_t SegEs; + uint16_t SegFs; + uint16_t SegGs; + uint16_t SegSs; + uint32_t EFlags; + + uint64_t Dr0; + uint64_t Dr1; + uint64_t Dr2; + uint64_t Dr3; + uint64_t Dr6; + uint64_t Dr7; + + uint64_t Rax; + uint64_t Rcx; + uint64_t Rdx; + uint64_t Rbx; + uint64_t Rsp; + uint64_t Rbp; + uint64_t Rsi; + uint64_t Rdi; + uint64_t R8; + uint64_t R9; + uint64_t R10; + uint64_t R11; + uint64_t R12; + uint64_t R13; + uint64_t R14; + uint64_t R15; + + uint64_t Rip; + + struct { + uint16_t ControlWord; + uint16_t StatusWord; + uint8_t TagWord; + uint8_t Reserved1; + uint16_t ErrorOpcode; + uint32_t ErrorOffset; + uint16_t ErrorSelector; + uint16_t Reserved2; + uint32_t DataOffset; + uint16_t DataSelector; + uint16_t Reserved3; + uint32_t MxCsr; + uint32_t MxCsr_Mask; + WinM128A FloatRegisters[8]; + WinM128A XmmRegisters[16]; + uint8_t Reserved4[96]; + } FltSave; + + WinM128A VectorRegister[26]; + uint64_t VectorControl; + + uint64_t DebugControl; + uint64_t LastBranchToRip; + uint64_t LastBranchFromRip; + uint64_t LastExceptionToRip; + uint64_t LastExceptionFromRip; +} QEMU_ALIGNED(16) WinContext; + +#endif /* QEMU_WIN_DUMP_DEFS_H */ diff --git a/win_dump.h b/win_dump.h index f9e1faf..b8c2534 100644 --- a/win_dump.h +++ b/win_dump.h @@ -8,169 +8,11 @@ * */ -typedef struct WinDumpPhyMemRun64 { - uint64_t BasePage; - uint64_t PageCount; -} QEMU_PACKED WinDumpPhyMemRun64; +#ifndef WIN_DUMP_H +#define WIN_DUMP_H -typedef struct WinDumpPhyMemDesc64 { - uint32_t NumberOfRuns; - uint32_t unused; - uint64_t NumberOfPages; - WinDumpPhyMemRun64 Run[43]; -} QEMU_PACKED WinDumpPhyMemDesc64; - -typedef struct WinDumpExceptionRecord { - uint32_t ExceptionCode; - uint32_t ExceptionFlags; - uint64_t ExceptionRecord; - uint64_t ExceptionAddress; - uint32_t NumberParameters; - uint32_t unused; - uint64_t ExceptionInformation[15]; -} QEMU_PACKED WinDumpExceptionRecord; - -typedef struct WinDumpHeader64 { - char Signature[4]; - char ValidDump[4]; - uint32_t MajorVersion; - uint32_t MinorVersion; - uint64_t DirectoryTableBase; - uint64_t PfnDatabase; - uint64_t PsLoadedModuleList; - uint64_t PsActiveProcessHead; - uint32_t MachineImageType; - uint32_t NumberProcessors; - union { - struct { - uint32_t BugcheckCode; - uint32_t unused0; - uint64_t BugcheckParameter1; - uint64_t BugcheckParameter2; - uint64_t BugcheckParameter3; - uint64_t BugcheckParameter4; - }; - uint8_t BugcheckData[40]; - }; - uint8_t VersionUser[32]; - uint64_t KdDebuggerDataBlock; - union { - WinDumpPhyMemDesc64 PhysicalMemoryBlock; - uint8_t PhysicalMemoryBlockBuffer[704]; - }; - union { - uint8_t ContextBuffer[3000]; - }; - WinDumpExceptionRecord Exception; - uint32_t DumpType; - uint32_t unused1; - uint64_t RequiredDumpSpace; - uint64_t SystemTime; - char Comment[128]; - uint64_t SystemUpTime; - uint32_t MiniDumpFields; - uint32_t SecondaryDataState; - uint32_t ProductType; - uint32_t SuiteMask; - uint32_t WriterStatus; - uint8_t unused2; - uint8_t KdSecondaryVersion; - uint8_t reserved[4018]; -} QEMU_PACKED WinDumpHeader64; +#include "qemu/win_dump_defs.h" void create_win_dump(DumpState *s, Error **errp); -#define KDBG_OWNER_TAG_OFFSET64 0x10 -#define KDBG_MM_PFN_DATABASE_OFFSET64 0xC0 -#define KDBG_KI_BUGCHECK_DATA_OFFSET64 0x88 -#define KDBG_KI_PROCESSOR_BLOCK_OFFSET64 0x218 -#define KDBG_OFFSET_PRCB_CONTEXT_OFFSET64 0x338 - -#define VMCOREINFO_ELF_NOTE_HDR_SIZE 24 - -#define WIN_CTX_X64 0x00100000L - -#define WIN_CTX_CTL 0x00000001L -#define WIN_CTX_INT 0x00000002L -#define WIN_CTX_SEG 0x00000004L -#define WIN_CTX_FP 0x00000008L -#define WIN_CTX_DBG 0x00000010L - -#define WIN_CTX_FULL (WIN_CTX_X64 | WIN_CTX_CTL | WIN_CTX_INT | WIN_CTX_FP) -#define WIN_CTX_ALL (WIN_CTX_FULL | WIN_CTX_SEG | WIN_CTX_DBG) - -#define LIVE_SYSTEM_DUMP 0x00000161 - -typedef struct WinM128A { - uint64_t low; - int64_t high; -} QEMU_ALIGNED(16) WinM128A; - -typedef struct WinContext { - uint64_t PHome[6]; - - uint32_t ContextFlags; - uint32_t MxCsr; - - uint16_t SegCs; - uint16_t SegDs; - uint16_t SegEs; - uint16_t SegFs; - uint16_t SegGs; - uint16_t SegSs; - uint32_t EFlags; - - uint64_t Dr0; - uint64_t Dr1; - uint64_t Dr2; - uint64_t Dr3; - uint64_t Dr6; - uint64_t Dr7; - - uint64_t Rax; - uint64_t Rcx; - uint64_t Rdx; - uint64_t Rbx; - uint64_t Rsp; - uint64_t Rbp; - uint64_t Rsi; - uint64_t Rdi; - uint64_t R8; - uint64_t R9; - uint64_t R10; - uint64_t R11; - uint64_t R12; - uint64_t R13; - uint64_t R14; - uint64_t R15; - - uint64_t Rip; - - struct { - uint16_t ControlWord; - uint16_t StatusWord; - uint8_t TagWord; - uint8_t Reserved1; - uint16_t ErrorOpcode; - uint32_t ErrorOffset; - uint16_t ErrorSelector; - uint16_t Reserved2; - uint32_t DataOffset; - uint16_t DataSelector; - uint16_t Reserved3; - uint32_t MxCsr; - uint32_t MxCsr_Mask; - WinM128A FloatRegisters[8]; - WinM128A XmmRegisters[16]; - uint8_t Reserved4[96]; - } FltSave; - - WinM128A VectorRegister[26]; - uint64_t VectorControl; - - uint64_t DebugControl; - uint64_t LastBranchToRip; - uint64_t LastBranchFromRip; - uint64_t LastExceptionToRip; - uint64_t LastExceptionFromRip; -} QEMU_ALIGNED(16) WinContext; +#endif /* WIN_DUMP_H */ From patchwork Wed Aug 29 12:41:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viktor Prutyanov X-Patchwork-Id: 963431 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="iGWntMyi"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 420lgr4D9Vz9s4V for ; Wed, 29 Aug 2018 22:44:40 +1000 (AEST) Received: from localhost ([::1]:42916 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuzpt-0006VV-Vr for incoming@patchwork.ozlabs.org; Wed, 29 Aug 2018 08:44:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60495) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuzp9-0006PJ-0S for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:43:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fuznl-00031T-An for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:42:28 -0400 Received: from mail-eopbgr40138.outbound.protection.outlook.com ([40.107.4.138]:19424 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fuznl-0002zG-1A for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:42:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ckweS43SNqDNmsQtVP1aDLlDzG8i8zi/9xVwmlB4KEI=; b=iGWntMyieJ9GkBZ9WjGhhnP9wTweSGjV/6b8nf3F45MpIf4Vunpf3qxapjUId5uILSaiNF6x6UyZqWj88NwKIhadOQdv5wFqIBmqFT7/ud92y1HNlBwv5XYnKDddHBOEP3oN4qiAx6dEQjLEiLPIdtNdruqkgreQQtg0vHW2Dig= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=viktor.prutyanov@virtuozzo.com; Received: from vp-pc.sw.ru (185.231.240.5) by DB7PR08MB3611.eurprd08.prod.outlook.com (2603:10a6:10:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Wed, 29 Aug 2018 12:42:23 +0000 From: Viktor Prutyanov To: qemu-devel@nongnu.org Date: Wed, 29 Aug 2018 15:41:26 +0300 Message-Id: <1535546488-30208-4-git-send-email-viktor.prutyanov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535546488-30208-1-git-send-email-viktor.prutyanov@virtuozzo.com> References: <1535546488-30208-1-git-send-email-viktor.prutyanov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [185.231.240.5] X-ClientProxiedBy: AM5PR0102CA0003.eurprd01.prod.exchangelabs.com (2603:10a6:206::16) To DB7PR08MB3611.eurprd08.prod.outlook.com (2603:10a6:10:4a::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1aba4bc5-30a9-4d89-d471-08d60dacde8d X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:DB7PR08MB3611; X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 3:yvtvf8XEJW6gRcZC6I6P0vubzT4Tc0yO0BFPO+vhU2Jc33r2prSn3vf0cHvrBC4ggCJAck7sRrya+uvq2K7ebpVdO2cRVCi7g4tBTy6jv4eoZoI6+7FtTEDZPh3s9cnPYklHPIzypN3mAElBvjL+IXQT6Hz0lo2RLWPhMkxOTMki+HpjH7xpyJzxy17RHdq62KBMBhjkg+NyULqOL2h8yj2Xo9LEucKrIoZC59Tv4qrdp/kIcjJtAZaBmsDr4lOa; 25:pTXOzC8Kh5CzkI7VoCcsRhfKH22kp7aBrrWMoilU0UBbHal0lF0sgGBcSgQcgL1wemSxeDPThMy01GaF1UOpv/+Xs9kHl0/sRPqhghs1HwDApo6G4NQ/VC33J2pOtmjnUF+0U1P6Kp4B19DA9jB2oA4tqRx41t+fvzK0pykHK9CArichy3Evw4fsIg8hP7EnsogtzkMTf3jd42PTNa9auoIwQpMbRjRZrpESkGCvjU1BFc5mI+pE1i8+2lq3xxmiC+RBt/yhGZNcHHS/NsNmKffgJZWA7WByiU5+TZvgBf6nNwjzSaTN53/OSI9gEGoByjlL0DCJaYW72/lpP+mkyA==; 31:TWs2IDoH1vQU2cNo283wZcn1rU83a78mSBZA1X4NUsmlB24E6FzkLlFn5oOa0gssFFCDSBIQRN9X3kaBB/xQFp+mn8kQV6kV1E/ukGULMvh9g1lY7Z3bgVowKMyda6MxcQFY3Yp5SDuUWh6lD9rJL2Szurrp6qZ0OWfOxIS0vJ56hnyQ6uujnI0PahFimDF3yRvO4xrQzcyx198q6HqU7pZo54b+fz7BT9NqCz0uoP0= X-MS-TrafficTypeDiagnostic: DB7PR08MB3611: X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 20:VVEsx9m6oCkmdYPOC1ICXwj6Gckl4sOr2BeW5GFWrf5BCLD8llnK35303U/MPXVs5vcu9e53NLUWz2DugBKwHxoMTAM8C16RcfmgZzhIqrc7rpeuB8TXkaOMI0b8lLTjxnKaI21E7CSv33DxLTIG8WiAZE8gxImtCQ7BtD1opPoG7lTK8wLhsGq1Q869NJwkK53k0L3fUGJPuhJz/yEsv0/J4dA+W/cZsU/HKPNL7c2ZM9+I2gdi1BLamHo18ajEuBvkc+cckua6o81vt//DW6TuoEQBIaSQNpRFUkm4FR+sKNQ0+YD7U89EyH0IRQ370XeFilPilEGqd6jsCJ4CCsQayEBE3TTTVC/GvarINqDk+DqSbdfNkGmix0WVnqqy6w4qSXcpIOF4KJvmjC/l4/3ws4XyRsFR0NQtMJ41Dj5ectJ9I2rmtCsxpmoBUVSKa5k/xNMZ8lvSzG8FdX2SIFLuWCcLv9JAtdG37coHznvsD326cp6PveiDBkWNr356; 4:suQyiv6y4/5HikdEu4Z6ln5Tj3xNro8VEVMl0ysptFSHRSAgTrG4wjiWyi+JjyBE64KLmgkKc8eDh+bqver7jz5HU6zzILm8+MnLUOq6XMXB1YSwM0UXTnI86kN8JWkngaUpqe7xBVv4DobK7KjIcs6J3YiO8ism9UXSM67SxoO2hBk0MadhhcnSVof3/YLG/nkfcDOYziBcJKYRKr3SYc0Yt7CT1G1B4E+q4I0X82k3I7KRXIsBDduyV6BgMx7CJqEKxfuIFZqpU/j5b7Lz7Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201708071742011)(7699016); SRVR:DB7PR08MB3611; BCL:0; PCL:0; RULEID:; SRVR:DB7PR08MB3611; X-Forefront-PRVS: 077929D941 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39840400004)(396003)(136003)(346002)(376002)(366004)(189003)(199004)(51416003)(97736004)(14444005)(5660300001)(105586002)(50226002)(25786009)(76176011)(4326008)(386003)(6506007)(6512007)(68736007)(53416004)(6486002)(2906002)(52116002)(69596002)(53936002)(107886003)(8676002)(36756003)(81156014)(48376002)(8936002)(50466002)(16586007)(956004)(81166006)(2361001)(6916009)(446003)(478600001)(2616005)(11346002)(86362001)(3846002)(486006)(26005)(186003)(316002)(16526019)(476003)(305945005)(106356001)(47776003)(66066001)(6116002)(44832011)(2351001)(7736002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB7PR08MB3611; H:vp-pc.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR08MB3611; 23:Bynj4FCkYRCeCQSi8WlGPL7qO7N6enUfI9G0k5OC8?= 7oOJTnD0sBkkzDgKtYDRUQAXbx+6skL6WQPS9EPKoOcPjJrU1Fui7fzBxUIKXQLjliBP6i5bfoQCjwq/ABIFCAygdC7GSlGYpjfwcotdC2C/Fr0h3h1TniHFZZrGgkOVdh5mJKPMkB6iYtGHGrdC5ZPrOWihLPr9AJGyx7RFxvV36JF+i6R5CjIunIyYBdeNQ3ZDzMDSIu49CG+btqbAN10WWGawfFEwpiHukwxTLc/bHgXwi4ERbU0e9FVsqJY4b0ccI95qGqG+gTF/HhQRuhiLbW5uOkQmlh5uSUdifpxlqRYMZagHc4m2z/TGoBQR1cboxzT4g7x9lfk7tqGXhmOrUls6dhVDrqHLRcxV30AQMl2tqrtJ7vbJbfNqjV8oyj4f9Alba4bOCK2E7jiX4oJDTwSKzp6VQdhKCKaoc8nd2sskXR1zp3abOZMV1qJTCjqT9kfbIf64TFSpm7atE3cPe7/tRrRXA3t5uKM4ctfwIXtLlF6yjERkULPKKtC6IW4I//lqGGetNTJ7NisY+eWJbTMMEsS6XjldMZgOWZD0Gr+IIV8mHw6LLg9NAwDdV4Z5pBROgD1C2B25qKexdkov3uJOy52+8UzoTKdoQlkmLQIqujV7My/uxnhVRjd+9A+igqd4s5vTqT/cVc9nOiE04kD7XTPsrCAnVM//dCGJMc1QBIlahFNypyDSu9yEz3Mcvbo45lEBTfTOOR3d7oc0CiLy/jDEEDrqDHQDxLUjGKkhP4SDI7ZnW8+3YMtE/85FH6pRHCx+ACNSzpxibdu0k8JOOe+1Wqs6Jw0xx/HEO/f0PC5D6XlqpMAhglhVuNU/mgUIcKw+GRfo6RIVGQNtJa8LeAE74ayujUAmvKyimywp3cjII95aS2VeYNuROPHUr/dhe1DECUaOfjp1kaE/8tV5ac+DjcilFP2Iu8Q8j45qDT+kmRkU+ZQG0xuATnLGqp5YhJwIK6ITpEUbLeyOY51RlWEZYotYKyoQjAVm+uizHFsksaeVfhIdqs2/EHv6NK3QuxK1DRiSIH3tSDxgA49r6yJi6rgRLO2Hy/KvgUb1Sz3KUAVC0LLzJG8dTxR7ro/a5RxaFP7rlR9jgWP+hk/Hhthdwf+qNSzg7ae8VCeTUgeXx4QIFwMiYhJbH0H2pwG9ZqXsBzxGgiYzs8ytKe/v1k0zRXTlDZ5oRBNT8eH4qcbFJQiBqu04SpvXu1gMoJUq5GmJ234jo2QPIy11dOUsDkXk1arvrYuKpqiTovopxUTFHyUPeB9PCpzHI0= X-Microsoft-Antispam-Message-Info: c3bG2LhgX1xxdDzRaTI2yf/VN1y/CXCVxJq7NT6DhCEE2IF9pjuSjgeCMpG7BstIbmpzQrpBhGLwUPgIix1p6mPipUJylzlX2mP6LmtTtr0cSFlpG1Z+MrwdwmxwpIRuC3Jy6nwd6qKe2RTyn5QcwokOfcGoQOimu6iIdZetc8UNKosMjJ7hxk+t0pUQ05F6MQ4mgYZrqBJ5rBhcEDRAyud+ZamJpT7sUk5nr6ZaNqdh7gnn8LrheW/2LwMysgrFEr/mzpUeM9P4LMr4ghHb5HtNN1M+wG15xtOK2o5Cm8r7E9lTvh3d4jyAz2blFXOMevLEJI+FxvCTJND8iJ/T8HBfjiH3G+EJix/g7UIHO6g= X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 6:+hYLn/c2BodUSB7rC1TMAP+TZ6La0mGDUk4HlULNAUgZR8J6ppKNYsKsHIVipRsZz9l1e5tQrcnj7T3rMNhrLWatwAmqS15MSt76Grrpiac8Mgy8n78h0B+J4ABnWEB/F4kHx0rzpy56axxvV4cPHRe7F0UR8AVyv59riVtA300e5VCMPN0JwiR+BEmjdBfqtOALmXxs157XQj9SGBQ3b4ll/j8o5EQgNXB8kQFefrzhcQeVIjnbL0BpsgCNzlELMWu1xqCkPkqqiDrhUZxHwjfOnS6FNoSYqk8h8hF9+uaxfZAegO1PU3VmYO3/6CbnkN23ocr3Olc1c0TZpIhK7ubF9JiR+cvRA2yai+oWb8MYaRMO8akHeJKIx6cc0drk6h7lakLSPIv+PBNmbJmjxmd6ZOvO4XOPZwgyrs2CHbBgUiXQHYn0lGqXorjC83x834l1db6tRPGShHGZ+0Z8Mw==; 5:JE+KZ0xMtSiVgQkIh/1ZedTJtmt242Xnlw43PVEd1T2Q9j6662knRzNIwPZRw2ulVrxj6QBradKYPBrckH0SAe6i06NwIMsUGDWNgmFYjw08ZhF23YEfBiDKrVHWiF6n9yByz3Lz2Hx2YqKn8OLitbtDZTpgxoEyLdjqfUr3r5g=; 7:IBrFtqI5C47W1oJef02TmaV+7+7JJlpD4cvOPi/pcoc/03PoExWxM/S0cmVW6g4X3pobS8qIVI3MJADivspd9G5cncBP0s9bUFXbjEjdjbSc8rAjJU6X4OfTJSHf4BlL/JuyGg3Qxqno03pjl4QahttnBma6gnkOIbZ+Um3mIdjZGZf+vH7wlnP/kcewW+6iutRM/bFWQNp7AYU6qq2I1/CWITtlPt1E2acy/z7H8ZzFTFV7Zgber3k0BRNEJKQQ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 20:hJdPZW8MSxbbziQo3omkj9D58QteQix9sz/6p6uLcLMQtfh2R5fZWaCTEgU/kK3uN6LoY6bI6FoIslqB30cW743AxKRVpPvWd8UruGOAOsMYzsk++t+nZIuWTJOSrmIMShQWHnzQ7LVpszDkKGtNLDgL8pREgYIlmvONqDmzmPk= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2018 12:42:23.2314 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1aba4bc5-30a9-4d89-d471-08d60dacde8d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3611 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.138 Subject: [Qemu-devel] [PATCH 3/5] contrib/elf2dmp: improve paging root selection X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: viktor.prutyanov@phystech.edu, armbru@redhat.com, dgilbert@redhat.com, Viktor Prutyanov , rkagan@virtuozzo.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Even if KERNEL_GS_BASEs are absent in QEMU CPU states, there is a chance to find suitable CR3 value from CPU which runs kernel task. Signed-off-by: Viktor Prutyanov --- contrib/elf2dmp/main.c | 56 +++++++++++++++++++++++++++++++++++++++------- contrib/elf2dmp/qemu_elf.c | 16 +++++++++++-- contrib/elf2dmp/qemu_elf.h | 3 +++ 3 files changed, 65 insertions(+), 10 deletions(-) diff --git a/contrib/elf2dmp/main.c b/contrib/elf2dmp/main.c index eb11e66..62f08e0 100644 --- a/contrib/elf2dmp/main.c +++ b/contrib/elf2dmp/main.c @@ -188,17 +188,53 @@ static void win_context_init_from_qemu_cpu_state(WinContext *ctx, *ctx = win_ctx; } -static void fix_dtb(struct va_space *vs, QEMUCPUState *s) +/* + * Finds paging-structure hierarchy base, + * if previously set doesn't give access to kernel structures + */ +static int fix_dtb(struct va_space *vs, QEMU_Elf *qe) { - uint64_t Prcb = (s->gs.base >> 63) ? s->gs.base : s->kernel_gs_base; - void *prcb = va_space_resolve(vs, Prcb); + /* + * Firstly, test previously set DTB. + */ + if (va_space_resolve(vs, SharedUserData)) { + return 0; + } + + /* + * Secondly, find CPU which run system task. + */ + for (size_t i = 0; i < qe->state_nr; i++) { + QEMUCPUState *s = qe->state[i]; - if (!prcb) { - va_space_set_dtb(vs, *(uint64_t *)va_space_resolve(vs, Prcb + 0x7000)); + if (is_system(s)) { + va_space_set_dtb(vs, s->cr[3]); + printf("DTB 0x%016lx has been found from CPU #%zu" + " as system task CR3\n", vs->dtb, i); + return !(va_space_resolve(vs, SharedUserData)); + } } - assert(va_space_resolve(vs, Prcb)); - printf("DTB is 0x%016lx\n", vs->dtb); + /* + * Thirdly, use KERNEL_GS_BASE from CPU #0 as PRCB address and + * CR3 as [Prcb+0x7000] + */ + if (qe->has_kernel_gs_base) { + QEMUCPUState *s = qe->state[0]; + uint64_t Prcb = s->kernel_gs_base; + uint64_t *cr3 = va_space_resolve(vs, Prcb + 0x7000); + + if (!cr3) { + return 1; + } + + va_space_set_dtb(vs, *cr3); + printf("DirectoryTableBase = 0x%016lx has been found from CPU #0" + " as interrupt handling CR3\n", vs->dtb); + return !(va_space_resolve(vs, SharedUserData)); + } + + return 1; } static int fill_header(WinDumpHeader64 *hdr, struct pa_space *ps, @@ -448,7 +484,11 @@ int main(int argc, char *argv[]) printf("CPU #0 CR3 is 0x%016lx\n", state->cr[3]); va_space_create(&vs, &ps, state->cr[3]); - fix_dtb(&vs, state); + if (fix_dtb(&vs, &qemu_elf)) { + eprintf("Failed to find paging base\n"); + err = 1; + goto out_elf; + } printf("CPU #0 IDT is at 0x%016lx\n", state->idt.base); diff --git a/contrib/elf2dmp/qemu_elf.c b/contrib/elf2dmp/qemu_elf.c index f7b5ebd..d139db2 100644 --- a/contrib/elf2dmp/qemu_elf.c +++ b/contrib/elf2dmp/qemu_elf.c @@ -33,6 +33,11 @@ DIV_ROUND_UP((name_size), 4) + \ DIV_ROUND_UP((desc_size), 4)) * 4) +int is_system(QEMUCPUState *s) +{ + return s->gs.base >> 63; +} + static char *nhdr_get_name(Elf64_Nhdr *nhdr) { return (char *)nhdr + ROUND_UP(sizeof(*nhdr), 4); @@ -76,13 +81,20 @@ static int init_states(QEMU_Elf *qe) return 1; } + qe->has_kernel_gs_base = 1; + for (Elf64_Nhdr *nhdr = start; nhdr < end; nhdr = nhdr_get_next(nhdr)) { if (!strcmp(nhdr_get_name(nhdr), QEMU_NOTE_NAME)) { QEMUCPUState *state = nhdr_get_desc(nhdr); if (state->size < sizeof(*state)) { - eprintf("QEMU CPU state size %d doesn't match\n", state->size); - return 1; + eprintf("CPU #%zu: QEMU CPU state size %u doesn't match\n", + cpu_nr, state->size); + /* + * We assume either every QEMU CPU state has KERNEL_GS_BASE or + * no one has. + */ + qe->has_kernel_gs_base = 0; } cpu_nr++; } diff --git a/contrib/elf2dmp/qemu_elf.h b/contrib/elf2dmp/qemu_elf.h index 2a28bb0..d85d655 100644 --- a/contrib/elf2dmp/qemu_elf.h +++ b/contrib/elf2dmp/qemu_elf.h @@ -31,12 +31,15 @@ typedef struct QEMUCPUState { uint64_t kernel_gs_base; } QEMUCPUState; +int is_system(QEMUCPUState *s); + typedef struct QEMU_Elf { int fd; size_t size; void *map; QEMUCPUState **state; size_t state_nr; + int has_kernel_gs_base; } QEMU_Elf; int QEMU_Elf_init(QEMU_Elf *qe, const char *filename); From patchwork Wed Aug 29 12:41:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viktor Prutyanov X-Patchwork-Id: 963433 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="Q3WbsTSw"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 420llM659qz9ryn for ; Wed, 29 Aug 2018 22:47:43 +1000 (AEST) Received: from localhost ([::1]:42936 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuzsr-0000Hh-Db for incoming@patchwork.ozlabs.org; Wed, 29 Aug 2018 08:47:41 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42924) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuzp6-00069q-RQ for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:43:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fuznm-000327-Kv for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:42:28 -0400 Received: from mail-eopbgr40138.outbound.protection.outlook.com ([40.107.4.138]:19424 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fuznm-0002zG-Db for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:42:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SSOcsVIdjdCMcNQI4gaNNt9+SE/98VkXRXnHxDILcco=; b=Q3WbsTSwy57VmZkotg0MhCCJvp1MCl0zvyLWX2+byzdVMvexCSNtRHrDLv3Z7zXwugKZ6qp9uXKaDKEJ8DClzFJe9HELaGDLC6Qzz0cZSsLIloFB0JK/Tj9QEVfC2FM53Vl/ZVG01kDQlYMkuKocjeye5FTlHEuSdNbYRbAmyNE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=viktor.prutyanov@virtuozzo.com; Received: from vp-pc.sw.ru (185.231.240.5) by DB7PR08MB3611.eurprd08.prod.outlook.com (2603:10a6:10:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Wed, 29 Aug 2018 12:42:24 +0000 From: Viktor Prutyanov To: qemu-devel@nongnu.org Date: Wed, 29 Aug 2018 15:41:27 +0300 Message-Id: <1535546488-30208-5-git-send-email-viktor.prutyanov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535546488-30208-1-git-send-email-viktor.prutyanov@virtuozzo.com> References: <1535546488-30208-1-git-send-email-viktor.prutyanov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [185.231.240.5] X-ClientProxiedBy: AM5PR0102CA0003.eurprd01.prod.exchangelabs.com (2603:10a6:206::16) To DB7PR08MB3611.eurprd08.prod.outlook.com (2603:10a6:10:4a::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0dcb93d0-e9d9-4c76-08ed-08d60dacdf24 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:DB7PR08MB3611; X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 3:kJk6JYwXIFXGpBjQszoQmV8iM3wjoKISY12ih+VUu/ZgYzLyt3kpzStTmJC6sxKpYO1bY4MJ3fWf5Y+FA+fXkOsfdqPkpfpHO/MLrW2jXaIHA3t+JfzV+L+Y5R/+rdg1gcbjlPmJVVajEuB0cOpWLdKKFuT2a5PDc8dAbb0gfV0sY5ehL4HaSMAlMOh18F2xV4S7+4Zcnmho0OVRYJSvmBCbT72jPbeSZsPn+IasfTRr6c+BPY+hPhDrdJ037k1V; 25:8WD2xehVpCtS7GpPPV5m9/Wzg03HkUMBHHaxMFc2eBY3bCWAtesKKxMKKPsnbUbN8pPXFxQfT/DSYHpMMaQ8mzjyj9eoJ3MPvSGbfF/bA1XSQWtFqRRE2W0l94GB0iA9vmLkPUoHSUpoGqUFyh+iRftWsNdj6BYwKRcqeELVZ3M2PE8Ab2OHUyqqPBABsQdJ81DAzwAhiCr6kz3HOR1Thn47MLMApXs0bZSv58TN0ZSZAFa8mDc5HWPjTiuh0Iw3OaY7mMze3R/b31gRqnQK/zO9EtLLN6gL1zvXJhecW8eQGfLX13wQquA557F0itreUmH60Ctp6f+ItmLkViL0mw==; 31:0YFwp9vrUh+ND/Ao9+7NrxlZxmvxeUmxHBIg6pIFvM4UtrBW9/l/n3u/OYTTXoNaqQ7a8F7/CEJBclk8zPVQoos1U3S/3ghGA8VE5VcFpHgAptmrlhsvuZoW2MVRWB/CTCDUwcRYE6JiNQjsdsCdJIKL5hsCCMUL6VzhiwLGrKUcFxiAoWmiqvFgtLSX8V6zIiPTLK8LFY9vNmaO7RV3pUsDsKnmeFpzgNgfnd9vy8c= X-MS-TrafficTypeDiagnostic: DB7PR08MB3611: X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 20:zGnxbMbrxV2TtgjDQh+GbknWdKtPekB9YvNCWhMJRfUUtdwbErdI3WGMcIJNkGgDDmRfgFdHaEcwSA/BsBfebqOpIs1NCWlxhKuMzilNS1ZfditgIGHJPUSm4fGFTokrSa4DODFltrn8yxcZ4HCsIHxRZYwYSV5L7x0bG2TjTEjMyzbDvO4M3+uSzyLFgx8IKVlsdtF9yC3G4QS61DdZ+dbWZaKAv0nWByjpyI2RcuVzgBfheEd5TsR1CkdYd/yLhMVkZ1OPJKBrxnX/Rnoveg1QNTE5VNQ2bXqcN5nfPvAiWtydhqffNLBCfKujTbcrjU31rNH30Qdqt1oSrTSYCzXzB8qUR8b4D68Pt3KI+QiKNIs3dn2Dq4FTFhS7bUMNdd9Qsfkzxuk9A2R6AOX6c886DXsjzL1KoNd1R67oxvIV6nxNUp/+TO3dxPVg5JqZk+rvexkjJ5uQt3C3L7mOYzsu+dNwUxLFSuCv7KaqiczhAKs2oW1HlPueKBBIetrb; 4:fYn92S0PWZczjORDG+ovau5q5GOMQAXmp4CdqfPxezpmeXWBR6MwDDvikTW3chwO2FsXkyCGT0F/m7AM0gPjbc7McuIRvlav6ECKNU4fjCS/CUucy67ge2OHwr8xUZA6QH5GkaFBSAeN7qMmbSSVqPCNAyOw1w5QS9fb0cI3Ub5NW/GUIMBSPfkNcPeEUcsmJpdDk8OSheMJnMEsUfe44566cCN+5hbJ9Ccm2kZnZ+AB1n4AkH35vFw44q/nItB6A6/tuWKNJt6mE7i6DMp9sQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201708071742011)(7699016); SRVR:DB7PR08MB3611; BCL:0; PCL:0; RULEID:; SRVR:DB7PR08MB3611; X-Forefront-PRVS: 077929D941 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39840400004)(396003)(136003)(346002)(376002)(366004)(189003)(199004)(51416003)(97736004)(5660300001)(105586002)(50226002)(25786009)(76176011)(4326008)(386003)(6506007)(6512007)(68736007)(53416004)(6486002)(2906002)(52116002)(69596002)(53936002)(107886003)(8676002)(36756003)(81156014)(48376002)(8936002)(50466002)(16586007)(956004)(81166006)(2361001)(6916009)(446003)(478600001)(2616005)(11346002)(86362001)(3846002)(486006)(26005)(186003)(316002)(16526019)(476003)(305945005)(106356001)(47776003)(66066001)(6116002)(44832011)(2351001)(7736002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB7PR08MB3611; H:vp-pc.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR08MB3611; 23:ET+37uGQv0aVa1l2PIT/vhTQ9v08RtbAEmmDprcuD?= YBAsHBGR7+CZrzvIgNfB0a1dCVfhY5Tt3MhsvJJglEyb45LdA8t8qXZjSn9ouGDyJ2uSFWJ/BX52/brozWZAPrm5aFELCa4pofLta2gT+GddL1qB21mqPZViE00mAKJJJbzscEut/+M6D+8gFknMVjrPbl+L2LIZOnaOwyVJyC1SzgxNPPaIm58snDIiFdDuhI27uDaBJf64yUaqVux0/hDdH3mvDDjkk0zKJAxCx3UO6aMhrezU33koG5eW9jxDdmX2qOK0U4AKrnM0hNQVGTUVkE5ihM1RWFN9KrMNNJeKwoRukb6nhSwhZqaTWPRqZ319iiF0O3WwUkvRprlD3J0Nr4NXSDek6BKlacG18BW1qhkJdg0dUg6GleNTfYNNx+vBloLRAb1/G2RpB5qXbULkSYFwYTvtRO0QnIdGqRZLI8p0BOBvXIn4eXaRysM6UUj1ZF/vgx/IP/eHNVf0qOciGVBETeCMew2+cxHqTf3tdA9Kg4Cpinaq5WvkdjiyATpJlrf7txlhnFvzqPQZj5myaPlG+El74VpWy0EoHoui25EWjzyNOqGwq+MYJ0aQQ/oszGs9+Pou3OkIbGep3rVFDPorY89b1bCVVixVvN4nPihSBmHhX0y/LXXzo5FcEh+IxKD0ZQTERyStxw89bpBjKzeUxDrerC/wfD6tD2bFTsMCkG4N1VvkcFKUxiLFNpEXWB6L8/JtC4jbkUedoF8IbgLB1ssZmQwu4iPw7G30qAL4poobV28QEuTFW8UovsFQNOPgL260RQlB+Pkj5Es7o3cQfjDpGyyfRtcfTQpxCTcff21SZzJwp7+aOL2JE34+SoUleL4pEA1Eb4yBiBiXCzhqairv3k9WBJ0k2oSUTrLrIkB41h9DBFSHHQUznVp3VUouAEouOO989ZSg8URjcnLZSfKkgPvsovYD0EBkEU6JJ3FNgQlHGppSYJTsyRY7BaeVNkXM/EijvUQIPXL8YDd+LxPiWEp0xRyGLsJDhL/a5VybvyXqg7N3XWnBbj2958/xNnV5M3UTV9U1AGhaW8YO6gl24nV5cBm2yUdEY3aq3ZJMq5/mouIjQoAtyIuozY5IrP2vnOcuZfAMKzGEMBplovdgmm6XTzXpWtHNtvnbv+RX9sA6O0zYPkvpbjnuRY3CS+1r8wIvyomONmghtpBtqZIkJTy27uhUVmwNW1MdRPhCxdsibRlUYWAGUmKMd5X8gdPrfbSFGeDqJp4YGenk65WEnlnTgcJyaCUNA== X-Microsoft-Antispam-Message-Info: meliWn9ULnMUiC8J0VXjonk3FmDVRz9nX4x9LKNydZvCcY1N2d6w3mYF7RC25SbowScwBbwl8lotJWq8J7l0z1uUOHR8AMBDlhNykpYlHF5NjTCggfmY6liAy7vJplEkfPXFtXtHT3jps2NefBgpyVNdq9tkzAVaOgGRfvdf7A9BqKm9Moyzu3p7rkSjGaLyXbVcSxa3Fl6pRoZ9Ex+a9m0uC51eKyO1i8o/rI7zA2hCPqe1XTykUVqEtKj5eIBK8CN64c89a+0sOZ8UnSnlZv9yWnA1ys1Fn0FSiqBq72MVjTccfpXqYIoZYJfO7am9JJlM/rCujIQEZweQW5MR9UvpklRu8JisXT08r1/W6S8= X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 6:XjP1gKlxffckXJxMIfQzGh/ie2B/sWAN3zgRmXOg0v/pBG5njN0FXsKxAxpGyQOJPbhB86V0cegyRCInDi3aQECoUb/hzO1vH1iHRYmmyTs/MxWJ/rEVpHnc+rhbaMJnHkXdfiXnxzYGk66bdQ1Q6DEZbNirnRobD4LgNPTtm3yuSMgICqkVLVud6ci2xGy9dp35G9Q/w57YKTxnFAt+x01EW4wRx4l+XzbI0MOTlHGj1cw4aABaiE2CM+/OdqrDaVrWTpb7CwaHy1s9dRbmrbflpGJ53yphLr4XhuJTwjPqE3eIRIicn3zhXYhOJZkwYs9yyLTQ0uwUvFpsQxduhAnha09Nb0Z0Rgsosne+IcrjbOGYg/aZWBInwUUDkI833fW5y6toPCzCA4caUAWHa557ahr255/Huhm9OJnuvmVyj6hMgLM24RM//x4eiiCPUOQOrhFImTdf1yR778s2hg==; 5:mxwGASXd19RKJZ/iM4IXFgjTlLqbTv4rlCL/cFkS8rl900eirP1k/IsgYx2pXJpyrLrqtEflIPU7tSuoyYre5s4B0XGRXovk8wn3fAUImwCXrzT5s+b3lNFKFPz1XkCj/5jkfuMUIuHtcupDkWsAycDomL4b3x0q8U2EFANBM2U=; 7:EXburwcZ+abY7zd/K916hPtv99R/ivWeVujDAYbqQRnGGi/jzeg48VpjqL5zxQrWMYYgYicvZIS8YUeIreUpA/nEhjD6hpEAAjFLHxAuIhlNRsMOZ5RTt/8ZB9Y23IW4B8Ov+yLu6rymk6PKNTDy+aHSZxuR7hZ/G2cvFij9S5rA841B/EAcF0rE2fCBOubpvicRALV7UT/BL/dBJ9WpZWACfhD7jls8w2wiDBLnpD1bI5Vx+Aud7mBICibbQ7e/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 20:Q6uVMV/GxDFS/EZS5ZudSJ5RNkVk5SPs2rtltWRQeqf4R50xZ3+cPaDgQpxfp3xKmyAfmL8li3OrFKKU/a0BQRb14xhDyLu/+gHiFM3I+SfejOkDNFI4+XcQ2MvgEeF1Ade9XRGgzVdcuP6K5jrdbsmqQ4JbIyKvOffJXUZcD68= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2018 12:42:24.2470 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0dcb93d0-e9d9-4c76-08ed-08d60dacdf24 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3611 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.138 Subject: [Qemu-devel] [PATCH 4/5] contrib/elf2dmp: add DMP file name as 2nd argument X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: viktor.prutyanov@phystech.edu, armbru@redhat.com, dgilbert@redhat.com, Viktor Prutyanov , rkagan@virtuozzo.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Before this patch output DMP file name was strictly 'memory.dmp'. Signed-off-by: Viktor Prutyanov --- contrib/elf2dmp/main.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/contrib/elf2dmp/main.c b/contrib/elf2dmp/main.c index 62f08e0..64782fc 100644 --- a/contrib/elf2dmp/main.c +++ b/contrib/elf2dmp/main.c @@ -334,24 +334,36 @@ static int fill_context(KDDEBUGGER_DATA64 *kdbg, return 0; } -static int write_dump(struct pa_space *ps, WinDumpHeader64 *hdr) +static int write_dump(struct pa_space *ps, + WinDumpHeader64 *hdr, const char *name) { - FILE *dmp_file = fopen("memory.dmp", "wb"); + FILE *dmp_file = fopen(name, "wb"); if (!dmp_file) { + eprintf("Failed to open output file \'%s\'\n", name); return 1; } - printf("Writing down to file...\n"); - fwrite(hdr, sizeof(*hdr), 1, dmp_file); + printf("Writing header to file...\n"); - for (size_t i = 0; i < ps->block_nr; i++) { - fwrite(ps->block[i].addr, ps->block[i].size, 1, dmp_file); + if (fwrite(hdr, sizeof(*hdr), 1, dmp_file) != 1) { + eprintf("Failed to write dump header\n"); + fclose(dmp_file); + return 1; } - fclose(dmp_file); + for (size_t i = 0; i < ps->block_nr; i++) { + struct pa_block *b = &ps->block[i]; - return 0; + printf("Writing block #%zu/%zu to file...\n", i, ps->block_nr); + if (fwrite(b->addr, b->size, 1, dmp_file) != 1) { + eprintf("Failed to write dump header\n"); + fclose(dmp_file); + return 1; + } + } + + return fclose(dmp_file); } static int pe_get_pdb_symstore_hash(uint64_t base, void *start_addr, @@ -464,8 +476,8 @@ int main(int argc, char *argv[]) KDDEBUGGER_DATA64 *kdbg; uint64_t KdVersionBlock; - if (argc != 2) { - eprintf("usage:\n\t%s elf_dump\n", argv[0]); + if (argc != 3) { + eprintf("usage:\n\t%s elf_file dmp_file\n", argv[0]); return 1; } @@ -561,7 +573,7 @@ int main(int argc, char *argv[]) goto out_pdb; } - if (write_dump(&ps, &header)) { + if (write_dump(&ps, &header, argv[2])) { eprintf("Failed to save dump\n"); err = 1; goto out_kdbg; From patchwork Wed Aug 29 12:41:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viktor Prutyanov X-Patchwork-Id: 963428 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="UzPn+Y1m"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 420lgY0ZX1z9ryn for ; Wed, 29 Aug 2018 22:44:23 +1000 (AEST) Received: from localhost ([::1]:42913 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuzpb-0006Kb-Eo for incoming@patchwork.ozlabs.org; Wed, 29 Aug 2018 08:44:19 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42924) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fuzow-00069q-W9 for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:43:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fuznn-00033L-T7 for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:42:31 -0400 Received: from mail-eopbgr40104.outbound.protection.outlook.com ([40.107.4.104]:8016 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fuznn-00032U-Ix for qemu-devel@nongnu.org; Wed, 29 Aug 2018 08:42:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WBTOJKxIndOHop7AT64KAOq+uBy2uJ2i8RZa5JDr37Q=; b=UzPn+Y1mx2dqSx8s7UPow3SyzBCgyYrAVULEGZpwMcJUeoio+n1EWmuTfysiCL/ogsdwkWxh8HpA6Zk2r8jARXronZ5IO2i0Wja6xuZx5jUEhopVfA0axrdpJ5r6OWNSe956fX8BKL6R2uDbse/ROFlDqLCoNKu2yvkp3IJYOfg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=viktor.prutyanov@virtuozzo.com; Received: from vp-pc.sw.ru (185.231.240.5) by DB7PR08MB3611.eurprd08.prod.outlook.com (2603:10a6:10:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Wed, 29 Aug 2018 12:42:25 +0000 From: Viktor Prutyanov To: qemu-devel@nongnu.org Date: Wed, 29 Aug 2018 15:41:28 +0300 Message-Id: <1535546488-30208-6-git-send-email-viktor.prutyanov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535546488-30208-1-git-send-email-viktor.prutyanov@virtuozzo.com> References: <1535546488-30208-1-git-send-email-viktor.prutyanov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [185.231.240.5] X-ClientProxiedBy: AM5PR0102CA0003.eurprd01.prod.exchangelabs.com (2603:10a6:206::16) To DB7PR08MB3611.eurprd08.prod.outlook.com (2603:10a6:10:4a::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bb3ad3ae-0a46-43aa-3d65-08d60dacdfba X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:DB7PR08MB3611; X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 3:I9vBdfmnRcQKg4Ok30QDoDqin7LZHdgsc1tuThhs85ucJG/LpE/nXk0s1DIoemJCBJ6DKQNsyp9Qig60Qe8vdNVUk0zsy/TlKyeuPZbZF/XzRnxYjFl6d5ob9bGZLVjqQ00p2O7f6tuE+wb0TjK8bgaccUzIfEcrRo+y4R/WQs/Nz1ocEhINwkFVdhQ/Of7U+R6kWLB8dIo+wbksF7rLinCQ9fewBxI4OFopPSkxxuM2kT9fMPThwTWVrUTM6ATD; 25:30iPCafd9H7MshQWxryNTdKlO2xup5Vr2Td461oP/4ggkn3mnSQK46aDfciPTeJqtPRErrOuA9eavYZg0ISqYtvkAGipa+fp+X2MkQv7nor1F1sNLn1v5VBr5y9m6K2F+87/f0Z0jNYQIkO8ydcjg8K9L1J75lhf5q0HmTj/l3CyO9nWZ9ansCUXko0pKraSEcElPt8a/nKz2kZ+11sG07NqYlX7ar/AI6A9MYjCLhRcZOtcNkx0we/JhOe9U/UlaKaa+64zKykKEIj61DcNFihyhSuGCTVMOoCFFK6WyMIEmCnNbDQVHBqnKxtw/KpXUJv+Yne2KfImwiig5+b5nQ==; 31:qU0r9YKPu4X65IHTlN+fE501qM1zyT6wcgUw9mKdv/f4V2gfGd95+kXQlU5ofSow/aTigAgbenWEGR6z8YqBgChzw0T/I/lohiNYT71wnsQfoJrFBYFF9pUSV3/pUgc2jVMCkGDxRnLdkYWOBjhmkuewwtMg5P+gE/rmn+/0Pgr7gxpwEEEHzwI9nrAJxU3uH/iaWxNliSiOEizeJidGHZq6YXPJmjACwWqxmgYsNKI= X-MS-TrafficTypeDiagnostic: DB7PR08MB3611: X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 20:KZYhIdxIiwTIkbnKI0loXcRQsIeFMvDX2av9MMZBWaHVyPEWPSW3Iu7tNwmoVhN/QF+xXQIU5uMkfL/pk7StyvvMW1cZuCWGBqYiz1QmOXHu3/5UQ1sbQ+6P2kl+VZC77GG9McBoGQFhzwKq8ZfRwCquz/I352epb63IvOFLFOIgqFyXFJu3OQL2YATVvnH90Qnecyl429/b6UJnRf6mp7YasrK1ZVBVehxMnLcq8ZiDt9QSnslMLhKrjz4SaSxjKUX6PWIF1yUXQi8qXSaINsgHVouqs7umJnP0T8chi/J3YzhhGvE2j3RkwtpdwFsNIYieHVxlJ+pththUjIC0OYvc69o+AlGgId7SnyFOsdgyc8GAXp0jF/Y5atQ50TTSHpbPoeN5eakM6YECo7Ml33NacrOYxeOh9DxsDjGUGJZRIRbM4HhWkut1OiptVs5EUXKZkUGvquNy7wToOj9q9tNr+5jJxOjzjLEoPMnX6MtWAW7nwaJLXhsYR4A7kPaT; 4:rF6WBsH0CIVf5birmO/3DtKYFnzPhV+JFIPYFl0xUJnmZX9DWil0mov+sknhgWE4c9hkO4R+4lvlFBahC0yO/ER+JXzool5J6icspgmaQnw0Ml7mFGObx9SlIPfACWYgtSu1QauvrZlzYg6EMsrXPg9I3vBrRp32baSWKxUMjLZA7BzGbhdZ0MyXFfJMx7SNEKDnBs7XLYyvMRUlBMPdf8D5VhTcYUZriq0gVhZexUKPAufNF+kib7KpC/7TUgahHJPlRqiB108zHyzdvmLY3Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201708071742011)(7699016); SRVR:DB7PR08MB3611; BCL:0; PCL:0; RULEID:; SRVR:DB7PR08MB3611; X-Forefront-PRVS: 077929D941 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39840400004)(396003)(136003)(346002)(376002)(366004)(189003)(199004)(51416003)(97736004)(5660300001)(105586002)(50226002)(25786009)(76176011)(4326008)(386003)(6506007)(6512007)(68736007)(53416004)(6486002)(2906002)(52116002)(69596002)(53936002)(107886003)(8676002)(36756003)(81156014)(48376002)(8936002)(50466002)(16586007)(956004)(81166006)(2361001)(6916009)(446003)(478600001)(2616005)(11346002)(86362001)(3846002)(486006)(26005)(186003)(316002)(16526019)(476003)(305945005)(106356001)(47776003)(66066001)(6116002)(44832011)(2351001)(7736002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB7PR08MB3611; H:vp-pc.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR08MB3611; 23:RB0a+gvXORsC7bG5cs99PYMXp3Ou/W5qlAeXnd+kn?= UB2u94IipFQfGuAWZS1eHEAG6vv5uiduuJOWlAjUsTd3aBHoYW67tb6WUX8YmtinlZwnG6170ivjgnYkvSIBQ6B0t/N2sNSJOuFgYDA8hhIHJiy4QfMUR9X+araYmUsoTqcBiloKESPgQmA2jnCpzRtOlx4bFWnilsgdCewU6xzPAUtTlSv0PcRRlxQYAR4eokLbpl/d29h/y59eXpcwvlFht4QoKKDYQUZ6yXG1afky60Lb0tZ9V1leGb4NoBEwgmlzRqpk6PnQMMFu/JBGAAla8m1tBIc30d+RkpKhmE+8CU+OO+IsCVg0R4E7czQMH66qlL+2Dz2cTYCd2lFQsV7rqNrKahWCZsQepGQ++aNAgL6cW2OVmoDhe/KMYKQG7VT3/EmdF8WIi8NJdCZS+w03APsU5lStYSkm8ETQbnO9jV1NiIgYgOmsz3aXrVmE6xOrnpvBOorPhoqjo+Iv2SzgYJKM07ytst37cQvqNnq4eDxA8mbJdmKCyR2MCDCtAJnzgyAyi+KYx86euR0SFHrEJ3sg/w4/dGVYTIiActiF+BSrmqzFiRE2uhHndAGX+oac238lkZObg/0sPw2/TRQQt1oNyx0xSS868ghFdUJzi70o9raaOpIIsko+uhYv9Zv8FEu1F7nG4JabQfvg+Ru8yFQW69gdm6XdtFDZbSw5U2DK80yokJOBZPdClWBMtTlBNe9m1t2KGy8tYbiycjsyhmQyo/sMRxMhO40zWZvVm8Ri3Y7y2lBOL6x4+OT82r2oHPYp89OUOTk+2e9srRFlE+sVsjIWV98kord4zN5Quw+rmqeL5HEV4lC24qw8u8UjxgkHdnL5wr0BpioFT4G0NCpD0oh5iyX+Cj0vJmvS+0L/eDX4KmzwvEII4D9Xuojzdux21cWcH4cOgfwIWoqgV5FpLiSHzaS9tE/X48CsuojQjzw/d5cPzqU5QuE8LwqpoJtjUlXiPz2iahFHwcNWMtyIYPJe1SWDtDKKOxH97dCrvHVwARlsMP1ReQQG1+L1HEcoIl0ZAglLSBOLAwfj9kYWE+yF0d4EQ/Nsnp68uFNvPoA62XimnSGSb5fObiP2pvqujcVZNLNJBiuCDZxRO802lpfOjmXs4lYLgTKP7uaxMwQKCMrFhgXUhkZiQ/aAjcBfZL4Rf3/V7f1XDMIb3Lg5uFl025wEHK4kfJrjHYbLgOzvq1TM7N9ELNExNliGj8acb8+XynFqI9MtptsTpf5my7jeA/WE0l05V/mew== X-Microsoft-Antispam-Message-Info: wIIuLg6X/xy7lBbKZ44Tm+gQWDamfNQuZlNHBwltMkV17m4+Y12sDVqhauScEoxsVs8X0zgTLq+tU17XZxJmiMHKEzWlqYkQ/bkifvwRDssa8jfIfHgaLyOAUWcDSAdG2+wJYfKdYFi4Eo/PgACTf5XVNc/K1UlVp5hD3KBfnt/9miitRp5Xj2FuNKROQ+iNqEZxJ9yTYCd/1VUY2Emp34jIS0LOL44AMxp6IlPE1wFC09LMsH5780VDRYjlK4IiVesQbdXjEupCb4jCxtrEsQLiEmNO9SmdFa6ruh507KMMdM+BkTr7JG49X0hTcMDXteDqpYU0h+oOCPZ7R5Yz6hJWj19S0TnKibhjPmMVj9M= X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 6:VC6z9GAeJK7NwL+2fmM9Br+5s/Vp8BWJptRf0m/+CR0CRr978ZF1dSgN6PHEkpGNAxgvk3SWmPdqix46ZN4tz6mBwWWIP4bGkJDX4FlQdxixGkv5gUlOGdmbhzyBKkoB8IYD6gOvmySagnkChWEPOv3MjWF7dDZcJuPQC3hfYjSaM3DdbPZtI3VToTauNMVUkia1HCwD7+CnErRQ5ep1zbSicg7/PSh8z3J+Su7dL5KTIpIvphHC4bLR2MegIQBPOaXftmFIflRM4b7ejXcOfsTFponLsE/ftJrONhWSOMROKUYukAD5RKS/fbfGr0Pkzp9ku+l+mHpECTB0ZukKvE0hI37XJ25kNX26dryG8SoZXDg5h8HZzAVY43XUcGhzT35mSD8ksP4AVXfoUyz6r8os10xLnYpPK6LywV6C1/Gzy2DYFts51lbSiVD73swIDtWx6pBtXGS50oxr4kKD6A==; 5:zKMHXzDKtHvpC8Zpw+lE5JHdLmAl3ft3fplSuYJWy5hU7+GBP5JHh3YZaBxWvaYXPV9ghLlOhBjNa6UJjwNL2nk2nTZxLhbD46hpwTbgUmum59qlKuzc5+PuPAN8aUTliEi5lykYZBcXQXwXxdDFoveZ5eBnXg01o5zU/7+5yAQ=; 7:7MY7Rm7vSX8aLePB97URX6mxpvzoQxkFCpjGNkXl3fRlzN3eAzKdfWFV9a7bVqvA74p5/5urqrqQxQmxpN/uSqawd8P90pz6K5E7ybG3xhWSU+MPYrX6wksM0BNPDOBF0xKiuTM2ClDaTQoYdoCwBQh5qSoSYNSnr4w6NlS7h4tn/mKjGPsWgYQFPOQk8fbeiZE1xmO+CkeKkL65/eCOYSpR/FEKwNwacClMWhDHZPTExA22LgisX6UgswSkZZ2V SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3611; 20:rErqh/6/bKgRQigPX33M3katnS1pAS5zDVbPowrGcD9lrpRi42Xs6TKYVcLi9dl/4cACPTRrX7X13MysYHii3v0fiq6A0NCkSWdoHcz7J96vBI/d4YNgsV0PJwfjhf+hQ38Fftmbj+7HfDKooCa91mqrfqFQtxWI/p0AE+jRlBs= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2018 12:42:25.2314 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bb3ad3ae-0a46-43aa-3d65-08d60dacdfba X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3611 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.4.104 Subject: [Qemu-devel] [PATCH 5/5] contrib/elf2dmp: add 1GB and 2MB pages support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: viktor.prutyanov@phystech.edu, armbru@redhat.com, dgilbert@redhat.com, Viktor Prutyanov , rkagan@virtuozzo.com, pbonzini@redhat.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" After this patch 1GB and 2MB pages are being correctly processed during virtual address resolving. Signed-off-by: Viktor Prutyanov --- contrib/elf2dmp/addrspace.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/contrib/elf2dmp/addrspace.c b/contrib/elf2dmp/addrspace.c index 70f4271..f36e749 100644 --- a/contrib/elf2dmp/addrspace.c +++ b/contrib/elf2dmp/addrspace.c @@ -145,6 +145,21 @@ static bool is_present(uint64_t entry) return entry & 0x1; } +static bool page_size_flag(uint64_t entry) +{ + return entry & (1 << 7); +} + +static uint64_t get_1GB_paddr(uint64_t va, uint64_t pdpte) +{ + return (pdpte & 0xfffffc0000000) | (va & 0x3fffffff); +} + +static uint64_t get_2MB_paddr(uint64_t va, uint64_t pgd_entry) +{ + return (pgd_entry & 0xfffffffe00000) | (va & 0x00000001fffff); +} + static uint64_t va_space_va2pa(struct va_space *vs, uint64_t va) { uint64_t pml4e, pdpe, pgd, pte; @@ -159,11 +174,19 @@ static uint64_t va_space_va2pa(struct va_space *vs, uint64_t va) return INVALID_PA; } + if (page_size_flag(pdpe)) { + return get_1GB_paddr(va, pdpe); + } + pgd = get_pgd(vs, va, pdpe); if (!is_present(pgd)) { return INVALID_PA; } + if (page_size_flag(pgd)) { + return get_2MB_paddr(va, pgd); + } + pte = get_pte(vs, va, pgd); if (!is_present(pte)) { return INVALID_PA;