From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 694951292E0 for ; Mon, 26 Feb 2024 14:14:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708956859; cv=none; b=LjuWV7zjOXWq2a7ZUjF61AzJCCxnxaWYraeb+Jt19bhzyPUrVdgWNFahVsMhvX1AOJatvoC84p5wcEtMNI5KsC05MShtnc1FXj6r0NONZRNnDCnQtlVWTw/PI59OOHlkTgxaHXWQxFqpLnyiSZu5FtyCyJoKowQJfSUxyn4ZFPQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708956859; c=relaxed/simple; bh=u44Byk/geUoUPcRzHfhYBq+V1oPDjcBJaBLc1ZsjnIk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=mx3gLHeQ6ykm0PuCNnWacEuVdmSax3xMPyqKtbJBTdgtqCC9AmW9Y5BiPgzbURPhvHXE0mP3nMUgGIsS6Wv5KiHnGBGCxkwPcntDr8TlaG6zfageCBldUduMHbL/VJUTI5cFzZJ2cLS7pM0pOVyB4PhCBmVbsm7AdnYbS/G3Qrw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=HOPutJ+z; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="HOPutJ+z" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-33d01faf711so3237392f8f.1 for ; Mon, 26 Feb 2024 06:14:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1708956856; x=1709561656; darn=lists.linux.dev; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=p3rNfB8zpjh0aw9Izv7iexnhaqVJohKYz0hpJMxpBiI=; b=HOPutJ+zDvJm4dpoURjs21LvpSqpu5tDkKtADd/eGDYlnBDSIxNVKSjg+xuPIN7tWF G2cThEz0V7Z6CvF4cCFVPFWVSWsnEEx+1hUA+WkK3yZnpiw/K+hyJCELnJ/haZl3Z1oC wqEUfZLzA5LjizhDyplIyaJ5UDekBqrGNMNxL00RCkxfWmli72yx5skCmk5i75I/Kub4 JQvecwWvuEp4YAVgv7y9JiH9CSUXfsz3Bvd7Bq6VhsZk+FVd4GylL6XAtBSjiM5nA0W7 UH0TyppBCKVi3ybpuP5iixA+mSGrJauPuX7nPGmm2R+2Jsg3xQY4kWK1tvcZpUQg8LfZ fzzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708956856; x=1709561656; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=p3rNfB8zpjh0aw9Izv7iexnhaqVJohKYz0hpJMxpBiI=; b=dr9mQqqoqT6E20nBNvFKBaeYFxyE18Hi0itUMwzFJhhZAhmA1rEvHjwEzA3Fp9T4PO gX9vREpT6m0UBKoPRdMpInnlfgmplLM2pRXy58EGfeyocnjUpbF8+LwSXfKNTeqBnQCy 4luNYfvcAcEO7MlHUcG6VYAAPHtGfdDYMp8yKrKTU5uPPXG2x9w25YcvJ5LWpS8VYOzm UvjoYTXVo6HVEAs3NsyUv57hXQQ0112gysRngSITXJ/f+yFqIoeNpJsb03R2H2LHCV0Y Ew10n7DZDoNMaYVxmNiYmXikbOlGEJJxIWb9b6a0te27oTXG3CvCr2C+qxbW3TM8Cn+Q CXHw== X-Forwarded-Encrypted: i=1; AJvYcCUfq86sUSOpl4f04RdJjO2/1LNAYzsdvoUhZ0sE4uT5GwZOAE7LQ9We/p4rO4h2i/XjIfW4cCw8+TY3sxa6cdqYSqgxDq1y X-Gm-Message-State: AOJu0YyZWRmOjPLBNi1bvwfVwC/Pm4Ke0sQFJaSmL78n9y8f6l+4qTUJ 3f+80eF3/prwKdSlDEE/Qst7HlGt04hAXnlvMQTamo67LEgCbUhQmZby3+1WZtc= X-Google-Smtp-Source: AGHT+IGGqhCN6MwrdQDfNMmeqLqNbnMnl58IjTum6M5weIQmD76LAqs6at9pGaBHNPVYhYArGN4FnA== X-Received: by 2002:a05:6000:1961:b0:33d:7ea3:5b90 with SMTP id da1-20020a056000196100b0033d7ea35b90mr5370134wrb.65.1708956855773; Mon, 26 Feb 2024 06:14:15 -0800 (PST) Received: from myrica ([2.221.137.100]) by smtp.gmail.com with ESMTPSA id bj29-20020a0560001e1d00b0033d81d9c44esm8512937wrb.70.2024.02.26.06.14.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 06:14:15 -0800 (PST) Date: Mon, 26 Feb 2024 14:13:52 +0000 From: Jean-Philippe Brucker To: Mostafa Saleh Cc: maz@kernel.org, catalin.marinas@arm.com, will@kernel.org, joro@8bytes.org, robin.murphy@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com, dbrazdil@google.com, ryan.roberts@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, iommu@lists.linux.dev Subject: Re: [RFC PATCH 24/45] KVM: arm64: smmu-v3: Setup stream table Message-ID: <20240226141352.GC1579460@myrica> References: <20230201125328.2186498-1-jean-philippe@linaro.org> <20230201125328.2186498-25-jean-philippe@linaro.org> <20240123194530.GA40099@myrica> Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Fri, Feb 16, 2024 at 12:19:01PM +0000, Mostafa Saleh wrote: > On Tue, Jan 23, 2024 at 7:45 PM Jean-Philippe Brucker > wrote: > > > > Hi Mostafa, > > > > On Tue, Jan 16, 2024 at 08:59:41AM +0000, Mostafa Saleh wrote: > > > > +__maybe_unused > > > > +static int smmu_sync_ste(struct hyp_arm_smmu_v3_device *smmu, u32 sid) > > > > +{ > > > > + struct arm_smmu_cmdq_ent cmd = { > > > > + .opcode = CMDQ_OP_CFGI_STE, > > > > + .cfgi.sid = sid, > > > > + .cfgi.leaf = true, > > > > + }; > > > > + > > > > + return smmu_send_cmd(smmu, &cmd); > > > > +} > > > > + > > > I see the page tables are properly configured for ARM_SMMU_FEAT_COHERENCY but no > > > handling for the STE or CMDQ, I believe here we should have something as: > > > if (!(smmu->features & ARM_SMMU_FEAT_COHERENCY)) > > > kvm_flush_dcache_to_poc(step, STRTAB_STE_DWORDS << 3); > > > > > > Similarly in "smmu_add_cmd" for the command queue. Or use NC mapping > > > (which doesn't exist > > > upstream as far as I can see) > > > > Right, the host driver seems to do this. If I'm following correctly we end > > up with dma_direct_alloc() calling pgprot_dmacoherent() and get > > MT_NORMAL_NC, when the SMMU is declared non-coherent in DT/IORT. > > > > So we'd get mismatched attributes if hyp is then mapping these structures > > cacheable, but I don't remember how that works exactly. Might be fine > > since host donates the pages to hyp and we'd have a cache flush in > > between. I'll have to read up on that. > > I guess that is not enough, as the hypervisor writes the STE/CMDQ at any time. > > > Regardless, mapping NC seems cleaner, more readable. I'll see if I can add > > that attribute to kvm_pgtable_hyp_map(). > > There is a patch for that already in Android > https://android.googlesource.com/kernel/common/+/636c912401dec4d178f6cdf6073f546b15828cf7%5E%21/#F0 Nice, I've added this (rather than CMO, to avoid mismatched attributes) but don't have the hardware to test it: diff --git a/arch/arm64/kvm/hyp/nvhe/iommu/arm-smmu-v3.c b/arch/arm64/kvm/hyp/nvhe/iommu/arm-smmu-v3.c index 4b0b70017f59..e43011b51ef4 100644 --- a/arch/arm64/kvm/hyp/nvhe/iommu/arm-smmu-v3.c +++ b/arch/arm64/kvm/hyp/nvhe/iommu/arm-smmu-v3.c @@ -268,12 +268,17 @@ static int smmu_init_registers(struct hyp_arm_smmu_v3_device *smmu) } /* Transfer ownership of structures from host to hyp */ -static void *smmu_take_pages(u64 base, size_t size) +static void *smmu_take_pages(struct hyp_arm_smmu_v3_device *smmu, u64 base, + size_t size) { void *hyp_ptr; + enum kvm_pgtable_prot prot = PAGE_HYP; + + if (!(smmu->features & ARM_SMMU_FEAT_COHERENCY)) + prot |= KVM_PGTABLE_PROT_NC; hyp_ptr = hyp_phys_to_virt(base); - if (pkvm_create_mappings(hyp_ptr, hyp_ptr + size, PAGE_HYP)) + if (pkvm_create_mappings(hyp_ptr, hyp_ptr + size, prot)) return NULL; return hyp_ptr; @@ -293,7 +298,7 @@ static int smmu_init_cmdq(struct hyp_arm_smmu_v3_device *smmu) cmdq_size = cmdq_nr_entries * CMDQ_ENT_DWORDS * 8; cmdq_base &= Q_BASE_ADDR_MASK; - smmu->cmdq_base = smmu_take_pages(cmdq_base, cmdq_size); + smmu->cmdq_base = smmu_take_pages(smmu, cmdq_base, cmdq_size); if (!smmu->cmdq_base) return -EINVAL; @@ -350,7 +355,7 @@ static int smmu_init_strtab(struct hyp_arm_smmu_v3_device *smmu) } strtab_base &= STRTAB_BASE_ADDR_MASK; - smmu->strtab_base = smmu_take_pages(strtab_base, strtab_size); + smmu->strtab_base = smmu_take_pages(smmu, strtab_base, strtab_size); if (!smmu->strtab_base) return -EINVAL; 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 3F819C48BF6 for ; Mon, 26 Feb 2024 14:14:45 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=eIVX1nw01uYYRFyyJkUYeiN+s1kmjkZfT3axsXw82D8=; b=DLuLESe9OFnz0C ujyky+mI5wSMQD2lHeV4Q17IWTx0dCm5x4YZeilVc4FD5bFjYHTdvNUeOMGhwI06bJ2ofrUcIWSAP Zqia7cusTZEbswDV7+azKtrL7Z/JgNzoZHoH4qi5blKKy0GoYFZDFOuLjaRxBZ5cOzZs9jk0+7GJb ApZjN/0t2q4Xw9HNUJ5Nk073zBcuH9Bqpi04W3Vh0eLVqeTgG89gt20r8rcyyT6APNRi68UbtMYzr GWQdb4KGzqJWHp00fjXgJogQHwAYqUnFqtZRhPtU79k0TDUxXLeMovnvmcj58f/n1ipqOuDpOO0vm XLNMYyLV/dGqrxg2+yVQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rebkU-000000013gz-13HD; Mon, 26 Feb 2024 14:14:30 +0000 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rebkI-000000013Yz-26yC for linux-arm-kernel@lists.infradead.org; Mon, 26 Feb 2024 14:14:28 +0000 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-33d01faf711so3237391f8f.1 for ; Mon, 26 Feb 2024 06:14:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1708956856; x=1709561656; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=p3rNfB8zpjh0aw9Izv7iexnhaqVJohKYz0hpJMxpBiI=; b=jZtphJnfLEoXcexhqqI0zIUkc3GYbm2/bjOqNbil5KpNtntKYk+5Q2w/BGu04bN0CV yhMA4OPPvOTHAQkOFFaPOu74nc84SgiEI9+3WHwR41cFsr53/E08fYaTv6qywpsPrY7w 6m6TgKdOTPYSEt1e7xKqVTZSTDjuh4V8cfLIfqeJkmHrHeKB/VIXy6yvl5k2IMphXXBB aaEuRLOHU3+e+/8Wd5IsFVvQGK7ohpygZhPVyVhHy97MAaiP66vmfP91kuzy/1ok+MTy 4s+62dzPWfKbccyFTs5xLwYl02ReLD2XTQceAJyaw1iDMKA93uIeL8WihiLPmEwDiRkv u58w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708956856; x=1709561656; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=p3rNfB8zpjh0aw9Izv7iexnhaqVJohKYz0hpJMxpBiI=; b=j2ptKE8VWSZG/t1SusN1BYKR7Ye+U4faAnZU0DSXkuciVQ/e2d4NwZnEHS5e5wpnu8 6Xtj7WtkR9k6GeGrizjc/EruVyQT/IpMrHMwKjq26TV5Wd+bepbA0UF/qwrUNhrrFWV2 oYMI68iYo30lxt3fOESAFXNPE/OTZlZisLEUPi6lIpPU3GMn6B9opj0UzG8zKDhkM7Ym P75Jgscc3zzQTAKlayCOBm3AZjIOQM8+30dZpsKnW5XXi7+XlVLr9zsKfi5WcO08rwVK y0EY/FCNa6jbZVsO3guoWShFpGVGH7qcWGXmI/tsFf9zg3Qo7JiInDxnZBCqRAUm06tA pUnQ== X-Forwarded-Encrypted: i=1; AJvYcCXGgZFDwdChKlOdWmyTdY7Mj9uAnadVAERBoYZcirVoKDZQ9IvBBi6UZprJYqt5mjAEMniaWz5IDSAgoSwN9/Kf8XXaacrwnBu72VNjzmgygpYGSHo= X-Gm-Message-State: AOJu0YxHLsuaUApl1gShU93K01FkDHI8RnDu9CH4iIbo0NIZK/9Q/PSz X2IIcsL5y/A+ktT1C/3FjnW/9CUlEpSdXM4Kbb1XeMBDBs4JTHiCSFzzX1ONG/k= X-Google-Smtp-Source: AGHT+IGGqhCN6MwrdQDfNMmeqLqNbnMnl58IjTum6M5weIQmD76LAqs6at9pGaBHNPVYhYArGN4FnA== X-Received: by 2002:a05:6000:1961:b0:33d:7ea3:5b90 with SMTP id da1-20020a056000196100b0033d7ea35b90mr5370134wrb.65.1708956855773; Mon, 26 Feb 2024 06:14:15 -0800 (PST) Received: from myrica ([2.221.137.100]) by smtp.gmail.com with ESMTPSA id bj29-20020a0560001e1d00b0033d81d9c44esm8512937wrb.70.2024.02.26.06.14.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 06:14:15 -0800 (PST) Date: Mon, 26 Feb 2024 14:13:52 +0000 From: Jean-Philippe Brucker To: Mostafa Saleh Cc: maz@kernel.org, catalin.marinas@arm.com, will@kernel.org, joro@8bytes.org, robin.murphy@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com, dbrazdil@google.com, ryan.roberts@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, iommu@lists.linux.dev Subject: Re: [RFC PATCH 24/45] KVM: arm64: smmu-v3: Setup stream table Message-ID: <20240226141352.GC1579460@myrica> References: <20230201125328.2186498-1-jean-philippe@linaro.org> <20230201125328.2186498-25-jean-philippe@linaro.org> <20240123194530.GA40099@myrica> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240226_061418_711166_72763D0C X-CRM114-Status: GOOD ( 30.20 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBGZWIgMTYsIDIwMjQgYXQgMTI6MTk6MDFQTSArMDAwMCwgTW9zdGFmYSBTYWxlaCB3 cm90ZToKPiBPbiBUdWUsIEphbiAyMywgMjAyNCBhdCA3OjQ14oCvUE0gSmVhbi1QaGlsaXBwZSBC cnVja2VyCj4gPGplYW4tcGhpbGlwcGVAbGluYXJvLm9yZz4gd3JvdGU6Cj4gPgo+ID4gSGkgTW9z dGFmYSwKPiA+Cj4gPiBPbiBUdWUsIEphbiAxNiwgMjAyNCBhdCAwODo1OTo0MUFNICswMDAwLCBN b3N0YWZhIFNhbGVoIHdyb3RlOgo+ID4gPiA+ICtfX21heWJlX3VudXNlZAo+ID4gPiA+ICtzdGF0 aWMgaW50IHNtbXVfc3luY19zdGUoc3RydWN0IGh5cF9hcm1fc21tdV92M19kZXZpY2UgKnNtbXUs IHUzMiBzaWQpCj4gPiA+ID4gK3sKPiA+ID4gPiArICAgICAgIHN0cnVjdCBhcm1fc21tdV9jbWRx X2VudCBjbWQgPSB7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIC5vcGNvZGUgPSBDTURRX09QX0NG R0lfU1RFLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAuY2ZnaS5zaWQgPSBzaWQsCj4gPiA+ID4g KyAgICAgICAgICAgICAgIC5jZmdpLmxlYWYgPSB0cnVlLAo+ID4gPiA+ICsgICAgICAgfTsKPiA+ ID4gPiArCj4gPiA+ID4gKyAgICAgICByZXR1cm4gc21tdV9zZW5kX2NtZChzbW11LCAmY21kKTsK PiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gSSBzZWUgdGhlIHBhZ2UgdGFibGVzIGFyZSBwcm9w ZXJseSBjb25maWd1cmVkIGZvciBBUk1fU01NVV9GRUFUX0NPSEVSRU5DWSBidXQgbm8KPiA+ID4g aGFuZGxpbmcgZm9yIHRoZSBTVEUgb3IgQ01EUSwgSSBiZWxpZXZlIGhlcmUgd2Ugc2hvdWxkIGhh dmUgc29tZXRoaW5nIGFzOgo+ID4gPiBpZiAoIShzbW11LT5mZWF0dXJlcyAmIEFSTV9TTU1VX0ZF QVRfQ09IRVJFTkNZKSkKPiA+ID4gICAgICAgICBrdm1fZmx1c2hfZGNhY2hlX3RvX3BvYyhzdGVw LCBTVFJUQUJfU1RFX0RXT1JEUyA8PCAzKTsKPiA+ID4KPiA+ID4gU2ltaWxhcmx5IGluICJzbW11 X2FkZF9jbWQiIGZvciB0aGUgY29tbWFuZCBxdWV1ZS4gT3IgdXNlIE5DIG1hcHBpbmcKPiA+ID4g KHdoaWNoIGRvZXNuJ3QgZXhpc3QKPiA+ID4gdXBzdHJlYW0gYXMgZmFyIGFzIEkgY2FuIHNlZSkK PiA+Cj4gPiBSaWdodCwgdGhlIGhvc3QgZHJpdmVyIHNlZW1zIHRvIGRvIHRoaXMuIElmIEknbSBm b2xsb3dpbmcgY29ycmVjdGx5IHdlIGVuZAo+ID4gdXAgd2l0aCBkbWFfZGlyZWN0X2FsbG9jKCkg Y2FsbGluZyBwZ3Byb3RfZG1hY29oZXJlbnQoKSBhbmQgZ2V0Cj4gPiBNVF9OT1JNQUxfTkMsIHdo ZW4gdGhlIFNNTVUgaXMgZGVjbGFyZWQgbm9uLWNvaGVyZW50IGluIERUL0lPUlQuCj4gPgo+ID4g U28gd2UnZCBnZXQgbWlzbWF0Y2hlZCBhdHRyaWJ1dGVzIGlmIGh5cCBpcyB0aGVuIG1hcHBpbmcg dGhlc2Ugc3RydWN0dXJlcwo+ID4gY2FjaGVhYmxlLCBidXQgSSBkb24ndCByZW1lbWJlciBob3cg dGhhdCB3b3JrcyBleGFjdGx5LiBNaWdodCBiZSBmaW5lCj4gPiBzaW5jZSBob3N0IGRvbmF0ZXMg dGhlIHBhZ2VzIHRvIGh5cCBhbmQgd2UnZCBoYXZlIGEgY2FjaGUgZmx1c2ggaW4KPiA+IGJldHdl ZW4uIEknbGwgaGF2ZSB0byByZWFkIHVwIG9uIHRoYXQuCj4gCj4gSSBndWVzcyB0aGF0IGlzIG5v dCBlbm91Z2gsIGFzIHRoZSBoeXBlcnZpc29yIHdyaXRlcyB0aGUgU1RFL0NNRFEgYXQgYW55IHRp bWUuCj4gCj4gPiBSZWdhcmRsZXNzLCBtYXBwaW5nIE5DIHNlZW1zIGNsZWFuZXIsIG1vcmUgcmVh ZGFibGUuIEknbGwgc2VlIGlmIEkgY2FuIGFkZAo+ID4gdGhhdCBhdHRyaWJ1dGUgdG8ga3ZtX3Bn dGFibGVfaHlwX21hcCgpLgo+IAo+IFRoZXJlIGlzIGEgcGF0Y2ggZm9yIHRoYXQgYWxyZWFkeSBp biBBbmRyb2lkCj4gaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20va2VybmVsL2NvbW1v bi8rLzYzNmM5MTI0MDFkZWM0ZDE3OGY2Y2RmNjA3M2Y1NDZiMTU4MjhjZjclNUUlMjEvI0YwCgpO aWNlLCBJJ3ZlIGFkZGVkIHRoaXMgKHJhdGhlciB0aGFuIENNTywgdG8gYXZvaWQgbWlzbWF0Y2hl ZCBhdHRyaWJ1dGVzKQpidXQgZG9uJ3QgaGF2ZSB0aGUgaGFyZHdhcmUgdG8gdGVzdCBpdDoKCmRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9pb21tdS9hcm0tc21tdS12My5jIGIv YXJjaC9hcm02NC9rdm0vaHlwL252aGUvaW9tbXUvYXJtLXNtbXUtdjMuYwppbmRleCA0YjBiNzAw MTdmNTkuLmU0MzAxMWI1MWVmNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vaHlwL252aGUv aW9tbXUvYXJtLXNtbXUtdjMuYworKysgYi9hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9pb21tdS9h cm0tc21tdS12My5jCkBAIC0yNjgsMTIgKzI2OCwxNyBAQCBzdGF0aWMgaW50IHNtbXVfaW5pdF9y ZWdpc3RlcnMoc3RydWN0IGh5cF9hcm1fc21tdV92M19kZXZpY2UgKnNtbXUpCiB9CiAKIC8qIFRy YW5zZmVyIG93bmVyc2hpcCBvZiBzdHJ1Y3R1cmVzIGZyb20gaG9zdCB0byBoeXAgKi8KLXN0YXRp YyB2b2lkICpzbW11X3Rha2VfcGFnZXModTY0IGJhc2UsIHNpemVfdCBzaXplKQorc3RhdGljIHZv aWQgKnNtbXVfdGFrZV9wYWdlcyhzdHJ1Y3QgaHlwX2FybV9zbW11X3YzX2RldmljZSAqc21tdSwg dTY0IGJhc2UsCisJCQkgICAgIHNpemVfdCBzaXplKQogewogCXZvaWQgKmh5cF9wdHI7CisJZW51 bSBrdm1fcGd0YWJsZV9wcm90IHByb3QgPSBQQUdFX0hZUDsKKworCWlmICghKHNtbXUtPmZlYXR1 cmVzICYgQVJNX1NNTVVfRkVBVF9DT0hFUkVOQ1kpKQorCQlwcm90IHw9IEtWTV9QR1RBQkxFX1BS T1RfTkM7CiAKIAloeXBfcHRyID0gaHlwX3BoeXNfdG9fdmlydChiYXNlKTsKLQlpZiAocGt2bV9j cmVhdGVfbWFwcGluZ3MoaHlwX3B0ciwgaHlwX3B0ciArIHNpemUsIFBBR0VfSFlQKSkKKwlpZiAo cGt2bV9jcmVhdGVfbWFwcGluZ3MoaHlwX3B0ciwgaHlwX3B0ciArIHNpemUsIHByb3QpKQogCQly ZXR1cm4gTlVMTDsKIAogCXJldHVybiBoeXBfcHRyOwpAQCAtMjkzLDcgKzI5OCw3IEBAIHN0YXRp YyBpbnQgc21tdV9pbml0X2NtZHEoc3RydWN0IGh5cF9hcm1fc21tdV92M19kZXZpY2UgKnNtbXUp CiAJY21kcV9zaXplID0gY21kcV9ucl9lbnRyaWVzICogQ01EUV9FTlRfRFdPUkRTICogODsKIAog CWNtZHFfYmFzZSAmPSBRX0JBU0VfQUREUl9NQVNLOwotCXNtbXUtPmNtZHFfYmFzZSA9IHNtbXVf dGFrZV9wYWdlcyhjbWRxX2Jhc2UsIGNtZHFfc2l6ZSk7CisJc21tdS0+Y21kcV9iYXNlID0gc21t dV90YWtlX3BhZ2VzKHNtbXUsIGNtZHFfYmFzZSwgY21kcV9zaXplKTsKIAlpZiAoIXNtbXUtPmNt ZHFfYmFzZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTM1MCw3ICszNTUsNyBAQCBzdGF0aWMg aW50IHNtbXVfaW5pdF9zdHJ0YWIoc3RydWN0IGh5cF9hcm1fc21tdV92M19kZXZpY2UgKnNtbXUp CiAJfQogCiAJc3RydGFiX2Jhc2UgJj0gU1RSVEFCX0JBU0VfQUREUl9NQVNLOwotCXNtbXUtPnN0 cnRhYl9iYXNlID0gc21tdV90YWtlX3BhZ2VzKHN0cnRhYl9iYXNlLCBzdHJ0YWJfc2l6ZSk7CisJ c21tdS0+c3RydGFiX2Jhc2UgPSBzbW11X3Rha2VfcGFnZXMoc21tdSwgc3RydGFiX2Jhc2UsIHN0 cnRhYl9zaXplKTsKIAlpZiAoIXNtbXUtPnN0cnRhYl9iYXNlKQogCQlyZXR1cm4gLUVJTlZBTDsK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwK