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 5AA98D68B33 for ; Thu, 14 Nov 2024 16:19:11 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=R8w8C/5kZu+MQKmr1wkJCdJsARZupKXAAVwQyaHTnSU=; b=GF+vexX3DgSAs1 zxTl560uqfiV0FaPgp6aMgjQ7SjdX31AN3edohLdI0YXLKG+zzA5Xn6G5ryg6NWr15qScBiXd8D+l /k5+5EZY73FT/B/aw8uZ6UQOIJXK47nenUa3OnEmCavl5ISM9Waj/PuNFGvBIxqHvAgayuPPTTbQI i2+/ePE9ziEHHgLfllz1XG3WsigaN1GrWJZd7HwRqQkC2Xf2Dfw6/ro3c1g72daFW0Kz82nDQK5ij 5s5wf+LgShDzAmee4w13qwnuH3ZOE6T2nPDyp3B8RBeGDsLc6nGdhffHUrecwcGJVwt6soZpDebZB 5UpaXXYjlZesuFqxyuDw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tBcYk-000000005Av-2dXH; Thu, 14 Nov 2024 16:19:06 +0000 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tBcYh-0000000053E-0btn for linux-riscv@lists.infradead.org; Thu, 14 Nov 2024 16:19:04 +0000 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-43167ff0f91so7196075e9.1 for ; Thu, 14 Nov 2024 08:19:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1731601141; x=1732205941; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VmyPhlw9y/X/fnXH6ufVz2Fv/AglekMjgv19lGdZt0M=; b=KE9OFUWFQzFUjPcc5kcmYg3GlM4Z8AzuyhvUcRrC7YGGs5VnHyyTKoyUZ8Ghu7Dw0y ZNv2rQZW+ifQvtdONtP7BbwB5cJtQzoMqJ8fJGeYnckJ8RlK8JweMoA5cu2rsrUyteg+ yIA8y4b0mds5dYzq56xKjE8Ifkh0J4BbFwoDkofM4BFX13I6E/2MsbHbvipXwNnOwnq9 dctUhXFXel4CR6V6GhN9y5/tgAlu6pW3Sp0ZM30lHxQLsI/HnARApsYBCFxKVSFOXPMQ va67Cy6QoICCn4uTqv7qlnTFptv2n1FlETe2L8lEkO3JX1A91NSTi3iQRzdk7djxC/tl eKug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731601141; x=1732205941; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VmyPhlw9y/X/fnXH6ufVz2Fv/AglekMjgv19lGdZt0M=; b=Fi8jCbEfn+5mYOamNw1reGurK20Ze7gihj/iCZmyEJLZIMOaf5yFebtq/EzMX26jfD XkQnUbeJsxxNqu1yVQtJHTz+OBqzrFGwcaq2H+6MZG0p0YUib6hHID8dTYgRmao4SlRE eNFQ57y7gWYrXKxYuR2yxT5A519D0oWrV50AA2joGfNmMiNPyA372++YSSHr44dptBxw 2liiWbRmY3n0yNzO/K84DigEsHZi9QCeMW+7M2zPOBtSiz+vq5zGi7XUILC1NndfZXyL +eZVWYBgikPb5f4QBl6ckhg9oKEkZqhQrrhnN7oX4wjqkw81thSS05DQC8hGlsGisVBq Xjbw== X-Forwarded-Encrypted: i=1; AJvYcCX/XSRVY4YNAXTiKIv/y2lHklWDAYiliZCqFTB4ivtDAAINbijSmzBT0zYPpqIFi1MisRetxkQ1qgdUOA==@lists.infradead.org X-Gm-Message-State: AOJu0YyT6gDGC5xcHDzdU3dp/t90lzAGBNIk+ysv16MJCfXyTGoiuLm8 Zw/Q3tLbPRY6L+451+y0jCB4ttpKHXHUgrBkHh+hUaGi8n0yMS19Ob/epQ0pq64= X-Google-Smtp-Source: AGHT+IEurYWNfkgEG6OVCqRhsfT6EytEjQqOu8Vk3V55flsbBNhf08vSjr2U+chyzyCkXFZDditk7A== X-Received: by 2002:a05:6000:2aa:b0:37d:4ef1:1820 with SMTP id ffacd0b85a97d-3820df88797mr5457081f8f.40.1731601141065; Thu, 14 Nov 2024 08:19:01 -0800 (PST) Received: from localhost (2001-1ae9-1c2-4c00-20f-c6b4-1e57-7965.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:20f:c6b4:1e57:7965]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3821ada2da2sm1862201f8f.15.2024.11.14.08.19.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Nov 2024 08:19:00 -0800 (PST) From: Andrew Jones To: iommu@lists.linux.dev, kvm-riscv@lists.infradead.org, kvm@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Cc: tjeznach@rivosinc.com, zong.li@sifive.com, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, anup@brainfault.org, atishp@atishpatra.org, tglx@linutronix.de, alex.williamson@redhat.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu Subject: [RFC PATCH 08/15] iommu/riscv: Add IRQ domain for interrupt remapping Date: Thu, 14 Nov 2024 17:18:53 +0100 Message-ID: <20241114161845.502027-25-ajones@ventanamicro.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241114161845.502027-17-ajones@ventanamicro.com> References: <20241114161845.502027-17-ajones@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241114_081903_235076_0DA689F6 X-CRM114-Status: GOOD ( 28.37 ) 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: , 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 VGhpcyBpcyBqdXN0IGEgc2tlbGV0b24uIFVudGlsIGlycV9zZXRfdmNwdV9hZmZpbml0eSgpIGlz CmltcGxlbWVudGVkIHRoZSBJUlEgZG9tYWluIGRvZXNuJ3Qgc2VydmUgYW55IHB1cnBvc2UuCgpT aWduZWQtb2ZmLWJ5OiBBbmRyZXcgSm9uZXMgPGFqb25lc0B2ZW50YW5hbWljcm8uY29tPgotLS0K IGRyaXZlcnMvaW9tbXUvcmlzY3YvTWFrZWZpbGUgICB8ICAgMiArLQogZHJpdmVycy9pb21tdS9y aXNjdi9pb21tdS1pci5jIHwgMjA5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog ZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS5jICAgIHwgIDQzICsrKysrKy0KIGRyaXZlcnMvaW9t bXUvcmlzY3YvaW9tbXUuaCAgICB8ICAyMSArKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI3MCBpbnNl cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaW9t bXUvcmlzY3YvaW9tbXUtaXIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvcmlzY3YvTWFr ZWZpbGUgYi9kcml2ZXJzL2lvbW11L3Jpc2N2L01ha2VmaWxlCmluZGV4IGY1NGM5ZWQxN2Q0MS4u ODQyMGRkMTc3NmNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L3Jpc2N2L01ha2VmaWxlCisr KyBiL2RyaXZlcnMvaW9tbXUvcmlzY3YvTWFrZWZpbGUKQEAgLTEsMyArMSwzIEBACiAjIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKLW9iai0kKENPTkZJR19SSVNDVl9JT01N VSkgKz0gaW9tbXUubyBpb21tdS1wbGF0Zm9ybS5vCitvYmotJChDT05GSUdfUklTQ1ZfSU9NTVUp ICs9IGlvbW11Lm8gaW9tbXUtaXIubyBpb21tdS1wbGF0Zm9ybS5vCiBvYmotJChDT05GSUdfUklT Q1ZfSU9NTVVfUENJKSArPSBpb21tdS1wY2kubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9y aXNjdi9pb21tdS1pci5jIGIvZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS1pci5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzE3N2UwNjRiMjA1Ci0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS1pci5jCkBAIC0wLDAgKzEsMjA5IEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogSU9NTVUg SW50ZXJydXB0IFJlbWFwcGluZworICoKKyAqIENvcHlyaWdodCDCqSAyMDI0IFZlbnRhbmEgTWlj cm8gU3lzdGVtcyBJbmMuCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4uaD4KKyNpbmNs dWRlIDxsaW51eC9tc2kuaD4KKworI2luY2x1ZGUgIi4uL2lvbW11LXBhZ2VzLmgiCisjaW5jbHVk ZSAiaW9tbXUuaCIKKworc3RhdGljIHNpemVfdCByaXNjdl9pb21tdV9pcl9nZXRfbXNpcHRlX2lk eChzdHJ1Y3QgcmlzY3ZfaW9tbXVfZG9tYWluICpkb21haW4sCisJCQkJCSAgICBwaHlzX2FkZHJf dCBtc2lfcGEpCit7CisJcGh5c19hZGRyX3QgYWRkciA9IG1zaV9wYSA+PiAxMjsKKwlzaXplX3Qg aWR4OworCisJaWYgKGRvbWFpbi0+Z3JvdXBfaW5kZXhfYml0cykgeworCQlwaHlzX2FkZHJfdCBn cm91cF9tYXNrID0gQklUKGRvbWFpbi0+Z3JvdXBfaW5kZXhfYml0cykgLSAxOworCQlwaHlzX2Fk ZHJfdCBncm91cF9zaGlmdCA9IGRvbWFpbi0+Z3JvdXBfaW5kZXhfc2hpZnQgLSAxMjsKKwkJcGh5 c19hZGRyX3QgZ3JvdXAgPSAoYWRkciA+PiBncm91cF9zaGlmdCkgJiBncm91cF9tYXNrOworCQlw aHlzX2FkZHJfdCBtYXNrID0gZG9tYWluLT5tc2lwdHAubXNpX2FkZHJfbWFzayAmIH4oZ3JvdXBf bWFzayA8PCBncm91cF9zaGlmdCk7CisKKwkJaWR4ID0gYWRkciAmIG1hc2s7CisJCWlkeCB8PSBn cm91cCA8PCBmbHM2NChtYXNrKTsKKwl9IGVsc2UgeworCQlpZHggPSBhZGRyICYgZG9tYWluLT5t c2lwdHAubXNpX2FkZHJfbWFzazsKKwl9CisKKwlyZXR1cm4gaWR4OworfQorCitzdGF0aWMgc3Ry dWN0IHJpc2N2X2lvbW11X21zaXB0ZSAqcmlzY3ZfaW9tbXVfaXJfZ2V0X21zaXB0ZShzdHJ1Y3Qg cmlzY3ZfaW9tbXVfZG9tYWluICpkb21haW4sCisJCQkJCQkJICAgIHBoeXNfYWRkcl90IG1zaV9w YSkKK3sKKwlzaXplX3QgaWR4OworCisJaWYgKCgobXNpX3BhID4+IDEyKSAmIH5kb21haW4tPm1z aXB0cC5tc2lfYWRkcl9tYXNrKSAhPSBkb21haW4tPm1zaXB0cC5tc2lfYWRkcl9wYXR0ZXJuKQor CQlyZXR1cm4gTlVMTDsKKworCWlkeCA9IHJpc2N2X2lvbW11X2lyX2dldF9tc2lwdGVfaWR4KGRv bWFpbiwgbXNpX3BhKTsKKwlyZXR1cm4gJmRvbWFpbi0+bXNpX3Jvb3RbaWR4XTsKK30KKworc3Rh dGljIHNpemVfdCByaXNjdl9pb21tdV9pcl9ucl9tc2lwdGVzKHN0cnVjdCByaXNjdl9pb21tdV9k b21haW4gKmRvbWFpbikKK3sKKwlwaHlzX2FkZHJfdCBiYXNlID0gZG9tYWluLT5tc2lwdHAubXNp X2FkZHJfcGF0dGVybiA8PCAxMjsKKwlwaHlzX2FkZHJfdCBtYXhfYWRkciA9IGJhc2UgfCAoZG9t YWluLT5tc2lwdHAubXNpX2FkZHJfbWFzayA8PCAxMik7CisJc2l6ZV90IG1heF9pZHggPSByaXNj dl9pb21tdV9pcl9nZXRfbXNpcHRlX2lkeChkb21haW4sIG1heF9hZGRyKTsKKworCXJldHVybiBt YXhfaWR4ICsgMTsKK30KKworc3RhdGljIHN0cnVjdCBpcnFfY2hpcCByaXNjdl9pb21tdV9pcnFf Y2hpcCA9IHsKKwkubmFtZQkJCT0gIklPTU1VLUlSIiwKKwkuaXJxX21hc2sJCT0gaXJxX2NoaXBf bWFza19wYXJlbnQsCisJLmlycV91bm1hc2sJCT0gaXJxX2NoaXBfdW5tYXNrX3BhcmVudCwKK307 CisKK3N0YXRpYyBpbnQgcmlzY3ZfaW9tbXVfaXJxX2RvbWFpbl9hbGxvY19pcnFzKHN0cnVjdCBp cnFfZG9tYWluICppcnFkb21haW4sCisJCQkJCSAgICAgdW5zaWduZWQgaW50IGlycV9iYXNlLCB1 bnNpZ25lZCBpbnQgbnJfaXJxcywKKwkJCQkJICAgICB2b2lkICphcmcpCit7CisJc3RydWN0IGly cV9kYXRhICpkYXRhOworCWludCBpLCByZXQ7CisKKwlyZXQgPSBpcnFfZG9tYWluX2FsbG9jX2ly cXNfcGFyZW50KGlycWRvbWFpbiwgaXJxX2Jhc2UsIG5yX2lycXMsIGFyZyk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCWZvciAoaSA9IDA7IGkgPCBucl9pcnFzOyBpKyspIHsKKwkJZGF0 YSA9IGlycV9kb21haW5fZ2V0X2lycV9kYXRhKGlycWRvbWFpbiwgaXJxX2Jhc2UgKyBpKTsKKwkJ ZGF0YS0+Y2hpcCA9ICZyaXNjdl9pb21tdV9pcnFfY2hpcDsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyByaXNjdl9pb21tdV9pcnFfZG9t YWluX29wcyA9IHsKKwkuYWxsb2MgPSByaXNjdl9pb21tdV9pcnFfZG9tYWluX2FsbG9jX2lycXMs CisJLmZyZWUgPSBpcnFfZG9tYWluX2ZyZWVfaXJxc19wYXJlbnQsCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IG1zaV9wYXJlbnRfb3BzIHJpc2N2X2lvbW11X21zaV9wYXJlbnRfb3BzID0gewor CS5wcmVmaXgJCQk9ICJJUi0iLAorCS5zdXBwb3J0ZWRfZmxhZ3MJPSBNU0lfR0VORVJJQ19GTEFH U19NQVNLIHwKKwkJCQkgIE1TSV9GTEFHX1BDSV9NU0lYLAorCS5yZXF1aXJlZF9mbGFncwkJPSBN U0lfRkxBR19VU0VfREVGX0RPTV9PUFMgfAorCQkJCSAgTVNJX0ZMQUdfVVNFX0RFRl9DSElQX09Q UywKKwkuaW5pdF9kZXZfbXNpX2luZm8JPSBtc2lfcGFyZW50X2luaXRfZGV2X21zaV9pbmZvLAor fTsKKworaW50IHJpc2N2X2lvbW11X2lycV9kb21haW5fY3JlYXRlKHN0cnVjdCByaXNjdl9pb21t dV9kb21haW4gKmRvbWFpbiwKKwkJCQkgIHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qg cmlzY3ZfaW9tbXVfZGV2aWNlICppb21tdSA9IGRldl90b19pb21tdShkZXYpOworCXN0cnVjdCBm d25vZGVfaGFuZGxlICpmbjsKKwljaGFyICpmd25hbWU7CisKKwlpZiAoZG9tYWluLT5pcnFkb21h aW4pIHsKKwkJZGV2X3NldF9tc2lfZG9tYWluKGRldiwgZG9tYWluLT5pcnFkb21haW4pOworCQly ZXR1cm4gMDsKKwl9CisKKwlpZiAoIShpb21tdS0+Y2FwcyAmIFJJU0NWX0lPTU1VX0NBUEFCSUxJ VElFU19NU0lfRkxBVCkpIHsKKwkJZGV2X3dhcm4oaW9tbXUtPmRldiwgIkNhbm5vdCBlbmFibGUg aW50ZXJydXB0IHJlbWFwcGluZ1xuIik7CisJCXJldHVybiAwOworCX0KKworCXNwaW5fbG9ja19p bml0KCZkb21haW4tPm1zaV9sb2NrKTsKKwkvKgorCSAqIFRPRE86IFRoZSBoeXBlcnZpc29yIHNo b3VsZCBiZSBpbiBjb250cm9sIG9mIHRoaXMgc2l6ZS4gRm9yIG5vdworCSAqIHdlIGp1c3QgYWxs b2NhdGUgZW5vdWdoIHNwYWNlIGZvciA1MTIgVkNQVXMuCisJICovCisJZG9tYWluLT5tc2lfb3Jk ZXIgPSAxOworCWRvbWFpbi0+bXNpX3Jvb3QgPSBpb21tdV9hbGxvY19wYWdlc19ub2RlKGRvbWFp bi0+bnVtYV9ub2RlLAorCQkJCQkJICBHRlBfS0VSTkVMX0FDQ09VTlQsIGRvbWFpbi0+bXNpX29y ZGVyKTsKKwlpZiAoIWRvbWFpbi0+bXNpX3Jvb3QpCisJCXJldHVybiAtRU5PTUVNOworCisJZndu YW1lID0ga2FzcHJpbnRmKEdGUF9LRVJORUwsICJJT01NVS1JUi0lcyIsIGRldl9uYW1lKGRldikp OworCWlmICghZnduYW1lKSB7CisJCWlvbW11X2ZyZWVfcGFnZXMoZG9tYWluLT5tc2lfcm9vdCwg ZG9tYWluLT5tc2lfb3JkZXIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlmbiA9IGlycV9k b21haW5fYWxsb2NfbmFtZWRfZndub2RlKGZ3bmFtZSk7CisJa2ZyZWUoZnduYW1lKTsKKwlpZiAo IWZuKSB7CisJCWRldl9lcnIoaW9tbXUtPmRldiwgIkNvdWxkbid0IGFsbG9jYXRlIGZ3bm9kZVxu Iik7CisJCWlvbW11X2ZyZWVfcGFnZXMoZG9tYWluLT5tc2lfcm9vdCwgZG9tYWluLT5tc2lfb3Jk ZXIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlkb21haW4tPmlycWRvbWFpbiA9IGlycV9k b21haW5fY3JlYXRlX2hpZXJhcmNoeShkZXZfZ2V0X21zaV9kb21haW4oZGV2KSwKKwkJCQkJCQkw LCAwLCBmbiwKKwkJCQkJCQkmcmlzY3ZfaW9tbXVfaXJxX2RvbWFpbl9vcHMsCisJCQkJCQkJZG9t YWluKTsKKwlpZiAoIWRvbWFpbi0+aXJxZG9tYWluKSB7CisJCWRldl9lcnIoaW9tbXUtPmRldiwg IkZhaWxlZCB0byBjcmVhdGUgSU9NTVUgaXJxIGRvbWFpblxuIik7CisJCWlvbW11X2ZyZWVfcGFn ZXMoZG9tYWluLT5tc2lfcm9vdCwgZG9tYWluLT5tc2lfb3JkZXIpOworCQlpcnFfZG9tYWluX2Zy ZWVfZndub2RlKGZuKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZG9tYWluLT5pcnFkb21h aW4tPmZsYWdzIHw9IElSUV9ET01BSU5fRkxBR19NU0lfUEFSRU5UIHwKKwkJCQkgICAgSVJRX0RP TUFJTl9GTEFHX0lTT0xBVEVEX01TSTsKKwlkb21haW4tPmlycWRvbWFpbi0+bXNpX3BhcmVudF9v cHMgPSAmcmlzY3ZfaW9tbXVfbXNpX3BhcmVudF9vcHM7CisJaXJxX2RvbWFpbl91cGRhdGVfYnVz X3Rva2VuKGRvbWFpbi0+aXJxZG9tYWluLCBET01BSU5fQlVTX01TSV9SRU1BUCk7CisJZGV2X3Nl dF9tc2lfZG9tYWluKGRldiwgZG9tYWluLT5pcnFkb21haW4pOworCisJcmV0dXJuIDA7Cit9CisK K3ZvaWQgcmlzY3ZfaW9tbXVfaXJfZ2V0X3Jlc3ZfcmVnaW9ucyhzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisJc3RydWN0IHJpc2N2X2lvbW11X2luZm8gKmlu Zm8gPSBkZXZfaW9tbXVfcHJpdl9nZXQoZGV2KTsKKwlzdHJ1Y3QgcmlzY3ZfaW9tbXVfZG9tYWlu ICpkb21haW4gPSBpbmZvLT5kb21haW47CisJc3RydWN0IGlvbW11X3Jlc3ZfcmVnaW9uICpyZWc7 CisJcGh5c19hZGRyX3QgYmFzZSwgYWRkcjsKKwlzaXplX3QgbnJfcGFnZXMsIGk7CisKKwlpZiAo IWRvbWFpbiB8fCAhZG9tYWluLT5tc2lwdHAubXNpcHRwKQorCQlyZXR1cm47CisKKwliYXNlID0g ZG9tYWluLT5tc2lwdHAubXNpX2FkZHJfcGF0dGVybiA8PCAxMjsKKworCWlmIChkb21haW4tPmdy b3VwX2luZGV4X2JpdHMpIHsKKwkJcGh5c19hZGRyX3QgZ3JvdXBfbWFzayA9IEJJVChkb21haW4t Pmdyb3VwX2luZGV4X2JpdHMpIC0gMTsKKwkJcGh5c19hZGRyX3QgZ3JvdXBfc2hpZnQgPSBkb21h aW4tPmdyb3VwX2luZGV4X3NoaWZ0IC0gMTI7CisJCXBoeXNfYWRkcl90IG1hc2sgPSBkb21haW4t Pm1zaXB0cC5tc2lfYWRkcl9tYXNrICYgfihncm91cF9tYXNrIDw8IGdyb3VwX3NoaWZ0KTsKKwor CQlucl9wYWdlcyA9IG1hc2sgKyAxOworCX0gZWxzZSB7CisJCW5yX3BhZ2VzID0gZG9tYWluLT5t c2lwdHAubXNpX2FkZHJfbWFzayArIDE7CisJfQorCisJZm9yIChpID0gMDsgaSA8IEJJVChkb21h aW4tPmdyb3VwX2luZGV4X2JpdHMpOyBpKyspIHsKKwkJYWRkciA9IGJhc2UgfCAoaSA8PCBkb21h aW4tPmdyb3VwX2luZGV4X3NoaWZ0KTsKKwkJcmVnID0gaW9tbXVfYWxsb2NfcmVzdl9yZWdpb24o YWRkciwgbnJfcGFnZXMgKiA0MDk2LAorCQkJCQkgICAgICAwLCBJT01NVV9SRVNWX01TSSwgR0ZQ X0tFUk5FTCk7CisJCWlmIChyZWcpCisJCQlsaXN0X2FkZF90YWlsKCZyZWctPmxpc3QsIGhlYWQp OworCX0KK30KKwordm9pZCByaXNjdl9pb21tdV9pcnFfZG9tYWluX3JlbW92ZShzdHJ1Y3Qgcmlz Y3ZfaW9tbXVfZG9tYWluICpkb21haW4pCit7CisJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZuOwor CisJaWYgKCFkb21haW4tPmlycWRvbWFpbikKKwkJcmV0dXJuOworCisJaW9tbXVfZnJlZV9wYWdl cyhkb21haW4tPm1zaV9yb290LCBkb21haW4tPm1zaV9vcmRlcik7CisKKwlmbiA9IGRvbWFpbi0+ aXJxZG9tYWluLT5md25vZGU7CisJaXJxX2RvbWFpbl9yZW1vdmUoZG9tYWluLT5pcnFkb21haW4p OworCWlycV9kb21haW5fZnJlZV9md25vZGUoZm4pOworfQorCit2b2lkIHJpc2N2X2lvbW11X2ly cV9kb21haW5fdW5saW5rKHN0cnVjdCByaXNjdl9pb21tdV9kb21haW4gKmRvbWFpbiwKKwkJCQkg ICBzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJaWYgKCFkb21haW4gfHwgIWRvbWFpbi0+aXJxZG9t YWluKQorCQlyZXR1cm47CisKKwlkZXZfc2V0X21zaV9kb21haW4oZGV2LCBkb21haW4tPmlycWRv bWFpbi0+cGFyZW50KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvcmlzY3YvaW9tbXUu YyBiL2RyaXZlcnMvaW9tbXUvcmlzY3YvaW9tbXUuYwppbmRleCA2ZThlYTNkMjJmZjUuLmM0YTQ3 YjIxYzU4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS5jCisrKyBiL2Ry aXZlcnMvaW9tbXUvcmlzY3YvaW9tbXUuYwpAQCAtOTQzLDcgKzk0Myw4IEBAIHN0YXRpYyB2b2lk IHJpc2N2X2lvbW11X2lvdGxiX2ludmFsKHN0cnVjdCByaXNjdl9pb21tdV9kb21haW4gKmRvbWFp biwKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAotI2RlZmluZSBSSVNDVl9JT01NVV9GU0NfQkFS RSAwCisjZGVmaW5lIFJJU0NWX0lPTU1VX0ZTQ19CQVJFCQkwCisjZGVmaW5lIFJJU0NWX0lPTU1V X0lPSEdBVFBfQkFSRQkwCiAKIC8qCiAgKiBVcGRhdGUgSU9ESVIgZm9yIHRoZSBkZXZpY2UuCkBA IC0xMjQ1LDYgKzEyNDYsOCBAQCBzdGF0aWMgdm9pZCByaXNjdl9pb21tdV9mcmVlX3BhZ2luZ19k b21haW4oc3RydWN0IGlvbW11X2RvbWFpbiAqaW9tbXVfZG9tYWluKQogCiAJV0FSTl9PTighbGlz dF9lbXB0eSgmZG9tYWluLT5ib25kcykpOwogCisJcmlzY3ZfaW9tbXVfaXJxX2RvbWFpbl9yZW1v dmUoZG9tYWluKTsKKwogCWlmIChkb21haW4tPnBzY2lkID4gMCkKIAkJaWRhX2ZyZWUoJnJpc2N2 X2lvbW11X3BzY2lkcywgZG9tYWluLT5wc2NpZCk7CiAJaWYgKGRvbWFpbi0+Z3NjaWQgPiAwKQpA QCAtMTI3NiwxMCArMTI3OSwzMCBAQCBzdGF0aWMgaW50IHJpc2N2X2lvbW11X2F0dGFjaF9wYWdp bmdfZG9tYWluKHN0cnVjdCBpb21tdV9kb21haW4gKmlvbW11X2RvbWFpbiwKIAlzdHJ1Y3Qgcmlz Y3ZfaW9tbXVfZGV2aWNlICppb21tdSA9IGRldl90b19pb21tdShkZXYpOwogCXN0cnVjdCByaXNj dl9pb21tdV9pbmZvICppbmZvID0gZGV2X2lvbW11X3ByaXZfZ2V0KGRldik7CiAJc3RydWN0IHJp c2N2X2lvbW11X2RjIGRjID0gezB9OworCWludCByZXQ7CiAKIAlpZiAoIXJpc2N2X2lvbW11X3B0 X3N1cHBvcnRlZChpb21tdSwgZG9tYWluLT5wZ2RfbW9kZSkpCiAJCXJldHVybiAtRU5PREVWOwog CisJaWYgKHJpc2N2X2lvbW11X2JvbmRfbGluayhkb21haW4sIGRldikpCisJCXJldHVybiAtRU5P TUVNOworCisJaWYgKGlvbW11X2RvbWFpbi0+dHlwZSA9PSBJT01NVV9ET01BSU5fVU5NQU5BR0VE KSB7CisJCWRvbWFpbi0+Z3NjaWQgPSBpZGFfYWxsb2NfcmFuZ2UoJnJpc2N2X2lvbW11X2dzY2lk cywgMSwKKwkJCQkJCVJJU0NWX0lPTU1VX01BWF9HU0NJRCwgR0ZQX0tFUk5FTCk7CisJCWlmIChk b21haW4tPmdzY2lkIDwgMCkgeworCQkJcmlzY3ZfaW9tbXVfYm9uZF91bmxpbmsoZG9tYWluLCBk ZXYpOworCQkJcmV0dXJuIC1FTk9NRU07CisJCX0KKworCQlyZXQgPSByaXNjdl9pb21tdV9pcnFf ZG9tYWluX2NyZWF0ZShkb21haW4sIGRldik7CisJCWlmIChyZXQpIHsKKwkJCXJpc2N2X2lvbW11 X2JvbmRfdW5saW5rKGRvbWFpbiwgZGV2KTsKKwkJCWlkYV9mcmVlKCZyaXNjdl9pb21tdV9nc2Np ZHMsIGRvbWFpbi0+Z3NjaWQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKwogCWlmIChkb21h aW4tPmdzY2lkKSB7CiAJCWRjLmlvaGdhdHAgPSBGSUVMRF9QUkVQKFJJU0NWX0lPTU1VX0RDX0lP SEdBVFBfTU9ERSwgZG9tYWluLT5wZ2RfbW9kZSkgfAogCQkJICAgICBGSUVMRF9QUkVQKFJJU0NW X0lPTU1VX0RDX0lPSEdBVFBfR1NDSUQsIGRvbWFpbi0+Z3NjaWQpIHwKQEAgLTEyOTIsMTAgKzEz MTUsOSBAQCBzdGF0aWMgaW50IHJpc2N2X2lvbW11X2F0dGFjaF9wYWdpbmdfZG9tYWluKHN0cnVj dCBpb21tdV9kb21haW4gKmlvbW11X2RvbWFpbiwKIAlkYy50YSA9IEZJRUxEX1BSRVAoUklTQ1Zf SU9NTVVfUENfVEFfUFNDSUQsIGRvbWFpbi0+cHNjaWQpIHwKIAkJCSAgIFJJU0NWX0lPTU1VX1BD X1RBX1Y7CiAKLQlpZiAocmlzY3ZfaW9tbXVfYm9uZF9saW5rKGRvbWFpbiwgZGV2KSkKLQkJcmV0 dXJuIC1FTk9NRU07Ci0KIAlyaXNjdl9pb21tdV9pb2Rpcl91cGRhdGUoaW9tbXUsIGRldiwgJmRj KTsKKworCXJpc2N2X2lvbW11X2lycV9kb21haW5fdW5saW5rKGluZm8tPmRvbWFpbiwgZGV2KTsK IAlyaXNjdl9pb21tdV9ib25kX3VubGluayhpbmZvLT5kb21haW4sIGRldik7CiAJaW5mby0+ZG9t YWluID0gZG9tYWluOwogCkBAIC0xMzg5LDkgKzE0MTEsMTIgQEAgc3RhdGljIGludCByaXNjdl9p b21tdV9hdHRhY2hfYmxvY2tpbmdfZG9tYWluKHN0cnVjdCBpb21tdV9kb21haW4gKmlvbW11X2Rv bWFpbiwKIAlzdHJ1Y3QgcmlzY3ZfaW9tbXVfZGMgZGMgPSB7MH07CiAKIAlkYy5mc2MgPSBSSVND Vl9JT01NVV9GU0NfQkFSRTsKKwlkYy5pb2hnYXRwID0gUklTQ1ZfSU9NTVVfSU9IR0FUUF9CQVJF OwogCiAJLyogTWFrZSBkZXZpY2UgY29udGV4dCBpbnZhbGlkLCB0cmFuc2xhdGlvbiByZXF1ZXN0 cyB3aWxsIGZhdWx0IHcvICMyNTggKi8KIAlyaXNjdl9pb21tdV9pb2Rpcl91cGRhdGUoaW9tbXUs IGRldiwgJmRjKTsKKworCXJpc2N2X2lvbW11X2lycV9kb21haW5fdW5saW5rKGluZm8tPmRvbWFp biwgZGV2KTsKIAlyaXNjdl9pb21tdV9ib25kX3VubGluayhpbmZvLT5kb21haW4sIGRldik7CiAJ aW5mby0+ZG9tYWluID0gTlVMTDsKIApAQCAtMTQxMywxNSArMTQzOCwyNCBAQCBzdGF0aWMgaW50 IHJpc2N2X2lvbW11X2F0dGFjaF9pZGVudGl0eV9kb21haW4oc3RydWN0IGlvbW11X2RvbWFpbiAq aW9tbXVfZG9tYWluLAogCXN0cnVjdCByaXNjdl9pb21tdV9kYyBkYyA9IHswfTsKIAogCWRjLmZz YyA9IFJJU0NWX0lPTU1VX0ZTQ19CQVJFOworCWRjLmlvaGdhdHAgPSBSSVNDVl9JT01NVV9JT0hH QVRQX0JBUkU7CiAJZGMudGEgPSBSSVNDVl9JT01NVV9QQ19UQV9WOwogCiAJcmlzY3ZfaW9tbXVf aW9kaXJfdXBkYXRlKGlvbW11LCBkZXYsICZkYyk7CisKKwlyaXNjdl9pb21tdV9pcnFfZG9tYWlu X3VubGluayhpbmZvLT5kb21haW4sIGRldik7CiAJcmlzY3ZfaW9tbXVfYm9uZF91bmxpbmsoaW5m by0+ZG9tYWluLCBkZXYpOwogCWluZm8tPmRvbWFpbiA9IE5VTEw7CiAKIAlyZXR1cm4gMDsKIH0K IAorc3RhdGljIHZvaWQgcmlzY3ZfaW9tbXVfZ2V0X3Jlc3ZfcmVnaW9ucyhzdHJ1Y3QgZGV2aWNl ICpkZXYsCisJCQkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXJpc2N2X2lvbW11X2ly X2dldF9yZXN2X3JlZ2lvbnMoZGV2LCBoZWFkKTsKK30KKwogc3RhdGljIHN0cnVjdCBpb21tdV9k b21haW4gcmlzY3ZfaW9tbXVfaWRlbnRpdHlfZG9tYWluID0gewogCS50eXBlID0gSU9NTVVfRE9N QUlOX0lERU5USVRZLAogCS5vcHMgPSAmKGNvbnN0IHN0cnVjdCBpb21tdV9kb21haW5fb3BzKSB7 CkBAIC0xNTE2LDYgKzE1NTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlvbW11X29wcyByaXNj dl9pb21tdV9vcHMgPSB7CiAJLmJsb2NrZWRfZG9tYWluID0gJnJpc2N2X2lvbW11X2Jsb2NraW5n X2RvbWFpbiwKIAkucmVsZWFzZV9kb21haW4gPSAmcmlzY3ZfaW9tbXVfYmxvY2tpbmdfZG9tYWlu LAogCS5kb21haW5fYWxsb2NfcGFnaW5nID0gcmlzY3ZfaW9tbXVfYWxsb2NfcGFnaW5nX2RvbWFp biwKKwkuZ2V0X3Jlc3ZfcmVnaW9ucyA9IHJpc2N2X2lvbW11X2dldF9yZXN2X3JlZ2lvbnMsCiAJ LmRldmljZV9ncm91cCA9IHJpc2N2X2lvbW11X2RldmljZV9ncm91cCwKIAkucHJvYmVfZGV2aWNl ID0gcmlzY3ZfaW9tbXVfcHJvYmVfZGV2aWNlLAogCS5yZWxlYXNlX2RldmljZQk9IHJpc2N2X2lv bW11X3JlbGVhc2VfZGV2aWNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9yaXNjdi9pb21t dS5oIGIvZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS5oCmluZGV4IGRkNTM4YjE5ZmJiNy4uNmNl NzEwOTU3ODFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L3Jpc2N2L2lvbW11LmgKKysrIGIv ZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS5oCkBAIC0yMyw2ICsyMywxMiBAQAogI2RlZmluZSBS SVNDVl9JT01NVV9ERFRQX1RJTUVPVVQJMTAwMDAwMDAKICNkZWZpbmUgUklTQ1ZfSU9NTVVfSU9U SU5WQUxfVElNRU9VVAk5MDAwMDAwMAogCitzdHJ1Y3QgcmlzY3ZfaW9tbXVfbXNpcHRwX3N0YXRl IHsKKwl1NjQgbXNpcHRwOworCXU2NCBtc2lfYWRkcl9tYXNrOworCXU2NCBtc2lfYWRkcl9wYXR0 ZXJuOworfTsKKwogLyogVGhpcyBzdHJ1Y3QgY29udGFpbnMgcHJvdGVjdGlvbiBkb21haW4gc3Bl Y2lmaWMgSU9NTVUgZHJpdmVyIGRhdGEuICovCiBzdHJ1Y3QgcmlzY3ZfaW9tbXVfZG9tYWluIHsK IAlzdHJ1Y3QgaW9tbXVfZG9tYWluIGRvbWFpbjsKQEAgLTM0LDYgKzQwLDEzIEBAIHN0cnVjdCBy aXNjdl9pb21tdV9kb21haW4gewogCWludCBudW1hX25vZGU7CiAJdW5zaWduZWQgaW50IHBnZF9t b2RlOwogCXVuc2lnbmVkIGxvbmcgKnBnZF9yb290OworCXUzMiBncm91cF9pbmRleF9iaXRzOwor CXUzMiBncm91cF9pbmRleF9zaGlmdDsKKwlpbnQgbXNpX29yZGVyOworCXN0cnVjdCByaXNjdl9p b21tdV9tc2lwdGUgKm1zaV9yb290OworCXNwaW5sb2NrX3QgbXNpX2xvY2s7CisJc3RydWN0IHJp c2N2X2lvbW11X21zaXB0cF9zdGF0ZSBtc2lwdHA7CisJc3RydWN0IGlycV9kb21haW4gKmlycWRv bWFpbjsKIH07CiAKIC8qIFByaXZhdGUgSU9NTVUgZGF0YSBmb3IgbWFuYWdlZCBkZXZpY2VzLCBk ZXZfaW9tbXVfcHJpdl8qICovCkBAIC0xMTksNiArMTMyLDE0IEBAIHZvaWQgcmlzY3ZfaW9tbXVf Y21kX3NlbmQoc3RydWN0IHJpc2N2X2lvbW11X2RldmljZSAqaW9tbXUsCiB2b2lkIHJpc2N2X2lv bW11X2NtZF9zeW5jKHN0cnVjdCByaXNjdl9pb21tdV9kZXZpY2UgKmlvbW11LAogCQkJICB1bnNp Z25lZCBpbnQgdGltZW91dF91cyk7CiAKK2ludCByaXNjdl9pb21tdV9pcnFfZG9tYWluX2NyZWF0 ZShzdHJ1Y3QgcmlzY3ZfaW9tbXVfZG9tYWluICpkb21haW4sCisJCQkJICBzdHJ1Y3QgZGV2aWNl ICpkZXYpOwordm9pZCByaXNjdl9pb21tdV9pcnFfZG9tYWluX3JlbW92ZShzdHJ1Y3QgcmlzY3Zf aW9tbXVfZG9tYWluICpkb21haW4pOwordm9pZCByaXNjdl9pb21tdV9pcnFfZG9tYWluX3VubGlu ayhzdHJ1Y3QgcmlzY3ZfaW9tbXVfZG9tYWluICpkb21haW4sCisJCQkJICAgc3RydWN0IGRldmlj ZSAqZGV2KTsKK3ZvaWQgcmlzY3ZfaW9tbXVfaXJfZ2V0X3Jlc3ZfcmVnaW9ucyhzdHJ1Y3QgZGV2 aWNlICpkZXYsCisJCQkJICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKTsKKwogI2RlZmluZSBy aXNjdl9pb21tdV9yZWFkbChpb21tdSwgYWRkcikgXAogCXJlYWRsX3JlbGF4ZWQoKGlvbW11KS0+ cmVnICsgKGFkZHIpKQogCi0tIAoyLjQ3LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LXJpc2N2Cg==