Received: by 2002:a05:7208:9594:b0:7e:5202:c8b4 with SMTP id gs20csp581534rbb; Sat, 24 Feb 2024 14:03:06 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWxMb6Vym932LE6YSoMwUvC5VFHCMJ52+RUKF2fSG/Tlcl13Dp10cag5m5uVhMyAaUX2I2BIHfx85EvjSi5MgZRWPil1/0TIEF4SNWaVA== X-Google-Smtp-Source: AGHT+IEWPJgzNKJfQe+vrwzZJOYk/Ezj+mmbrHKiyWQxduuQs6KHu+otD9JH8xDIR8azbsiaNPTw X-Received: by 2002:a17:906:69c8:b0:a3e:c680:ee3a with SMTP id g8-20020a17090669c800b00a3ec680ee3amr2307249ejs.30.1708812185820; Sat, 24 Feb 2024 14:03:05 -0800 (PST) Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id wp2-20020a170907060200b00a3e854a98basi793965ejb.235.2024.02.24.14.03.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Feb 2024 14:03:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-79883-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@outlook.com header.s=selector1 header.b=AdMiQoso; arc=fail (signature failed); spf=pass (google.com: domain of linux-kernel+bounces-79883-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-79883-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 524BC1F21818 for ; Sat, 24 Feb 2024 22:03:05 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 41C914D5A0; Sat, 24 Feb 2024 22:02:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="AdMiQoso" Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10olkn2043.outbound.protection.outlook.com [40.92.41.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B5608C2D0 for ; Sat, 24 Feb 2024 22:02:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.41.43 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708812175; cv=fail; b=B9HnTtn2HZ3uDl6SDQCulWjxmlLusRNOsmuWoIxLJp/Lg1Utr1bhIlpPXv7DC0vgaNCOVcJRH0JcyzOgtjdyfdQW/1ArtXrnJiGbx6qyRI4WzjJnGeEc4+/rZ7+/rOohYUsFjsxzyACJu/2CoUWyhHvA5TDbiYf/TMzcONzYtNM= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708812175; c=relaxed/simple; bh=u4jJ5Kyc2bRXUOxucqIiS407VyI0ONSkkhLFom58bF0=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=HpW1yYtlSQsEEiL3NYQD+zH0wV7wq74cjqghGyDl2CT8QklcP4GpMKpxx/rYx4HHKOL5C1tkBdHpmA+tTLAT/Q1yLJRxKhM9UN/2LVhAxQndWEJW+zdj4r7XHwfjANQoYw+wFwFMXYBC5FNInM2dwS4X82seNIFLpCutyyzfmT4= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=AdMiQoso; arc=fail smtp.client-ip=40.92.41.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G7avIHNgpAHENcThjW8Ck0FBkXfYZGZg+odViVZx9J5n7u9Su7Jfv8g+lz+NoXQMrT0lKlXH7Boby++Hu/QoOyfVx7Og6Cylhr0kz3/JDPnaMW4NFs0xYqornKfYo6QSovgWPoQ8HY4VL4jKHu/6m7T8B836HHyMw/YTkHIhpuBdRY1Y2/MjD2LQfVlM2UT8wwhOfa2zVS0glrQ3sO7pGIQNeYxKTqgITtz82sWHrt2YajK7+hFpQG3GHSDIXGhnYPF9HxOZoj2nvtR3MRpghLrgIaWK/jKC7Lz3ZKfGnpAneSzUEzHLpkwNqTyjIXWqz6X4rdzpJSgn9qzAMBRp1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=u4jJ5Kyc2bRXUOxucqIiS407VyI0ONSkkhLFom58bF0=; b=B+DZKhjwvFfaFOFotsxW4FH0G0q3vlFMRJ0+C5n3cuk9thUy6Al/55+1eqHROnLfy4BOlhaW7f/Yby+IQeApzAIFuFD4PPZ85J5Wtvc4ZXnos8f2DIcfIsPXcxXubczufdF8F7xQB1NGIXi5F3+yiopM2q0YQXUiK5xL+kvO5vH9OzP3yoYyRNBSrcZuw+ktQQjxgqsUSnXkRkULOKr+TTWra5fE3kJBZM3A5trnzADyVR8D3aoMIRjGzHSMEQEyHR6A3zBsrfWtgOd6uGamIGI2o3tpQ0ZzvEwSuTMfMNy2yzpXyaIHvLVez4GbLJeL9Ox8TCuVC6oS5KoR6hqLsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u4jJ5Kyc2bRXUOxucqIiS407VyI0ONSkkhLFom58bF0=; b=AdMiQosoxjVTuF6aWvN9fSD9D1uHf0YnIz1ByDY6dgWDMEbxX/KgJHsKlbwoNc4NQ/QCXI6UrxJ5mLYN0bp1sYI4ug8+J5e1medV8q+1nqieeGEQbA4+hlBZleQOUr70ZJ+4mJyp9IeegkZ3bIIdmPOwCGZQYn8yuiP1zG4B9FGU1EvgZTNpJz6I8LlbX4dSNHYeoswSwvX0TS6PWbKWaBYP0pF8fu9HIWABAqqv55A7NleAVVU3nCkyDR0C7/yuCb6zfFukiZ0gtiW4bU5jUFH40WMq6Wf0oY6jSpdGIfsZFVPa4+tn+nmgoNE6tYGXfkCjZeA5KkNWpLv1dcWdQw== Received: from SN6PR02MB4157.namprd02.prod.outlook.com (2603:10b6:805:33::23) by DM6PR02MB6617.namprd02.prod.outlook.com (2603:10b6:5:221::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.33; Sat, 24 Feb 2024 22:02:50 +0000 Received: from SN6PR02MB4157.namprd02.prod.outlook.com ([fe80::67a9:f3c0:f57b:86dd]) by SN6PR02MB4157.namprd02.prod.outlook.com ([fe80::67a9:f3c0:f57b:86dd%5]) with mapi id 15.20.7316.023; Sat, 24 Feb 2024 22:02:49 +0000 From: Michael Kelley To: Vishal Annapurve CC: Alexander Graf , "Kirill A. Shutemov" , "x86@kernel.org" , "linux-kernel@vger.kernel.org" , "pbonzini@redhat.com" , "rientjes@google.com" , "seanjc@google.com" , "erdemaktas@google.com" , "ackerleytng@google.com" , "jxgao@google.com" , "sagis@google.com" , "oupton@google.com" , "peterx@redhat.com" , "vkuznets@redhat.com" , "dmatlack@google.com" , "pgonda@google.com" , "michael.roth@amd.com" , "thomas.lendacky@amd.com" , "dave.hansen@linux.intel.com" , "linux-coco@lists.linux.dev" , "chao.p.peng@linux.intel.com" , "isaku.yamahata@gmail.com" , "andrew.jones@linux.dev" , "corbet@lwn.net" , "hch@lst.de" , "m.szyprowski@samsung.com" , "rostedt@goodmis.org" , "iommu@lists.linux.dev" Subject: RE: [RFC V1 1/5] swiotlb: Support allocating DMA memory from SWIOTLB Thread-Topic: [RFC V1 1/5] swiotlb: Support allocating DMA memory from SWIOTLB Thread-Index: AQHaRRu2XlAVwhlX4keozaeeIIQbSLEKH9+AgAE9Hc6AAK9p8IAN8TyAgABG4LA= Date: Sat, 24 Feb 2024 22:02:49 +0000 Message-ID: References: <20240112055251.36101-1-vannapurve@google.com> <20240112055251.36101-2-vannapurve@google.com> <8a6dabdf-dc11-4989-b6b4-b49871ff9ca6@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [V/6xgK7DVbQ6zdpaoKhr2z6L/hSu9f+o] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR02MB4157:EE_|DM6PR02MB6617:EE_ x-ms-office365-filtering-correlation-id: 577b9ae2-ae5f-4c18-3ee2-08dc35845736 x-ms-exchange-slblob-mailprops: Cq7lScuPrnpIlBxZIzo7o7nSLKxpIaktSjENTr//3AnpffsqdabBVsaxc6DSQPmwhC+QhjRZ3AdT1HyfjrL/0iIzuLGY4U4fIN/vQHYfdn9iWL8Hxmai+nXcgehdhnCkakJ5d4Ed7EHwa+QSjKoNIsnRA6wrZkuIFzsBsenRg1DtbdQ8aNOOCJnKKzWlSWi1sZZqymKA7pVHG7ToA4GZjEh0xoVsr6NLyGi35ezXWn2SG/ffD+Unjht/0gQTLZNEUQsSqaiGLujTZ1NTyWifoLLConWSGCfE94j00+IbceRMKGQ5k17SWdxO3M2F7gfiLDONSa7IG/nMYSzJXMkSK25ofLDjbutXiH39NcyA79eF1N+itNzhiTnxq/XUYcy/MKuaTDOIqFeNC9qljy5CpRN5ta1WwwlLNQ5WTMRZycVg26c+hH3Ujj36jSOlq+nPfN3/QNr2OTC+bjyVgjOZCko8e2afZKTLm2K5nXfknMe8ny0sPRunCrcNBCNCEY3m1bjZFA54KoQ8Vb1KRz3YIA1+CWCGzwuXjDugs3ukBOiHLyXP5jGa6nBzrYqLMARz9cbqa6UCMVfab+g024tsBqJuyDvYQktV7MSmPDvOWqGvBMSWe2qqSOErjx7t6IrlNhmn6XuIUl3CcEIAWBB5/d+mC0TOWcvCOMH6MbmtVndT4GHc+SVyqs2hioH8QUD/L9om+/qWYCPZM6avga2GjhtMIQVeR+tqS55NpytWJeD0B9VRFPUrGiSBeVb1tQB95uM52PCWo3A= x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: O0/1pZGDV1I0PzB/cAp/H/eV31a1rX435InHgC1vgw3lTzhmEFtGuFinEqG4VPUBuefXvXNQ4cStNhVqjvUp7OMhcQhSl86qCls+ydG5lpFV7vOqHH56CYqtY9RxWuPhIKkmZiMhxjBzZRqMumEC0MATgHwZpW7kZttGA2Y+TASS7bunChWaIorOV66ZVsdDz844sw5cyMbzh1vfaw5f/2mi1L0whCp2VIxINqFU0ymCQJi2s1gG/YUjuz7DVxANo8C+yMYn6YCQoanRilqdfJeEMDpCUR0T9FPApf2PQNOQ/GGMhe6my9bESyN99/j03k1dztxmrCvFOlSUvqFBWtgiimNukD9Ax2m9YGaUA+8mEPyruQZ5VXhmaVRoSzdF4tAuteyPjflN3Vk/3//9DkemwdGjxJtjkY68YO9OMfRu+3ivQHZWN059wOPl1/zFH++DJ/fHGYcmb4msMii3q/e7871/16QP6UMhyJYaDzkM7mlWdga9P/mYYHN+atyGlSJ1rKAHLqeGMYsJNZH4M+jX/zr394u6/6E2Z19WougrfMHY5qeB106/4DfNb/ZY x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Rk5oT3lla2E3ZVRVYm8xVjJNZUNBR0FucDA2MDUvUENPK0x0MXY0NUhOUWJp?= =?utf-8?B?SHNCZVVya0RnbEQ1d1VTQmpZMXBqSWRRZlpoRXJxNlFrb1BCeFJ0V1JpZ0E0?= =?utf-8?B?OWlXdHRIVldlSFJwSEU5YjF3bUpxN2hpRzV5Y1RneHZ5ZDRUNWJodWtuM2hS?= =?utf-8?B?RjJqZFN1cnlsWjR4UmdmaHB0NFpUUGhGR29HMEhUZEQvUkg3TzBDNDNmVERp?= =?utf-8?B?eUtrQzJCK3BsN3hHUE9wZm5WWkxTb2YxRDNNcnA0bENxNzFhUVhYOXNNRkhE?= =?utf-8?B?MFhWRWMzSzdtb3NSdjNhWmdla0lKT1B5dnZmb1g2MmNOYmorWDljd3Fic2tC?= =?utf-8?B?bEdjL2s2VFJ4MDlPaDc0QThCZTNSSUI5d1hxZlh1VGpvY2FOWi9aL2NFZUxD?= =?utf-8?B?Zm9oZjBwWGZQTmpZRURFQ2RKZUIwN2Z1c1lSdUJidDFRWnBqK050bm0vWmow?= =?utf-8?B?RTQ2YnR2L2ttT3IxRngxeEZKa2kyakFsTFpPZHp5OGI4MGZrWUUramNpZkdZ?= =?utf-8?B?NnYvaG9iMDNrVzRCSk1yWGo1QWgwY1lzQVoraVlYaldpQ0hGeGkzRGIyK0I1?= =?utf-8?B?NVZBdEN0R2RlY1RKS01ONjRBTTIrZFJNL09ZOXI1am1rUXg0dnozcnhvc1di?= =?utf-8?B?M1dvQnZRNEJ1a2hRTm9pMG5adGx4Ui9Yb2lyZFJoa1gwdUdHcmxrSEYyaTNk?= =?utf-8?B?d3d3THV2SFluUk5kYXdnbHJ3Wis1K0dwR1YyN21STWJOenhra2l6Tk9uMm5z?= =?utf-8?B?QXplOVFyeEJCL21LSTBTcVpua0ZTaHpTemtVOEdPT3RTcSsrWENwSWZLd05p?= =?utf-8?B?TElpRzU2MS9SRGtwcW5iV3R1akZ3MndaYmc4UzlxUGlSOTl3dXF4MlRVWGd1?= =?utf-8?B?YzFUSURXeW1Cdkd4WHBmbkFIMGFKV2dkbHFsUEY5L2tkcUxEcGRNMmJqamVu?= =?utf-8?B?Ump1a0sxb3RlNmIrMlNNREhRdEhZc1plSlEzaG02NHZEM01IdFQrODh3U0ZE?= =?utf-8?B?djJYOGd1WGJmZUd5WmkySVpKem52U2dOdGJCdkMvTTU4V2tuZUk0SDZnZ2FO?= =?utf-8?B?MHU3T3hmRGZLdGszeVgvck1JMDYrRFV0ZkFZMmptUTdQRU1qaHZiTXBhbVBu?= =?utf-8?B?ZnhKSG1uRDNOa2lCNlF1SkFZbzY4QTlDM1c3WmhKUVlmUzlzOHFhczJYWEdX?= =?utf-8?B?SXV0TC9od0F4SUljZklmUFkxcU83dENYUG5PR2Y3cyt2ZmRTTGhWRmhFdmln?= =?utf-8?B?akFxYmNxU1V4YzdZZmVqaks4d1VYUnNKaUxTbUVEeFRjZy82cXlPeStCUE1I?= =?utf-8?B?MVZXVDBSWVM2UzZCSGVyaWRvSjVyN3RkNk5HU3VjTXM2cUlGb2lJdXRUSkRJ?= =?utf-8?B?cTNyR1NGWi9sQUoySVkzd2ZSRVFyU1VubXRPQkFuZWRvTm5QRkwvVktaUVh4?= =?utf-8?B?dmVxaUpmMnZKMU9UbExWRDMxc2VlKzlPV0J5OWgzak1ScFFHU3dZSDNGSWY2?= =?utf-8?B?NXhyZVBBSUtBcUpqZzFJWUFYck1YaDMwdW9icDJPRDJTOU1PS1N1bVlMZEl2?= =?utf-8?B?aUFZWGQvaHlna1pNSTRpczdDdkh4emdqbDQ0cDFybk1FT0RaUEFFOWxUdTRN?= =?utf-8?B?ZStKMC8zVkxES0NJeU1lb3I5SnVleVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR02MB4157.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 577b9ae2-ae5f-4c18-3ee2-08dc35845736 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Feb 2024 22:02:49.4813 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR02MB6617 RnJvbTogVmlzaGFsIEFubmFwdXJ2ZSA8dmFubmFwdXJ2ZUBnb29nbGUuY29tPiBTZW50OiBTYXR1 cmRheSwgRmVicnVhcnkgMjQsIDIwMjQgOTowNyBBTQ0KPiANCj4gT24gRnJpLCBGZWIgMTYsIDIw MjQgYXQgMTo1NuKAr0FNIE1pY2hhZWwgS2VsbGV5IDxtaGtsaW51eEBvdXRsb29rLmNvbT4gd3Jv dGU6DQo+ID4NCj4gPiBGcm9tOiBBbGV4YW5kZXIgR3JhZiA8Z3JhZkBhbWF6b24uY29tPiBTZW50 OiBUaHVyc2RheSwgRmVicnVhcnkgMTUsIDIwMjQgMTo0NCBBTQ0KPiA+ID4NCj4gPiA+IE9uIDE1 LjAyLjI0IDA0OjMzLCBWaXNoYWwgQW5uYXB1cnZlIHdyb3RlOg0KPiA+ID4gPiBPbiBXZWQsIEZl YiAxNCwgMjAyNCBhdCA4OjIw4oCvUE0gS2lyaWxsIEEuIFNodXRlbW92IDxraXJpbGxAc2h1dGVt b3YubmFtZT4gd3JvdGU6DQo+ID4gPiA+PiBPbiBGcmksIEphbiAxMiwgMjAyNCBhdCAwNTo1Mjo0 N0FNICswMDAwLCBWaXNoYWwgQW5uYXB1cnZlIHdyb3RlOg0KPiA+ID4gPj4+IE1vZGlmeSBTV0lP VExCIGZyYW1ld29yayB0byBhbGxvY2F0ZSBETUEgbWVtb3J5IGFsd2F5cyBmcm9tIFNXSU9UTEIu DQo+ID4gPiA+Pj4NCj4gPiA+ID4+PiBDVk1zIHVzZSBTV0lPVExCIGJ1ZmZlcnMgZm9yIGJvdW5j aW5nIG1lbW9yeSB3aGVuIHVzaW5nIGRtYV9tYXBfKiBBUElzDQo+ID4gPiA+Pj4gdG8gc2V0dXAg bWVtb3J5IGZvciBJTyBvcGVyYXRpb25zLiBTV0lPVExCIGJ1ZmZlcnMgYXJlIG1hcmtlZCBhcyBz aGFyZWQNCj4gPiA+ID4+PiBvbmNlIGR1cmluZyBlYXJseSBib290Lg0KPiA+ID4gPj4+DQo+ID4g PiA+Pj4gQnVmZmVycyBhbGxvY2F0ZWQgdXNpbmcgZG1hX2FsbG9jXyogQVBJcyBhcmUgYWxsb2Nh dGVkIGZyb20ga2VybmVsIG1lbW9yeQ0KPiA+ID4gPj4+IGFuZCB0aGVuIGNvbnZlcnRlZCB0byBz aGFyZWQgZHVyaW5nIGVhY2ggQVBJIGludm9jYXRpb24uIFRoaXMgcGF0Y2ggZW5zdXJlcw0KPiA+ ID4gPj4+IHRoYXQgc3VjaCBidWZmZXJzIGFyZSBhbHNvIGFsbG9jYXRlZCBmcm9tIGFscmVhZHkg c2hhcmVkIFNXSU9UTEINCj4gPiA+ID4+PiByZWdpb25zLiBUaGlzIGFsbG93cyBlbmZvcmNpbmcg YWxpZ25tZW50IHJlcXVpcmVtZW50cyBvbiByZWdpb25zIG1hcmtlZA0KPiA+ID4gPj4+IGFzIHNo YXJlZC4NCj4gPiA+ID4+IEJ1dCBkb2VzIGl0IHdvcmsgaW4gcHJhY3RpY2U/DQo+ID4gPiA+Pg0K PiA+ID4gPj4gU29tZSBkZXZpY2VzIChsaWtlIEdQVXMpIHJlcXVpcmUgYSBsb3Qgb2YgRE1BIG1l bW9yeS4gU28gd2l0aCB0aGlzIGFwcHJvYWNoDQo+ID4gPiA+PiB3ZSB3b3VsZCBuZWVkIHRvIGhh dmUgaHVnZSBTV0lPVExCIGJ1ZmZlciB0aGF0IGlzIHVudXNlZCBpbiBtb3N0IFZNcy4NCj4gPiA+ ID4+DQo+ID4gPiA+IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gbGltaXRzIHRoZSBzaXplIG9mIHN0 YXRpY2FsbHkgYWxsb2NhdGVkIFNXSU9UTEINCj4gPiA+ID4gbWVtb3J5IHBvb2wgdG8gMUcuIEkg d2FzIHByb3Bvc2luZyB0byBlbmFibGUgZHluYW1pYyBTV0lPVExCIGZvciBDVk1zDQo+ID4gPiA+ IGluIGFkZGl0aW9uIHRvIGFsaWduaW5nIHRoZSBtZW1vcnkgYWxsb2NhdGlvbnMgdG8gaHVnZXBh Z2Ugc2l6ZXMsIHNvDQo+ID4gPiA+IHRoYXQgdGhlIFNXSU9UTEIgcG9vbCBjYW4gYmUgc2NhbGVk IHVwIG9uIGRlbWFuZC4NCj4gPiA+ID4NCj4gPg0KPiA+IFZpc2hhbCAtLQ0KPiA+DQo+ID4gV2hl biB0aGUgZHluYW1pYyBzd2lvdGxiIG1lY2hhbmlzbSB0cmllcyB0byBncm93IHN3aW90bGIgc3Bh Y2UNCj4gPiBieSBhZGRpbmcgYW5vdGhlciBwb29sLCBpdCBnZXRzIHRoZSBhZGRpdGlvbmFsIG1l bW9yeSBhcyBhIHNpbmdsZQ0KPiA+IHBoeXNpY2FsbHkgY29udGlndW91cyBjaHVuayB1c2luZyBh bGxvY19wYWdlcygpLiAgIEl0IHN0YXJ0cyBieSB0cnlpbmcNCj4gPiB0byBhbGxvY2F0ZSBhIGNo dW5rIHRoZSBzaXplIG9mIHRoZSBvcmlnaW5hbCBzd2lvdGxiIHNpemUsIGFuZCBpZiB0aGF0DQo+ ID4gZmFpbHMsIGhhbHZlcyB0aGUgc2l6ZSB1bnRpbCBpdCBnZXRzIGEgc2l6ZSB3aGVyZSB0aGUg YWxsb2NhdGlvbiBzdWNjZWVkcy4NCj4gPiBUaGUgbWluaW11bSBzaXplIGlzIDEgTWJ5dGUsIGFu ZCBpZiB0aGF0IGZhaWxzLCB0aGUgImdyb3ciIGZhaWxzLg0KPiA+DQo+IA0KPiBUaGFua3MgZm9y IHBvaW50aW5nIHRoaXMgb3V0Lg0KPiANCj4gPiBTbyBpdCBzZWVtcyBsaWtlIGR5bmFtaWMgc3dp b3RsYiBpcyBzdWJqZWN0IHRvIHRoZSBhbG1vc3QgdGhlIHNhbWUNCj4gPiBtZW1vcnkgZnJhZ21l bnRhdGlvbiBsaW1pdGF0aW9ucyBhcyB0cnlpbmcgdG8gYWxsb2NhdGUgaHVnZSBwYWdlcy4NCj4g PiBzd2lvdGxiIG5lZWRzIGEgbWluaW11bSBvZiAxIE1ieXRlIGNvbnRpZ3VvdXMgaW4gb3JkZXIg dG8gZ3JvdywNCj4gPiB3aGlsZSBodWdlIHBhZ2VzIG5lZWQgMiBNYnl0ZXMsIGJ1dCBlaXRoZXIg aXMgbGlrZWx5IHRvIGJlDQo+ID4gcHJvYmxlbWF0aWMgaW4gYSBWTSB0aGF0IGhhcyBiZWVuIHJ1 bm5pbmcgYSB3aGlsZS4gIFdpdGggdGhhdA0KPiA+IGluIG1pbmQsIEknbSBub3QgY2xlYXIgb24g dGhlIGJlbmVmaXQgb2YgZW5hYmxpbmcgZHluYW1pYyBzd2lvdGxiLg0KPiA+IEl0IHNlZW1zIGxp a2UgaXQganVzdCBtb3ZlcyBhcm91bmQgdGhlIHByb2JsZW0gb2YgbmVlZGluZyBoaWdoIG9yZGVy DQo+ID4gY29udGlndW91cyBtZW1vcnkgYWxsb2NhdGlvbnMuICBPciBhbSBJIG1pc3Npbmcgc29t ZXRoaW5nPw0KPiA+DQo+IA0KPiBDdXJyZW50bHkgdGhlIFNXSU9UTEIgcG9vbCBpcyBsaW1pdGVk IHRvIDFHQiBpbiBzaXplLiAgS2lyaWxsIGhhcw0KPiBwb2ludGVkIG91dCB0aGF0IGRldmljZXMg bGlrZSBHUFVzIGNvdWxkIG5lZWQgYSBzaWduaWZpY2FudCBhbW91bnQgb2YNCj4gbWVtb3J5IHRv IGJlIGFsbG9jYXRlZCBmcm9tIHRoZSBTV0lPVExCIHBvb2wuIFdpdGhvdXQgZHluYW1pYyBTV0lP VExCLA0KPiBzdWNoIGRldmljZXMgcnVuIHRoZSByaXNrIG9mIG1lbW9yeSBleGhhdXN0aW9uIHdp dGhvdXQgYW55IGhvcGUgb2YNCj4gcmVjb3ZlcnkuDQoNCkFjdHVhbGx5LCBpbiBhIENvQ28gVk0g dGhlIHN3aW90bGIgcG9vbCAqZGVmYXVsdHMqIHRvIDYlIG9mDQptZW1vcnksIHdpdGggYSBtYXgg b2YgMSBHYnl0ZS4gU2VlIG1lbV9lbmNyeXB0X3NldHVwX2FyY2goKS4NClNvIGluIGEgQ29DbyBW TSB3aXRoIDE2IEdieXRlcyBvZiBtZW1vcnkgb3IgbW9yZSwgeW91DQp0eXBpY2FsbHkgc2VlIDEg R2J5dGUgYXMgdGhlIHN3aW90bGIgc2l6ZS4gIEJ1dCB0aGF0J3Mgb25seSB0aGUNCmRlZmF1bHQu ICBVc2luZyB0aGUga2VybmVsIGJvb3QgbGluZSBwYXJhbWV0ZXIgInN3aW90bGI9PG5ubj4iDQp5 b3UgY2FuIHNldCB0aGUgaW5pdGlhbCBzd2lvdGxiIHNpemUgdG8gc29tZXRoaW5nIGxhcmdlciwg d2l0aCB0aGUNCm1heCB0eXBpY2FsbHkgYmVpbmcgaW4gdGhlIDMgR2J5dGUgcmFuZ2UuIFRoZSAz IEdieXRlIGxpbWl0IGFyaXNlcw0KYmVjYXVzZSB0aGUgc3dpb3RsYiBwb29sIG11c3QgcmVzaWRl IGJlbG93IHRoZSA0IEdieXRlIGxpbmUNCmluIHRoZSBDb0NvIFZNJ3MgZ3Vlc3QgcGh5c2ljYWwg bWVtb3J5LCBhbmQgdGhlcmUgYXJlIG90aGVyDQp0aGluZ3MgbGlrZSAzMi1iaXQgTU1JTyBzcGFj ZSB0aGF0IGFsc28gbXVzdCBmaXQgYmVsb3cgdGhlDQo0IEdieXRlIGxpbmUuICBSZWxhdGVkLCBJ J3ZlIGNvbnRlbXBsYXRlZCBzdWJtaXR0aW5nIGEgcGF0Y2ggdG8NCmFsbG93IHRoZSBzd2lvdGxi IHBvb2wgaW4gYSBDb0NvIFZNIHRvIGJlIGFib3ZlIHRoZSA0IEdieXRlDQpsaW5lLCBzaW5jZSB0 aGUgb3JpZ2luYWwgcmVhc29ucyBmb3IgYmVpbmcgYmVsb3cgdGhlIDQgR2J5dGUgbGluZQ0KcHJv YmFibHkgZG9u4oCZdCBhcHBseSBpbiBhIENvQ28gVk0uICBXaXRoIHN1Y2ggYSBjaGFuZ2UsIHRo ZQ0Ka2VybmVsIGJvb3QgbGluZSBjb3VsZCBzcGVjaWZ5IGFuIGV2ZW4gbGFyZ2VyIGluaXRpYWwg c3dpb3RsYiBwb29sLg0KDQpCdXQgYXMgeW91IHBvaW50IG91dCwgY2FsY3VsYXRpbmcgYSBtYXhp bXVtIGFoZWFkIG9mIHRpbWUNCmlzIG5vdCByZWFsbHkgcG9zc2libGUsIGFuZCBjaG9vc2luZyBh IHJlYWxseSBsYXJnZSB2YWx1ZSB0byBiZQ0KInNhZmUiIGlzIGxpa2VseSB0byB3YXN0ZSBhIGxv dCBvZiBtZW1vcnkgaW4gbW9zdCBjYXNlcy4gIFNvDQp1c2luZyBkeW5hbWljIHN3aW90bGIgbWFr ZXMgc2Vuc2UsIGV4Y2VwdCB0aGF0IHlvdSBjYW4ndA0KYmUgc3VyZSB0aGF0IGR5bmFtaWMgZ3Jv d3RoIHdpbGwgcmVhbGx5IHdvcmsgYmVjYXVzZQ0KZnJhZ21lbnRhdGlvbiBtYXkgcHJldmVudCBn ZXR0aW5nIGVub3VnaCBjb250aWd1b3VzDQptZW1vcnkuDQoNCk9uZSBvdGhlciBjb25zaWRlcmF0 aW9uIHdpdGggZHluYW1pYyBzd2lvdGxiIHBvb2xzOg0KVGhlIGluaXRpYWxseSBhbGxvY2F0ZWQg c3dpb3RsYiBwb29sIGlzIGRpdmlkZWQgaW50byAiYXJlYXMiLCANCmRlZmF1bHRpbmcgdG8gb25l IGFyZWEgZm9yIGVhY2ggdkNQVSBpbiB0aGUgVk0uICBUaGlzIGFsbG93cw0KQ1BVcyB0byBkbyBz d2lvdGxiIGFsbG9jYXRpb25zIGZyb20gdGhlaXIgYXJlYSB3aXRob3V0IGhhdmluZw0KdG8gY29u dGVuZCBmb3IgYSBzaGFyZWQgc3BpbiBsb2NrLiAgQnV0IGlmIGEgQ1BVIGZpbmRzIGl0cyBvd24N CmFyZWEgaXMgZnVsbCwgdGhlbiBpdCB3aWxsIHNlYXJjaCB0aGUgYXJlYXMgb2Ygb3RoZXIgQ1BV cywgd2hpY2gNCmNhbiBwcm9kdWNlIHNwaW4gbG9jayBjb250ZW50aW9uLCB0aG91Z2ggaG9wZWZ1 bGx5IHRoYXQncw0KcmFyZS4gSW4gdGhlIGNhc2Ugb2YgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQg YWRkaXRpb24gb2YgMg0KTWJ5dGVzIChmb3IgZXhhbXBsZSksIHRoZSBudW1iZXIgb2YgYXJlYXMg aXMgbGltaXRlZCB0bw0KMk0vMjU2SyA9IDguICBJbiBhIFZNIHdpdGggbW9yZSB0aGFuIDggdkNQ VXMsIG11bHRpcGxlDQpDUFVzIHdpbGwgaW1tZWRpYXRlbHkgYmUgY29udGVuZGluZyBmb3IgdGhl IHNhbWUgYXJlYQ0KSW4gdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhZGRpdGlvbiwgYW5kIHdl J3ZlIHNlZW4NCnRoYXQgc3dpb3RsYiBzcGluIGxvY2sgY29udGVudGlvbiBjYW4gYmUgYSBwZXJm IGlzc3VlIGluDQpDb0NvIFZNcy4gIEJlaW5nIGFibGUgdG8gYWxsb2NhdGUgYSBtZW1vcnkgY2h1 bmsgYmlnZ2VyDQp0aGFuIDIgTWJ5dGVzIHdvdWxkIGFsbG93IGZvciBtb3JlIGFyZWFzLCBidXQg b2YgY291cnNlDQpzdWNjZXNzIGluIGFsbG9jYXRpbmcgYmlnZ2VyIGNodW5rcyBpcyBsZXNzIGxp a2VseSBhbmQgdGhlDQphbGxvY19wYWdlcygpIGxpbWl0IG9uIHg4Ni94NjQgaXMgNCBNYnl0ZXMg YW55d2F5Lg0KDQpPdmVyYWxsLCBteSBwb2ludCBpcyB0aGF0IHRoZXJlIGFyZSB0cmFkZW9mZnMu ICBEeW5hbWljDQpzd2lvdGxiIG1heSBsb29rIGxpa2UgYSBnb29kIGFwcHJvYWNoLCBidXQgaXQg aGFzIHNvbWUNCmRvd25zaWRlcyB0aGF0IGFyZW4ndCBpbW1lZGlhdGVseSBvYnZpb3VzLiBNeQ0K dW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBvcmlnaW5hbCBtb3RpdmF0aW9uIGZvciBkeW5hbWlj DQpzd2lvdGxiIHdhcyBzbWFsbCBzeXN0ZW1zIHdpdGggbGltaXRlZCBtZW1vcnksIHdoZXJlIHlv dQ0KY291bGQgc3RhcnQgd2l0aCBhIHJlYWxseSBzbWFsbCBzd2lvdGxiLCBhbmQgdGhlbiBncm93 IGFzDQpuZWNlc3NhcnkuIEl0J3MgbGVzcyBvZiBhIGdvb2QgZml0IG9uIGxhcmdlIENvQ28gVk1z IHdpdGgNCmRvemVucyBvZiB2Q1BVcywgZm9yIHRoZSByZWFzb25zIGRlc2NyaWJlZCBhYm92ZS4N Cg0KPiANCj4gSW4gYWRkaXRpb24sIEkgYW0gcHJvcG9zaW5nIHRvIGhhdmUgZG1hX2FsbG9jXyog QVBJcyB0byB1c2UgdGhlDQo+IFNXSU9UTEIgYXJlYSBhcyB3ZWxsLCBhZGRpbmcgdG8gdGhlIG1l bW9yeSBwcmVzc3VyZS4gSWYgdGhlcmUgd2FzIGENCj4gd2F5IHRvIGNhbGN1bGF0ZSB0aGUgbWF4 aW11bSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCBmb3IgYWxsIGRtYQ0KPiBhbGxvY2F0aW9ucyBm b3IgYWxsIHBvc3NpYmxlIGRldmljZXMgdXNlZCBieSBDb0NvIFZNcyB0aGVuIG9uZSBjYW4gdXNl DQo+IHRoYXQgbnVtYmVyIHRvIHByZWFsbG9jYXRlIFNXSU9UTEIgcG9vbC4gSSBhbSBhcmd1aW5n IHRoYXQgY2FsY3VsYXRpbmcNCj4gdGhlIG1heGltdW0gYm91bmQgd291bGQgYmUgZGlmZmljdWx0 IGFuZCBpbnN0ZWFkIG9mIHRyeWluZyB0bw0KPiBjYWxjdWxhdGUgaXQsIGFsbG93aW5nIFNXSU9U TEIgdG8gc2NhbGUgZHluYW1pY2FsbHkgd291bGQgYmUgYmV0dGVyDQo+IHNpbmNlIGl0IHByb3Zp ZGVzIGJldHRlciAuDQoNCkFncmVlZCwgYnV0IHNlZSBhYm92ZS4gIEknbSBub3Qgc2F5aW5nIGR5 bmFtaWMgc3dpb3RsYg0KY2FuJ3QgYmUgdXNlZCwgYnV0IGp1c3QgdG8gYmUgYXdhcmUgb2YgdGhl IHRyYWRlb2Zmcy4NCg0KTWljaGFlbA0KDQo+IA0KPiBTbyBpZiB0aGUgYWJvdmUgYXJndW1lbnQg Zm9yIGVuYWJsaW5nIGR5bmFtaWMgU1dJT1RMQiBtYWtlcyBzZW5zZSB0aGVuDQo+IGl0IHNob3Vs ZCBiZSByZWxhdGl2ZWx5IGVhc3kgdG8gYXBwZW5kIGh1Z2VwYWdlIGFsaWdubWVudCByZXN0cmlj dGlvbnMNCj4gZm9yIFNXSU9UTEIgcG9vbCBpbmNyZW1lbnRzIChpbmxpbmUgd2l0aCB0aGUgZmFj dCB0aGF0IDJNQiB2cyAxTUIgc2l6ZQ0KPiBhbGxvY2F0aW9ucyBhcmUgbmVhcmx5IGVxdWFsbHkg cHJvbmUgdG8gZmFpbHVyZSBkdWUgdG8gbWVtb3J5DQo+IGZyYWdtZW50YXRpb24pLg0KPiANCj4g PiBNaWNoYWVsDQo+ID4NCj4gPiA+ID4gVGhlIGlzc3VlIHdpdGggYWxpZ25pbmcgdGhlIHBvb2wg YXJlYXMgdG8gaHVnZXBhZ2VzIGlzIHRoYXQgaHVnZXBhZ2UNCj4gPiA+ID4gYWxsb2NhdGlvbiBh dCBydW50aW1lIGlzIG5vdCBndWFyYW50ZWVkLiBHdWFyYW50ZWVpbmcgdGhlIGh1Z2VwYWdlDQo+ ID4gPiA+IGFsbG9jYXRpb24gbWlnaHQgbmVlZCBjYWxjdWxhdGluZyB0aGUgdXBwZXIgYm91bmQg aW4gYWR2YW5jZSwgd2hpY2gNCj4gPiA+ID4gZGVmZWF0cyB0aGUgcHVycG9zZSBvZiBlbmFibGlu ZyBkeW5hbWljIFNXSU9UTEIuIEkgYW0gb3BlbiB0bw0KPiA+ID4gPiBzdWdnZXN0aW9ucyBoZXJl Lg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBZb3UgY291bGQgYWxsb2NhdGUgYSBtYXggYm91bmQgYXQg Ym9vdCB1c2luZyBDTUEgYW5kIHRoZW4gb25seSBmaWxsIGludG8NCj4gPiA+IHRoZSBDTUEgYXJl YSB3aGVuIFNXSU9UTEIgc2l6ZSByZXF1aXJlbWVudHMgaW5jcmVhc2U/IFRoZSBDTUEgcmVnaW9u DQo+ID4gPiB3aWxsIGFsbG93IG1vdmFibGUgYWxsb2NhdGlvbnMgYXMgbG9uZyBhcyB5b3UgZG9u J3QgcmVxdWlyZSB0aGUgQ01BIHNwYWNlLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBBbGV4DQo+ID4N Cg==