From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 488BFD24452 for ; Thu, 10 Oct 2024 21:01:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Reply-To:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID :References:Mime-Version:In-Reply-To:Date:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lbmXafF2uVHKNbsalganIo7NPvqrdSgpb/bcsG3spRc=; b=qkljlBf+UFubOB gncYMRubLdMNCPGKwU5g7Db3LG1yNHZxs+LoNJNXy0uKdIgdS0JZ8Osycwq9hN3bv4XGVjzOcigB9 1MjGGE7G0XaobdCjYZH/mRLWPYeUb6wll+1Ic8Ne/Z96UFwJOEIz6epWVzaRiaXv4BR6VlQN4jYRR XzvBeoC5E08lAD1LFSrdsgGb+Sf0CNv5ZF6nqquLCJ8INnxPY25JXV/TfKHrbIm/7nmKMvW8RFxNp PMA3LzKcirNkCYCgcospoOdUvnWbUhAUTzH/RgZ3+xugqR3dQKMYFQA71q6QBI6w3hHfw1YCRL9hi qQbBjcfJd7WwnUDBp4yw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1sz0Hk-0000000ELiF-2FYo; Thu, 10 Oct 2024 21:01:24 +0000 Received: from mail-yw1-x114a.google.com ([2607:f8b0:4864:20::114a]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1syxqw-0000000Dq7z-2Vod for linux-riscv@lists.infradead.org; Thu, 10 Oct 2024 18:25:37 +0000 Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-6e31d9c8efcso25656207b3.0 for ; Thu, 10 Oct 2024 11:25:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1728584733; x=1729189533; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:from:to:cc:subject:date :message-id:reply-to; bh=GUnoK8hes+aZNWzzso7nvh51KinEVhA6U4mspQ9USyg=; b=QSA5Sg21GOvgjD1Ji6QRzFZ+R3PP2MPakGWPOI/tPT+1CrRvbx7U8z/Sd1b+fnqA1Q A0AGN19YkH/fcahh2w+MAOQ5qRjYuS47eqno2btw34H/K2nX8nOBoKOz/cGEAqBE9smh CwybwU7CMSzF+dGRGdbQrsgrn0xWROTjrGsCh1QntjZ5OJc9TYkDEDJOpd3AJrIM5x3K 9ulB5CWefMEweMtJTo88ludJG4EwG25DjsKKZ7LdZhrPq8zrlUiAxCon5NbZZrBUmVrS eWGebW8A5hj0X6W7yGnBGdOB59w2+X6x/xS7t1zsL8gPrO4kWpWjcDCH59ZBXYsVwpEt vxyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728584733; x=1729189533; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GUnoK8hes+aZNWzzso7nvh51KinEVhA6U4mspQ9USyg=; b=mHnURumJq1dKSDAHkV21HV26aXMqD4LVRQmsINiRgWhemzupVZe0Nv48xfsbdkB3G8 ZDmdBAzzeITcsfVHFCQI1gr9q84Xyb/e4zyuMnGB+wfmPp4CIXylc+68sIT7o6QnmXdq ibxyf9yyf4EFdKOu3WmF9C3gj58kim8M5QPvWHQCnEaZjPIWqt9eCO/wHmg86rWVSQPB 6Ha9NfQTBZBZgFjJWIA9x4Oej4TeUFAblfdM+0ludwzJ+aE6D5D3OK47V1xO6g/wUJ1s 00/coVHa989Z01TCkCPLZ8OjpKMBIWyVMNc+GWpTOLTKXQijJKPZatPn/oPll4vyUTnw C7FA== X-Forwarded-Encrypted: i=1; AJvYcCUojJFi2DpI44DnW2/qR/6evOdD0zUc6eOuHOQ4N71jymqQQT+Hvdr23MuEe2IqwP9nSWGHCMlHZQ+ETw==@lists.infradead.org X-Gm-Message-State: AOJu0YwCL8xwXvayzSPW+9IpyO+1Z6NfiHNaIPFzltlxPP0YVxqThEo7 wTOLDMoz4/xnKk0Xa/vX9bx9BO/ctAEEW/p9lBlQl5EgMPBsiJT9YmLBuiVYzGqNUgbn70+j5NI i9Q== X-Google-Smtp-Source: AGHT+IHJGx3vYA/ciscOnZoyMGBDqN0A5fNCXYXCqQ4jImN8v4VZ+ud/0qiiFEbLMXTR4U3Rg3+GOt3HIs4= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:9d:3983:ac13:c240]) (user=seanjc job=sendgmr) by 2002:a05:690c:2c01:b0:6db:d257:b98 with SMTP id 00721157ae682-6e32215253bmr563917b3.3.1728584733164; Thu, 10 Oct 2024 11:25:33 -0700 (PDT) Date: Thu, 10 Oct 2024 11:23:21 -0700 In-Reply-To: <20241010182427.1434605-1-seanjc@google.com> Mime-Version: 1.0 References: <20241010182427.1434605-1-seanjc@google.com> X-Mailer: git-send-email 2.47.0.rc1.288.g06298d1525-goog Message-ID: <20241010182427.1434605-20-seanjc@google.com> Subject: [PATCH v13 19/85] KVM: Introduce kvm_follow_pfn() to eventually replace "gfn_to_pfn" APIs From: Sean Christopherson To: Paolo Bonzini , Marc Zyngier , Oliver Upton , Tianrui Zhao , Bibo Mao , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Sean Christopherson Cc: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, "=?UTF-8?q?Alex=20Benn=C3=A9e?=" , Yan Zhao , David Matlack , David Stevens , Andrew Jones X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241010_112534_857739_59C3DE7F X-CRM114-Status: GOOD ( 24.98 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Sean Christopherson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogRGF2aWQgU3RldmVucyA8c3RldmVuc2RAY2hyb21pdW0ub3JnPgoKSW50cm9kdWNlIGt2 bV9mb2xsb3dfcGZuKCkgdG8gZXZlbnR1YWxseSBzdXBwbGFudCB0aGUgdmFyaW91cyAiZ2ZuX3Rv X3BmbiIKQVBJcywgYWxiZWl0IGJ5IGFkZGluZyBtb3JlIHdyYXBwZXJzLiAgVGhlIHByaW1hcnkg bW90aXZhdGlvbiBvZiB0aGUgbmV3CmhlbHBlciBpcyB0byBwYXNzIGEgc3RydWN0dXJlIGluc3Rl YWQgb2YgYW4gZXZlciBjaGFuZ2luZyBzZXQgb2YgcGFyYW1ldGVycywKZS5nLiBzbyB0aGF0IHR3 ZWFraW5nIHRoZSBiZWhhdmlvciwgaW5wdXRzLCBhbmQvb3Igb3V0cHV0cyBvZiB0aGUgInRvIHBm biIKaGVscGVycyBkb2Vzbid0IHJlcXVpcmUgY2h1cm5pbmcgaGFsZiBvZiBLVk0uCgpJbiB0aGUg bW9yZSBkaXN0YW50IGZ1dHVyZSwgdGhlIEFQSXMgZXhwb3NlZCB0byBhcmNoIGNvZGUgY291bGQg YWxzbwpmb2xsb3cgc3VpdCwgZS5nLiBieSBhZGRpbmcgc29tZXRoaW5nIGFraW4gdG8geDg2J3Mg InN0cnVjdCBrdm1fcGFnZV9mYXVsdCIKd2hlbiBmYXVsdGluZyBpbiBndWVzdCBtZW1vcnkuICBC dXQgZm9yIG5vdywgdGhlIGdvYWwgaXMgcHVyZWx5IHRvIGNsZWFuCnVwIEtWTSdzICJpbnRlcm5h bCIgTU1VIGNvZGUuCgpBcyBwYXJ0IG9mIHRoZSBjb252ZXJzaW9uLCByZXBsYWNlIHRoZSB3cml0 ZV9mYXVsdCwgaW50ZXJydXB0aWJsZSwgYW5kCm5vLXdhaXQgYm9vbGVhbiBmbGFncyB3aXRoIEZP TExfV1JJVEUsIEZPTExfSU5URVJSVVBUSUJMRSwgYW5kIEZPTExfTk9XQUlUCnJlc3BlY3RpdmVs eS4gIENvbGxlY3RpbmcgdGhlIHZhcmlvdXMgRk9MTF8qIGZsYWdzIGludG8gYSBzaW5nbGUgZmll bGQKd2lsbCBhZ2FpbiBlYXNlIHRoZSBwYWluIG9mIHBhc3NpbmcgbmV3IGZsYWdzLgoKVGVzdGVk LWJ5OiBBbGV4IEJlbm7DqWUgPGFsZXguYmVubmVlQGxpbmFyby5vcmc+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFN0ZXZlbnMgPHN0ZXZlbnNkQGNocm9taXVtLm9yZz4KQ28tZGV2ZWxvcGVkLWJ5OiBT ZWFuIENocmlzdG9waGVyc29uIDxzZWFuamNAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogU2Vh biBDaHJpc3RvcGhlcnNvbiA8c2VhbmpjQGdvb2dsZS5jb20+Ci0tLQogdmlydC9rdm0va3ZtX21h aW4uYyB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQog dmlydC9rdm0va3ZtX21tLmggICB8ICAyMCArKysrKy0KIHZpcnQva3ZtL3BmbmNhY2hlLmMgfCAg IDkgKystCiAzIGZpbGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCA4MiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1fbWFpbi5jIGIvdmlydC9rdm0va3ZtX21haW4u YwppbmRleCAxMDA3MWYzMWIyY2EuLjUyNjI5YWMyNjExOSAxMDA2NDQKLS0tIGEvdmlydC9rdm0v a3ZtX21haW4uYworKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCkBAIC0yNzUwLDggKzI3NTAsNyBA QCB1bnNpZ25lZCBsb25nIGt2bV92Y3B1X2dmbl90b19odmFfcHJvdChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIGdmbl90IGdmbiwgYm9vbCAqdwogICogVGhlIGZhc3QgcGF0aCB0byBnZXQgdGhlIHdy aXRhYmxlIHBmbiB3aGljaCB3aWxsIGJlIHN0b3JlZCBpbiBAcGZuLAogICogdHJ1ZSBpbmRpY2F0 ZXMgc3VjY2Vzcywgb3RoZXJ3aXNlIGZhbHNlIGlzIHJldHVybmVkLgogICovCi1zdGF0aWMgYm9v bCBodmFfdG9fcGZuX2Zhc3QodW5zaWduZWQgbG9uZyBhZGRyLCBib29sIHdyaXRlX2ZhdWx0LAot CQkJICAgIGJvb2wgKndyaXRhYmxlLCBrdm1fcGZuX3QgKnBmbikKK3N0YXRpYyBib29sIGh2YV90 b19wZm5fZmFzdChzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pCiB7 CiAJc3RydWN0IHBhZ2UgKnBhZ2VbMV07CiAKQEAgLTI3NjAsMTQgKzI3NTksMTMgQEAgc3RhdGlj IGJvb2wgaHZhX3RvX3Bmbl9mYXN0KHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCB3cml0ZV9mYXVs dCwKIAkgKiBvciB0aGUgY2FsbGVyIGFsbG93cyB0byBtYXAgYSB3cml0YWJsZSBwZm4gZm9yIGEg cmVhZCBmYXVsdAogCSAqIHJlcXVlc3QuCiAJICovCi0JaWYgKCEod3JpdGVfZmF1bHQgfHwgd3Jp dGFibGUpKQorCWlmICghKChrZnAtPmZsYWdzICYgRk9MTF9XUklURSkgfHwga2ZwLT5tYXBfd3Jp dGFibGUpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoZ2V0X3VzZXJfcGFnZV9mYXN0X29ubHko YWRkciwgRk9MTF9XUklURSwgcGFnZSkpIHsKKwlpZiAoZ2V0X3VzZXJfcGFnZV9mYXN0X29ubHko a2ZwLT5odmEsIEZPTExfV1JJVEUsIHBhZ2UpKSB7CiAJCSpwZm4gPSBwYWdlX3RvX3BmbihwYWdl WzBdKTsKLQotCQlpZiAod3JpdGFibGUpCi0JCQkqd3JpdGFibGUgPSB0cnVlOworCQlpZiAoa2Zw LT5tYXBfd3JpdGFibGUpCisJCQkqa2ZwLT5tYXBfd3JpdGFibGUgPSB0cnVlOwogCQlyZXR1cm4g dHJ1ZTsKIAl9CiAKQEAgLTI3NzgsOCArMjc3Niw3IEBAIHN0YXRpYyBib29sIGh2YV90b19wZm5f ZmFzdCh1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgd3JpdGVfZmF1bHQsCiAgKiBUaGUgc2xvdyBw YXRoIHRvIGdldCB0aGUgcGZuIG9mIHRoZSBzcGVjaWZpZWQgaG9zdCB2aXJ0dWFsIGFkZHJlc3Ms CiAgKiAxIGluZGljYXRlcyBzdWNjZXNzLCAtZXJybm8gaXMgcmV0dXJuZWQgaWYgZXJyb3IgaXMg ZGV0ZWN0ZWQuCiAgKi8KLXN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9zbG93KHVuc2lnbmVkIGxvbmcg YWRkciwgYm9vbCBub193YWl0LCBib29sIHdyaXRlX2ZhdWx0LAotCQkJICAgYm9vbCBpbnRlcnJ1 cHRpYmxlLCBib29sICp3cml0YWJsZSwga3ZtX3Bmbl90ICpwZm4pCitzdGF0aWMgaW50IGh2YV90 b19wZm5fc2xvdyhzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pCiB7 CiAJLyoKIAkgKiBXaGVuIGEgVkNQVSBhY2Nlc3NlcyBhIHBhZ2UgdGhhdCBpcyBub3QgbWFwcGVk IGludG8gdGhlIHNlY29uZGFyeQpAQCAtMjc5MiwzNCArMjc4OSwzMCBAQCBzdGF0aWMgaW50IGh2 YV90b19wZm5fc2xvdyh1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgbm9fd2FpdCwgYm9vbCB3cml0 ZV9mYXVsdCwKIAkgKiBOb3RlIHRoYXQgZ2V0X3VzZXJfcGFnZV9mYXN0X29ubHkoKSBhbmQgRk9M TF9XUklURSBmb3Igbm93CiAJICogaW1wbGljaXRseSBob25vciBOVU1BIGhpbnRpbmcgZmF1bHRz IGFuZCBkb24ndCBuZWVkIHRoaXMgZmxhZy4KIAkgKi8KLQl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBG T0xMX0hXUE9JU09OIHwgRk9MTF9IT05PUl9OVU1BX0ZBVUxUOwotCXN0cnVjdCBwYWdlICpwYWdl OworCXVuc2lnbmVkIGludCBmbGFncyA9IEZPTExfSFdQT0lTT04gfCBGT0xMX0hPTk9SX05VTUFf RkFVTFQgfCBrZnAtPmZsYWdzOworCXN0cnVjdCBwYWdlICpwYWdlLCAqd3BhZ2U7CiAJaW50IG5w YWdlczsKIAotCWlmICh3cml0YWJsZSkKLQkJKndyaXRhYmxlID0gd3JpdGVfZmF1bHQ7Ci0KLQlp ZiAod3JpdGVfZmF1bHQpCi0JCWZsYWdzIHw9IEZPTExfV1JJVEU7Ci0JaWYgKG5vX3dhaXQpCi0J CWZsYWdzIHw9IEZPTExfTk9XQUlUOwotCWlmIChpbnRlcnJ1cHRpYmxlKQotCQlmbGFncyB8PSBG T0xMX0lOVEVSUlVQVElCTEU7Ci0KLQlucGFnZXMgPSBnZXRfdXNlcl9wYWdlc191bmxvY2tlZChh ZGRyLCAxLCAmcGFnZSwgZmxhZ3MpOworCW5wYWdlcyA9IGdldF91c2VyX3BhZ2VzX3VubG9ja2Vk KGtmcC0+aHZhLCAxLCAmcGFnZSwgZmxhZ3MpOwogCWlmIChucGFnZXMgIT0gMSkKIAkJcmV0dXJu IG5wYWdlczsKIAorCWlmICgha2ZwLT5tYXBfd3JpdGFibGUpCisJCWdvdG8gb3V0OworCisJaWYg KGtmcC0+ZmxhZ3MgJiBGT0xMX1dSSVRFKSB7CisJCSprZnAtPm1hcF93cml0YWJsZSA9IHRydWU7 CisJCWdvdG8gb3V0OworCX0KKwogCS8qIG1hcCByZWFkIGZhdWx0IGFzIHdyaXRhYmxlIGlmIHBv c3NpYmxlICovCi0JaWYgKHVubGlrZWx5KCF3cml0ZV9mYXVsdCkgJiYgd3JpdGFibGUpIHsKLQkJ c3RydWN0IHBhZ2UgKndwYWdlOwotCi0JCWlmIChnZXRfdXNlcl9wYWdlX2Zhc3Rfb25seShhZGRy LCBGT0xMX1dSSVRFLCAmd3BhZ2UpKSB7Ci0JCQkqd3JpdGFibGUgPSB0cnVlOwotCQkJcHV0X3Bh Z2UocGFnZSk7Ci0JCQlwYWdlID0gd3BhZ2U7Ci0JCX0KKwlpZiAoZ2V0X3VzZXJfcGFnZV9mYXN0 X29ubHkoa2ZwLT5odmEsIEZPTExfV1JJVEUsICZ3cGFnZSkpIHsKKwkJKmtmcC0+bWFwX3dyaXRh YmxlID0gdHJ1ZTsKKwkJcHV0X3BhZ2UocGFnZSk7CisJCXBhZ2UgPSB3cGFnZTsKIAl9CisKK291 dDoKIAkqcGZuID0gcGFnZV90b19wZm4ocGFnZSk7CiAJcmV0dXJuIG5wYWdlczsKIH0KQEAgLTI4 NDYsMTAgKzI4MzksMTAgQEAgc3RhdGljIGludCBrdm1fdHJ5X2dldF9wZm4oa3ZtX3Bmbl90IHBm bikKIH0KIAogc3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hLAotCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCB3cml0ZV9mYXVs dCwKLQkJCSAgICAgICBib29sICp3cml0YWJsZSwga3ZtX3Bmbl90ICpwX3BmbikKKwkJCSAgICAg ICBzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwX3BmbikKIHsKLQlzdHJ1 Y3QgZm9sbG93X3Bmbm1hcF9hcmdzIGFyZ3MgPSB7IC52bWEgPSB2bWEsIC5hZGRyZXNzID0gYWRk ciB9OworCXN0cnVjdCBmb2xsb3dfcGZubWFwX2FyZ3MgYXJncyA9IHsgLnZtYSA9IHZtYSwgLmFk ZHJlc3MgPSBrZnAtPmh2YSB9OworCWJvb2wgd3JpdGVfZmF1bHQgPSBrZnAtPmZsYWdzICYgRk9M TF9XUklURTsKIAlrdm1fcGZuX3QgcGZuOwogCWludCByOwogCkBAIC0yODYwLDcgKzI4NTMsNyBA QCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsCiAJCSAqIG5vdCBjYWxsIHRoZSBmYXVsdCBoYW5kbGVyLCBzbyBkbyBpdCBoZXJlLgogCQkg Ki8KIAkJYm9vbCB1bmxvY2tlZCA9IGZhbHNlOwotCQlyID0gZml4dXBfdXNlcl9mYXVsdChjdXJy ZW50LT5tbSwgYWRkciwKKwkJciA9IGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC0+bW0sIGtmcC0+ aHZhLAogCQkJCSAgICAgKHdyaXRlX2ZhdWx0ID8gRkFVTFRfRkxBR19XUklURSA6IDApLAogCQkJ CSAgICAgJnVubG9ja2VkKTsKIAkJaWYgKHVubG9ja2VkKQpAQCAtMjg3OCw4ICsyODcxLDggQEAg c3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h LAogCQlnb3RvIG91dDsKIAl9CiAKLQlpZiAod3JpdGFibGUpCi0JCSp3cml0YWJsZSA9IGFyZ3Mu d3JpdGFibGU7CisJaWYgKGtmcC0+bWFwX3dyaXRhYmxlKQorCQkqa2ZwLT5tYXBfd3JpdGFibGUg PSBhcmdzLndyaXRhYmxlOwogCXBmbiA9IGFyZ3MucGZuOwogCiAJLyoKQEAgLTI5MDgsMjIgKzI5 MDEsNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsCiAJcmV0dXJuIHI7CiB9CiAKLS8qCi0gKiBQaW4gZ3Vlc3QgcGFnZSBpbiBtZW1v cnkgYW5kIHJldHVybiBpdHMgcGZuLgotICogQGFkZHI6IGhvc3QgdmlydHVhbCBhZGRyZXNzIHdo aWNoIG1hcHMgbWVtb3J5IHRvIHRoZSBndWVzdAotICogQGludGVycnVwdGlibGU6IHdoZXRoZXIg dGhlIHByb2Nlc3MgY2FuIGJlIGludGVycnVwdGVkIGJ5IG5vbi1mYXRhbCBzaWduYWxzCi0gKiBA bm9fd2FpdDogd2hldGhlciBvciBub3QgdGhpcyBmdW5jdGlvbiBuZWVkIHRvIHdhaXQgSU8gY29t cGxldGUgaWYgdGhlCi0gKgkgICAgIGhvc3QgcGFnZSBpcyBub3QgaW4gdGhlIG1lbW9yeQotICog QHdyaXRlX2ZhdWx0OiB3aGV0aGVyIHdlIHNob3VsZCBnZXQgYSB3cml0YWJsZSBob3N0IHBhZ2UK LSAqIEB3cml0YWJsZTogd2hldGhlciBpdCBhbGxvd3MgdG8gbWFwIGEgd3JpdGFibGUgaG9zdCBw YWdlIGZvciAhQHdyaXRlX2ZhdWx0Ci0gKgotICogVGhlIGZ1bmN0aW9uIHdpbGwgbWFwIGEgd3Jp dGFibGUgaG9zdCBwYWdlIGZvciB0aGVzZSB0d28gY2FzZXM6Ci0gKiAxKTogQHdyaXRlX2ZhdWx0 ID0gdHJ1ZQotICogMik6IEB3cml0ZV9mYXVsdCA9IGZhbHNlICYmIEB3cml0YWJsZSwgQHdyaXRh YmxlIHdpbGwgdGVsbCB0aGUgY2FsbGVyCi0gKiAgICAgd2hldGhlciB0aGUgbWFwcGluZyBpcyB3 cml0YWJsZS4KLSAqLwota3ZtX3Bmbl90IGh2YV90b19wZm4odW5zaWduZWQgbG9uZyBhZGRyLCBi b29sIGludGVycnVwdGlibGUsIGJvb2wgbm9fd2FpdCwKLQkJICAgICBib29sIHdyaXRlX2ZhdWx0 LCBib29sICp3cml0YWJsZSkKK2t2bV9wZm5fdCBodmFfdG9fcGZuKHN0cnVjdCBrdm1fZm9sbG93 X3BmbiAqa2ZwKQogewogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwogCWt2bV9wZm5fdCBw Zm47CkBAIC0yOTMxLDExICsyOTA5LDEwIEBAIGt2bV9wZm5fdCBodmFfdG9fcGZuKHVuc2lnbmVk IGxvbmcgYWRkciwgYm9vbCBpbnRlcnJ1cHRpYmxlLCBib29sIG5vX3dhaXQsCiAKIAltaWdodF9z bGVlcCgpOwogCi0JaWYgKGh2YV90b19wZm5fZmFzdChhZGRyLCB3cml0ZV9mYXVsdCwgd3JpdGFi bGUsICZwZm4pKQorCWlmIChodmFfdG9fcGZuX2Zhc3Qoa2ZwLCAmcGZuKSkKIAkJcmV0dXJuIHBm bjsKIAotCW5wYWdlcyA9IGh2YV90b19wZm5fc2xvdyhhZGRyLCBub193YWl0LCB3cml0ZV9mYXVs dCwgaW50ZXJydXB0aWJsZSwKLQkJCQkgd3JpdGFibGUsICZwZm4pOworCW5wYWdlcyA9IGh2YV90 b19wZm5fc2xvdyhrZnAsICZwZm4pOwogCWlmIChucGFnZXMgPT0gMSkKIAkJcmV0dXJuIHBmbjsK IAlpZiAobnBhZ2VzID09IC1FSU5UUiB8fCBucGFnZXMgPT0gLUVBR0FJTikKQEAgLTI5NDUsMTgg KzI5MjIsMTkgQEAga3ZtX3Bmbl90IGh2YV90b19wZm4odW5zaWduZWQgbG9uZyBhZGRyLCBib29s IGludGVycnVwdGlibGUsIGJvb2wgbm9fd2FpdCwKIAogCW1tYXBfcmVhZF9sb2NrKGN1cnJlbnQt Pm1tKTsKIHJldHJ5OgotCXZtYSA9IHZtYV9sb29rdXAoY3VycmVudC0+bW0sIGFkZHIpOworCXZt YSA9IHZtYV9sb29rdXAoY3VycmVudC0+bW0sIGtmcC0+aHZhKTsKIAogCWlmICh2bWEgPT0gTlVM TCkKIAkJcGZuID0gS1ZNX1BGTl9FUlJfRkFVTFQ7CiAJZWxzZSBpZiAodm1hLT52bV9mbGFncyAm IChWTV9JTyB8IFZNX1BGTk1BUCkpIHsKLQkJciA9IGh2YV90b19wZm5fcmVtYXBwZWQodm1hLCBh ZGRyLCB3cml0ZV9mYXVsdCwgd3JpdGFibGUsICZwZm4pOworCQlyID0gaHZhX3RvX3Bmbl9yZW1h cHBlZCh2bWEsIGtmcCwgJnBmbik7CiAJCWlmIChyID09IC1FQUdBSU4pCiAJCQlnb3RvIHJldHJ5 OwogCQlpZiAociA8IDApCiAJCQlwZm4gPSBLVk1fUEZOX0VSUl9GQVVMVDsKIAl9IGVsc2Ugewot CQlpZiAobm9fd2FpdCAmJiB2bWFfaXNfdmFsaWQodm1hLCB3cml0ZV9mYXVsdCkpCisJCWlmICgo a2ZwLT5mbGFncyAmIEZPTExfTk9XQUlUKSAmJgorCQkgICAgdm1hX2lzX3ZhbGlkKHZtYSwga2Zw LT5mbGFncyAmIEZPTExfV1JJVEUpKQogCQkJcGZuID0gS1ZNX1BGTl9FUlJfTkVFRFNfSU87CiAJ CWVsc2UKIAkJCXBmbiA9IEtWTV9QRk5fRVJSX0ZBVUxUOwpAQCAtMjk2NSw0MSArMjk0Myw2OSBA QCBrdm1fcGZuX3QgaHZhX3RvX3Bmbih1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgaW50ZXJydXB0 aWJsZSwgYm9vbCBub193YWl0LAogCXJldHVybiBwZm47CiB9CiAKK3N0YXRpYyBrdm1fcGZuX3Qg a3ZtX2ZvbGxvd19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApCit7CisJa2ZwLT5odmEg PSBfX2dmbl90b19odmFfbWFueShrZnAtPnNsb3QsIGtmcC0+Z2ZuLCBOVUxMLAorCQkJCSAgICAg a2ZwLT5mbGFncyAmIEZPTExfV1JJVEUpOworCisJaWYgKGtmcC0+aHZhID09IEtWTV9IVkFfRVJS X1JPX0JBRCkKKwkJcmV0dXJuIEtWTV9QRk5fRVJSX1JPX0ZBVUxUOworCisJaWYgKGt2bV9pc19l cnJvcl9odmEoa2ZwLT5odmEpKQorCQlyZXR1cm4gS1ZNX1BGTl9OT1NMT1Q7CisKKwlpZiAobWVt c2xvdF9pc19yZWFkb25seShrZnAtPnNsb3QpICYmIGtmcC0+bWFwX3dyaXRhYmxlKSB7CisJCSpr ZnAtPm1hcF93cml0YWJsZSA9IGZhbHNlOworCQlrZnAtPm1hcF93cml0YWJsZSA9IE5VTEw7CisJ fQorCisJcmV0dXJuIGh2YV90b19wZm4oa2ZwKTsKK30KKwoga3ZtX3Bmbl90IF9fZ2ZuX3RvX3Bm bl9tZW1zbG90KGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsIGdmbl90IGdmbiwK IAkJCSAgICAgICBib29sIGludGVycnVwdGlibGUsIGJvb2wgbm9fd2FpdCwKIAkJCSAgICAgICBi b29sIHdyaXRlX2ZhdWx0LCBib29sICp3cml0YWJsZSkKIHsKLQl1bnNpZ25lZCBsb25nIGFkZHIg PSBfX2dmbl90b19odmFfbWFueShzbG90LCBnZm4sIE5VTEwsIHdyaXRlX2ZhdWx0KTsKLQotCWlm IChrdm1faXNfZXJyb3JfaHZhKGFkZHIpKSB7Ci0JCWlmICh3cml0YWJsZSkKLQkJCSp3cml0YWJs ZSA9IGZhbHNlOwotCi0JCXJldHVybiBhZGRyID09IEtWTV9IVkFfRVJSX1JPX0JBRCA/IEtWTV9Q Rk5fRVJSX1JPX0ZBVUxUIDoKLQkJCQkJCSAgICBLVk1fUEZOX05PU0xPVDsKLQl9Ci0KLQkvKiBE byBub3QgbWFwIHdyaXRhYmxlIHBmbiBpbiB0aGUgcmVhZG9ubHkgbWVtc2xvdC4gKi8KLQlpZiAo d3JpdGFibGUgJiYgbWVtc2xvdF9pc19yZWFkb25seShzbG90KSkgewotCQkqd3JpdGFibGUgPSBm YWxzZTsKLQkJd3JpdGFibGUgPSBOVUxMOwotCX0KLQotCXJldHVybiBodmFfdG9fcGZuKGFkZHIs IGludGVycnVwdGlibGUsIG5vX3dhaXQsIHdyaXRlX2ZhdWx0LCB3cml0YWJsZSk7CisJc3RydWN0 IGt2bV9mb2xsb3dfcGZuIGtmcCA9IHsKKwkJLnNsb3QgPSBzbG90LAorCQkuZ2ZuID0gZ2ZuLAor CQkubWFwX3dyaXRhYmxlID0gd3JpdGFibGUsCisJfTsKKworCWlmICh3cml0ZV9mYXVsdCkKKwkJ a2ZwLmZsYWdzIHw9IEZPTExfV1JJVEU7CisJaWYgKG5vX3dhaXQpCisJCWtmcC5mbGFncyB8PSBG T0xMX05PV0FJVDsKKwlpZiAoaW50ZXJydXB0aWJsZSkKKwkJa2ZwLmZsYWdzIHw9IEZPTExfSU5U RVJSVVBUSUJMRTsKKworCXJldHVybiBrdm1fZm9sbG93X3Bmbigma2ZwKTsKIH0KIEVYUE9SVF9T WU1CT0xfR1BMKF9fZ2ZuX3RvX3Bmbl9tZW1zbG90KTsKIAoga3ZtX3Bmbl90IGdmbl90b19wZm5f cHJvdChzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGdmbiwgYm9vbCB3cml0ZV9mYXVsdCwKIAkJICAg ICAgYm9vbCAqd3JpdGFibGUpCiB7Ci0JcmV0dXJuIF9fZ2ZuX3RvX3Bmbl9tZW1zbG90KGdmbl90 b19tZW1zbG90KGt2bSwgZ2ZuKSwgZ2ZuLCBmYWxzZSwgZmFsc2UsCi0JCQkJICAgIHdyaXRlX2Zh dWx0LCB3cml0YWJsZSk7CisJc3RydWN0IGt2bV9mb2xsb3dfcGZuIGtmcCA9IHsKKwkJLnNsb3Qg PSBnZm5fdG9fbWVtc2xvdChrdm0sIGdmbiksCisJCS5nZm4gPSBnZm4sCisJCS5mbGFncyA9IHdy aXRlX2ZhdWx0ID8gRk9MTF9XUklURSA6IDAsCisJCS5tYXBfd3JpdGFibGUgPSB3cml0YWJsZSwK Kwl9OworCisJcmV0dXJuIGt2bV9mb2xsb3dfcGZuKCZrZnApOwogfQogRVhQT1JUX1NZTUJPTF9H UEwoZ2ZuX3RvX3Bmbl9wcm90KTsKIAoga3ZtX3Bmbl90IGdmbl90b19wZm5fbWVtc2xvdChjb25z dCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90LCBnZm5fdCBnZm4pCiB7Ci0JcmV0dXJuIF9f Z2ZuX3RvX3Bmbl9tZW1zbG90KHNsb3QsIGdmbiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBOVUxMKTsK KwlzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0geworCQkuc2xvdCA9IHNsb3QsCisJCS5nZm4g PSBnZm4sCisJCS5mbGFncyA9IEZPTExfV1JJVEUsCisJfTsKKworCXJldHVybiBrdm1fZm9sbG93 X3Bmbigma2ZwKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGdmbl90b19wZm5fbWVtc2xvdCk7CiAK ZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tbS5oIGIvdmlydC9rdm0va3ZtX21tLmgKaW5kZXgg NTFmM2ZlZTRjYTNmLi5kNWEyMTU5NThmMDYgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bV9tbS5o CisrKyBiL3ZpcnQva3ZtL2t2bV9tbS5oCkBAIC0yMCw4ICsyMCwyNCBAQAogI2RlZmluZSBLVk1f TU1VX1VOTE9DSyhrdm0pCQlzcGluX3VubG9jaygmKGt2bSktPm1tdV9sb2NrKQogI2VuZGlmIC8q IEtWTV9IQVZFX01NVV9SV0xPQ0sgKi8KIAota3ZtX3Bmbl90IGh2YV90b19wZm4odW5zaWduZWQg bG9uZyBhZGRyLCBib29sIGludGVycnVwdGlibGUsIGJvb2wgbm9fd2FpdCwKLQkJICAgICBib29s IHdyaXRlX2ZhdWx0LCBib29sICp3cml0YWJsZSk7CisKK3N0cnVjdCBrdm1fZm9sbG93X3BmbiB7 CisJY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdDsKKwljb25zdCBnZm5fdCBnZm47 CisKKwl1bnNpZ25lZCBsb25nIGh2YTsKKworCS8qIEZPTExfKiBmbGFncyBtb2RpZnlpbmcgbG9v a3VwIGJlaGF2aW9yLCBlLmcuIEZPTExfV1JJVEUuICovCisJdW5zaWduZWQgaW50IGZsYWdzOwor CisJLyoKKwkgKiBJZiBub24tTlVMTCwgdHJ5IHRvIGdldCBhIHdyaXRhYmxlIG1hcHBpbmcgZXZl biBmb3IgYSByZWFkIGZhdWx0LgorCSAqIFNldCB0byB0cnVlIGlmIGEgd3JpdGFibGUgbWFwcGlu ZyB3YXMgb2J0YWluZWQuCisJICovCisJYm9vbCAqbWFwX3dyaXRhYmxlOworfTsKKwora3ZtX3Bm bl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApOwogCiAjaWZkZWYgQ09O RklHX0hBVkVfS1ZNX1BGTkNBQ0hFCiB2b2lkIGdmbl90b19wZm5fY2FjaGVfaW52YWxpZGF0ZV9z dGFydChzdHJ1Y3Qga3ZtICprdm0sCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9wZm5jYWNoZS5jIGIv dmlydC9rdm0vcGZuY2FjaGUuYwppbmRleCAzMmRjNjFmNDhjODEuLjA2N2RhZjlhZDZlZiAxMDA2 NDQKLS0tIGEvdmlydC9rdm0vcGZuY2FjaGUuYworKysgYi92aXJ0L2t2bS9wZm5jYWNoZS5jCkBA IC0xNTksNiArMTU5LDEyIEBAIHN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1 Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKQogCWt2bV9wZm5fdCBuZXdfcGZuID0gS1ZNX1BGTl9F UlJfRkFVTFQ7CiAJdm9pZCAqbmV3X2todmEgPSBOVUxMOwogCXVuc2lnbmVkIGxvbmcgbW11X3Nl cTsKKwlzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0geworCQkuc2xvdCA9IGdwYy0+bWVtc2xv dCwKKwkJLmdmbiA9IGdwYV90b19nZm4oZ3BjLT5ncGEpLAorCQkuZmxhZ3MgPSBGT0xMX1dSSVRF LAorCQkuaHZhID0gZ3BjLT51aHZhLAorCX07CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZncGMt PnJlZnJlc2hfbG9jayk7CiAKQEAgLTE5Nyw4ICsyMDMsNyBAQCBzdGF0aWMga3ZtX3Bmbl90IGh2 YV90b19wZm5fcmV0cnkoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYykKIAkJCWNvbmRfcmVz Y2hlZCgpOwogCQl9CiAKLQkJLyogV2UgYWx3YXlzIHJlcXVlc3QgYSB3cml0YWJsZSBtYXBwaW5n ICovCi0JCW5ld19wZm4gPSBodmFfdG9fcGZuKGdwYy0+dWh2YSwgZmFsc2UsIGZhbHNlLCB0cnVl LCBOVUxMKTsKKwkJbmV3X3BmbiA9IGh2YV90b19wZm4oJmtmcCk7CiAJCWlmIChpc19lcnJvcl9u b3Nsb3RfcGZuKG5ld19wZm4pKQogCQkJZ290byBvdXRfZXJyb3I7CiAKLS0gCjIuNDcuMC5yYzEu Mjg4LmcwNjI5OGQxNTI1LWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXJpc2N2Cg==