<?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>78426</bug_id>
          
          <creation_ts>2012-02-11 15:12:33 -0800</creation_ts>
          <short_desc>[Chromium] Avoid unnecessary memset in per-tile layer updater.</short_desc>
          <delta_ts>2012-02-13 08:29:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reed</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554709</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 15:12:33 -0800</bug_when>
    <thetext>Use our own SkBitmap for which we manage the pixels instead of letting SkDevice construct a SkBitmap. This avoids an unnecessary memset otherwise done by SkDevice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554710</commentid>
    <comment_count>1</comment_count>
      <attachid>126651</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 15:15:12 -0800</bug_when>
    <thetext>Created attachment 126651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554711</commentid>
    <comment_count>2</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 15:22:18 -0800</bug_when>
    <thetext>Verified that this works both on Linux and Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554713</commentid>
    <comment_count>3</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 15:23:55 -0800</bug_when>
    <thetext>*** Bug 77897 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554724</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-11 15:54:17 -0800</bug_when>
    <thetext>This seems a little extreme, can&apos;t we just ask skia not to memset() and promise to set every pixel ourselves?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554729</commentid>
    <comment_count>5</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 16:22:45 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; This seems a little extreme, can&apos;t we just ask skia not to memset() and promise to set every pixel ourselves?

AFAIK, there&apos;s no proper way to do that. We could pass isOpaque=true to the SkDevice constructor to avoid the memset but even though that might not have any bad side-effects in our case, we would be exploiting implementation details..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554732</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-11 16:52:24 -0800</bug_when>
    <thetext>This is really really a Skia API question, so hopefully Mike or Stephen can chime in.  It seems excessive to require that in order to avoid a memset we have to take complete control over allocating and owning the memory for the bitmap.  TextureManager::memoryUseBytes() is a best-effort estimate for resource tracking, we haven&apos;t depending on it being exact up until now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554740</commentid>
    <comment_count>7</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 17:34:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; This is really really a Skia API question, so hopefully Mike or Stephen can chime in.  It seems excessive to require that in order to avoid a memset we have to take complete control over allocating and owning the memory for the bitmap.  TextureManager::memoryUseBytes() is a best-effort estimate for resource tracking, we haven&apos;t depending on it being exact up until now.

Sure, if the Skia API allows us do this then we should just use that.

As we already rely on the pixel format, row stride and hence also the size of the buffer to be of some specific values for our texture uploads to be correct I don&apos;t think it matters a huge deal if Skia owns the memory used for the bitmap or not.

Probably more appropriate to use SkBitmap::ComputeSize instead of TextureManager::memoryUseBytes() in this patch. I&apos;ll fix that for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554741</commentid>
    <comment_count>8</comment_count>
      <attachid>126658</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 17:35:00 -0800</bug_when>
    <thetext>Created attachment 126658
Patch

Use SkBitmap::ComputeSize</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554822</commentid>
    <comment_count>9</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-12 10:10:08 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; This is really really a Skia API question, so hopefully Mike or Stephen can chime in.  It seems excessive to require that in order to avoid a memset we have to take complete control over allocating and owning the memory for the bitmap.  TextureManager::memoryUseBytes() is a best-effort estimate for resource tracking, we haven&apos;t depending on it being exact up until now.

I think what you want is SkBitmap::allocPixels().  This will let skia take care of the size calculation, allocation and lifetime for you, while still avoiding the memset.

You could also keep the SkBitmap persistent between invocations of prepareRect() (which I assume are fairly frequent?) and avoid reallocating the bitmap if the size hasn&apos;t changed.  This would avoid both the memset() and the malloc() if the size is the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554840</commentid>
    <comment_count>10</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-12 13:22:42 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #6)
&gt; &gt; This is really really a Skia API question, so hopefully Mike or Stephen can chime in.  It seems excessive to require that in order to avoid a memset we have to take complete control over allocating and owning the memory for the bitmap.  TextureManager::memoryUseBytes() is a best-effort estimate for resource tracking, we haven&apos;t depending on it being exact up until now.
&gt; 
&gt; I think what you want is SkBitmap::allocPixels().  This will let skia take care of the size calculation, allocation and lifetime for you, while still avoiding the memset.

Thanks! that will do it.

&gt; 
&gt; You could also keep the SkBitmap persistent between invocations of prepareRect() (which I assume are fairly frequent?) and avoid reallocating the bitmap if the size hasn&apos;t changed.  This would avoid both the memset() and the malloc() if the size is the same.

The malloc doesn&apos;t seem to cost much on the platforms where I&apos;ve tested this so I&apos;m avoiding that optimization for now as it might just a have negative effect on the memory pressure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554841</commentid>
    <comment_count>11</comment_count>
      <attachid>126682</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-12 13:24:37 -0800</bug_when>
    <thetext>Created attachment 126682
Patch

Use allocPixels()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554844</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-12 13:39:00 -0800</bug_when>
    <thetext>We used to preserve the buffer across frames for layers, but decided the memory cost wasn&apos;t worth it.  I think our allocator should perform pretty well for these sorts of allocations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554846</commentid>
    <comment_count>13</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-12 13:47:35 -0800</bug_when>
    <thetext>We could potentially use stack memory for this after landing https://bugs.webkit.org/show_bug.cgi?id=72752. On the other hand we&apos;re also working on painting directly to shared memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554858</commentid>
    <comment_count>14</comment_count>
      <attachid>126682</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-12 14:20:46 -0800</bug_when>
    <thetext>Comment on attachment 126682
Patch

Nice!  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554867</commentid>
    <comment_count>15</comment_count>
      <attachid>126682</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-12 15:53:56 -0800</bug_when>
    <thetext>Comment on attachment 126682
Patch

Clearing flags on attachment: 126682

Committed r107515: &lt;http://trac.webkit.org/changeset/107515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554868</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-12 15:54:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555216</commentid>
    <comment_count>17</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-02-13 06:06:33 -0800</bug_when>
    <thetext>Alternatively, if you pass &apos;true&apos; for the 4th (implicit) parameter to SkDevice&apos;s constructor, then you get two benefits:
1. I won&apos;t call memset, since you&apos;ve told me the device is opaque
2. You&apos;ve told me the device is opaque, so any blits using that bitmap will be faster, since it is known to be opaque.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555261</commentid>
    <comment_count>18</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-13 08:00:35 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Alternatively, if you pass &apos;true&apos; for the 4th (implicit) parameter to SkDevice&apos;s constructor, then you get two benefits:
&gt; 1. I won&apos;t call memset, since you&apos;ve told me the device is opaque
&gt; 2. You&apos;ve told me the device is opaque, so any blits using that bitmap will be faster, since it is known to be opaque.

It&apos;s not always opaque though. Tile contents can be translucent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555263</commentid>
    <comment_count>19</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-13 08:04:11 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Alternatively, if you pass &apos;true&apos; for the 4th (implicit) parameter to SkDevice&apos;s constructor, then you get two benefits:
&gt; 1. I won&apos;t call memset, since you&apos;ve told me the device is opaque
&gt; 2. You&apos;ve told me the device is opaque, so any blits using that bitmap will be faster, since it is known to be opaque.

Presumably we can get this 2nd win by setting isOpaque on the bitmap appropriately? We already have information if the layer is fully opaque - at least for image layers. I can put together a simple CL for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555283</commentid>
    <comment_count>20</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-13 08:29:31 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; Alternatively, if you pass &apos;true&apos; for the 4th (implicit) parameter to SkDevice&apos;s constructor, then you get two benefits:
