<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>238166</bug_id>
          
          <creation_ts>2022-03-21 16:35:53 -0700</creation_ts>
          <short_desc>[WebGPU] Limit the number of MTLCommandQueue objects created</short_desc>
          <delta_ts>2022-03-24 16:47:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>238164</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>kkinnunen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853405</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-21 16:35:53 -0700</bug_when>
    <thetext>[WebGPU] Limit the number of MTLCommandQueue objects created</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853413</commentid>
    <comment_count>1</comment_count>
      <attachid>455300</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-21 16:45:41 -0700</bug_when>
    <thetext>Created attachment 455300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853613</commentid>
    <comment_count>2</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-22 05:07:17 -0700</bug_when>
    <thetext>I don&apos;t know enough about the api..

Is this a standard technique? I cannot immediately see anything else than limiting the number of devices, which probably is not an option if the test suite creates thousands of devices?

Can there be ordering problems if flush on other device induces a flush on the commands of the other device?

// device A tasks
command1
command2
signalSemaphore(s1)

// device B tasks
waitForSemaphore(s1)
commandZZ

// A non-linear programmer writes them as
a.command1
a.command2
b.waitForSemaphore(s1)
b.commandZZ
b.flush
a.signalSemaphore(s1)
a.flush


// The shared command buffer implementation would contain
command1
command2
waitForSemaphore(s1)  // deadlock
commandZZ
signalSemaphore(s1)



// where individual command buffers implementation would contain

// command buffer 1
command1
command2
signalSemaphore(s1)

// command buffer 2
waitForSemaphore(s1) // No deadlock?
commandZZ</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853831</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-22 12:15:02 -0700</bug_when>
    <thetext>You’re right that deadlocks would naturally be a problem. However, we have 2 mitigating factors:

1. We don’t have fences / semaphores / barriers in the API yet. In fact, we don’t even have multiple queues yet (for a single device) with which to use semaphores. See https://github.com/gpuweb/gpuweb/pull/1217
2. Even when we did, we solved this deadlock problem by validating that:
      A) Signal values only ever increased over time
      B) A command to signal the value being waited on has already been submitted

