Re: [f2fs-dev] [PATCH] f2fs: quiesce background threads during system suspend using PM notifier

Chao Yu via Linux-f2fs-devel <[email protected]> Tue, 4 Aug 2026 19:24:39 +0800
Newsgroups net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
T24gOC80LzI2IDAyOjQyLCBEYWVobyBKZW9uZyB3cm90ZToKPiBPbiBNb24sIEF1ZyAzLCAyMDI2
IGF0IDI6MDjigK9BTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+IHdyb3RlOgo+Pgo+PiBPbiA3
LzMwLzI2IDAzOjIzLCBEYWVobyBKZW9uZyB3cm90ZToKPj4+IEZyb206IERhZWhvIEplb25nIDxk
YWVob2plb25nQGdvb2dsZS5jb20+Cj4+Pgo+Pj4gRHVyaW5nIHN5c3RlbSBzdXNwZW5kLCBhIHJh
Y2UgY29uZGl0aW9uIGNhbiBjYXVzZSBmMmZzX2djIGFuZCBmMmZzX2Rpc2NhcmQKPj4+IHRocmVh
ZHMgdG8gY2FsbCBzdWJtaXRfYmlvKCkgd2hpbGUgdGhlIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNl
IChlLmcuLCBVRlMpCj4+PiBpcyBpbiBSdW50aW1lIFBNIHN1c3BlbmQuIEJlY2F1c2UgUnVudGlt
ZSBQTSB3b3JrZXIgdGhyZWFkcyBhcmUgYWxyZWFkeQo+Pj4gZnJvemVuIGR1cmluZyB0YXNrIGZy
ZWV6aW5nLCB0aGUgdGhyZWFkcyBiZWNvbWUgdHJhcHBlZCBpbgo+Pj4gX19iaW9fcXVldWVfZW50
ZXIoKSB3YWl0aW5nIG9uIG1xX2ZyZWV6ZV93cSwgbGVhZGluZyB0byBhIFBNIGZyZWV6ZXIKPj4+
IHRpbWVvdXQuCj4+Pgo+Pj4gVG8gcHJldmVudCB0aGlzIGRlYWRsb2NrLCByZWdpc3RlciBhIFBN
IG5vdGlmaWVyIHRvIHNldCBTQklfSVNfU1VTUEVORElORwo+Pj4gZHVyaW5nIFBNX1NVU1BFTkRf
UFJFUEFSRS4gQmFja2dyb3VuZCBHQyBhbmQgZGlzY2FyZCB0aHJlYWRzIGNoZWNrIHRoaXMKPj4K
Pj4gU2hvdWxkIHdlIGNvdmVyIGlzc3VlX2ZsdXNoX3RocmVhZCBhbmQgaXNzdWVfY2hlY2twb2lu
dF90aHJlYWQgYXMgd2VsbCBpbgo+PiB3aGVyZSB3ZSB3aWxsIHN1Ym1pdCBiaW8/Cj4gCj4gVW5s
aWtlIEdDIGFuZCBkaXNjYXJkLCB3aGljaCBhcmUgYmFja2dyb3VuZCBvcHRpbWl6YXRpb24gdGFz
a3MgYW5kIGNhbgo+IGJlIHNhZmVseSBwYXVzZWQsIG90aGVyIG9wZXJhdGlvbnMgbGlrZSBjaGVj
a3BvaW50IGFyZSBjcml0aWNhbCBmb3IKPiBkYXRhIGNvbnNpc3RlbmN5Lgo+IEl0IGlzIGJldHRl
ciBub3QgdG8gaW50ZXJydXB0IHRoZW0gaW4gdGhlIG1pZGRsZSBvZiB0aGVpciBwcm9ncmVzcy4g
SWYKPiB0aGV5IGFyZSBydW5uaW5nIGFuZCB0YWtlIHRvbyBsb25nLCBpdCBpcyBzYWZlciB0byBq
dXN0IGxldCB0aGUgc3lzdGVtCj4gc3VzcGVuZCB0ZW1wb3JhcmlseSBmYWlsIHJhdGhlciB0aGFu
IGZvcmNpYmx5IGJyZWFraW5nIHRoZWlyCj4gb3BlcmF0aW9ucy4KClNvIHdoeSBmb3JlZ3JvdW5k
IHRocmVhZCBsaWtlIGNrcHQgdGhyZWFkIG9yIGZsdXNoIHRocmVhZCB3b24ndCBzdWZmZXIgdGhl
CnNhbWUgaXNzdWUgbGlrZSBnYyBvciBkaXNjYXJkIHRocmVhZD8gYmVjYXVzZSBmb3JlZ3JvdW5k
IHRocmVhZCB3aWxsIHByZXZlbnQKVUZTIGZyb20gcnVubmluZyBpbnRvIHN1c3BlbmQgc3RhdGU/
IEkgbWF5IG1pc3NlZCBzb21ldGhpbmcgaGVyZS4gOikKCj4gCj4+Cj4+PiBmbGFnIGFuZCBpbW1l
ZGlhdGVseSBzdG9wIGlzc3VpbmcgbmV3IGJpb3MsIGFsbG93aW5nIHRoZW0gdG8gZW50ZXIgYQo+
Pj4gZnJlZXphYmxlIHNsZWVwIHN0YXRlIGNsZWFubHkgYmVmb3JlIHByb2Nlc3MgZnJlZXppbmcg
YmVnaW5zLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IERhZWhvIEplb25nIDxkYWVob2plb25nQGdv
b2dsZS5jb20+Cj4+PiAtLS0KPj4+ICAgZnMvZjJmcy9mMmZzLmggICAgfCAgMyArKysKPj4+ICAg
ZnMvZjJmcy9nYy5jICAgICAgfCAxMyArKysrKysrKy0tLS0tCj4+PiAgIGZzL2YyZnMvc2VnbWVu
dC5jIHwgMTMgKysrKysrKysrLS0tLQo+Pj4gICBmcy9mMmZzL3N1cGVyLmMgICB8IDI1ICsrKysr
KysrKysrKysrKysrKysrKysrKysKPj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25z
KCspLCA5IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBi
L2ZzL2YyZnMvZjJmcy5oCj4+PiBpbmRleCBmMjRlMzBiYjVjM2QuLmM0NmJmNGRmOTQxMiAxMDA2
NDQKPj4+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4+PiArKysgYi9mcy9mMmZzL2YyZnMuaAo+Pj4g
QEAgLTI1LDYgKzI1LDcgQEAKPj4+ICAgI2luY2x1ZGUgPGxpbnV4L3F1b3Rhb3BzLmg+Cj4+PiAg
ICNpbmNsdWRlIDxsaW51eC9wYXJ0X3N0YXQuaD4KPj4+ICAgI2luY2x1ZGUgPGxpbnV4L3J3X2hp
bnQuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvc3VzcGVuZC5oPgo+Pj4KPj4+ICAgI2luY2x1ZGUg
PGxpbnV4L2ZzY3J5cHQuaD4KPj4+ICAgI2luY2x1ZGUgPGxpbnV4L2ZzdmVyaXR5Lmg+Cj4+PiBA
QCAtMTQ5NCw2ICsxNDk1LDcgQEAgZW51bSB7Cj4+PiAgICAgICBTQklfSVNfRlJFRVpJTkcsICAg
ICAgICAgICAgICAgICAgICAgICAgLyogZnJlZXplZnMgaXMgaW4gcHJvY2VzcyAqLwo+Pj4gICAg
ICAgU0JJX0lTX1dSSVRBQkxFLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlbW92ZSBybyBt
b3VudG9wdGlvbiB0cmFuc2llbnRseSAqLwo+Pj4gICAgICAgU0JJX0VOQUJMRV9DSEVDS1BPSU5U
LCAgICAgICAgICAgICAgICAgIC8qIGluZGljYXRlIGl0J3MgZHVyaW5nIGYyZnNfZW5hYmxlX2No
ZWNrcG9pbnQoKSAqLwo+Pj4gKyAgICAgU0JJX0lTX1NVU1BFTkRJTkcsICAgICAgICAgICAgICAg
ICAgICAgIC8qIHN5c3RlbSBzdXNwZW5kIGlzIGluIHByb2dyZXNzICovCj4+PiAgICAgICBNQVhf
U0JJX0ZMQUcsCj4+PiAgIH07Cj4+Pgo+Pj4gQEAgLTE3NTcsNiArMTc1OSw3IEBAIHN0cnVjdCBm
MmZzX3NiX2luZm8gewo+Pj4gICAgICAgc3RydWN0IGYyZnNfcndzZW0gc2JfbG9jazsgICAgICAg
ICAgICAgIC8qIGxvY2sgZm9yIHJhdyBzdXBlciBibG9jayAqLwo+Pj4gICAgICAgaW50IHZhbGlk
X3N1cGVyX2Jsb2NrOyAgICAgICAgICAgICAgICAgIC8qIHZhbGlkIHN1cGVyIGJsb2NrIG5vICov
Cj4+PiAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZzsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBmbGFncyBmb3Igc2JpICovCj4+PiArICAgICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgcG1f
bmI7ICAgICAgICAgICAgLyogZm9yIFBNIG5vdGlmaWVyICovCj4+PiAgICAgICBzdHJ1Y3QgbXV0
ZXggd3JpdGVwYWdlczsgICAgICAgICAgICAgICAgLyogbXV0ZXggZm9yIHdyaXRlcGFnZXMoKSAq
Lwo+Pj4KPj4+ICAgI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4+PiBkaWZmIC0tZ2l0IGEv
ZnMvZjJmcy9nYy5jIGIvZnMvZjJmcy9nYy5jCj4+PiBpbmRleCA5M2JjYjM1YTViNWQuLjg2YjJi
Mjk0MDJhNSAxMDA2NDQKPj4+IC0tLSBhL2ZzL2YyZnMvZ2MuYwo+Pj4gKysrIGIvZnMvZjJmcy9n
Yy5jCj4+PiBAQCAtNzEsNyArNzEsOCBAQCBzdGF0aWMgaW50IGdjX3RocmVhZF9mdW5jKHZvaWQg
KmRhdGEpCj4+PiAgICAgICAgICAgICAgIGlmIChrdGhyZWFkX3Nob3VsZF9zdG9wKCkpCj4+PiAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pgo+Pj4gLSAgICAgICAgICAgICBpZiAoc2Jp
LT5zYi0+c193cml0ZXJzLmZyb3plbiA+PSBTQl9GUkVFWkVfV1JJVEUpIHsKPj4+ICsgICAgICAg
ICAgICAgaWYgKHNiaS0+c2ItPnNfd3JpdGVycy5mcm96ZW4gPj0gU0JfRlJFRVpFX1dSSVRFIHx8
Cj4+PiArICAgICAgICAgICAgICAgICAgICAgaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NV
U1BFTkRJTkcpKSB7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2Vfc2xlZXBfdGlt
ZShnY190aCwgJndhaXRfbXMpOwo+Pj4gICAgICAgICAgICAgICAgICAgICAgIHN0YXRfb3RoZXJf
c2tpcF9iZ2djX2NvdW50KHNiaSk7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Cj4+PiBAQCAtMTA2NCw4ICsxMDY1LDkgQEAgc3RhdGljIGludCBnY19ub2RlX3NlZ21lbnQoc3Ry
dWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gICAgICAgICAgICAgICBzdHJ1Y3Qgbm9kZV9pbmZv
IG5pOwo+Pj4gICAgICAgICAgICAgICBpbnQgZXJyOwo+Pj4KPj4+IC0gICAgICAgICAgICAgLyog
c3RvcCBCR19HQyBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIGZyZWUgc2VjdGlvbnMuICovCj4+PiAt
ICAgICAgICAgICAgIGlmIChnY190eXBlID09IEJHX0dDICYmIGhhc19ub3RfZW5vdWdoX2ZyZWVf
c2VjcyhzYmksIDAsIDApKQo+Pj4gKyAgICAgICAgICAgICAvKiBzdG9wIEJHX0dDIGlmIHRoZXJl
IGlzIG5vdCBlbm91Z2ggZnJlZSBzZWN0aW9ucyBvciBzdXNwZW5kaW5nLiAqLwo+Pj4gKyAgICAg
ICAgICAgICBpZiAoZ2NfdHlwZSA9PSBCR19HQyAmJiAoaGFzX25vdF9lbm91Z2hfZnJlZV9zZWNz
KHNiaSwgMCwgMCkgfHwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcpKSkKPj4+ICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc3VibWl0dGVkOwo+Pj4KPj4+ICAgICAgICAgICAgICAgaWYgKGNo
ZWNrX3ZhbGlkX21hcChzYmksIHNlZ25vLCBvZmYpID09IDApCj4+PiBAQCAtMTYxMSw3ICsxNjEz
LDggQEAgc3RhdGljIGludCBnY19kYXRhX3NlZ21lbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp
LCBzdHJ1Y3QgZjJmc19zdW1tYXJ5ICpzdW0sCj4+PiAgICAgICAgICAgICAgICAqIE9yLCBzdG9w
IEdDIGlmIHRoZSBzZWdtZW50IGJlY29tZXMgZnVsbHkgdmFsaWQgY2F1c2VkIGJ5Cj4+PiAgICAg
ICAgICAgICAgICAqIHJhY2UgY29uZGl0aW9uIGFsb25nIHdpdGggU1NSIGJsb2NrIGFsbG9jYXRp
b24uCj4+PiAgICAgICAgICAgICAgICAqLwo+Pj4gLSAgICAgICAgICAgICBpZiAoKGdjX3R5cGUg
PT0gQkdfR0MgJiYgaGFzX25vdF9lbm91Z2hfZnJlZV9zZWNzKHNiaSwgMCwgMCkpIHx8Cj4+PiAr
ICAgICAgICAgICAgIGlmICgoZ2NfdHlwZSA9PSBCR19HQyAmJiAoaGFzX25vdF9lbm91Z2hfZnJl
ZV9zZWNzKHNiaSwgMCwgMCkgfHwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcpKSkgfHwKPj4+ICAg
ICAgICAgICAgICAgICAgICAgICAoIWZvcmNlX21pZ3JhdGUgJiYgZ2V0X3ZhbGlkX2Jsb2Nrcyhz
YmksIHNlZ25vLCB0cnVlKSA9PQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0FQX0JMS1NfUEVSX1NFQyhzYmkpKSkKPj4+ICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc3VibWl0dGVkOwo+Pj4gQEAgLTIwMTUsNyArMjAxOCw3IEBA
IGludCBmMmZzX2djKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGYyZnNfZ2NfY29u
dHJvbCAqZ2NfY29udHJvbCkKPj4+ICAgICAgICAgICAgICAgZ290byBzdG9wOwo+Pj4gICAgICAg
fQo+Pj4gICByZXRyeToKPj4+IC0gICAgIGlmICh1bmxpa2VseShmcmVlemluZyhjdXJyZW50KSkp
IHsKPj4KPj4gU2hvdWxkbid0IHdlIGtlZXAgb3JpZ2luYWwgZnJlZXppbmcgbG9naWM/IGluIGNh
c2UgZmlsZXN5c3RlbSBhcmUgZnJvemVuCj4+IHdoZW4gbG93IGRldmljZSBzbmFwc2hvdCBpcyB0
cmlnZ2VyZWQ/Cj4gCj4gU2luY2UgdGhlIHJ1bnRpbWUgUE0gc3VzcGVuZC9yZXN1bWUgd29ya2Vy
cyBhcmUgb25seSBmcm96ZW4gZHVyaW5nCj4gc3lzdGVtLXdpZGUgUE0gdHJhbnNpdGlvbnMgKHN1
c3BlbmQvaGliZXJuYXRpb24pLCB0aGUgUE0gbm90aWZpZXIKPiBhcHByb2FjaCB3aXRoIFNCSV9J
U19TVVNQRU5ESU5HIHN1ZmZpY2llbnRseSBwcmV2ZW50cyB0aGUgZGVhZGxvY2suCgpXaGF0IEkg
bWVhbiBpczoKCmlmIChpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfSVNfU1VTUEVORElORykgfHwg
dW5saWtlbHkoZnJlZXppbmcoY3VycmVudCkpKSB7CgpvdGhlcndpc2UsIGdjIHRocmVhZCBvciBk
aXNjYXJkIHRocmVhZCB3b24ndCBkZXRlY3QgZnJlZXplIHN0YXRlLCBhbmQgd2lsbApjb250aW51
ZSB0byB0cmlnZ2VyIElPIGluIGJhY2tncm91bmQgZXZlbiB0aGVyZSBpcyBhIHN5c3RlbSBmcmVl
emUgcmVxdWVzdApmcm9tIGRldmljZSBzbmFwc2hvdCBvciBjZ3JvdXAgZnJlZXppbmcsIHJpZ2h0
PwoKVGhhbmtzLAoKPiAKPiBUaGFua3MsCj4gCj4+Cj4+PiArICAgICBpZiAoaXNfc2JpX2ZsYWdf
c2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcpKSB7Cj4+PiAgICAgICAgICAgICAgIHJldCA9IDA7
Cj4+PiAgICAgICAgICAgICAgIGdvdG8gc3RvcDsKPj4+ICAgICAgIH0KPj4+IGRpZmYgLS1naXQg
YS9mcy9mMmZzL3NlZ21lbnQuYyBiL2ZzL2YyZnMvc2VnbWVudC5jCj4+PiBpbmRleCBkNzBkYzVl
ZjNkZTQuLmUyNzE5Nzk1MzM1NiAxMDA2NDQKPj4+IC0tLSBhL2ZzL2YyZnMvc2VnbWVudC5jCj4+
PiArKysgYi9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4gQEAgLTEzMDAsNyArMTMwMCw4IEBAIHN0YXRp
YyBpbnQgX19zdWJtaXRfZGlzY2FyZF9jbWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4g
ICAgICAgaWYgKGRjLT5zdGF0ZSAhPSBEX1BSRVApCj4+PiAgICAgICAgICAgICAgIHJldHVybiAw
Owo+Pj4KPj4+IC0gICAgIGlmIChpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfTkVFRF9GU0NLKSkK
Pj4+ICsgICAgIGlmIChpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfTkVFRF9GU0NLKSB8fAo+Pj4g
KyAgICAgICAgICAgICBpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfSVNfU1VTUEVORElORykpCj4+
PiAgICAgICAgICAgICAgIHJldHVybiAwOwo+Pj4KPj4+ICAgI2lmZGVmIENPTkZJR19CTEtfREVW
X1pPTkVECj4+PiBAQCAtMTM0MSw2ICsxMzQyLDkgQEAgc3RhdGljIGludCBfX3N1Ym1pdF9kaXNj
YXJkX2NtZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+PiAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7Cj4+PiAgICAgICAgICAgICAgIGJvb2wgbGFzdCA9IHRydWU7Cj4+Pgo+
Pj4gKyAgICAgICAgICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJ
TkcpKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4gKwo+Pj4gICAgICAgICAg
ICAgICBpZiAobGVuID4gbWF4X2Rpc2NhcmRfYmxvY2tzKSB7Cj4+PiAgICAgICAgICAgICAgICAg
ICAgICAgbGVuID0gbWF4X2Rpc2NhcmRfYmxvY2tzOwo+Pj4gICAgICAgICAgICAgICAgICAgICAg
IGxhc3QgPSBmYWxzZTsKPj4+IEBAIC0xNjE1LDcgKzE2MTksNyBAQCBzdGF0aWMgdm9pZCBfX2lz
c3VlX2Rpc2NhcmRfY21kX29yZGVybHkoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gICAg
ICAgICAgICAgICBpZiAoZGMtPnN0YXRlICE9IERfUFJFUCkKPj4+ICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIG5leHQ7Cj4+Pgo+Pj4gLSAgICAgICAgICAgICBpZiAoKmlzc3VlZCA+IDAgJiYg
dW5saWtlbHkoZnJlZXppbmcoY3VycmVudCkpKQo+Pgo+PiBEaXR0bywKPj4KPj4+ICsgICAgICAg
ICAgICAgaWYgKGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9JU19TVVNQRU5ESU5HKSkKPj4+ICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4+Cj4+PiAgICAgICAgICAgICAgIGlmIChkcG9s
aWN5LT5pb19hd2FyZSAmJiAhaXNfaWRsZShzYmksIERJU0NBUkRfVElNRSkpIHsKPj4+IEBAIC0x
Njg4LDcgKzE2OTIsNyBAQCBzdGF0aWMgaW50IF9faXNzdWVfZGlzY2FyZF9jbWQoc3RydWN0IGYy
ZnNfc2JfaW5mbyAqc2JpLAo+Pj4gICAgICAgICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh
ZmUoZGMsIHRtcCwgcGVuZF9saXN0LCBsaXN0KSB7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAg
ZjJmc19idWdfb24oc2JpLCBkYy0+c3RhdGUgIT0gRF9QUkVQKTsKPj4+Cj4+PiAtICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzc3VlZCA+IDAgJiYgdW5saWtlbHkoZnJlZXppbmcoY3VycmVudCkp
KSB7Cj4+Cj4+IERpdHRvLAo+Pgo+PiBUaGFua3MsCj4+Cj4+PiArICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9JU19TVVNQRU5ESU5HKSkgewo+Pj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VzcGVuZGVkID0gdHJ1ZTsKPj4+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4gICAgICAgICAgICAgICAgICAgICAgIH0K
Pj4+IEBAIC0xOTU1LDcgKzE5NTksOCBAQCBzdGF0aWMgaW50IGlzc3VlX2Rpc2NhcmRfdGhyZWFk
KHZvaWQgKmRhdGEpCj4+PiAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+PiAgICAg
ICAgICAgICAgIGlmIChrdGhyZWFkX3Nob3VsZF9zdG9wKCkpCj4+PiAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7Cj4+PiAtICAgICAgICAgICAgIGlmIChpc19zYmlfZmxhZ19zZXQoc2Jp
LCBTQklfTkVFRF9GU0NLKSB8fAo+Pj4gKyAgICAgICAgICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0
KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcpIHx8Cj4+PiArICAgICAgICAgICAgICAgICAgICAgaXNf
c2JpX2ZsYWdfc2V0KHNiaSwgU0JJX05FRURfRlNDSykgfHwKPj4+ICAgICAgICAgICAgICAgICAg
ICAgICAhYXRvbWljX3JlYWQoJmRjYy0+ZGlzY2FyZF9jbWRfY250KSkgewo+Pj4gICAgICAgICAg
ICAgICAgICAgICAgIHdhaXRfbXMgPSBkcG9saWN5Lm1heF9pbnRlcnZhbDsKPj4+ICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3N1cGVyLmMg
Yi9mcy9mMmZzL3N1cGVyLmMKPj4+IGluZGV4IGQ1ZGM4M2U2MTNlMi4uNTM2ZjNmZmU1MzU0IDEw
MDY0NAo+Pj4gLS0tIGEvZnMvZjJmcy9zdXBlci5jCj4+PiArKysgYi9mcy9mMmZzL3N1cGVyLmMK
Pj4+IEBAIC0xOTc5LDYgKzE5NzksMjYgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9kZXZpY2VfbGlz
dChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+PiAgICAgICBrdmZyZWUoc2JpLT5kZXZzKTsK
Pj4+ICAgfQo+Pj4KPj4+ICtzdGF0aWMgaW50IGYyZnNfcG1fbm90aWZpZXIoc3RydWN0IG5vdGlm
aWVyX2Jsb2NrICpuYiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBhY3Rpb24sIHZvaWQgKnB0cikKPj4+ICt7Cj4+PiArICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZv
ICpzYmkgPSBjb250YWluZXJfb2YobmIsIHN0cnVjdCBmMmZzX3NiX2luZm8sIHBtX25iKTsKPj4+
ICsKPj4+ICsgICAgIHN3aXRjaCAoYWN0aW9uKSB7Cj4+PiArICAgICBjYXNlIFBNX0hJQkVSTkFU
SU9OX1BSRVBBUkU6Cj4+PiArICAgICBjYXNlIFBNX1NVU1BFTkRfUFJFUEFSRToKPj4+ICsgICAg
IGNhc2UgUE1fUkVTVE9SRV9QUkVQQVJFOgo+Pj4gKyAgICAgICAgICAgICBzZXRfc2JpX2ZsYWco
c2JpLCBTQklfSVNfU1VTUEVORElORyk7Cj4+PiArICAgICAgICAgICAgIGJyZWFrOwo+Pj4gKyAg
ICAgY2FzZSBQTV9QT1NUX1NVU1BFTkQ6Cj4+PiArICAgICBjYXNlIFBNX1BPU1RfSElCRVJOQVRJ
T046Cj4+PiArICAgICBjYXNlIFBNX1BPU1RfUkVTVE9SRToKPj4+ICsgICAgICAgICAgICAgY2xl
YXJfc2JpX2ZsYWcoc2JpLCBTQklfSVNfU1VTUEVORElORyk7Cj4+PiArICAgICAgICAgICAgIGJy
ZWFrOwo+Pj4gKyAgICAgfQo+Pj4gKyAgICAgcmV0dXJuIE5PVElGWV9PSzsKPj4+ICt9Cj4+PiAr
Cj4+PiAgIHN0YXRpYyB2b2lkIGYyZnNfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Ip
Cj4+PiAgIHsKPj4+ICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfU0Ioc2Ip
Owo+Pj4gQEAgLTE5ODYsNiArMjAwNiw4IEBAIHN0YXRpYyB2b2lkIGYyZnNfcHV0X3N1cGVyKHN0
cnVjdCBzdXBlcl9ibG9jayAqc2IpCj4+PiAgICAgICBpbnQgZXJyID0gMDsKPj4+ICAgICAgIGJv
b2wgZG9uZTsKPj4+Cj4+PiArICAgICB1bnJlZ2lzdGVyX3BtX25vdGlmaWVyKCZzYmktPnBtX25i
KTsKPj4+ICsKPj4+ICAgICAgIC8qIHVucmVnaXN0ZXIgcHJvY2ZzL3N5c2ZzIGVudHJpZXMgaW4g
YWR2YW5jZSB0byBhdm9pZCByYWNlIGNhc2UgKi8KPj4+ICAgICAgIGYyZnNfdW5yZWdpc3Rlcl9z
eXNmcyhzYmkpOwo+Pj4KPj4+IEBAIC01NDcyLDYgKzU0OTQsOSBAQCBzdGF0aWMgaW50IGYyZnNf
ZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMp
Cj4+Pgo+Pj4gICAgICAgZjJmc19yZXN0b3JlX2RldmljZV9hbGlhcyhzYmkpOwo+Pj4KPj4+ICsg
ICAgIHNiaS0+cG1fbmIubm90aWZpZXJfY2FsbCA9IGYyZnNfcG1fbm90aWZpZXI7Cj4+PiArICAg
ICByZWdpc3Rlcl9wbV9ub3RpZmllcigmc2JpLT5wbV9uYik7Cj4+PiArCj4+PiAgICAgICBzYmkt
PnVtb3VudF9sb2NrX2hvbGRlciA9IE5VTEw7Cj4+PiAgICAgICByZXR1cm4gMDsKPj4+Cj4+CgoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYy
ZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2Uu
bmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYy
ZnMtZGV2ZWwK