&gt; &gt; 1. I won&apos;t call memset, since you&apos;ve told me the device is opaque
&gt; &gt; 2. You&apos;ve told me the device is opaque, so any blits using that bitmap will be faster, since it is known to be opaque.
&gt; 
&gt; Presumably we can get this 2nd win by setting isOpaque on the bitmap appropriately? We already have information if the layer is fully opaque - at least for image layers. I can put together a simple CL for this.

I don&apos;t think these bitmaps are ever used for blits.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126651</attachid>
            <date>2012-02-11 15:15:12 -0800</date>
            <delta_ts>2012-02-11 17:34:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78426-20120211181511.patch</filename>
            <type>text/plain</type>
            <size>4528</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA4ZWUyMGQwOTExYzBm
OGU2OTQ5ODFjNmZlOWUzNWZkZjcxZmU2Ny4uYmUwNTVlZDdkMTgzNmI0ZTQ0NDg0ZWQ3OTU1YWE0
NDYwZGQzNjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAyLTExICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBtZW1zZXQgaW4gcGVyLXRpbGUgbGF5ZXIgdXBkYXRlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG91ciBvd24gU2tC
aXRtYXAgZm9yIHdoaWNoIHdlIG1hbmFnZSB0aGUgcGl4ZWxzIGluc3RlYWQgb2YgbGV0dGluZwor
ICAgICAgICBTa0RldmljZSBjb25zdHJ1Y3QgYSBTa0JpdG1hcC4gVGhpcyBhdm9pZHMgYW4gdW5u
ZWNlc3NhcnkgbWVtc2V0CisgICAgICAgIG90aGVyd2lzZSBkb25lIGJ5IFNrRGV2aWNlLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAoVGV4dHVyZSk6CisKIDIwMTItMDItMTEgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzaXplIGFzc2VydCBmb3Ig
TGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDRjYzZiY2M5MGRmYjEyYmUxOGQxMmRiYjQ2
ZTNjYTJjOGQzODdjODYuLjljYTI4ZTNlM2RiZjJhYzhiM2RlNDBhYjg2ZGRiOGVlNDMxZDI3N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiAjaW5jbHVkZSAiTGF5ZXJQ
YWludGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTa0JpdG1hcC5oIgogI2luY2x1ZGUgIlNrQ2Fu
dmFzLmgiCiAjaW5jbHVkZSAiU2tEZXZpY2UuaCIKIApAQCAtNDUsMjEgKzQ2LDIzIEBAIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0
bWFwU2tQaWN0dXJlQ2FudmFzCiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCkKIHsKLSAgICBtX2RldmljZSA9IGFkb3B0UHRyKG5ldyBTa0RldmljZShTa0JpdG1hcDo6a0FS
R0JfODg4OF9Db25maWcsIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSkp
OwotICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IFNrQ2FudmFzKG1f
ZGV2aWNlLmdldCgpKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3Qo
Y2FudmFzLmdldCgpLCBzb3VyY2VSZWN0KTsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1
cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzb3VyY2VSZWN0LnNpemUoKSwgdGV4dHVyZSgpLT5m
b3JtYXQoKSk7CisgICAgbV9waXhlbERhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1
ZmZlclNpemVdKTsKKyAgICBTa0JpdG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhT
a0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVj
dC5oZWlnaHQoKSk7CisgICAgYml0bWFwLnNldFBpeGVscyhtX3BpeGVsRGF0YS5nZXQoKSk7Cisg
ICAgU2tEZXZpY2UgZGV2aWNlKGJpdG1hcCk7CisgICAgU2tDYW52YXMgY2FudmFzKCZkZXZpY2Up
OworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHNSZWN0KCZjYW52YXMsIHNvdXJj
ZVJlY3QpOwogfQogCiB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0
LCBhbGxvY2F0b3IpOwogCi0gICAgQVNTRVJUKG1fZGV2aWNlKTsKLSAgICBjb25zdCBTa0JpdG1h
cCogYml0bWFwID0gJm1fZGV2aWNlLT5hY2Nlc3NCaXRtYXAoZmFsc2UpOwotICAgIGJpdG1hcC0+
bG9ja1BpeGVscygpOwotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNv
bnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oYml0bWFwLT5nZXRQaXhlbHMoKSkpOwotICAgIGJpdG1hcC0+dW5sb2NrUGl4ZWxzKCk7Ci0g
ICAgbV9kZXZpY2UuY2xlYXIoKTsKKyAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOworICAg
IHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+
Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CisgICAgbV9waXhlbERhdGEu
Y2xlYXIoKTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBU
ZXhTdWJJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA4ZDUyNDMzZDBiMGVmMmVkNWI5NjEyODcz
YzQ0OWQyYTA0MzI5ZTI4Li4xYzU2NGNkYzE4M2VhNDk1OTFmNjkwNmVmZWJkM2E4ZDliNWY4MGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zNCw4ICszNCw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1D
b2xvci5oIgogI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
IAotY2xhc3MgU2tEZXZpY2U7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBjbGFz
cyByZWNvcmRzIHRoZSBjb250ZW50UmVjdCBpbnRvIGFuIFNrUGljdHVyZSwgdGhlbiBzb2Z0d2Fy
ZSByYXN0ZXJpemVzCkBAIC01Miw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAg
ICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBk
YXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KIAotICAgICAgICBPd25QdHI8U2tE
ZXZpY2U+IG1fZGV2aWNlOworICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX3BpeGVsRGF0
YTsKICAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90
ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126658</attachid>
            <date>2012-02-11 17:35:00 -0800</date>
            <delta_ts>2012-02-12 13:24:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78426-20120211203459.patch</filename>
            <type>text/plain</type>
            <size>4549</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA4ZWUyMGQwOTExYzBm
OGU2OTQ5ODFjNmZlOWUzNWZkZjcxZmU2Ny4uYmUwNTVlZDdkMTgzNmI0ZTQ0NDg0ZWQ3OTU1YWE0
NDYwZGQzNjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAyLTExICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBtZW1zZXQgaW4gcGVyLXRpbGUgbGF5ZXIgdXBkYXRlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG91ciBvd24gU2tC
aXRtYXAgZm9yIHdoaWNoIHdlIG1hbmFnZSB0aGUgcGl4ZWxzIGluc3RlYWQgb2YgbGV0dGluZwor
ICAgICAgICBTa0RldmljZSBjb25zdHJ1Y3QgYSBTa0JpdG1hcC4gVGhpcyBhdm9pZHMgYW4gdW5u
ZWNlc3NhcnkgbWVtc2V0CisgICAgICAgIG90aGVyd2lzZSBkb25lIGJ5IFNrRGV2aWNlLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAoVGV4dHVyZSk6CisKIDIwMTItMDItMTEgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzaXplIGFzc2VydCBmb3Ig
TGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDRjYzZiY2M5MGRmYjEyYmUxOGQxMmRiYjQ2
ZTNjYTJjOGQzODdjODYuLjFkZDc1MDFkNDBkNzZhMmVkYTA5MDAyM2RkMmUzM2ZmYzVkYjJkMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiAjaW5jbHVkZSAiTGF5ZXJQ
YWludGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTa0JpdG1hcC5oIgogI2luY2x1ZGUgIlNrQ2Fu
dmFzLmgiCiAjaW5jbHVkZSAiU2tEZXZpY2UuaCIKIApAQCAtNDUsMjEgKzQ2LDIzIEBAIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0
bWFwU2tQaWN0dXJlQ2FudmFzCiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCkKIHsKLSAgICBtX2RldmljZSA9IGFkb3B0UHRyKG5ldyBTa0RldmljZShTa0JpdG1hcDo6a0FS
R0JfODg4OF9Db25maWcsIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSkp
OwotICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IFNrQ2FudmFzKG1f
ZGV2aWNlLmdldCgpKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3Qo
Y2FudmFzLmdldCgpLCBzb3VyY2VSZWN0KTsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFNrQml0
bWFwOjpDb21wdXRlU2l6ZShTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHNvdXJjZVJlY3Qu
d2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgbV9waXhlbERhdGEgPSBhZG9wdEFy
cmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKKyAgICBTa0JpdG1hcCBiaXRtYXA7Cisg
ICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHNvdXJjZVJl
Y3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgYml0bWFwLnNldFBpeGVscyht
X3BpeGVsRGF0YS5nZXQoKSk7CisgICAgU2tEZXZpY2UgZGV2aWNlKGJpdG1hcCk7CisgICAgU2tD
YW52YXMgY2FudmFzKCZkZXZpY2UpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVu
dHNSZWN0KCZjYW52YXMsIHNvdXJjZVJlY3QpOwogfQogCiB2b2lkIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgdGV4dHVyZSgp
LT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwogCi0gICAgQVNTRVJUKG1fZGV2aWNl
KTsKLSAgICBjb25zdCBTa0JpdG1hcCogYml0bWFwID0gJm1fZGV2aWNlLT5hY2Nlc3NCaXRtYXAo
ZmFsc2UpOwotICAgIGJpdG1hcC0+bG9ja1BpeGVscygpOwotICAgIHRleHR1cmVVcGRhdGVyKCkt
PnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0
LCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYml0bWFwLT5nZXRQaXhlbHMoKSkpOwotICAgIGJpdG1h
cC0+dW5sb2NrUGl4ZWxzKCk7Ci0gICAgbV9kZXZpY2UuY2xlYXIoKTsKKyAgICBBU1NFUlQobV9w
aXhlbERhdGEuZ2V0KCkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0
KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQo
KSk7CisgICAgbV9waXhlbERhdGEuY2xlYXIoKTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4g
cGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA4ZDUy
NDMzZDBiMGVmMmVkNWI5NjEyODczYzQ0OWQyYTA0MzI5ZTI4Li4xYzU2NGNkYzE4M2VhNDk1OTFm
NjkwNmVmZWJkM2E4ZDliNWY4MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zNCw4ICszNCw2IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAotY2xhc3MgU2tEZXZpY2U7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gVGhpcyBjbGFzcyByZWNvcmRzIHRoZSBjb250ZW50UmVjdCBpbnRvIGFuIFNr
UGljdHVyZSwgdGhlbiBzb2Z0d2FyZSByYXN0ZXJpemVzCkBAIC01Miw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0K
IAotICAgICAgICBPd25QdHI8U2tEZXZpY2U+IG1fZGV2aWNlOworICAgICAgICBPd25BcnJheVB0
cjx1aW50OF90PiBtX3BpeGVsRGF0YTsKICAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126682</attachid>
            <date>2012-02-12 13:24:37 -0800</date>
            <delta_ts>2012-02-12 15:53:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78426-20120212162435.patch</filename>
            <type>text/plain</type>
            <size>4282</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNmODkyMGNmNTVmOTIz
YmI0MjFkZDBiNmFmNTczMjU1MmVmZDFmMy4uODZlZjZiMTNmNTFmZTlhMjU0MDEwMTFiMzRkMjc1
YjNlNTlkZDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAyLTEyICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBB
dm9pZCB1bm5lY2Vzc2FyeSBtZW1zZXQgaW4gcGVyLXRpbGUgbGF5ZXIgdXBkYXRlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG91ciBvd24gU2tC
aXRtYXAgYW5kIGNhbGwgU2tCaXRtYXA6OmFsbG9jUGl4ZWxzKCkgaW5zdGVhZCBvZgorICAgICAg
ICBsZXR0aW5nIFNrRGV2aWNlIGNvbnN0cnVjdCBhIFNrQml0bWFwLiBUaGlzIGF2b2lkcyBhbiB1
bm5lY2Vzc2FyeQorICAgICAgICBtZW1zZXQgb3RoZXJ3aXNlIGRvbmUgYnkgU2tEZXZpY2UuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChUZXh0dXJlKToKKwogMjAxMi0wMi0xMiAgSm9lIFRo
b21hcyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgQWRkIHRvVGV4dCBhbmQg
aXNUZXh0Tm9kZSBoZWxwZXJzIGluIFRleHQgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4
IDRjYzZiY2M5MGRmYjEyYmUxOGQxMmRiYjQ2ZTNjYTJjOGQzODdjODYuLjY1ODViMzRiM2UxZTVj
YjExYzg3NzM5N2Q1ZWZkYWQ3YjZlZmYyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00NSwy
MSArNDUsMjEgQEAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXMKIAogdm9pZCBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0KQogewotICAgIG1fZGV2aWNlID0gYWRvcHRQdHIobmV3IFNrRGV2
aWNlKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgc291cmNlUmVjdC53aWR0aCgpLCBzb3Vy
Y2VSZWN0LmhlaWdodCgpKSk7Ci0gICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBhZG9wdFB0
cihuZXcgU2tDYW52YXMobV9kZXZpY2UuZ2V0KCkpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5w
YWludENvbnRlbnRzUmVjdChjYW52YXMuZ2V0KCksIHNvdXJjZVJlY3QpOworICAgIG1fYml0bWFw
LnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHNvdXJjZVJlY3Qud2lkdGgo
KSwgc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgbV9iaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAg
ICBTa0RldmljZSBkZXZpY2UobV9iaXRtYXApOworICAgIFNrQ2FudmFzIGNhbnZhcygmZGV2aWNl
KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdCgmY2FudmFzLCBzb3Vy
Y2VSZWN0KTsKIH0KIAogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4
dCwgYWxsb2NhdG9yKTsKIAotICAgIEFTU0VSVChtX2RldmljZSk7Ci0gICAgY29uc3QgU2tCaXRt
YXAqIGJpdG1hcCA9ICZtX2RldmljZS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKLSAgICBiaXRtYXAt
PmxvY2tQaXhlbHMoKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChj
b250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwgc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGJpdG1hcC0+Z2V0UGl4ZWxzKCkpKTsKLSAgICBiaXRtYXAtPnVubG9ja1BpeGVscygpOwot
ICAgIG1fZGV2aWNlLmNsZWFyKCk7CisgICAgbV9iaXRtYXAubG9ja1BpeGVscygpOworICAgIHRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9y
bWF0KCksIGRlc3RSZWN0LCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxz
KCkpKTsKKyAgICBtX2JpdG1hcC51bmxvY2tQaXhlbHMoKTsKKyAgICBtX2JpdG1hcC5yZXNldCgp
OwogfQogCiBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI+IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1Yklt
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDhkNTI0MzNkMGIwZWYyZWQ1Yjk2MTI4NzNjNDQ5ZDJh
MDQzMjllMjguLjgzOGI0YjNlN2IwNGQ0MjQ3YWIzYmMzMzI1ZWM1YjJkYjg0Y2ZiOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKQEAgLTMyLDEwICszMiw5IEBACiAKICNpbmNsdWRlICJMYXllclRleHR1cmVT
dWJJbWFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKKyNpbmNsdWRlICJTa0JpdG1h
cC5oIgogI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAot
Y2xhc3MgU2tEZXZpY2U7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBjbGFzcyBy
ZWNvcmRzIHRoZSBjb250ZW50UmVjdCBpbnRvIGFuIFNrUGljdHVyZSwgdGhlbiBzb2Z0d2FyZSBy
YXN0ZXJpemVzCkBAIC01Miw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAg
ICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
cigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KIAotICAgICAgICBPd25QdHI8U2tEZXZp
Y2U+IG1fZGV2aWNlOworICAgICAgICBTa0JpdG1hcCBtX2JpdG1hcDsKICAgICAgICAgQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAg
ICB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>