From nobody Tue Nov 4 15:31:25 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 153021913943238.39056964466431; Thu, 28 Jun 2018 13:52:19 -0700 (PDT) Received: from localhost ([::1]:38543 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYdtq-0004nx-OF for importer@patchew.org; Thu, 28 Jun 2018 16:52:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38510) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYdBE-0007uA-Bz for qemu-devel@nongnu.org; Thu, 28 Jun 2018 16:06:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYdBB-0001Rn-6o for qemu-devel@nongnu.org; Thu, 28 Jun 2018 16:06:12 -0400 Received: from mail-wr0-x243.google.com ([2a00:1450:400c:c0c::243]:34404) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fYdBA-0001P3-VM for qemu-devel@nongnu.org; Thu, 28 Jun 2018 16:06:09 -0400 Received: by mail-wr0-x243.google.com with SMTP id a12-v6so6696671wro.1 for ; Thu, 28 Jun 2018 13:06:08 -0700 (PDT) Received: from 640k.lan ([82.84.124.111]) by smtp.gmail.com with ESMTPSA id 127-v6sm6211110wmd.18.2018.06.28.13.06.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 13:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=WZIKc4Qj6OdJt/OsldqtubpQGgVOZ8CfHk3rcKtqcso=; b=jFm6mt3/rzszNft0FY0O3pDzV/0iVvhVNIbT18YuFHUbrdy3Oq46Cr9tp+9C+y/901 PkZ9F8y5hjtV5w6MfXgOVNYsU6ZsqafdtS6jqbUjkeSlZYXpbux6Mfag8s3FPFFBy1IP 00f99xENNrlI9/pn9qg/bZ697yhP2vhtHEp/VqGnJRZnQSm84kEplOPuLnUmx5Zgyvac LqNCVl9SNdNMvMychuum4+VH9q/EH41twIlNYHx7czBMRokGuQAfBq4vibDghC1fOM1K EdPmlBhB395+3F69+Rvo2uS5kOUb9g9SGN0GIxjaDTn+FfdgyteuDVdP3Hq5WZPun+O0 FsPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=WZIKc4Qj6OdJt/OsldqtubpQGgVOZ8CfHk3rcKtqcso=; b=q4kQ1q4tzkmwG+WSmTQ/pm4205AS3FxQL00U+0mI5OF9kYmLmKd7ycI+cXxTqXBQ2y 5PC9k+QdwgP5+C6D8bFuzKQAhgxGJ/84dfxzSPlbVNGOUdfioGfO/LgkxyzRIJJNTi4w FNMrQ+tPrwGdrnS16WJF96q9JCxSBi6hfOfAlfup2+JREXmcjXfnzAH2WOa9ODaflt+5 dmXyso/gg+R4nrQ6P0RGwdL2DVsXN+3tqCJkLeckrAX2tB93+dUH+QsuMxzLKNdsRB8F XiorXcYITgiqiV+OFRfb1T4o/ANOTL84AyDdC+R8epvyDzpHZPujHMqNULnFe0h8kALf R4Rw== X-Gm-Message-State: APt69E0womytkl3/5bGkci2WVSpAS2+kJdXDAmcLuPXvef9D1zxAP5jT jCrQNelzWHhWcpNlm93LG3+O9ctE X-Google-Smtp-Source: AAOMgpcjXZCzPmxkj7n2duVGJKK8TxeZi3k9za+uaJ+iyfyc8APy1487dkwPn2JCcih/f//EedyP5g== X-Received: by 2002:adf:8188:: with SMTP id 8-v6mr10260244wra.89.1530216367759; Thu, 28 Jun 2018 13:06:07 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 28 Jun 2018 22:05:05 +0200 Message-Id: <1530216310-52873-56-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1530216310-52873-1-git-send-email-pbonzini@redhat.com> References: <1530216310-52873-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::243 Subject: [Qemu-devel] [PULL 55/60] dump: add fallback KDBG using in Windows dump 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Viktor Prutyanov KdDebuggerDataBlock may be encrypted in guest memory and dump will be useless in this case. But guest driver can obtain decrypted KDBG and expose its address through BugcheckParameter1 field in raw header. After this patch, QEMU will be able to use fallback KdDebuggerDataBlock. Signed-off-by: Viktor Prutyanov Message-Id: <20180517162342.4330-4-viktor.prutyanov@virtuozzo.com> Signed-off-by: Paolo Bonzini --- win_dump.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/win_dump.c b/win_dump.c index 7d956ca..2d9afb5 100644 --- a/win_dump.c +++ b/win_dump.c @@ -144,21 +144,37 @@ static void check_kdbg(WinDumpHeader64 *h, Error **er= rp) { const char OwnerTag[] =3D "KDBG"; char read_OwnerTag[4]; + uint64_t KdDebuggerDataBlock =3D h->KdDebuggerDataBlock; + bool try_fallback =3D true; =20 +try_again: if (cpu_memory_rw_debug(first_cpu, - h->KdDebuggerDataBlock + KDBG_OWNER_TAG_OFFSET64, + KdDebuggerDataBlock + KDBG_OWNER_TAG_OFFSET64, (uint8_t *)&read_OwnerTag, sizeof(read_OwnerTag), 0)) { error_setg(errp, "win-dump: failed to read OwnerTag"); return; } =20 if (memcmp(read_OwnerTag, OwnerTag, sizeof(read_OwnerTag))) { - error_setg(errp, "win-dump: invalid KDBG OwnerTag," - " expected '%.4s', got '%.4s'," - " KdDebuggerDataBlock seems to be encrypted", - OwnerTag, read_OwnerTag); - return; + if (try_fallback) { + /* + * If attempt to use original KDBG failed + * (most likely because of its encryption), + * we try to use KDBG obtained by guest driver. + */ + + KdDebuggerDataBlock =3D h->BugcheckParameter1; + try_fallback =3D false; + goto try_again; + } else { + error_setg(errp, "win-dump: invalid KDBG OwnerTag," + " expected '%.4s', got '%.4s'", + OwnerTag, read_OwnerTag); + return; + } } + + h->KdDebuggerDataBlock =3D KdDebuggerDataBlock; } =20 void create_win_dump(DumpState *s, Error **errp) --=20 1.8.3.1