(This is only possible because we don’t have multi-threading yet, so a single thread sees every signal/wait command produced by the app.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854488</commentid>
    <comment_count>4</comment_count>
      <attachid>455300</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-23 16:34:31 -0700</bug_when>
    <thetext>Comment on attachment 455300
Patch

I should see if the test suite calls GPUDevice.destroy().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854935</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-24 16:47:39 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #4)
&gt; Comment on attachment 455300 [details]
&gt; Patch
&gt; 
&gt; I should see if the test suite calls GPUDevice.destroy().

It totally does.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455300</attachid>
            <date>2022-03-21 16:45:41 -0700</date>
            <delta_ts>2022-03-23 16:34:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238166-20220321164540.patch</filename>
            <type>text/plain</type>
            <size>13904</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IGZhMWRiMGYyMDRhYWJmNmEx
NDlhYzlhOTBjZTYzZTRmOTVhYzAyMjEuLmJkNzlhMzQ0ODk3ZDJiMzY2YzY3YjE3ZWI1MGZlOGVk
ZGUzOTg4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDMtMjEgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBMaW1p
dCB0aGUgbnVtYmVyIG9mIE1UTENvbW1hbmRRdWV1ZSBvYmplY3RzIGNyZWF0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE2NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdQVURldmljZXMgZWFjaCBy
ZXRhaW4gYSBNVExEZXZpY2UsIGFuZCBHUFVRdWV1ZXMgZWFjaCBvd24gYSBNVExDb21tYW5kUXVl
dWUuCisgICAgICAgIEJlY2F1c2UgTVRMRGV2aWNlcyBhcmUgcHJvY2Vzcy1nbG9iYWwsIGEgc2lu
Z2xlIE1UTERldmljZSBpcyBzaGFyZWQgYnkgbXVsdGlwbGUKKyAgICAgICAgR1BVRGV2aWNlcy4g
RXZlcnkgdGltZSB3ZSBjcmVhdGVkIGEgR1BVRGV2aWNlLCB3ZSBhbHNvIGNyZWF0ZWQgaXRzIGRl
ZmF1bHQKKyAgICAgICAgR1BVUXVldWUsIHdoaWNoIG1lYW5zIHRoZSBudW1iZXIgb2YgTVRMQ29t
bWFuZFF1ZXVlcyB3YXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZgorICAgICAgICBHUFVEZXZpY2Vz
IHRoYXQgc2NyaXB0IGNyZWF0ZWQgKGFuZCBzY3JpcHQgY2FuIGNyZWF0ZSBhbnkgbnVtYmVyIG9m
IHRoZW0pLgorCisgICAgICAgIEhvd2V2ZXIsIHRoZXJlJ3MgYSBsaW1pdCBvbiB0aGUgbnVtYmVy
IG9mIE1UTENvbW1hbmRRdWV1ZXMgd2hpY2ggY2FuIGJlIGFsaXZlCisgICAgICAgIGF0IGEgdGlt
ZSwgYW5kIHRoZSBsaW1pdCBpcyBzbWFsbCAtIGl0J3MgYXJvdW5kIDEwMDAuIFdlIGNhbid0IHJl
bHkgb24gYSBwYWdlCisgICAgICAgIGNhbGxpbmcgR1BVRGV2aWNlLmRlc3Ryb3ksIGFuZCB3ZSBj
YW4ndCByZWx5IG9uIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBjb2xsZWN0CisgICAgICAgIGJlZm9y
ZSB3ZSBoaXQgdGhpcyBsaW1pdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsbGV2aWF0ZXMgdGhp
cyBwcm9ibGVtIChidXQgZG9lc24ndCBlbnRpcmVseSBzb2x2ZSBpdCkgYnkgZWFnZXJseQorICAg
ICAgICBjcmVhdGluZyBhIE1UTENvbW1hbmRRdWV1ZSBmb3IgZWFjaCBkZXZpY2UgZHVyaW5nIElu
c3RhbmNlIGNyZWF0aW9uIHRpbWUuCisgICAgICAgIEluc3RhbmNlIGlzIHRoZSB0b3AtbGV2ZWwg
V2ViR1BVIG9iamVjdCwgYW5kIHRoZXJlJ3Mgb25seSBvbmUgb2YgdGhlbSBwZXIgUGFnZS4KKyAg
ICAgICAgSWYgdGhlIHBhZ2UgY3JlYXRlcyBtdWx0aXBsZSBHUFVEZXZpY2VzIGZyb20gYSBzaW5n
bGUgSW5zdGFuY2UsIHRoZSBzYW1lCisgICAgICAgIE1UTERldmljZXMgYW5kIE1UTENvbW1hbmRR
dWV1ZXMgd2lsbCBiZSBzaGFyZWQgYW1vbmcgYWxsIHRob3NlIEdQVURldmljZXMuCisKKyAgICAg
ICAgVGVzdDogYXBpL3ZhbGlkYXRpb24vcXVldWUvYnVmZmVyX21hcHBlZC5zcGVjLnRzIChXZSBj
YW4ndCBhY3R1YWxseSBlbmFibGUgdGhlIHRlc3QKKyAgICAgICAgdW50aWwgV2ViQ29yZSBsaW5r
cyB3aXRoIFdlYkdQVS4pCisKKyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5oOgorICAgICAgICAo
V2ViR1BVOjpBZGFwdGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9BZGFwdGVyLm1tOgor
ICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpBZGFwdGVyKToKKyAgICAgICAgKFdlYkdQVTo6QWRh
cHRlcjo6cmVxdWVzdERldmljZSk6CisgICAgICAgICogV2ViR1BVL0RldmljZS5oOgorICAgICAg
ICAqIFdlYkdQVS9EZXZpY2UubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2Uu
bW06CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BV
OjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAoV2ViR1BVOjptX2RldmljZUFuZENvbW1h
bmRRdWV1ZVBhaXJzKToKKyAgICAgICAgKFdlYkdQVTo6SW5zdGFuY2U6OnNvcnRlZERldmljZXMp
OgorICAgICAgICAoV2ViR1BVOjpJbnN0YW5jZTo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAo
V2ViR1BVOjpzb3J0ZWREZXZpY2VzKTogRGVsZXRlZC4KKwogMjAyMi0wMy0yMSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEltcGxl
bWVudCBlcnJvciByZXBvcnRpbmcgZmFjaWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQWRhcHRlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCmluZGV4
IGQ2OWM2MjdmMWQ0NmQxOTBmNWM0MDlhNWZiYzIwNjAwNzg4ZGFkZjUuLjFhNTNmN2U2YzgxY2My
NjgzOTM4N2U4YzkyNzZkMTRiZGIyOWNiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKQEAgLTM5
LDkgKzM5LDkgQEAgY2xhc3MgSW5zdGFuY2U7CiBjbGFzcyBBZGFwdGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8QWRhcHRlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8QWRhcHRlcj4gY3JlYXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBJbnN0
YW5jZSYgaW5zdGFuY2UpCisgICAgc3RhdGljIFJlZjxBZGFwdGVyPiBjcmVhdGUoaWQ8TVRMRGV2
aWNlPiBkZXZpY2UsIGlkPE1UTENvbW1hbmRRdWV1ZT4gZGVmYXVsdENvbW1hbmRRdWV1ZSwgSW5z
dGFuY2UmIGluc3RhbmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWRh
cHRlcihkZXZpY2UsIGluc3RhbmNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFk
YXB0ZXIoZGV2aWNlLCBkZWZhdWx0Q29tbWFuZFF1ZXVlLCBpbnN0YW5jZSkpOwogICAgIH0KIAog
ICAgIH5BZGFwdGVyKCk7CkBAIC01Myw5ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1
ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmUHRyPERldmljZT4mJiwgU3RyaW5nJiYp
PiYmIGNhbGxiYWNrKTsKIAogcHJpdmF0ZToKLSAgICBBZGFwdGVyKGlkPE1UTERldmljZT4sIElu
c3RhbmNlJik7CisgICAgQWRhcHRlcihpZDxNVExEZXZpY2U+LCBpZDxNVExDb21tYW5kUXVldWU+
LCBJbnN0YW5jZSYpOwogCiAgICAgY29uc3QgaWQ8TVRMRGV2aWNlPiBtX2RldmljZSB7IG5pbCB9
OworICAgIGNvbnN0IGlkPE1UTENvbW1hbmRRdWV1ZT4gbV9kZWZhdWx0Q29tbWFuZFF1ZXVlIHsg
bmlsIH07CiAgICAgY29uc3QgUmVmPEluc3RhbmNlPiBtX2luc3RhbmNlOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FkYXB0ZXIubW0KaW5kZXggYmI0N2IzZmM2OWMzMmEzNjdjYjE5ZGE4NDUyZDk2NWVlOTYz
ZDhlZi4uYmUyMmJhYTk1NDJlMmY3YzEzNmI3NjYyOWNlMzFmZWQ3YTNiYTBiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9BZGFwdGVyLm1tCkBAIC0zMyw4ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewog
Ci1BZGFwdGVyOjpBZGFwdGVyKGlkPE1UTERldmljZT4gZGV2aWNlLCBJbnN0YW5jZSYgaW5zdGFu
Y2UpCitBZGFwdGVyOjpBZGFwdGVyKGlkPE1UTERldmljZT4gZGV2aWNlLCBpZDxNVExDb21tYW5k
UXVldWU+IGRlZmF1bHRDb21tYW5kUXVldWUsIEluc3RhbmNlJiBpbnN0YW5jZSkKICAgICA6IG1f
ZGV2aWNlKGRldmljZSkKKyAgICAsIG1fZGVmYXVsdENvbW1hbmRRdWV1ZShkZWZhdWx0Q29tbWFu
ZFF1ZXVlKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKIHsKIH0KQEAgLTEyMyw3ICsxMjQs
NyBAQCB2b2lkIEFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfU3VjY2VzcywgRGV2aWNlOjpjcmVh
dGUobV9kZXZpY2UsIGRlc2NyaXB0b3IubGFiZWwsIG1faW5zdGFuY2UpLCB7IH0pOworICAgIGNh
bGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX1N1Y2Nlc3MsIERldmljZTo6Y3JlYXRlKG1f
ZGV2aWNlLCBtX2RlZmF1bHRDb21tYW5kUXVldWUsIG1faW5zdGFuY2UpLCB7IH0pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rl
dmljZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKaW5kZXggYjkyNWI4MWFiMzdj
Yzk5M2Q1ZWYwNjRiMGQxZmI3NDQ4ZWU1MGYyZC4uYjBiMmY1NzA5ZjFiM2Y3NjRkODllZjRlMWVh
YjJjOGMyMzlkNTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xh
c3MgVGV4dHVyZTsKIGNsYXNzIERldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPERldmljZT4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
RGV2aWNlPiBjcmVhdGUoaWQ8TVRMRGV2aWNlPiwgU3RyaW5nJiYgZGV2aWNlTGFiZWwsIEluc3Rh
bmNlJik7CisgICAgc3RhdGljIFJlZlB0cjxEZXZpY2U+IGNyZWF0ZShpZDxNVExEZXZpY2U+LCBp
ZDxNVExDb21tYW5kUXVldWU+IGRlZmF1bHRDb21tYW5kUXVldWUsIEluc3RhbmNlJik7CiAKICAg
ICB+RGV2aWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQppbmRleCA4MmJiZjkzMGYxOTE1Njk4
MThiOTUzMTc5NDkyM2QxMzM1Yzc1ZDcxLi4xNzg0MmJkYmU1MTY0MTVhNmE2MWI1NGJkNjU4MWE0
MmQ2MDhhZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBAIC00NiwxOSArNDYsMTUgQEAKIAog
bmFtZXNwYWNlIFdlYkdQVSB7CiAKLVJlZlB0cjxEZXZpY2U+IERldmljZTo6Y3JlYXRlKGlkPE1U
TERldmljZT4gZGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgSW5zdGFuY2UmIGluc3RhbmNl
KQorUmVmUHRyPERldmljZT4gRGV2aWNlOjpjcmVhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIGlk
PE1UTENvbW1hbmRRdWV1ZT4gZGVmYXVsdENvbW1hbmRRdWV1ZSwgSW5zdGFuY2UmIGluc3RhbmNl
KQogewotICAgIGlkPE1UTENvbW1hbmRRdWV1ZT4gY29tbWFuZFF1ZXVlID0gW2RldmljZSBuZXdD
b21tYW5kUXVldWVdOwotICAgIGlmICghY29tbWFuZFF1ZXVlKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBBU1NFUlQoZGVmYXVsdENvbW1hbmRRdWV1ZSk7CiAKICAgICAvLyBTZWUgdGhl
IGNvbW1lbnQgaW4gRGV2aWNlOjpzZXRMYWJlbCgpIGFib3V0IHdoeSB3ZSdyZSBub3Qgc2V0dGlu
ZyB0aGUgbGFiZWwgb24gdGhlIE1UTERldmljZSBoZXJlLgogCi0gICAgY29tbWFuZFF1ZXVlLmxh
YmVsID0gQCJEZWZhdWx0IHF1ZXVlIjsKLSAgICBpZiAoIWRldmljZUxhYmVsLmlzRW1wdHkoKSkK
LSAgICAgICAgY29tbWFuZFF1ZXVlLmxhYmVsID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJEZWZhdWx0IHF1ZXVlIGZvciBkZXZpY2UgJXMiLCBkZXZpY2VMYWJlbC51dGY4KCkuZGF0YSgp
XTsKKyAgICAvLyBCZWNhdXNlIGRlZmF1bHQgcXVldWVzIGFyZSBJbnN0YW5jZS1nbG9iYWwsIGJ1
dCBsYWJlbHMgYXJlIG9iamVjdC1sb2NhbCwgd2UgY2FuJ3Qgc2V0IGxhYmVscyBvbiBkZWZhdWx0
IGNvbW1hbmQgcXVldWVzIGJlY2F1c2UgMiBsYWJlbHMgd2lsbCBmaWdodCBlYWNoIG90aGVyLgog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlKGRldmljZSwgY29tbWFuZFF1ZXVlLCBp
bnN0YW5jZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZShkZXZpY2UsIGRlZmF1
bHRDb21tYW5kUXVldWUsIGluc3RhbmNlKSk7CiB9CiAKIERldmljZTo6RGV2aWNlKGlkPE1UTERl
dmljZT4gZGV2aWNlLCBpZDxNVExDb21tYW5kUXVldWU+IGRlZmF1bHRRdWV1ZSwgSW5zdGFuY2Um
IGluc3RhbmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgKaW5kZXggZWY1YjdmNjM1NzE0OTNkZjY5
MzBjMTI2YjNkZTk2ZGI1OGVkYWQ3NS4uZGIxNDQyMzFhZTE2NDI5N2E4NDYwZWNkZDk4MTU0ZGFi
OTkzZmQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1w
b3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkdQVSB7CiAKQEAgLTU0LDcgKzU1LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxl
V29yayhXb3JrSXRlbSYmKTsKIAogcHJpdmF0ZToKLSAgICBJbnN0YW5jZShXR1BVU2NoZWR1bGVX
b3JrQmxvY2spOworICAgIHN0cnVjdCBNVExEZXZpY2VBbmRDb21tYW5kUXVldWVQYWlyIHsKKyAg
ICAgICAgaWQ8TVRMRGV2aWNlPiBkZXZpY2U7CisgICAgICAgIGlkPE1UTENvbW1hbmRRdWV1ZT4g
Y29tbWFuZFF1ZXVlOworICAgIH07CisKKyAgICBJbnN0YW5jZShXR1BVU2NoZWR1bGVXb3JrQmxv
Y2ssIFZlY3RvcjxNVExEZXZpY2VBbmRDb21tYW5kUXVldWVQYWlyPiYmKTsKKworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxNVExEZXZpY2VBbmRDb21tYW5kUXVldWVQYWlyPj4gc29y
dGVkRGV2aWNlcyhWZWN0b3I8TVRMRGV2aWNlQW5kQ29tbWFuZFF1ZXVlUGFpcj4sIFdHUFVQb3dl
clByZWZlcmVuY2UpOwogCiAgICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQuCiAgICAgdm9pZCBkZWZhdWx0U2NoZWR1bGVXb3JrKFdHUFVXb3JrSXRlbSYmKTsK
QEAgLTYzLDYgKzcxLDggQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxXR1BVV29ya0l0ZW0+IG1fcGVu
ZGluZ1dvcmsgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogICAgIGNvbnN0IFdHUFVTY2hl
ZHVsZVdvcmtCbG9jayBtX3NjaGVkdWxlV29ya0Jsb2NrOwogICAgIExvY2sgbV9sb2NrOworCisg
ICAgVmVjdG9yPE1UTERldmljZUFuZENvbW1hbmRRdWV1ZVBhaXI+IG1fZGV2aWNlQW5kQ29tbWFu
ZFF1ZXVlUGFpcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5z
dGFuY2UubW0KaW5kZXggOTNhOTlhN2Y0NWI2NDJjNmJjMDJiMjhmMzUxYjkwMGZjN2IyMDZiMS4u
MzBjMGZkMTFkOTEwOWYxNmIwNGFmNDQyZDJjMDEzZTc4OGNiYzRlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
SW5zdGFuY2UubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFQSUNvbnZlcnNpb25zLmgi
CiAjaW1wb3J0ICJBZGFwdGVyLmgiCiAjaW1wb3J0ICJTdXJmYWNlLmgiCisjaW1wb3J0IDxhbGdv
cml0aG0+CiAjaW1wb3J0IDxjc3RyaW5nPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zNyw4ICszOCwyNyBAQCBuYW1lc3BhY2UgV2Vi
R1BVIHsKIAogUmVmUHRyPEluc3RhbmNlPiBJbnN0YW5jZTo6Y3JlYXRlKGNvbnN0IFdHUFVJbnN0
YW5jZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShNQUNDQVRBTFlTVCkKKyAgICBOU0FycmF5PGlkPE1UTERldmljZT4+ICpkZXZpY2VzID0g
TVRMQ29weUFsbERldmljZXMoKTsKKyNlbHNlCisgICAgTlNNdXRhYmxlQXJyYXk8aWQ8TVRMRGV2
aWNlPj4gKmRldmljZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIGlmIChpZDxNVExE
ZXZpY2U+IGRldmljZSA9IE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKSkKKyAgICAgICAg
W2RldmljZXMgYWRkT2JqZWN0OmRldmljZV07CisjZW5kaWYKKworICAgIFZlY3RvcjxNVExEZXZp
Y2VBbmRDb21tYW5kUXVldWVQYWlyPiBkZXZpY2VBbmRDb21tYW5kUXVldWVQYWlyczsKKyAgICBm
b3IgKGlkPE1UTERldmljZT4gZGV2aWNlIGluIGRldmljZXMpIHsKKyAgICAgICAgaWYgKCFkZXZp
Y2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWQ8TVRMQ29tbWFuZFF1
ZXVlPiBkZWZhdWx0Q29tbWFuZFF1ZXVlID0gW2RldmljZSBuZXdDb21tYW5kUXVldWVdOworICAg
ICAgICBpZiAoIWRlZmF1bHRDb21tYW5kUXVldWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgZGVmYXVsdENvbW1hbmRRdWV1ZS5sYWJlbCA9IEAiRGVmYXVsdCBjb21tYW5k
IHF1ZXVlIjsKKyAgICAgICAgZGV2aWNlQW5kQ29tbWFuZFF1ZXVlUGFpcnMuYXBwZW5kKHsgZGV2
aWNlLCBkZWZhdWx0Q29tbWFuZFF1ZXVlIH0pOworICAgIH0KKwogICAgIGlmICghZGVzY3JpcHRv
ci5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2UobnVs
bHB0cikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZShudWxscHRyLCBX
VEZNb3ZlKGRldmljZUFuZENvbW1hbmRRdWV1ZVBhaXJzKSkpOwogCiAgICAgaWYgKGRlc2NyaXB0
b3IubmV4dEluQ2hhaW4tPnNUeXBlICE9IHN0YXRpY19jYXN0PFdHUFVTVHlwZT4oV0dQVVNUeXBl
RXh0ZW5kZWRfSW5zdGFuY2VDb2NvYURlc2NyaXB0b3IpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTQ4LDExICs2OCwxNCBAQCBSZWZQdHI8SW5zdGFuY2U+IEluc3RhbmNlOjpjcmVhdGUo
Y29uc3QgV0dQVUluc3RhbmNlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICBpZiAoY29jb2FE
ZXNjcmlwdG9yLmNoYWluLm5leHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2UoY29jb2FEZXNjcmlwdG9yLnNjaGVkdWxlV29ya0Js
b2NrKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2UoY29jb2FEZXNjcmlwdG9y
LnNjaGVkdWxlV29ya0Jsb2NrLCBXVEZNb3ZlKGRldmljZUFuZENvbW1hbmRRdWV1ZVBhaXJzKSkp
OwogfQogCi1JbnN0YW5jZTo6SW5zdGFuY2UoV0dQVVNjaGVkdWxlV29ya0Jsb2NrIHNjaGVkdWxl
V29ya0Jsb2NrKQotICAgIDogbV9zY2hlZHVsZVdvcmtCbG9jayhzY2hlZHVsZVdvcmtCbG9jayA/
IFdURk1vdmUoc2NoZWR1bGVXb3JrQmxvY2spIDogXihXR1BVV29ya0l0ZW0gd29ya0l0ZW0pIHsg
ZGVmYXVsdFNjaGVkdWxlV29yayhXVEZNb3ZlKHdvcmtJdGVtKSk7IH0pCitJbnN0YW5jZTo6SW5z
dGFuY2UoV0dQVVNjaGVkdWxlV29ya0Jsb2NrIHNjaGVkdWxlV29ya0Jsb2NrLCBWZWN0b3I8TVRM
RGV2aWNlQW5kQ29tbWFuZFF1ZXVlUGFpcj4mJiBkZXZpY2VBbmRDb21tYW5kUXVldWVQYWlycykK
KyAgICA6IG1fc2NoZWR1bGVXb3JrQmxvY2soc2NoZWR1bGVXb3JrQmxvY2sgPyBXVEZNb3ZlKHNj
aGVkdWxlV29ya0Jsb2NrKSA6IF4oV0dQVVdvcmtJdGVtIHdvcmtJdGVtKSB7CisgICAgICAgIGRl
ZmF1bHRTY2hlZHVsZVdvcmsoV1RGTW92ZSh3b3JrSXRlbSkpOworICAgIH0pCisgICAgLCBtX2Rl
dmljZUFuZENvbW1hbmRRdWV1ZVBhaXJzKFdURk1vdmUoZGV2aWNlQW5kQ29tbWFuZFF1ZXVlUGFp
cnMpKQogewogfQogCkBAIC05MSw1NSArMTE0LDM1IEBAIHZvaWQgSW5zdGFuY2U6OnByb2Nlc3NF
dmVudHMoKQogICAgIH0KIH0KIAotc3RhdGljIE5TQXJyYXk8aWQ8TVRMRGV2aWNlPj4gKnNvcnRl
ZERldmljZXMoTlNBcnJheTxpZDxNVExEZXZpY2U+PiAqZGV2aWNlcywgV0dQVVBvd2VyUHJlZmVy
ZW5jZSBwb3dlclByZWZlcmVuY2UpCithdXRvIEluc3RhbmNlOjpzb3J0ZWREZXZpY2VzKFZlY3Rv
cjxNVExEZXZpY2VBbmRDb21tYW5kUXVldWVQYWlyPiBkZXZpY2VzLCBXR1BVUG93ZXJQcmVmZXJl
bmNlIHBvd2VyUHJlZmVyZW5jZSkgLT4gc3RkOjpvcHRpb25hbDxWZWN0b3I8TVRMRGV2aWNlQW5k
Q29tbWFuZFF1ZXVlUGFpcj4+CiB7CiAgICAgc3dpdGNoIChwb3dlclByZWZlcmVuY2UpIHsKICAg
ICBjYXNlIFdHUFVQb3dlclByZWZlcmVuY2VfVW5kZWZpbmVkOgogICAgICAgICByZXR1cm4gZGV2
aWNlczsKICAgICBjYXNlIFdHUFVQb3dlclByZWZlcmVuY2VfTG93UG93ZXI6CiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAgICAgcmV0dXJuIFtkZXZpY2Vz
IHNvcnRlZEFycmF5V2l0aE9wdGlvbnM6TlNTb3J0U3RhYmxlIHVzaW5nQ29tcGFyYXRvcjpeTlND
b21wYXJpc29uUmVzdWx0IChpZDxNVExEZXZpY2U+IG9iajEsIGlkPE1UTERldmljZT4gb2JqMikK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKG9iajEubG93UG93ZXIgPT0gb2JqMi5sb3dQb3dl
cikKLSAgICAgICAgICAgICAgICByZXR1cm4gTlNPcmRlcmVkU2FtZTsKLSAgICAgICAgICAgIGlm
IChvYmoxLmxvd1Bvd2VyKQotICAgICAgICAgICAgICAgIHJldHVybiBOU09yZGVyZWRBc2NlbmRp
bmc7Ci0gICAgICAgICAgICByZXR1cm4gTlNPcmRlcmVkRGVzY2VuZGluZzsKLSAgICAgICAgfV07
Ci0jZWxzZQotICAgICAgICByZXR1cm4gZGV2aWNlczsKKyAgICAgICAgc3RkOjpzdGFibGVfc29y
dChkZXZpY2VzLmJlZ2luKCksIGRldmljZXMuZW5kKCksIFtdKGNvbnN0IE1UTERldmljZUFuZENv
bW1hbmRRdWV1ZVBhaXImIGxocywgY29uc3QgTVRMRGV2aWNlQW5kQ29tbWFuZFF1ZXVlUGFpciYg
cmhzKSB7CisgICAgICAgICAgICByZXR1cm4gbGhzLmRldmljZS5sb3dQb3dlciA+IHJocy5kZXZp
Y2UubG93UG93ZXI7CisgICAgICAgIH0pOwogI2VuZGlmCisgICAgICAgIHJldHVybiBkZXZpY2Vz
OwogICAgIGNhc2UgV0dQVVBvd2VyUHJlZmVyZW5jZV9IaWdoUGVyZm9ybWFuY2U6CiAjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAgICAgcmV0dXJuIFtkZXZp
Y2VzIHNvcnRlZEFycmF5V2l0aE9wdGlvbnM6TlNTb3J0U3RhYmxlIHVzaW5nQ29tcGFyYXRvcjpe
TlNDb21wYXJpc29uUmVzdWx0IChpZDxNVExEZXZpY2U+IG9iajEsIGlkPE1UTERldmljZT4gb2Jq
MikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG9iajEubG93UG93ZXIgPT0gb2JqMi5sb3dQ
b3dlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gTlNPcmRlcmVkU2FtZTsKLSAgICAgICAgICAg
IGlmIChvYmoxLmxvd1Bvd2VyKQotICAgICAgICAgICAgICAgIHJldHVybiBOU09yZGVyZWREZXNj
ZW5kaW5nOwotICAgICAgICAgICAgcmV0dXJuIE5TT3JkZXJlZEFzY2VuZGluZzsKLSAgICAgICAg
fV07Ci0jZWxzZQorICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KGRldmljZXMuYmVnaW4oKSwgZGV2
aWNlcy5lbmQoKSwgW10oY29uc3QgTVRMRGV2aWNlQW5kQ29tbWFuZFF1ZXVlUGFpciYgbGhzLCBj
b25zdCBNVExEZXZpY2VBbmRDb21tYW5kUXVldWVQYWlyJiByaHMpIHsKKyAgICAgICAgICAgIHJl
dHVybiBsaHMuZGV2aWNlLmxvd1Bvd2VyIDwgcmhzLmRldmljZS5sb3dQb3dlcjsKKyAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybiBkZXZpY2VzOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAK
IHZvaWQgSW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVy
U3RhdHVzLCBSZWZQdHI8QWRhcHRlcj4mJiwgU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQogewotI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgTlNBcnJheTxpZDxN
VExEZXZpY2U+PiAqZGV2aWNlcyA9IE1UTENvcHlBbGxEZXZpY2VzKCk7Ci0jZWxzZQotICAgIE5T
TXV0YWJsZUFycmF5PGlkPE1UTERldmljZT4+ICpkZXZpY2VzID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5XTsKLSAgICBpZiAoaWQ8TVRMRGV2aWNlPiBkZXZpY2UgPSBNVExDcmVhdGVTeXN0ZW1EZWZh
dWx0RGV2aWNlKCkpCi0gICAgICAgIFtkZXZpY2VzIGFkZE9iamVjdDpkZXZpY2VdOwotI2VuZGlm
Ci0KICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIG9wdGlvbnMuY29tcGF0aWJsZVN1cmZhY2UuCiAK
LSAgICBhdXRvIHNvcnRlZERldmljZXMgPSBXZWJHUFU6OnNvcnRlZERldmljZXMoZGV2aWNlcywg
b3B0aW9ucy5wb3dlclByZWZlcmVuY2UpOworICAgIGF1dG8gc29ydGVkRGV2aWNlcyA9IHRoaXMt
PnNvcnRlZERldmljZXMobV9kZXZpY2VBbmRDb21tYW5kUXVldWVQYWlycywgb3B0aW9ucy5wb3dl
clByZWZlcmVuY2UpOwogCiAgICAgaWYgKG9wdGlvbnMubmV4dEluQ2hhaW4pIHsKICAgICAgICAg
Y2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX0Vycm9yLCBudWxscHRyLCAiVW5rbm93
biBkZXNjcmlwdG9yIHR5cGUiX3MpOwpAQCAtMTU2LDE3ICsxNTksMTUgQEAgdm9pZCBJbnN0YW5j
ZTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9u
cywgQ29tcGxldGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghc29ydGVkRGV2
aWNlcy5jb3VudCkgeworICAgIGlmIChzb3J0ZWREZXZpY2VzLT5pc0VtcHR5KCkpIHsKICAgICAg
ICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1VuYXZhaWxhYmxlLCBudWxscHRy
LCAiTm8gYWRhcHRlcnMgcHJlc2VudCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoIXNvcnRlZERldmljZXNbMF0pIHsKLSAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RB
ZGFwdGVyU3RhdHVzX0Vycm9yLCBudWxscHRyLCAiQWRhcHRlciBpcyBpbnRlcm5hbGx5IG51bGwi
X3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGFzc2VydChzb3J0ZWREZXZpY2VzLT5m
aXJzdCgpLmRldmljZSk7CisgICAgYXNzZXJ0KHNvcnRlZERldmljZXMtPmZpcnN0KCkuY29tbWFu
ZFF1ZXVlKTsKIAotICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19TdWNjZXNz
LCBBZGFwdGVyOjpjcmVhdGUoc29ydGVkRGV2aWNlc1swXSwgKnRoaXMpLCB7IH0pOworICAgIGNh
bGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19TdWNjZXNzLCBBZGFwdGVyOjpjcmVhdGUo
c29ydGVkRGV2aWNlcy0+Zmlyc3QoKS5kZXZpY2UsIHNvcnRlZERldmljZXMtPmZpcnN0KCkuY29t
bWFuZFF1ZXVlLCAqdGhpcyksIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQo=
</data>
<flag name="commit-queue"
          id="483405"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>