From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32]) (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 D613245975 for ; Thu, 22 Feb 2024 11:31:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.32 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708601488; cv=none; b=fZPGWR2+81kKJjpFzJr8VU8davOrkp4XHgMEbPNuOjvlMkDGSyhGwaS8B9gkDlsPcGKh1OZNIadckE3XSwSlQe6dEhuQrtoBmA0Kfp5N6hfkSf7NdEpcZjGgDtPsQQo806sIjNpzi5D3jsz15cTA8ZRymtLn3ncYY+1xYDBoGfc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708601488; c=relaxed/simple; bh=F4am/n7NRcpyCYiYEb/VlrfOLQWcEB1g1+lHxOal0wQ=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=IjLAw+C3pxutGqgkJPKaPEWVD232giJysWtK4za73CDc0BJctncSabwMHc0pe8DToBVez4/eWeE4Zf5qbUAsKqf5CfF2zNdt3uDbxWsqGCAlicLXmenKuy5HWlR9oXHjNA+RNmMd9TS6W6lFaWTp6FpkUuh2M1Jftzj7bJ0xn1Y= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=45.249.212.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.88.163]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4TgWD66hp6z1vv47; Thu, 22 Feb 2024 19:30:46 +0800 (CST) Received: from dggems704-chm.china.huawei.com (unknown [10.3.19.181]) by mail.maildlp.com (Postfix) with ESMTPS id 8AF6E18002F; Thu, 22 Feb 2024 19:31:21 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (7.191.163.240) by dggems704-chm.china.huawei.com (10.3.19.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 22 Feb 2024 19:31:20 +0800 Received: from lhrpeml500005.china.huawei.com ([7.191.163.240]) by lhrpeml500005.china.huawei.com ([7.191.163.240]) with mapi id 15.01.2507.035; Thu, 22 Feb 2024 11:31:18 +0000 From: Shameerali Kolothum Thodi To: Joao Martins CC: "joro@8bytes.org" , "jgg@nvidia.com" , "kevin.tian@intel.com" , "nicolinc@nvidia.com" , "iommu@lists.linux.dev" , "mshavit@google.com" , "robin.murphy@arm.com" , "will@kernel.org" , jiangkunkun , zhukeqian , Linuxarm , "linux-arm-kernel@lists.infradead.org" Subject: RE: [PATCH v2 3/4] iommu/arm-smmu-v3: Add support for dirty tracking in domain alloc Thread-Topic: [PATCH v2 3/4] iommu/arm-smmu-v3: Add support for dirty tracking in domain alloc Thread-Index: AQHaZXTSExgSw/uTxUa44V9Mknrnh7EWMsuAgAAGflA= Date: Thu, 22 Feb 2024 11:31:18 +0000 Message-ID: References: <20240222094923.33104-1-shameerali.kolothum.thodi@huawei.com> <20240222094923.33104-4-shameerali.kolothum.thodi@huawei.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: iommu@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSm9hbyBNYXJ0aW5zIDxq b2FvLm0ubWFydGluc0BvcmFjbGUuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgMjIs IDIwMjQgMTE6MDQgQU0NCj4gVG86IFNoYW1lZXJhbGkgS29sb3RodW0gVGhvZGkgPHNoYW1lZXJh bGkua29sb3RodW0udGhvZGlAaHVhd2VpLmNvbT4NCj4gQ2M6IGpvcm9AOGJ5dGVzLm9yZzsgamdn QG52aWRpYS5jb207IGtldmluLnRpYW5AaW50ZWwuY29tOw0KPiBuaWNvbGluY0BudmlkaWEuY29t OyBpb21tdUBsaXN0cy5saW51eC5kZXY7IG1zaGF2aXRAZ29vZ2xlLmNvbTsNCj4gcm9iaW4ubXVy cGh5QGFybS5jb207IHdpbGxAa2VybmVsLm9yZzsgamlhbmdrdW5rdW4NCj4gPGppYW5na3Vua3Vu QGh1YXdlaS5jb20+OyB6aHVrZXFpYW4gPHpodWtlcWlhbjFAaHVhd2VpLmNvbT47DQo+IExpbnV4 YXJtIDxsaW51eGFybUBodWF3ZWkuY29tPjsgbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjIgMy80XSBpb21tdS9hcm0tc21tdS12Mzog QWRkIHN1cHBvcnQgZm9yIGRpcnR5DQo+IHRyYWNraW5nIGluIGRvbWFpbiBhbGxvYw0KPiANCj4g T24gMjIvMDIvMjAyNCAwOTo0OSwgU2hhbWVlciBLb2xvdGh1bSB3cm90ZToNCj4gPiBGcm9tOiBK b2FvIE1hcnRpbnMgPGpvYW8ubS5tYXJ0aW5zQG9yYWNsZS5jb20+DQo+ID4NCj4gPiBUaGlzIHBy b3ZpZGVzIGFsbCB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gZW5hYmxlIGRpcnR5IHRyYWNraW5nIGlm IHRoZQ0KPiA+IGhhcmR3YXJlIGhhcyB0aGUgY2FwYWJpbGl0eSBhbmQgZG9tYWluIGFsbG9jIHJl cXVlc3QgZm9yIGl0Lg0KPiA+DQo+ID4gUGxlYXNlIG5vdGUsIHdlIHN0aWxsIHJlcG9ydCBubyBz dXBwb3J0IGZvciBJT01NVV9DQVBfRElSVFlfVFJBQ0tJTkcNCj4gPiBhcyBpdCB3aWxsIGZpbmFs bHkgYmUgZW5hYmxlZCBpbiBhIHN1YnNlcXVlbnQgcGF0Y2guDQo+ID4NCj4gPiBTaWduZWQtb2Zm LWJ5OiBKb2FvIE1hcnRpbnMgPGpvYW8ubS5tYXJ0aW5zQG9yYWNsZS5jb20+DQo+ID4gU2lnbmVk LW9mZi1ieTogU2hhbWVlciBLb2xvdGh1bQ0KPiA8c2hhbWVlcmFsaS5rb2xvdGh1bS50aG9kaUBo dWF3ZWkuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9h cm0tc21tdS12My5jIHwgOTUNCj4gKysrKysrKysrKysrKysrKy0tLS0tDQo+ID4gIGluY2x1ZGUv bGludXgvaW8tcGd0YWJsZS5oICAgICAgICAgICAgICAgICAgfCAgNCArDQo+ID4gIDIgZmlsZXMg Y2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYw0KPiA+ IGIvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYw0KPiA+IGluZGV4 IGJkMzA3MzllMzU4OC4uMDU4YmJiMGRiZTJlIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvaW9t bXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMNCj4gPiArKysgYi9kcml2ZXJzL2lvbW11 L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jDQo+ID4gQEAgLTQzLDYgKzQzLDcgQEAgTU9E VUxFX1BBUk1fREVTQyhkaXNhYmxlX21zaXBvbGxpbmcsDQo+ID4gIAkiRGlzYWJsZSBNU0ktYmFz ZWQgcG9sbGluZyBmb3IgQ01EX1NZTkMgY29tcGxldGlvbi4iKTsNCj4gPg0KPiA+ICBzdGF0aWMg c3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9vcHM7DQo+ID4gK3N0YXRpYyBzdHJ1Y3QgaW9tbXVf ZGlydHlfb3BzIGFybV9zbW11X2RpcnR5X29wczsNCj4gPg0KPiA+ICBlbnVtIGFybV9zbW11X21z aV9pbmRleCB7DQo+ID4gIAlFVlRRX01TSV9JTkRFWCwNCj4gPiBAQCAtODYsNyArODcsOCBAQCBz dGF0aWMgc3RydWN0IGFybV9zbW11X29wdGlvbl9wcm9wDQo+ID4gYXJtX3NtbXVfb3B0aW9uc1td ID0gew0KPiA+DQo+ID4gIHN0YXRpYyB2b2lkIGFybV9zbW11X3Jtcl9pbnN0YWxsX2J5cGFzc19z dGUoc3RydWN0IGFybV9zbW11X2RldmljZQ0KPiA+ICpzbW11KTsgIHN0YXRpYyBpbnQgYXJtX3Nt bXVfZG9tYWluX2ZpbmFsaXNlKHN0cnVjdCBhcm1fc21tdV9kb21haW4NCj4gKnNtbXVfZG9tYWlu LA0KPiA+IC0JCQkJICAgIHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUpOw0KPiA+ICsJCQkJ ICAgIHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUsDQo+ID4gKwkJCQkgICAgYm9vbCBlbmFi bGVfZGlydHkpOw0KPiA+ICBzdGF0aWMgaW50IGFybV9zbW11X2FsbG9jX2NkX3RhYmxlcyhzdHJ1 Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIpOw0KPiA+IHN0YXRpYyB2b2lkIGFybV9zbW11X3Rs Yl9pbnZfYWxsX3MyKHN0cnVjdCBhcm1fc21tdV9kb21haW4NCj4gPiAqc21tdV9kb21haW4pOw0K PiA+DQo+ID4gQEAgLTIzNzgsNyArMjM4MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW9tbXVfZG9tYWlu DQo+ICphcm1fc21tdV9kb21haW5fYWxsb2NfcGFnaW5nKHN0cnVjdCBkZXZpY2UgKmRldikNCj4g PiAgCQlzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICptYXN0ZXIgPQ0KPiBkZXZfaW9tbXVfcHJpdl9n ZXQoZGV2KTsNCj4gPiAgCQlpbnQgcmV0Ow0KPiA+DQo+ID4gLQkJcmV0ID0gYXJtX3NtbXVfZG9t YWluX2ZpbmFsaXNlKHNtbXVfZG9tYWluLCBtYXN0ZXItDQo+ID5zbW11KTsNCj4gPiArCQlyZXQg PSBhcm1fc21tdV9kb21haW5fZmluYWxpc2Uoc21tdV9kb21haW4sIG1hc3Rlci0NCj4gPnNtbXUs IGZhbHNlKTsNCj4gPiAgCQlpZiAocmV0KSB7DQo+ID4gIAkJCWtmcmVlKHNtbXVfZG9tYWluKTsN Cj4gPiAgCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4gPiBAQCAtMjQ0NSwxMCArMjQ0NywxMSBA QCBzdGF0aWMgdm9pZCBhcm1fc21tdV9kb21haW5fZnJlZShzdHJ1Y3QNCj4gPiBpb21tdV9kb21h aW4gKmRvbWFpbikgIH0NCj4gPg0KPiA+ICBzdGF0aWMgaW50IGFybV9zbW11X2RvbWFpbl9maW5h bGlzZShzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluDQo+ICpzbW11X2RvbWFpbiwNCj4gPiAtCQkJCSAg ICBzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQ0KPiA+ICsJCQkJICAgIHN0cnVjdCBhcm1f c21tdV9kZXZpY2UgKnNtbXUsDQo+ID4gKwkJCQkgICAgYm9vbCBlbmFibGVfZGlydHkpDQo+ID4g IHsNCj4gPiAgCWludCByZXQ7DQo+ID4gLQl1bnNpZ25lZCBsb25nIGlhcywgb2FzOw0KPiA+ICsJ dW5zaWduZWQgbG9uZyBpYXM7DQo+ID4gIAllbnVtIGlvX3BndGFibGVfZm10IGZtdDsNCj4gPiAg CXN0cnVjdCBpb19wZ3RhYmxlX2NmZyBwZ3RibF9jZmc7DQo+ID4gIAlzdHJ1Y3QgaW9fcGd0YWJs ZV9vcHMgKnBndGJsX29wczsNCj4gPiBAQCAtMjQ1OSwzMSArMjQ2MiwzMSBAQCBzdGF0aWMgaW50 IGFybV9zbW11X2RvbWFpbl9maW5hbGlzZShzdHJ1Y3QNCj4gYXJtX3NtbXVfZG9tYWluICpzbW11 X2RvbWFpbiwNCj4gPiAgCWlmICghKHNtbXUtPmZlYXR1cmVzICYgQVJNX1NNTVVfRkVBVF9UUkFO U19TMikpDQo+ID4gIAkJc21tdV9kb21haW4tPnN0YWdlID0gQVJNX1NNTVVfRE9NQUlOX1MxOw0K PiA+DQo+ID4gKwlwZ3RibF9jZmcgPSAoc3RydWN0IGlvX3BndGFibGVfY2ZnKSB7DQo+ID4gKwkJ LnBnc2l6ZV9iaXRtYXAJPSBzbW11LT5wZ3NpemVfYml0bWFwLA0KPiA+ICsJCS5jb2hlcmVudF93 YWxrCT0gc21tdS0+ZmVhdHVyZXMgJg0KPiBBUk1fU01NVV9GRUFUX0NPSEVSRU5DWSwNCj4gPiAr CQkudGxiCQk9ICZhcm1fc21tdV9mbHVzaF9vcHMsDQo+ID4gKwkJLmlvbW11X2Rldgk9IHNtbXUt PmRldiwNCj4gPiArCX07DQo+ID4gKw0KPiA+ICAJc3dpdGNoIChzbW11X2RvbWFpbi0+c3RhZ2Up IHsNCj4gPiAgCWNhc2UgQVJNX1NNTVVfRE9NQUlOX1MxOg0KPiA+ICAJCWlhcyA9IChzbW11LT5m ZWF0dXJlcyAmIEFSTV9TTU1VX0ZFQVRfVkFYKSA/IDUyIDogNDg7DQo+ID4gLQkJaWFzID0gbWlu X3QodW5zaWduZWQgbG9uZywgaWFzLCBWQV9CSVRTKTsNCj4gPiAtCQlvYXMgPSBzbW11LT5pYXM7 DQo+ID4gKwkJcGd0YmxfY2ZnLmlhcyA9IG1pbl90KHVuc2lnbmVkIGxvbmcsIGlhcywgVkFfQklU Uyk7DQo+ID4gKwkJcGd0YmxfY2ZnLm9hcyA9IHNtbXUtPmlhczsNCj4gPiArCQlpZiAoZW5hYmxl X2RpcnR5KQ0KPiA+ICsJCQlwZ3RibF9jZmcucXVpcmtzIHw9IElPX1BHVEFCTEVfUVVJUktfQVJN X0hEOw0KPiA+ICAJCWZtdCA9IEFSTV82NF9MUEFFX1MxOw0KPiA+ICAJCWJyZWFrOw0KPiA+ICAJ Y2FzZSBBUk1fU01NVV9ET01BSU5fUzI6DQo+ID4gLQkJaWFzID0gc21tdS0+aWFzOw0KPiA+IC0J CW9hcyA9IHNtbXUtPm9hczsNCj4gPiArCQlwZ3RibF9jZmcuaWFzID0gc21tdS0+aWFzOw0KPiA+ ICsJCXBndGJsX2NmZy5vYXMgPSBzbW11LT5vYXM7DQo+ID4gIAkJZm10ID0gQVJNXzY0X0xQQUVf UzI7DQo+ID4gIAkJYnJlYWs7DQo+ID4gIAlkZWZhdWx0Og0KPiA+ICAJCXJldHVybiAtRUlOVkFM Ow0KPiA+ICAJfQ0KPiA+DQo+ID4gLQlwZ3RibF9jZmcgPSAoc3RydWN0IGlvX3BndGFibGVfY2Zn KSB7DQo+ID4gLQkJLnBnc2l6ZV9iaXRtYXAJPSBzbW11LT5wZ3NpemVfYml0bWFwLA0KPiA+IC0J CS5pYXMJCT0gaWFzLA0KPiA+IC0JCS5vYXMJCT0gb2FzLA0KPiA+IC0JCS5jb2hlcmVudF93YWxr CT0gc21tdS0+ZmVhdHVyZXMgJg0KPiBBUk1fU01NVV9GRUFUX0NPSEVSRU5DWSwNCj4gPiAtCQku dGxiCQk9ICZhcm1fc21tdV9mbHVzaF9vcHMsDQo+ID4gLQkJLmlvbW11X2Rldgk9IHNtbXUtPmRl diwNCj4gPiAtCX07DQo+ID4gLQ0KPiA+ICAJcGd0Ymxfb3BzID0gYWxsb2NfaW9fcGd0YWJsZV9v cHMoZm10LCAmcGd0YmxfY2ZnLCBzbW11X2RvbWFpbik7DQo+ID4gIAlpZiAoIXBndGJsX29wcykN Cj4gPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gPiBAQCAtMjQ5MSw3ICsyNDk0LDggQEAgc3RhdGlj IGludCBhcm1fc21tdV9kb21haW5fZmluYWxpc2Uoc3RydWN0DQo+IGFybV9zbW11X2RvbWFpbiAq c21tdV9kb21haW4sDQo+ID4gIAlzbW11X2RvbWFpbi0+ZG9tYWluLnBnc2l6ZV9iaXRtYXAgPSBw Z3RibF9jZmcucGdzaXplX2JpdG1hcDsNCj4gPiAgCXNtbXVfZG9tYWluLT5kb21haW4uZ2VvbWV0 cnkuYXBlcnR1cmVfZW5kID0gKDFVTCA8PA0KPiBwZ3RibF9jZmcuaWFzKSAtIDE7DQo+ID4gIAlz bW11X2RvbWFpbi0+ZG9tYWluLmdlb21ldHJ5LmZvcmNlX2FwZXJ0dXJlID0gdHJ1ZTsNCj4gPiAt DQo+ID4gKwlpZiAoZW5hYmxlX2RpcnR5ICYmIHNtbXVfZG9tYWluLT5zdGFnZSA9PQ0KPiBBUk1f U01NVV9ET01BSU5fUzEpDQo+ID4gKwkJc21tdV9kb21haW4tPmRvbWFpbi5kaXJ0eV9vcHMgPQ0K PiAmYXJtX3NtbXVfZGlydHlfb3BzOw0KPiA+ICAJcmV0ID0gYXJtX3NtbXVfZG9tYWluX2FsbG9j X2lkKHNtbXUsIHNtbXVfZG9tYWluKTsNCj4gPiAgCWlmIChyZXQgPCAwKSB7DQo+ID4gIAkJZnJl ZV9pb19wZ3RhYmxlX29wcyhwZ3RibF9vcHMpOw0KPiA+IEBAIC0yODExLDcgKzI4MTUsNyBAQCBz dGF0aWMgaW50IGFybV9zbW11X2F0dGFjaF9kZXYoc3RydWN0DQo+IGlvbW11X2RvbWFpbiAqZG9t YWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gIAltdXRleF9sb2NrKCZzbW11X2RvbWFpbi0+ aW5pdF9tdXRleCk7DQo+ID4NCj4gPiAgCWlmICghc21tdV9kb21haW4tPnNtbXUpIHsNCj4gPiAt CQlyZXQgPSBhcm1fc21tdV9kb21haW5fZmluYWxpc2Uoc21tdV9kb21haW4sIHNtbXUpOw0KPiA+ ICsJCXJldCA9IGFybV9zbW11X2RvbWFpbl9maW5hbGlzZShzbW11X2RvbWFpbiwgc21tdSwNCj4g ZmFsc2UpOw0KPiA+ICAJfSBlbHNlIGlmIChzbW11X2RvbWFpbi0+c21tdSAhPSBzbW11KQ0KPiA+ ICAJCXJldCA9IC1FSU5WQUw7DQo+ID4NCj4gDQo+IA0KPiBJIHRoaW5rIHdlIGFyZSBtaXNzaW5n IHRoZSBkb21haW4gYXR0YWNoX2RldiBjaGVjayBmb3IgZGlydHkgdHJhY2tpbmcuDQo+IA0KPiBT b21ldGhpbmcgbGlrZToNCj4gDQo+IGlmIChkb21haW4tPmRpcnR5X29wcyAmJiAhYXJtX3NtbXVf ZGJtX2NhcGFibGUoc21tdSkpDQo+IAlyZXR1cm4gLUVJTlZBTDsNCj4gDQo+IEJ1dCB0aGF0IGhl bHBlciBpcyBvbmx5IGludHJvZHVjZWQgaW4gdGhlIGxhc3QgcGF0Y2gsIHNvIG1heWJlOg0KPiAN Cj4gaWYgKGRvbWFpbi0+ZGlydHlfb3BzICYmDQo+ICAgICAhZGV2aWNlX2lvbW11X2NhcGFibGUo ZGV2LCBJT01NVV9DQVBfRElSVFlfVFJBQ0tJTkcpKQ0KPiAJcmV0dXJuIC1FSU5WQUw7DQoNCk9r LiBCdXQgZG8gd2UgcmVhbGx5IG5lZWQgdG8gY2hlY2sgdGhpcyBpbiBhdHRhY2goKT8gQXMgZGly dHlfb3BzIGFyZSBhZGRlZCBvbmx5DQppZiBpdCBpcyByZXF1ZXN0ZWQgaW4gYWxsb2NfdXNlcigp IGFuZCB0aGVyZSB3ZSByZXR1cm4gZXJyIHdoZW4gaGFyZHdhcmUgZG9lc24ndCANCmhhdmUgdGhl IGNhcGFiaWxpdHkuICBTbyBub3Qgc3VyZSBob3cgdGhpcyBtYXR0ZXJzIGluIGF0dGFjaCgpIHBh dGguIE1heSBiZSBJIGFtIA0KbWlzc2luZyBzb21ldGhpbmcuDQoNClRoYW5rcywNClNoYW1lZXIN Cg0K 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 45FDAC48BF8 for ; Thu, 22 Feb 2024 11:31: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:MIME-Version:In-Reply-To:References: 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=DsYMbuNQFFnKwHEY5kMGmKh+bY6ssHAcpvaWc9Ot7cE=; b=dXC3RzcUNlAnZk gVgoo1qrYQ5UItvvnBrrWsBOvT5+zRPsFD38D+o6y0S43l2CdrMU5t2xLksPNfNqu5buyuYkyxX0Z xsft7R5aGABbylGoG18BWGAMkdSk2hS8YR0w6vwxpdhYDTnMcOSK1h907cuaoWvSAPrtg5uwuZ+l6 rgwkksdhrF76ViBWbwuzBqu3b/+UNXFmrRUwTHMGeFisd1yus1MFIep8FDgEeqeYLaAi6T+EoR8cW ZfnblYHchHtR2phloqu3LDGzp5C4hNDnadCihWDDbDuLYdNOE6VkTm/70yq0XbFtXW9+NfVmMjl8l BfffnR6WeeO5xGHfqcVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rd7Ia-00000004e6X-3Fdx; Thu, 22 Feb 2024 11:31:32 +0000 Received: from szxga06-in.huawei.com ([45.249.212.32]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rd7IX-00000004e4J-1Shl for linux-arm-kernel@lists.infradead.org; Thu, 22 Feb 2024 11:31:31 +0000 Received: from mail.maildlp.com (unknown [172.19.88.163]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4TgWD66hp6z1vv47; Thu, 22 Feb 2024 19:30:46 +0800 (CST) Received: from dggems704-chm.china.huawei.com (unknown [10.3.19.181]) by mail.maildlp.com (Postfix) with ESMTPS id 8AF6E18002F; Thu, 22 Feb 2024 19:31:21 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (7.191.163.240) by dggems704-chm.china.huawei.com (10.3.19.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 22 Feb 2024 19:31:20 +0800 Received: from lhrpeml500005.china.huawei.com ([7.191.163.240]) by lhrpeml500005.china.huawei.com ([7.191.163.240]) with mapi id 15.01.2507.035; Thu, 22 Feb 2024 11:31:18 +0000 From: Shameerali Kolothum Thodi To: Joao Martins CC: "joro@8bytes.org" , "jgg@nvidia.com" , "kevin.tian@intel.com" , "nicolinc@nvidia.com" , "iommu@lists.linux.dev" , "mshavit@google.com" , "robin.murphy@arm.com" , "will@kernel.org" , jiangkunkun , zhukeqian , Linuxarm , "linux-arm-kernel@lists.infradead.org" Subject: RE: [PATCH v2 3/4] iommu/arm-smmu-v3: Add support for dirty tracking in domain alloc Thread-Topic: [PATCH v2 3/4] iommu/arm-smmu-v3: Add support for dirty tracking in domain alloc Thread-Index: AQHaZXTSExgSw/uTxUa44V9Mknrnh7EWMsuAgAAGflA= Date: Thu, 22 Feb 2024 11:31:18 +0000 Message-ID: References: <20240222094923.33104-1-shameerali.kolothum.thodi@huawei.com> <20240222094923.33104-4-shameerali.kolothum.thodi@huawei.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.202.227.28] MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240222_033129_771357_5C12C2CA X-CRM114-Status: GOOD ( 29.77 ) 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="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org > -----Original Message----- > From: Joao Martins > Sent: Thursday, February 22, 2024 11:04 AM > To: Shameerali Kolothum Thodi > Cc: joro@8bytes.org; jgg@nvidia.com; kevin.tian@intel.com; > nicolinc@nvidia.com; iommu@lists.linux.dev; mshavit@google.com; > robin.murphy@arm.com; will@kernel.org; jiangkunkun > ; zhukeqian ; > Linuxarm ; linux-arm-kernel@lists.infradead.org > Subject: Re: [PATCH v2 3/4] iommu/arm-smmu-v3: Add support for dirty > tracking in domain alloc > > On 22/02/2024 09:49, Shameer Kolothum wrote: > > From: Joao Martins > > > > This provides all the infrastructure to enable dirty tracking if the > > hardware has the capability and domain alloc request for it. > > > > Please note, we still report no support for IOMMU_CAP_DIRTY_TRACKING > > as it will finally be enabled in a subsequent patch. > > > > Signed-off-by: Joao Martins > > Signed-off-by: Shameer Kolothum > > > --- > > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 95 > ++++++++++++++++----- > > include/linux/io-pgtable.h | 4 + > > 2 files changed, 77 insertions(+), 22 deletions(-) > > > > diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > > b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > > index bd30739e3588..058bbb0dbe2e 100644 > > --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > > +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > > @@ -43,6 +43,7 @@ MODULE_PARM_DESC(disable_msipolling, > > "Disable MSI-based polling for CMD_SYNC completion."); > > > > static struct iommu_ops arm_smmu_ops; > > +static struct iommu_dirty_ops arm_smmu_dirty_ops; > > > > enum arm_smmu_msi_index { > > EVTQ_MSI_INDEX, > > @@ -86,7 +87,8 @@ static struct arm_smmu_option_prop > > arm_smmu_options[] = { > > > > static void arm_smmu_rmr_install_bypass_ste(struct arm_smmu_device > > *smmu); static int arm_smmu_domain_finalise(struct arm_smmu_domain > *smmu_domain, > > - struct arm_smmu_device *smmu); > > + struct arm_smmu_device *smmu, > > + bool enable_dirty); > > static int arm_smmu_alloc_cd_tables(struct arm_smmu_master *master); > > static void arm_smmu_tlb_inv_all_s2(struct arm_smmu_domain > > *smmu_domain); > > > > @@ -2378,7 +2380,7 @@ static struct iommu_domain > *arm_smmu_domain_alloc_paging(struct device *dev) > > struct arm_smmu_master *master = > dev_iommu_priv_get(dev); > > int ret; > > > > - ret = arm_smmu_domain_finalise(smmu_domain, master- > >smmu); > > + ret = arm_smmu_domain_finalise(smmu_domain, master- > >smmu, false); > > if (ret) { > > kfree(smmu_domain); > > return ERR_PTR(ret); > > @@ -2445,10 +2447,11 @@ static void arm_smmu_domain_free(struct > > iommu_domain *domain) } > > > > static int arm_smmu_domain_finalise(struct arm_smmu_domain > *smmu_domain, > > - struct arm_smmu_device *smmu) > > + struct arm_smmu_device *smmu, > > + bool enable_dirty) > > { > > int ret; > > - unsigned long ias, oas; > > + unsigned long ias; > > enum io_pgtable_fmt fmt; > > struct io_pgtable_cfg pgtbl_cfg; > > struct io_pgtable_ops *pgtbl_ops; > > @@ -2459,31 +2462,31 @@ static int arm_smmu_domain_finalise(struct > arm_smmu_domain *smmu_domain, > > if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S2)) > > smmu_domain->stage = ARM_SMMU_DOMAIN_S1; > > > > + pgtbl_cfg = (struct io_pgtable_cfg) { > > + .pgsize_bitmap = smmu->pgsize_bitmap, > > + .coherent_walk = smmu->features & > ARM_SMMU_FEAT_COHERENCY, > > + .tlb = &arm_smmu_flush_ops, > > + .iommu_dev = smmu->dev, > > + }; > > + > > switch (smmu_domain->stage) { > > case ARM_SMMU_DOMAIN_S1: > > ias = (smmu->features & ARM_SMMU_FEAT_VAX) ? 52 : 48; > > - ias = min_t(unsigned long, ias, VA_BITS); > > - oas = smmu->ias; > > + pgtbl_cfg.ias = min_t(unsigned long, ias, VA_BITS); > > + pgtbl_cfg.oas = smmu->ias; > > + if (enable_dirty) > > + pgtbl_cfg.quirks |= IO_PGTABLE_QUIRK_ARM_HD; > > fmt = ARM_64_LPAE_S1; > > break; > > case ARM_SMMU_DOMAIN_S2: > > - ias = smmu->ias; > > - oas = smmu->oas; > > + pgtbl_cfg.ias = smmu->ias; > > + pgtbl_cfg.oas = smmu->oas; > > fmt = ARM_64_LPAE_S2; > > break; > > default: > > return -EINVAL; > > } > > > > - pgtbl_cfg = (struct io_pgtable_cfg) { > > - .pgsize_bitmap = smmu->pgsize_bitmap, > > - .ias = ias, > > - .oas = oas, > > - .coherent_walk = smmu->features & > ARM_SMMU_FEAT_COHERENCY, > > - .tlb = &arm_smmu_flush_ops, > > - .iommu_dev = smmu->dev, > > - }; > > - > > pgtbl_ops = alloc_io_pgtable_ops(fmt, &pgtbl_cfg, smmu_domain); > > if (!pgtbl_ops) > > return -ENOMEM; > > @@ -2491,7 +2494,8 @@ static int arm_smmu_domain_finalise(struct > arm_smmu_domain *smmu_domain, > > smmu_domain->domain.pgsize_bitmap = pgtbl_cfg.pgsize_bitmap; > > smmu_domain->domain.geometry.aperture_end = (1UL << > pgtbl_cfg.ias) - 1; > > smmu_domain->domain.geometry.force_aperture = true; > > - > > + if (enable_dirty && smmu_domain->stage == > ARM_SMMU_DOMAIN_S1) > > + smmu_domain->domain.dirty_ops = > &arm_smmu_dirty_ops; > > ret = arm_smmu_domain_alloc_id(smmu, smmu_domain); > > if (ret < 0) { > > free_io_pgtable_ops(pgtbl_ops); > > @@ -2811,7 +2815,7 @@ static int arm_smmu_attach_dev(struct > iommu_domain *domain, struct device *dev) > > mutex_lock(&smmu_domain->init_mutex); > > > > if (!smmu_domain->smmu) { > > - ret = arm_smmu_domain_finalise(smmu_domain, smmu); > > + ret = arm_smmu_domain_finalise(smmu_domain, smmu, > false); > > } else if (smmu_domain->smmu != smmu) > > ret = -EINVAL; > > > > > I think we are missing the domain attach_dev check for dirty tracking. > > Something like: > > if (domain->dirty_ops && !arm_smmu_dbm_capable(smmu)) > return -EINVAL; > > But that helper is only introduced in the last patch, so maybe: > > if (domain->dirty_ops && > !device_iommu_capable(dev, IOMMU_CAP_DIRTY_TRACKING)) > return -EINVAL; Ok. But do we really need to check this in attach()? As dirty_ops are added only if it is requested in alloc_user() and there we return err when hardware doesn't have the capability. So not sure how this matters in attach() path. May be I am missing something. Thanks, Shameer _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel