All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Wang, Kemi" <kemi.wang@intel.com>
To: Laurent Dufour <ldufour@linux.vnet.ibm.com>,
	"Song, HaiyanX" <haiyanx.song@intel.com>
Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"mhocko@kernel.org" <mhocko@kernel.org>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"kirill@shutemov.name" <kirill@shutemov.name>,
	"ak@linux.intel.com" <ak@linux.intel.com>,
	"dave@stgolabs.net" <dave@stgolabs.net>,
	"jack@suse.cz" <jack@suse.cz>,
	Matthew Wilcox <willy@infradead.org>,
	"khandual@linux.vnet.ibm.com" <khandual@linux.vnet.ibm.com>,
	"aneesh.kumar@linux.vnet.ibm.com"
	<aneesh.kumar@linux.vnet.ibm.com>,
	"benh@kernel.crashing.org" <benh@kernel.crashing.org>,
	"mpe@ellerman.id.au" <mpe@ellerman.id.au>,
	"paulus@samba.org" <paulus@samba.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "hpa@zytor.com" <hpa@zytor.com>,
	Will Deacon <will.deacon@arm.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	"sergey.senozhatsky.work@gmail.com"
	<sergey.senozhatsky.work@gmail.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	Daniel Jordan <daniel.m.jordan@oracle.com>,
	David Rientjes <rientjes@google.com>,
	Jerome Glisse <jglisse@redhat.com>,
	Ganesh Mahendran <opensource.ganesh@gmail.com>,
	Minchan Kim <minchan@kernel.org>,
	Punit Agrawal <punitagrawal@gmail.com>,
	vinayak menon <vinayakm.list@gmail.com>,
	Yang Shi <yang.shi@linux.alibaba.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"haren@linux.vnet.ibm.com" <haren@linux.vnet.ibm.com>,
	"npiggin@gmail.com" <npiggin@gmail.com>,
	"bsingharora@gmail.com" <bsingharora@gmail.com>,
	"paulmck@linux.vnet.ibm.com" <paulmck@linux.vnet.ibm.com>,
	Tim Chen <tim.c.chen@linux.intel.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"x86@kernel.org" <x86@kernel.org>
Subject: RE: [PATCH v11 00/26] Speculative page faults
Date: Mon, 28 May 2018 11:04:05 +0000	[thread overview]
Message-ID: <25017BF213203E48912DB000DE5F5E1E6B80D51D@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <316c6936-203d-67e9-c18c-6cf10d0d4bee@linux.vnet.ibm.com>

Full run would take one or two weeks depended on our resource available. Could you pick some ones up, e.g. those have performance regression?

-----Original Message-----
From: owner-linux-mm@kvack.org [mailto:owner-linux-mm@kvack.org] On Behalf Of Laurent Dufour
Sent: Monday, May 28, 2018 4:55 PM
To: Song, HaiyanX <haiyanx.song@intel.com>
Cc: akpm@linux-foundation.org; mhocko@kernel.org; peterz@infradead.org; kirill@shutemov.name; ak@linux.intel.com; dave@stgolabs.net; jack@suse.cz; Matthew Wilcox <willy@infradead.org>; khandual@linux.vnet.ibm.com; aneesh.kumar@linux.vnet.ibm.com; benh@kernel.crashing.org; mpe@ellerman.id.au; paulus@samba.org; Thomas Gleixner <tglx@linutronix.de>; Ingo Molnar <mingo@redhat.com>; hpa@zytor.com; Will Deacon <will.deacon@arm.com>; Sergey Senozhatsky <sergey.senozhatsky@gmail.com>; sergey.senozhatsky.work@gmail.com; Andrea Arcangeli <aarcange@redhat.com>; Alexei Starovoitov <alexei.starovoitov@gmail.com>; Wang, Kemi <kemi.wang@intel.com>; Daniel Jordan <daniel.m.jordan@oracle.com>; David Rientjes <rientjes@google.com>; Jerome Glisse <jglisse@redhat.com>; Ganesh Mahendran <opensource.ganesh@gmail.com>; Minchan Kim <minchan@kernel.org>; Punit Agrawal <punitagrawal@gmail.com>; vinayak menon <vinayakm.list@gmail.com>; Yang Shi <yang.shi@linux.alibaba.com>; linux-kernel@vger.kernel.org; linux-mm@kvack.org; haren@linux.vnet.ibm.com; npiggin@gmail.com; bsingharora@gmail.com; paulmck@linux.vnet.ibm.com; Tim Chen <tim.c.chen@linux.intel.com>; linuxppc-dev@lists.ozlabs.org; x86@kernel.org
Subject: Re: [PATCH v11 00/26] Speculative page faults

On 28/05/2018 10:22, Haiyan Song wrote:
> Hi Laurent,
> 
> Yes, these tests are done on V9 patch.

Do you plan to give this V11 a run ?

> 
> 
> Best regards,
> Haiyan Song
> 
> On Mon, May 28, 2018 at 09:51:34AM +0200, Laurent Dufour wrote:
>> On 28/05/2018 07:23, Song, HaiyanX wrote:
>>>
>>> Some regression and improvements is found by LKP-tools(linux kernel 
>>> performance) on V9 patch series tested on Intel 4s Skylake platform.
>>
>> Hi,
>>
>> Thanks for reporting this benchmark results, but you mentioned the 
>> "V9 patch series" while responding to the v11 header series...
>> Were these tests done on v9 or v11 ?
>>
>> Cheers,
>> Laurent.
>>
>>>
>>> The regression result is sorted by the metric will-it-scale.per_thread_ops.
>>> Branch: Laurent-Dufour/Speculative-page-faults/20180316-151833 (V9 
>>> patch series) Commit id:
>>>     base commit: d55f34411b1b126429a823d06c3124c16283231f
>>>     head commit: 0355322b3577eeab7669066df42c550a56801110
>>> Benchmark suite: will-it-scale
>>> Download link:
>>> https://github.com/antonblanchard/will-it-scale/tree/master/tests
>>> Metrics:
>>>     will-it-scale.per_process_ops=processes/nr_cpu
>>>     will-it-scale.per_thread_ops=threads/nr_cpu
>>> test box: lkp-skl-4sp1(nr_cpu=192,memory=768G)
>>> THP: enable / disable
>>> nr_task: 100%
>>>
>>> 1. Regressions:
>>> a) THP enabled:
>>> testcase                        base            change          head       metric
>>> page_fault3/ enable THP         10092           -17.5%          8323       will-it-scale.per_thread_ops
>>> page_fault2/ enable THP          8300           -17.2%          6869       will-it-scale.per_thread_ops
>>> brk1/ enable THP                  957.67         -7.6%           885       will-it-scale.per_thread_ops
>>> page_fault3/ enable THP        172821            -5.3%        163692       will-it-scale.per_process_ops
>>> signal1/ enable THP              9125            -3.2%          8834       will-it-scale.per_process_ops
>>>
>>> b) THP disabled:
>>> testcase                        base            change          head       metric
>>> page_fault3/ disable THP        10107           -19.1%          8180       will-it-scale.per_thread_ops
>>> page_fault2/ disable THP         8432           -17.8%          6931       will-it-scale.per_thread_ops
>>> context_switch1/ disable THP   215389            -6.8%        200776       will-it-scale.per_thread_ops
>>> brk1/ disable THP                 939.67         -6.6%           877.33    will-it-scale.per_thread_ops
>>> page_fault3/ disable THP       173145            -4.7%        165064       will-it-scale.per_process_ops
>>> signal1/ disable THP             9162            -3.9%          8802       will-it-scale.per_process_ops
>>>
>>> 2. Improvements:
>>> a) THP enabled:
>>> testcase                        base            change          head       metric
>>> malloc1/ enable THP               66.33        +469.8%           383.67    will-it-scale.per_thread_ops
>>> writeseek3/ enable THP          2531             +4.5%          2646       will-it-scale.per_thread_ops
>>> signal1/ enable THP              989.33          +2.8%          1016       will-it-scale.per_thread_ops
>>>
>>> b) THP disabled:
>>> testcase                        base            change          head       metric
>>> malloc1/ disable THP              90.33        +417.3%           467.33    will-it-scale.per_thread_ops
>>> read2/ disable THP             58934            +39.2%         82060       will-it-scale.per_thread_ops
>>> page_fault1/ disable THP        8607            +36.4%         11736       will-it-scale.per_thread_ops
>>> read1/ disable THP            314063            +12.7%        353934       will-it-scale.per_thread_ops
>>> writeseek3/ disable THP         2452            +12.5%          2759       will-it-scale.per_thread_ops
>>> signal1/ disable THP             971.33          +5.5%          1024       will-it-scale.per_thread_ops
>>>
>>> Notes: for above values in column "change", the higher value means 
>>> that the related testcase result on head commit is better than that on base commit for this benchmark.
>>>
>>>
>>> Best regards
>>> Haiyan Song
>>>
>>> ________________________________________
>>> From: owner-linux-mm@kvack.org [owner-linux-mm@kvack.org] on behalf 
>>> of Laurent Dufour [ldufour@linux.vnet.ibm.com]
>>> Sent: Thursday, May 17, 2018 7:06 PM
>>> To: akpm@linux-foundation.org; mhocko@kernel.org; 
>>> peterz@infradead.org; kirill@shutemov.name; ak@linux.intel.com; 
>>> dave@stgolabs.net; jack@suse.cz; Matthew Wilcox; 
>>> khandual@linux.vnet.ibm.com; aneesh.kumar@linux.vnet.ibm.com; 
>>> benh@kernel.crashing.org; mpe@ellerman.id.au; paulus@samba.org; 
>>> Thomas Gleixner; Ingo Molnar; hpa@zytor.com; Will Deacon; Sergey 
>>> Senozhatsky; sergey.senozhatsky.work@gmail.com; Andrea Arcangeli; 
>>> Alexei Starovoitov; Wang, Kemi; Daniel Jordan; David Rientjes; 
>>> Jerome Glisse; Ganesh Mahendran; Minchan Kim; Punit Agrawal; vinayak 
>>> menon; Yang Shi
>>> Cc: linux-kernel@vger.kernel.org; linux-mm@kvack.org; 
>>> haren@linux.vnet.ibm.com; npiggin@gmail.com; bsingharora@gmail.com; 
>>> paulmck@linux.vnet.ibm.com; Tim Chen; linuxppc-dev@lists.ozlabs.org; 
>>> x86@kernel.org
>>> Subject: [PATCH v11 00/26] Speculative page faults
>>>
>>> This is a port on kernel 4.17 of the work done by Peter Zijlstra to 
>>> handle page fault without holding the mm semaphore [1].
>>>
>>> The idea is to try to handle user space page faults without holding 
>>> the mmap_sem. This should allow better concurrency for massively 
>>> threaded process since the page fault handler will not wait for 
>>> other threads memory layout change to be done, assuming that this 
>>> change is done in another part of the process's memory space. This 
>>> type page fault is named speculative page fault. If the speculative 
>>> page fault fails because of a concurrency is detected or because 
>>> underlying PMD or PTE tables are not yet allocating, it is failing its processing and a classic page fault is then tried.
>>>
>>> The speculative page fault (SPF) has to look for the VMA matching 
>>> the fault address without holding the mmap_sem, this is done by 
>>> introducing a rwlock which protects the access to the mm_rb tree. 
>>> Previously this was done using SRCU but it was introducing a lot of 
>>> scheduling to process the VMA's freeing operation which was hitting 
>>> the performance by 20% as reported by Kemi Wang [2]. Using a rwlock 
>>> to protect access to the mm_rb tree is limiting the locking 
>>> contention to these operations which are expected to be in a O(log 
>>> n) order. In addition to ensure that the VMA is not freed in our 
>>> back a reference count is added and 2 services (get_vma() and
>>> put_vma()) are introduced to handle the reference count. Once a VMA 
>>> is fetched from the RB tree using get_vma(), it must be later freed 
>>> using put_vma(). I can't see anymore the overhead I got while 
>>> will-it-scale benchmark anymore.
>>>
>>> The VMA's attributes checked during the speculative page fault 
>>> processing have to be protected against parallel changes. This is 
>>> done by using a per VMA sequence lock. This sequence lock allows the 
>>> speculative page fault handler to fast check for parallel changes in 
>>> progress and to abort the speculative page fault in that case.
>>>
>>> Once the VMA has been found, the speculative page fault handler 
>>> would check for the VMA's attributes to verify that the page fault 
>>> has to be handled correctly or not. Thus, the VMA is protected 
>>> through a sequence lock which allows fast detection of concurrent 
>>> VMA changes. If such a change is detected, the speculative page 
>>> fault is aborted and a *classic* page fault is tried.  VMA sequence 
>>> lockings are added when VMA attributes which are checked during the page fault are modified.
>>>
>>> When the PTE is fetched, the VMA is checked to see if it has been 
>>> changed, so once the page table is locked, the VMA is valid, so any 
>>> other changes leading to touching this PTE will need to lock the 
>>> page table, so no parallel change is possible at this time.
>>>
>>> The locking of the PTE is done with interrupts disabled, this allows 
>>> checking for the PMD to ensure that there is not an ongoing 
>>> collapsing operation. Since khugepaged is firstly set the PMD to 
>>> pmd_none and then is waiting for the other CPU to have caught the 
>>> IPI interrupt, if the pmd is valid at the time the PTE is locked, we 
>>> have the guarantee that the collapsing operation will have to wait on the PTE lock to move forward.
>>> This allows the SPF handler to map the PTE safely. If the PMD value 
>>> is different from the one recorded at the beginning of the SPF 
>>> operation, the classic page fault handler will be called to handle 
>>> the operation while holding the mmap_sem. As the PTE lock is done 
>>> with the interrupts disabled, the lock is done using spin_trylock() 
>>> to avoid dead lock when handling a page fault while a TLB invalidate 
>>> is requested by another CPU holding the PTE.
>>>
>>> In pseudo code, this could be seen as:
>>>     speculative_page_fault()
>>>     {
>>>             vma = get_vma()
>>>             check vma sequence count
>>>             check vma's support
>>>             disable interrupt
>>>                   check pgd,p4d,...,pte
>>>                   save pmd and pte in vmf
>>>                   save vma sequence counter in vmf
>>>             enable interrupt
>>>             check vma sequence count
>>>             handle_pte_fault(vma)
>>>                     ..
>>>                     page = alloc_page()
>>>                     pte_map_lock()
>>>                             disable interrupt
>>>                                     abort if sequence counter has changed
>>>                                     abort if pmd or pte has changed
>>>                                     pte map and lock
>>>                             enable interrupt
>>>                     if abort
>>>                        free page
>>>                        abort
>>>                     ...
>>>     }
>>>
>>>     arch_fault_handler()
>>>     {
>>>             if (speculative_page_fault(&vma))
>>>                goto done
>>>     again:
>>>             lock(mmap_sem)
>>>             vma = find_vma();
>>>             handle_pte_fault(vma);
>>>             if retry
>>>                unlock(mmap_sem)
>>>                goto again;
>>>     done:
>>>             handle fault error
>>>     }
>>>
>>> Support for THP is not done because when checking for the PMD, we 
>>> can be confused by an in progress collapsing operation done by 
>>> khugepaged. The issue is that pmd_none() could be true either if the 
>>> PMD is not already populated or if the underlying PTE are in the way 
>>> to be collapsed. So we cannot safely allocate a PMD if pmd_none() is true.
>>>
>>> This series add a new software performance event named 'speculative-faults'
>>> or 'spf'. It counts the number of successful page fault event 
>>> handled speculatively. When recording 'faults,spf' events, the 
>>> faults one is counting the total number of page fault events while 
>>> 'spf' is only counting the part of the faults processed speculatively.
>>>
>>> There are some trace events introduced by this series. They allow 
>>> identifying why the page faults were not processed speculatively. 
>>> This doesn't take in account the faults generated by a monothreaded 
>>> process which directly processed while holding the mmap_sem. This 
>>> trace events are grouped in a system named 'pagefault', they are:
>>>  - pagefault:spf_vma_changed : if the VMA has been changed in our 
>>> back
>>>  - pagefault:spf_vma_noanon : the vma->anon_vma field was not yet set.
>>>  - pagefault:spf_vma_notsup : the VMA's type is not supported
>>>  - pagefault:spf_vma_access : the VMA's access right are not 
>>> respected
>>>  - pagefault:spf_pmd_changed : the upper PMD pointer has changed in our
>>>    back.
>>>
>>> To record all the related events, the easier is to run perf with the 
>>> following arguments :
>>> $ perf stat -e 'faults,spf,pagefault:*' <command>
>>>
>>> There is also a dedicated vmstat counter showing the number of 
>>> successful page fault handled speculatively. I can be seen this way:
>>> $ grep speculative_pgfault /proc/vmstat
>>>
>>> This series builds on top of v4.16-mmotm-2018-04-13-17-28 and is 
>>> functional on x86, PowerPC and arm64.
>>>
>>> ---------------------
>>> Real Workload results
>>>
>>> As mentioned in previous email, we did non official runs using a 
>>> "popular in memory multithreaded database product" on 176 cores SMT8 
>>> Power system which showed a 30% improvements in the number of 
>>> transaction processed per second. This run has been done on the v6 
>>> series, but changes introduced in this new version should not impact the performance boost seen.
>>>
>>> Here are the perf data captured during 2 of these runs on top of the 
>>> v8
>>> series:
>>>                 vanilla         spf
>>> faults          89.418          101.364         +13%
>>> spf                n/a           97.989
>>>
>>> With the SPF kernel, most of the page fault were processed in a 
>>> speculative way.
>>>
>>> Ganesh Mahendran had backported the series on top of a 4.9 kernel 
>>> and gave it a try on an android device. He reported that the 
>>> application launch time was improved in average by 6%, and for large 
>>> applications (~100 threads) by 20%.
>>>
>>> Here are the launch time Ganesh mesured on Android 8.0 on top of a 
>>> Qcom
>>> MSM845 (8 cores) with 6GB (the less is better):
>>>
>>> Application                             4.9     4.9+spf delta
>>> com.tencent.mm                          416     389     -7%
>>> com.eg.android.AlipayGphone             1135    986     -13%
>>> com.tencent.mtt                         455     454     0%
>>> com.qqgame.hlddz                        1497    1409    -6%
>>> com.autonavi.minimap                    711     701     -1%
>>> com.tencent.tmgp.sgame                  788     748     -5%
>>> com.immomo.momo                         501     487     -3%
>>> com.tencent.peng                        2145    2112    -2%
>>> com.smile.gifmaker                      491     461     -6%
>>> com.baidu.BaiduMap                      479     366     -23%
>>> com.taobao.taobao                       1341    1198    -11%
>>> com.baidu.searchbox                     333     314     -6%
>>> com.tencent.mobileqq                    394     384     -3%
>>> com.sina.weibo                          907     906     0%
>>> com.youku.phone                         816     731     -11%
>>> com.happyelements.AndroidAnimal.qq      763     717     -6%
>>> com.UCMobile                            415     411     -1%
>>> com.tencent.tmgp.ak                     1464    1431    -2%
>>> com.tencent.qqmusic                     336     329     -2%
>>> com.sankuai.meituan                     1661    1302    -22%
>>> com.netease.cloudmusic                  1193    1200    1%
>>> air.tv.douyu.android                    4257    4152    -2%
>>>
>>> ------------------
>>> Benchmarks results
>>>
>>> Base kernel is v4.17.0-rc4-mm1
>>> SPF is BASE + this series
>>>
>>> Kernbench:
>>> ----------
>>> Here are the results on a 16 CPUs X86 guest using kernbench on a 
>>> 4.15 kernel (kernel is build 5 times):
>>>
>>> Average Half load -j 8
>>>                  Run    (std deviation)
>>>                  BASE                   SPF
>>> Elapsed Time     1448.65 (5.72312)      1455.84 (4.84951)       0.50%
>>> User    Time     10135.4 (30.3699)      10148.8 (31.1252)       0.13%
>>> System  Time     900.47  (2.81131)      923.28  (7.52779)       2.53%
>>> Percent CPU      761.4   (1.14018)      760.2   (0.447214)      -0.16%
>>> Context Switches 85380   (3419.52)      84748   (1904.44)       -0.74%
>>> Sleeps           105064  (1240.96)      105074  (337.612)       0.01%
>>>
>>> Average Optimal load -j 16
>>>                  Run    (std deviation)
>>>                  BASE                   SPF
>>> Elapsed Time     920.528 (10.1212)      927.404 (8.91789)       0.75%
>>> User    Time     11064.8 (981.142)      11085   (990.897)       0.18%
>>> System  Time     979.904 (84.0615)      1001.14 (82.5523)       2.17%
>>> Percent CPU      1089.5  (345.894)      1086.1  (343.545)       -0.31%
>>> Context Switches 159488  (78156.4)      158223  (77472.1)       -0.79%
>>> Sleeps           110566  (5877.49)      110388  (5617.75)       -0.16%
>>>
>>>
>>> During a run on the SPF, perf events were captured:
>>>  Performance counter stats for '../kernbench -M':
>>>          526743764      faults
>>>                210      spf
>>>                  3      pagefault:spf_vma_changed
>>>                  0      pagefault:spf_vma_noanon
>>>               2278      pagefault:spf_vma_notsup
>>>                  0      pagefault:spf_vma_access
>>>                  0      pagefault:spf_pmd_changed
>>>
>>> Very few speculative page faults were recorded as most of the 
>>> processes involved are monothreaded (sounds that on this 
>>> architecture some threads were created during the kernel build processing).
>>>
>>> Here are the kerbench results on a 80 CPUs Power8 system:
>>>
>>> Average Half load -j 40
>>>                  Run    (std deviation)
>>>                  BASE                   SPF
>>> Elapsed Time     117.152 (0.774642)     117.166 (0.476057)      0.01%
>>> User    Time     4478.52 (24.7688)      4479.76 (9.08555)       0.03%
>>> System  Time     131.104 (0.720056)     134.04  (0.708414)      2.24%
>>> Percent CPU      3934    (19.7104)      3937.2  (19.0184)       0.08%
>>> Context Switches 92125.4 (576.787)      92581.6 (198.622)       0.50%
>>> Sleeps           317923  (652.499)      318469  (1255.59)       0.17%
>>>
>>> Average Optimal load -j 80
>>>                  Run    (std deviation)
>>>                  BASE                   SPF
>>> Elapsed Time     107.73  (0.632416)     107.31  (0.584936)      -0.39%
>>> User    Time     5869.86 (1466.72)      5871.71 (1467.27)       0.03%
>>> System  Time     153.728 (23.8573)      157.153 (24.3704)       2.23%
>>> Percent CPU      5418.6  (1565.17)      5436.7  (1580.91)       0.33%
>>> Context Switches 223861  (138865)       225032  (139632)        0.52%
>>> Sleeps           330529  (13495.1)      332001  (14746.2)       0.45%
>>>
>>> During a run on the SPF, perf events were captured:
>>>  Performance counter stats for '../kernbench -M':
>>>          116730856      faults
>>>                  0      spf
>>>                  3      pagefault:spf_vma_changed
>>>                  0      pagefault:spf_vma_noanon
>>>                476      pagefault:spf_vma_notsup
>>>                  0      pagefault:spf_vma_access
>>>                  0      pagefault:spf_pmd_changed
>>>
>>> Most of the processes involved are monothreaded so SPF is not 
>>> activated but there is no impact on the performance.
>>>
>>> Ebizzy:
>>> -------
>>> The test is counting the number of records per second it can manage, 
>>> the higher is the best. I run it like this 'ebizzy -mTt <nrcpus>'. 
>>> To get consistent result I repeated the test 100 times and measure 
>>> the average result. The number is the record processes per second, 
>>> the higher is the best.
>>>
>>>                 BASE            SPF             delta
>>> 16 CPUs x86 VM  742.57          1490.24         100.69%
>>> 80 CPUs P8 node 13105.4         24174.23        84.46%
>>>
>>> Here are the performance counter read during a run on a 16 CPUs x86 VM:
>>>  Performance counter stats for './ebizzy -mTt 16':
>>>            1706379      faults
>>>            1674599      spf
>>>              30588      pagefault:spf_vma_changed
>>>                  0      pagefault:spf_vma_noanon
>>>                363      pagefault:spf_vma_notsup
>>>                  0      pagefault:spf_vma_access
>>>                  0      pagefault:spf_pmd_changed
>>>
>>> And the ones captured during a run on a 80 CPUs Power node:
>>>  Performance counter stats for './ebizzy -mTt 80':
>>>            1874773      faults
>>>            1461153      spf
>>>             413293      pagefault:spf_vma_changed
>>>                  0      pagefault:spf_vma_noanon
>>>                200      pagefault:spf_vma_notsup
>>>                  0      pagefault:spf_vma_access
>>>                  0      pagefault:spf_pmd_changed
>>>
>>> In ebizzy's case most of the page fault were handled in a 
>>> speculative way, leading the ebizzy performance boost.
>>>
>>> ------------------
>>> Changes since v10 (https://lkml.org/lkml/2018/4/17/572):
>>>  - Accounted for all review feedbacks from Punit Agrawal, Ganesh Mahendran
>>>    and Minchan Kim, hopefully.
>>>  - Remove unneeded check on CONFIG_SPECULATIVE_PAGE_FAULT in
>>>    __do_page_fault().
>>>  - Loop in pte_spinlock() and pte_map_lock() when pte try lock fails
>>>    instead
>>>    of aborting the speculative page fault handling. Dropping the now 
>>> useless
>>>    trace event pagefault:spf_pte_lock.
>>>  - No more try to reuse the fetched VMA during the speculative page fault
>>>    handling when retrying is needed. This adds a lot of complexity and
>>>    additional tests done didn't show a significant performance improvement.
>>>  - Convert IS_ENABLED(CONFIG_NUMA) back to #ifdef due to build error.
>>>
>>> [1] 
>>> http://linux-kernel.2935.n7.nabble.com/RFC-PATCH-0-6-Another-go-at-s
>>> peculative-page-faults-tt965642.html#none
>>> [2] https://patchwork.kernel.org/patch/9999687/
>>>
>>>
>>> Laurent Dufour (20):
>>>   mm: introduce CONFIG_SPECULATIVE_PAGE_FAULT
>>>   x86/mm: define ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT
>>>   powerpc/mm: set ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT
>>>   mm: introduce pte_spinlock for FAULT_FLAG_SPECULATIVE
>>>   mm: make pte_unmap_same compatible with SPF
>>>   mm: introduce INIT_VMA()
>>>   mm: protect VMA modifications using VMA sequence count
>>>   mm: protect mremap() against SPF hanlder
>>>   mm: protect SPF handler against anon_vma changes
>>>   mm: cache some VMA fields in the vm_fault structure
>>>   mm/migrate: Pass vm_fault pointer to migrate_misplaced_page()
>>>   mm: introduce __lru_cache_add_active_or_unevictable
>>>   mm: introduce __vm_normal_page()
>>>   mm: introduce __page_add_new_anon_rmap()
>>>   mm: protect mm_rb tree with a rwlock
>>>   mm: adding speculative page fault failure trace events
>>>   perf: add a speculative page fault sw event
>>>   perf tools: add support for the SPF perf event
>>>   mm: add speculative page fault vmstats
>>>   powerpc/mm: add speculative page fault
>>>
>>> Mahendran Ganesh (2):
>>>   arm64/mm: define ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT
>>>   arm64/mm: add speculative page fault
>>>
>>> Peter Zijlstra (4):
>>>   mm: prepare for FAULT_FLAG_SPECULATIVE
>>>   mm: VMA sequence count
>>>   mm: provide speculative fault infrastructure
>>>   x86/mm: add speculative pagefault handling
>>>
>>>  arch/arm64/Kconfig                    |   1 +
>>>  arch/arm64/mm/fault.c                 |  12 +
>>>  arch/powerpc/Kconfig                  |   1 +
>>>  arch/powerpc/mm/fault.c               |  16 +
>>>  arch/x86/Kconfig                      |   1 +
>>>  arch/x86/mm/fault.c                   |  27 +-
>>>  fs/exec.c                             |   2 +-
>>>  fs/proc/task_mmu.c                    |   5 +-
>>>  fs/userfaultfd.c                      |  17 +-
>>>  include/linux/hugetlb_inline.h        |   2 +-
>>>  include/linux/migrate.h               |   4 +-
>>>  include/linux/mm.h                    | 136 +++++++-
>>>  include/linux/mm_types.h              |   7 +
>>>  include/linux/pagemap.h               |   4 +-
>>>  include/linux/rmap.h                  |  12 +-
>>>  include/linux/swap.h                  |  10 +-
>>>  include/linux/vm_event_item.h         |   3 +
>>>  include/trace/events/pagefault.h      |  80 +++++
>>>  include/uapi/linux/perf_event.h       |   1 +
>>>  kernel/fork.c                         |   5 +-
>>>  mm/Kconfig                            |  22 ++
>>>  mm/huge_memory.c                      |   6 +-
>>>  mm/hugetlb.c                          |   2 +
>>>  mm/init-mm.c                          |   3 +
>>>  mm/internal.h                         |  20 ++
>>>  mm/khugepaged.c                       |   5 +
>>>  mm/madvise.c                          |   6 +-
>>>  mm/memory.c                           | 612 +++++++++++++++++++++++++++++-----
>>>  mm/mempolicy.c                        |  51 ++-
>>>  mm/migrate.c                          |   6 +-
>>>  mm/mlock.c                            |  13 +-
>>>  mm/mmap.c                             | 229 ++++++++++---
>>>  mm/mprotect.c                         |   4 +-
>>>  mm/mremap.c                           |  13 +
>>>  mm/nommu.c                            |   2 +-
>>>  mm/rmap.c                             |   5 +-
>>>  mm/swap.c                             |   6 +-
>>>  mm/swap_state.c                       |   8 +-
>>>  mm/vmstat.c                           |   5 +-
>>>  tools/include/uapi/linux/perf_event.h |   1 +
>>>  tools/perf/util/evsel.c               |   1 +
>>>  tools/perf/util/parse-events.c        |   4 +
>>>  tools/perf/util/parse-events.l        |   1 +
>>>  tools/perf/util/python.c              |   1 +
>>>  44 files changed, 1161 insertions(+), 211 deletions(-)  create mode 
>>> 100644 include/trace/events/pagefault.h
>>>
>>> --
>>> 2.7.4
>>>
>>>
>>
> 

WARNING: multiple messages have this Message-ID (diff)
From: "Wang, Kemi" <kemi.wang@intel.com>
To: Laurent Dufour <ldufour@linux.vnet.ibm.com>,
	"Song, HaiyanX" <haiyanx.song@intel.com>
Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"mhocko@kernel.org" <mhocko@kernel.org>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"kirill@shutemov.name" <kirill@shutemov.name>,
	"ak@linux.intel.com" <ak@linux.intel.com>,
	"dave@stgolabs.net" <dave@stgolabs.net>,
	"jack@suse.cz" <jack@suse.cz>,
	Matthew Wilcox <willy@infradead.org>,
	"khandual@linux.vnet.ibm.com" <khandual@linux.vnet.ibm.com>,
	"aneesh.kumar@linux.vnet.ibm.com"
	<aneesh.kumar@linux.vnet.ibm.com>,
	"benh@kernel.crashing.org" <benh@kernel.crashing.org>,
	"mpe@ellerman.id.au" <mpe@ellerman.id.au>,
	"paulus@samba.org" <paulus@samba.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "hpa@zytor.com" <hpa@zytor.com>,
	Will Deacon <will.deacon@arm.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	"sergey.senozhatsky.work@gmail.com"
	<sergey.senozhatsky.work@gmail.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	Daniel Jordan <daniel.m.jordan@oracle.com>,
	David Rientjes <rientjes@google.com>,
	Jerome Glisse <jglisse@redhat.com>,
	Ganesh Mahendran <opensource.ganesh@gmail.com>,
	Minchan Kim <minchan@kernel.org>,
	Punit Agrawal <punitagrawal@gmail.com>,
	vinayak menon <vinayakm.list@gmail.com>,
	Yang Shi <yang.shi@linux.alibaba.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"haren@linux.vnet.ibm.com" <haren@linux.vnet.ibm.com>,
	"npiggin@gmail.com" <npiggin@gmail.com>,
	"bsingharora@gmail.com" <bsingharora@gmail.com>,
	"paulmck@linux.vnet.ibm.com" <paulmck@linux.vnet.ibm.com>,
	Tim Chen <tim.c.chen@linux.intel.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"x86@kernel.org" <x86@kernel.org>
Subject: RE: [PATCH v11 00/26] Speculative page faults
Date: Mon, 28 May 2018 11:04:05 +0000	[thread overview]
Message-ID: <25017BF213203E48912DB000DE5F5E1E6B80D51D@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <316c6936-203d-67e9-c18c-6cf10d0d4bee@linux.vnet.ibm.com>

RnVsbCBydW4gd291bGQgdGFrZSBvbmUgb3IgdHdvIHdlZWtzIGRlcGVuZGVkIG9uIG91ciByZXNv
dXJjZSBhdmFpbGFibGUuIENvdWxkIHlvdSBwaWNrIHNvbWUgb25lcyB1cCwgZS5nLiB0aG9zZSBo
YXZlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24/DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t
DQpGcm9tOiBvd25lci1saW51eC1tbUBrdmFjay5vcmcgW21haWx0bzpvd25lci1saW51eC1tbUBr
dmFjay5vcmddIE9uIEJlaGFsZiBPZiBMYXVyZW50IER1Zm91cg0KU2VudDogTW9uZGF5LCBNYXkg
MjgsIDIwMTggNDo1NSBQTQ0KVG86IFNvbmcsIEhhaXlhblggPGhhaXlhbnguc29uZ0BpbnRlbC5j
b20+DQpDYzogYWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZzsgbWhvY2tvQGtlcm5lbC5vcmc7IHBl
dGVyekBpbmZyYWRlYWQub3JnOyBraXJpbGxAc2h1dGVtb3YubmFtZTsgYWtAbGludXguaW50ZWwu
Y29tOyBkYXZlQHN0Z29sYWJzLm5ldDsgamFja0BzdXNlLmN6OyBNYXR0aGV3IFdpbGNveCA8d2ls
bHlAaW5mcmFkZWFkLm9yZz47IGtoYW5kdWFsQGxpbnV4LnZuZXQuaWJtLmNvbTsgYW5lZXNoLmt1
bWFyQGxpbnV4LnZuZXQuaWJtLmNvbTsgYmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnOyBtcGVAZWxs
ZXJtYW4uaWQuYXU7IHBhdWx1c0BzYW1iYS5vcmc7IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51
dHJvbml4LmRlPjsgSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+OyBocGFAenl0b3IuY29t
OyBXaWxsIERlYWNvbiA8d2lsbC5kZWFjb25AYXJtLmNvbT47IFNlcmdleSBTZW5vemhhdHNreSA8
c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT47IHNlcmdleS5zZW5vemhhdHNreS53b3JrQGdt
YWlsLmNvbTsgQW5kcmVhIEFyY2FuZ2VsaSA8YWFyY2FuZ2VAcmVkaGF0LmNvbT47IEFsZXhlaSBT
dGFyb3ZvaXRvdiA8YWxleGVpLnN0YXJvdm9pdG92QGdtYWlsLmNvbT47IFdhbmcsIEtlbWkgPGtl
bWkud2FuZ0BpbnRlbC5jb20+OyBEYW5pZWwgSm9yZGFuIDxkYW5pZWwubS5qb3JkYW5Ab3JhY2xl
LmNvbT47IERhdmlkIFJpZW50amVzIDxyaWVudGplc0Bnb29nbGUuY29tPjsgSmVyb21lIEdsaXNz
ZSA8amdsaXNzZUByZWRoYXQuY29tPjsgR2FuZXNoIE1haGVuZHJhbiA8b3BlbnNvdXJjZS5nYW5l
c2hAZ21haWwuY29tPjsgTWluY2hhbiBLaW0gPG1pbmNoYW5Aa2VybmVsLm9yZz47IFB1bml0IEFn
cmF3YWwgPHB1bml0YWdyYXdhbEBnbWFpbC5jb20+OyB2aW5heWFrIG1lbm9uIDx2aW5heWFrbS5s
aXN0QGdtYWlsLmNvbT47IFlhbmcgU2hpIDx5YW5nLnNoaUBsaW51eC5hbGliYWJhLmNvbT47IGxp
bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LW1tQGt2YWNrLm9yZzsgaGFyZW5AbGlu
dXgudm5ldC5pYm0uY29tOyBucGlnZ2luQGdtYWlsLmNvbTsgYnNpbmdoYXJvcmFAZ21haWwuY29t
OyBwYXVsbWNrQGxpbnV4LnZuZXQuaWJtLmNvbTsgVGltIENoZW4gPHRpbS5jLmNoZW5AbGludXgu
aW50ZWwuY29tPjsgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IHg4NkBrZXJuZWwub3Jn
DQpTdWJqZWN0OiBSZTogW1BBVENIIHYxMSAwMC8yNl0gU3BlY3VsYXRpdmUgcGFnZSBmYXVsdHMN
Cg0KT24gMjgvMDUvMjAxOCAxMDoyMiwgSGFpeWFuIFNvbmcgd3JvdGU6DQo+IEhpIExhdXJlbnQs
DQo+IA0KPiBZZXMsIHRoZXNlIHRlc3RzIGFyZSBkb25lIG9uIFY5IHBhdGNoLg0KDQpEbyB5b3Ug
cGxhbiB0byBnaXZlIHRoaXMgVjExIGEgcnVuID8NCg0KPiANCj4gDQo+IEJlc3QgcmVnYXJkcywN
Cj4gSGFpeWFuIFNvbmcNCj4gDQo+IE9uIE1vbiwgTWF5IDI4LCAyMDE4IGF0IDA5OjUxOjM0QU0g
KzAyMDAsIExhdXJlbnQgRHVmb3VyIHdyb3RlOg0KPj4gT24gMjgvMDUvMjAxOCAwNzoyMywgU29u
ZywgSGFpeWFuWCB3cm90ZToNCj4+Pg0KPj4+IFNvbWUgcmVncmVzc2lvbiBhbmQgaW1wcm92ZW1l
bnRzIGlzIGZvdW5kIGJ5IExLUC10b29scyhsaW51eCBrZXJuZWwgDQo+Pj4gcGVyZm9ybWFuY2Up
IG9uIFY5IHBhdGNoIHNlcmllcyB0ZXN0ZWQgb24gSW50ZWwgNHMgU2t5bGFrZSBwbGF0Zm9ybS4N
Cj4+DQo+PiBIaSwNCj4+DQo+PiBUaGFua3MgZm9yIHJlcG9ydGluZyB0aGlzIGJlbmNobWFyayBy
ZXN1bHRzLCBidXQgeW91IG1lbnRpb25lZCB0aGUgDQo+PiAiVjkgcGF0Y2ggc2VyaWVzIiB3aGls
ZSByZXNwb25kaW5nIHRvIHRoZSB2MTEgaGVhZGVyIHNlcmllcy4uLg0KPj4gV2VyZSB0aGVzZSB0
ZXN0cyBkb25lIG9uIHY5IG9yIHYxMSA/DQo+Pg0KPj4gQ2hlZXJzLA0KPj4gTGF1cmVudC4NCj4+
DQo+Pj4NCj4+PiBUaGUgcmVncmVzc2lvbiByZXN1bHQgaXMgc29ydGVkIGJ5IHRoZSBtZXRyaWMg
d2lsbC1pdC1zY2FsZS5wZXJfdGhyZWFkX29wcy4NCj4+PiBCcmFuY2g6IExhdXJlbnQtRHVmb3Vy
L1NwZWN1bGF0aXZlLXBhZ2UtZmF1bHRzLzIwMTgwMzE2LTE1MTgzMyAoVjkgDQo+Pj4gcGF0Y2gg
c2VyaWVzKSBDb21taXQgaWQ6DQo+Pj4gICAgIGJhc2UgY29tbWl0OiBkNTVmMzQ0MTFiMWIxMjY0
MjlhODIzZDA2YzMxMjRjMTYyODMyMzFmDQo+Pj4gICAgIGhlYWQgY29tbWl0OiAwMzU1MzIyYjM1
NzdlZWFiNzY2OTA2NmRmNDJjNTUwYTU2ODAxMTEwDQo+Pj4gQmVuY2htYXJrIHN1aXRlOiB3aWxs
LWl0LXNjYWxlDQo+Pj4gRG93bmxvYWQgbGluazoNCj4+PiBodHRwczovL2dpdGh1Yi5jb20vYW50
b25ibGFuY2hhcmQvd2lsbC1pdC1zY2FsZS90cmVlL21hc3Rlci90ZXN0cw0KPj4+IE1ldHJpY3M6
DQo+Pj4gICAgIHdpbGwtaXQtc2NhbGUucGVyX3Byb2Nlc3Nfb3BzPXByb2Nlc3Nlcy9ucl9jcHUN
Cj4+PiAgICAgd2lsbC1pdC1zY2FsZS5wZXJfdGhyZWFkX29wcz10aHJlYWRzL25yX2NwdQ0KPj4+
IHRlc3QgYm94OiBsa3Atc2tsLTRzcDEobnJfY3B1PTE5MixtZW1vcnk9NzY4RykNCj4+PiBUSFA6
IGVuYWJsZSAvIGRpc2FibGUNCj4+PiBucl90YXNrOiAxMDAlDQo+Pj4NCj4+PiAxLiBSZWdyZXNz
aW9uczoNCj4+PiBhKSBUSFAgZW5hYmxlZDoNCj4+PiB0ZXN0Y2FzZSAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2UgICAgICAgICAgICBjaGFuZ2UgICAgICAgICAgaGVhZCAgICAgICBtZXRyaWMN
Cj4+PiBwYWdlX2ZhdWx0My8gZW5hYmxlIFRIUCAgICAgICAgIDEwMDkyICAgICAgICAgICAtMTcu
NSUgICAgICAgICAgODMyMyAgICAgICB3aWxsLWl0LXNjYWxlLnBlcl90aHJlYWRfb3BzDQo+Pj4g
cGFnZV9mYXVsdDIvIGVuYWJsZSBUSFAgICAgICAgICAgODMwMCAgICAgICAgICAgLTE3LjIlICAg
ICAgICAgIDY4NjkgICAgICAgd2lsbC1pdC1zY2FsZS5wZXJfdGhyZWFkX29wcw0KPj4+IGJyazEv
IGVuYWJsZSBUSFAgICAgICAgICAgICAgICAgICA5NTcuNjcgICAgICAgICAtNy42JSAgICAgICAg
ICAgODg1ICAgICAgIHdpbGwtaXQtc2NhbGUucGVyX3RocmVhZF9vcHMNCj4+PiBwYWdlX2ZhdWx0
My8gZW5hYmxlIFRIUCAgICAgICAgMTcyODIxICAgICAgICAgICAgLTUuMyUgICAgICAgIDE2MzY5
MiAgICAgICB3aWxsLWl0LXNjYWxlLnBlcl9wcm9jZXNzX29wcw0KPj4+IHNpZ25hbDEvIGVuYWJs
ZSBUSFAgICAgICAgICAgICAgIDkxMjUgICAgICAgICAgICAtMy4yJSAgICAgICAgICA4ODM0ICAg
ICAgIHdpbGwtaXQtc2NhbGUucGVyX3Byb2Nlc3Nfb3BzDQo+Pj4NCj4+PiBiKSBUSFAgZGlzYWJs
ZWQ6DQo+Pj4gdGVzdGNhc2UgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAg
Y2hhbmdlICAgICAgICAgIGhlYWQgICAgICAgbWV0cmljDQo+Pj4gcGFnZV9mYXVsdDMvIGRpc2Fi
bGUgVEhQICAgICAgICAxMDEwNyAgICAgICAgICAgLTE5LjElICAgICAgICAgIDgxODAgICAgICAg
d2lsbC1pdC1zY2FsZS5wZXJfdGhyZWFkX29wcw0KPj4+IHBhZ2VfZmF1bHQyLyBkaXNhYmxlIFRI
UCAgICAgICAgIDg0MzIgICAgICAgICAgIC0xNy44JSAgICAgICAgICA2OTMxICAgICAgIHdpbGwt
aXQtc2NhbGUucGVyX3RocmVhZF9vcHMNCj4+PiBjb250ZXh0X3N3aXRjaDEvIGRpc2FibGUgVEhQ
ICAgMjE1Mzg5ICAgICAgICAgICAgLTYuOCUgICAgICAgIDIwMDc3NiAgICAgICB3aWxsLWl0LXNj
YWxlLnBlcl90aHJlYWRfb3BzDQo+Pj4gYnJrMS8gZGlzYWJsZSBUSFAgICAgICAgICAgICAgICAg
IDkzOS42NyAgICAgICAgIC02LjYlICAgICAgICAgICA4NzcuMzMgICAgd2lsbC1pdC1zY2FsZS5w
ZXJfdGhyZWFkX29wcw0KPj4+IHBhZ2VfZmF1bHQzLyBkaXNhYmxlIFRIUCAgICAgICAxNzMxNDUg
ICAgICAgICAgICAtNC43JSAgICAgICAgMTY1MDY0ICAgICAgIHdpbGwtaXQtc2NhbGUucGVyX3By
b2Nlc3Nfb3BzDQo+Pj4gc2lnbmFsMS8gZGlzYWJsZSBUSFAgICAgICAgICAgICAgOTE2MiAgICAg
ICAgICAgIC0zLjklICAgICAgICAgIDg4MDIgICAgICAgd2lsbC1pdC1zY2FsZS5wZXJfcHJvY2Vz
c19vcHMNCj4+Pg0KPj4+IDIuIEltcHJvdmVtZW50czoNCj4+PiBhKSBUSFAgZW5hYmxlZDoNCj4+
PiB0ZXN0Y2FzZSAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICBjaGFuZ2Ug
ICAgICAgICAgaGVhZCAgICAgICBtZXRyaWMNCj4+PiBtYWxsb2MxLyBlbmFibGUgVEhQICAgICAg
ICAgICAgICAgNjYuMzMgICAgICAgICs0NjkuOCUgICAgICAgICAgIDM4My42NyAgICB3aWxsLWl0
LXNjYWxlLnBlcl90aHJlYWRfb3BzDQo+Pj4gd3JpdGVzZWVrMy8gZW5hYmxlIFRIUCAgICAgICAg
ICAyNTMxICAgICAgICAgICAgICs0LjUlICAgICAgICAgIDI2NDYgICAgICAgd2lsbC1pdC1zY2Fs
ZS5wZXJfdGhyZWFkX29wcw0KPj4+IHNpZ25hbDEvIGVuYWJsZSBUSFAgICAgICAgICAgICAgIDk4
OS4zMyAgICAgICAgICArMi44JSAgICAgICAgICAxMDE2ICAgICAgIHdpbGwtaXQtc2NhbGUucGVy
X3RocmVhZF9vcHMNCj4+Pg0KPj4+IGIpIFRIUCBkaXNhYmxlZDoNCj4+PiB0ZXN0Y2FzZSAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICBjaGFuZ2UgICAgICAgICAgaGVhZCAg
ICAgICBtZXRyaWMNCj4+PiBtYWxsb2MxLyBkaXNhYmxlIFRIUCAgICAgICAgICAgICAgOTAuMzMg
ICAgICAgICs0MTcuMyUgICAgICAgICAgIDQ2Ny4zMyAgICB3aWxsLWl0LXNjYWxlLnBlcl90aHJl
YWRfb3BzDQo+Pj4gcmVhZDIvIGRpc2FibGUgVEhQICAgICAgICAgICAgIDU4OTM0ICAgICAgICAg
ICAgKzM5LjIlICAgICAgICAgODIwNjAgICAgICAgd2lsbC1pdC1zY2FsZS5wZXJfdGhyZWFkX29w
cw0KPj4+IHBhZ2VfZmF1bHQxLyBkaXNhYmxlIFRIUCAgICAgICAgODYwNyAgICAgICAgICAgICsz
Ni40JSAgICAgICAgIDExNzM2ICAgICAgIHdpbGwtaXQtc2NhbGUucGVyX3RocmVhZF9vcHMNCj4+
PiByZWFkMS8gZGlzYWJsZSBUSFAgICAgICAgICAgICAzMTQwNjMgICAgICAgICAgICArMTIuNyUg
ICAgICAgIDM1MzkzNCAgICAgICB3aWxsLWl0LXNjYWxlLnBlcl90aHJlYWRfb3BzDQo+Pj4gd3Jp
dGVzZWVrMy8gZGlzYWJsZSBUSFAgICAgICAgICAyNDUyICAgICAgICAgICAgKzEyLjUlICAgICAg
ICAgIDI3NTkgICAgICAgd2lsbC1pdC1zY2FsZS5wZXJfdGhyZWFkX29wcw0KPj4+IHNpZ25hbDEv
IGRpc2FibGUgVEhQICAgICAgICAgICAgIDk3MS4zMyAgICAgICAgICArNS41JSAgICAgICAgICAx
MDI0ICAgICAgIHdpbGwtaXQtc2NhbGUucGVyX3RocmVhZF9vcHMNCj4+Pg0KPj4+IE5vdGVzOiBm
b3IgYWJvdmUgdmFsdWVzIGluIGNvbHVtbiAiY2hhbmdlIiwgdGhlIGhpZ2hlciB2YWx1ZSBtZWFu
cyANCj4+PiB0aGF0IHRoZSByZWxhdGVkIHRlc3RjYXNlIHJlc3VsdCBvbiBoZWFkIGNvbW1pdCBp
cyBiZXR0ZXIgdGhhbiB0aGF0IG9uIGJhc2UgY29tbWl0IGZvciB0aGlzIGJlbmNobWFyay4NCj4+
Pg0KPj4+DQo+Pj4gQmVzdCByZWdhcmRzDQo+Pj4gSGFpeWFuIFNvbmcNCj4+Pg0KPj4+IF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+PiBGcm9tOiBvd25lci1saW51
eC1tbUBrdmFjay5vcmcgW293bmVyLWxpbnV4LW1tQGt2YWNrLm9yZ10gb24gYmVoYWxmIA0KPj4+
IG9mIExhdXJlbnQgRHVmb3VyIFtsZHVmb3VyQGxpbnV4LnZuZXQuaWJtLmNvbV0NCj4+PiBTZW50
OiBUaHVyc2RheSwgTWF5IDE3LCAyMDE4IDc6MDYgUE0NCj4+PiBUbzogYWtwbUBsaW51eC1mb3Vu
ZGF0aW9uLm9yZzsgbWhvY2tvQGtlcm5lbC5vcmc7IA0KPj4+IHBldGVyekBpbmZyYWRlYWQub3Jn
OyBraXJpbGxAc2h1dGVtb3YubmFtZTsgYWtAbGludXguaW50ZWwuY29tOyANCj4+PiBkYXZlQHN0
Z29sYWJzLm5ldDsgamFja0BzdXNlLmN6OyBNYXR0aGV3IFdpbGNveDsgDQo+Pj4ga2hhbmR1YWxA
bGludXgudm5ldC5pYm0uY29tOyBhbmVlc2gua3VtYXJAbGludXgudm5ldC5pYm0uY29tOyANCj4+
PiBiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc7IG1wZUBlbGxlcm1hbi5pZC5hdTsgcGF1bHVzQHNh
bWJhLm9yZzsgDQo+Pj4gVGhvbWFzIEdsZWl4bmVyOyBJbmdvIE1vbG5hcjsgaHBhQHp5dG9yLmNv
bTsgV2lsbCBEZWFjb247IFNlcmdleSANCj4+PiBTZW5vemhhdHNreTsgc2VyZ2V5LnNlbm96aGF0
c2t5LndvcmtAZ21haWwuY29tOyBBbmRyZWEgQXJjYW5nZWxpOyANCj4+PiBBbGV4ZWkgU3Rhcm92
b2l0b3Y7IFdhbmcsIEtlbWk7IERhbmllbCBKb3JkYW47IERhdmlkIFJpZW50amVzOyANCj4+PiBK
ZXJvbWUgR2xpc3NlOyBHYW5lc2ggTWFoZW5kcmFuOyBNaW5jaGFuIEtpbTsgUHVuaXQgQWdyYXdh
bDsgdmluYXlhayANCj4+PiBtZW5vbjsgWWFuZyBTaGkNCj4+PiBDYzogbGludXgta2VybmVsQHZn
ZXIua2VybmVsLm9yZzsgbGludXgtbW1Aa3ZhY2sub3JnOyANCj4+PiBoYXJlbkBsaW51eC52bmV0
LmlibS5jb207IG5waWdnaW5AZ21haWwuY29tOyBic2luZ2hhcm9yYUBnbWFpbC5jb207IA0KPj4+
IHBhdWxtY2tAbGludXgudm5ldC5pYm0uY29tOyBUaW0gQ2hlbjsgbGludXhwcGMtZGV2QGxpc3Rz
Lm96bGFicy5vcmc7IA0KPj4+IHg4NkBrZXJuZWwub3JnDQo+Pj4gU3ViamVjdDogW1BBVENIIHYx
MSAwMC8yNl0gU3BlY3VsYXRpdmUgcGFnZSBmYXVsdHMNCj4+Pg0KPj4+IFRoaXMgaXMgYSBwb3J0
IG9uIGtlcm5lbCA0LjE3IG9mIHRoZSB3b3JrIGRvbmUgYnkgUGV0ZXIgWmlqbHN0cmEgdG8gDQo+
Pj4gaGFuZGxlIHBhZ2UgZmF1bHQgd2l0aG91dCBob2xkaW5nIHRoZSBtbSBzZW1hcGhvcmUgWzFd
Lg0KPj4+DQo+Pj4gVGhlIGlkZWEgaXMgdG8gdHJ5IHRvIGhhbmRsZSB1c2VyIHNwYWNlIHBhZ2Ug
ZmF1bHRzIHdpdGhvdXQgaG9sZGluZyANCj4+PiB0aGUgbW1hcF9zZW0uIFRoaXMgc2hvdWxkIGFs
bG93IGJldHRlciBjb25jdXJyZW5jeSBmb3IgbWFzc2l2ZWx5IA0KPj4+IHRocmVhZGVkIHByb2Nl
c3Mgc2luY2UgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlciB3aWxsIG5vdCB3YWl0IGZvciANCj4+PiBv
dGhlciB0aHJlYWRzIG1lbW9yeSBsYXlvdXQgY2hhbmdlIHRvIGJlIGRvbmUsIGFzc3VtaW5nIHRo
YXQgdGhpcyANCj4+PiBjaGFuZ2UgaXMgZG9uZSBpbiBhbm90aGVyIHBhcnQgb2YgdGhlIHByb2Nl
c3MncyBtZW1vcnkgc3BhY2UuIFRoaXMgDQo+Pj4gdHlwZSBwYWdlIGZhdWx0IGlzIG5hbWVkIHNw
ZWN1bGF0aXZlIHBhZ2UgZmF1bHQuIElmIHRoZSBzcGVjdWxhdGl2ZSANCj4+PiBwYWdlIGZhdWx0
IGZhaWxzIGJlY2F1c2Ugb2YgYSBjb25jdXJyZW5jeSBpcyBkZXRlY3RlZCBvciBiZWNhdXNlIA0K
Pj4+IHVuZGVybHlpbmcgUE1EIG9yIFBURSB0YWJsZXMgYXJlIG5vdCB5ZXQgYWxsb2NhdGluZywg
aXQgaXMgZmFpbGluZyBpdHMgcHJvY2Vzc2luZyBhbmQgYSBjbGFzc2ljIHBhZ2UgZmF1bHQgaXMg
dGhlbiB0cmllZC4NCj4+Pg0KPj4+IFRoZSBzcGVjdWxhdGl2ZSBwYWdlIGZhdWx0IChTUEYpIGhh
cyB0byBsb29rIGZvciB0aGUgVk1BIG1hdGNoaW5nIA0KPj4+IHRoZSBmYXVsdCBhZGRyZXNzIHdp
dGhvdXQgaG9sZGluZyB0aGUgbW1hcF9zZW0sIHRoaXMgaXMgZG9uZSBieSANCj4+PiBpbnRyb2R1
Y2luZyBhIHJ3bG9jayB3aGljaCBwcm90ZWN0cyB0aGUgYWNjZXNzIHRvIHRoZSBtbV9yYiB0cmVl
LiANCj4+PiBQcmV2aW91c2x5IHRoaXMgd2FzIGRvbmUgdXNpbmcgU1JDVSBidXQgaXQgd2FzIGlu
dHJvZHVjaW5nIGEgbG90IG9mIA0KPj4+IHNjaGVkdWxpbmcgdG8gcHJvY2VzcyB0aGUgVk1BJ3Mg
ZnJlZWluZyBvcGVyYXRpb24gd2hpY2ggd2FzIGhpdHRpbmcgDQo+Pj4gdGhlIHBlcmZvcm1hbmNl
IGJ5IDIwJSBhcyByZXBvcnRlZCBieSBLZW1pIFdhbmcgWzJdLiBVc2luZyBhIHJ3bG9jayANCj4+
PiB0byBwcm90ZWN0IGFjY2VzcyB0byB0aGUgbW1fcmIgdHJlZSBpcyBsaW1pdGluZyB0aGUgbG9j
a2luZyANCj4+PiBjb250ZW50aW9uIHRvIHRoZXNlIG9wZXJhdGlvbnMgd2hpY2ggYXJlIGV4cGVj
dGVkIHRvIGJlIGluIGEgTyhsb2cgDQo+Pj4gbikgb3JkZXIuIEluIGFkZGl0aW9uIHRvIGVuc3Vy
ZSB0aGF0IHRoZSBWTUEgaXMgbm90IGZyZWVkIGluIG91ciANCj4+PiBiYWNrIGEgcmVmZXJlbmNl
IGNvdW50IGlzIGFkZGVkIGFuZCAyIHNlcnZpY2VzIChnZXRfdm1hKCkgYW5kDQo+Pj4gcHV0X3Zt
YSgpKSBhcmUgaW50cm9kdWNlZCB0byBoYW5kbGUgdGhlIHJlZmVyZW5jZSBjb3VudC4gT25jZSBh
IFZNQSANCj4+PiBpcyBmZXRjaGVkIGZyb20gdGhlIFJCIHRyZWUgdXNpbmcgZ2V0X3ZtYSgpLCBp
dCBtdXN0IGJlIGxhdGVyIGZyZWVkIA0KPj4+IHVzaW5nIHB1dF92bWEoKS4gSSBjYW4ndCBzZWUg
YW55bW9yZSB0aGUgb3ZlcmhlYWQgSSBnb3Qgd2hpbGUgDQo+Pj4gd2lsbC1pdC1zY2FsZSBiZW5j
aG1hcmsgYW55bW9yZS4NCj4+Pg0KPj4+IFRoZSBWTUEncyBhdHRyaWJ1dGVzIGNoZWNrZWQgZHVy
aW5nIHRoZSBzcGVjdWxhdGl2ZSBwYWdlIGZhdWx0IA0KPj4+IHByb2Nlc3NpbmcgaGF2ZSB0byBi
ZSBwcm90ZWN0ZWQgYWdhaW5zdCBwYXJhbGxlbCBjaGFuZ2VzLiBUaGlzIGlzIA0KPj4+IGRvbmUg
YnkgdXNpbmcgYSBwZXIgVk1BIHNlcXVlbmNlIGxvY2suIFRoaXMgc2VxdWVuY2UgbG9jayBhbGxv
d3MgdGhlIA0KPj4+IHNwZWN1bGF0aXZlIHBhZ2UgZmF1bHQgaGFuZGxlciB0byBmYXN0IGNoZWNr
IGZvciBwYXJhbGxlbCBjaGFuZ2VzIGluIA0KPj4+IHByb2dyZXNzIGFuZCB0byBhYm9ydCB0aGUg
c3BlY3VsYXRpdmUgcGFnZSBmYXVsdCBpbiB0aGF0IGNhc2UuDQo+Pj4NCj4+PiBPbmNlIHRoZSBW
TUEgaGFzIGJlZW4gZm91bmQsIHRoZSBzcGVjdWxhdGl2ZSBwYWdlIGZhdWx0IGhhbmRsZXIgDQo+
Pj4gd291bGQgY2hlY2sgZm9yIHRoZSBWTUEncyBhdHRyaWJ1dGVzIHRvIHZlcmlmeSB0aGF0IHRo
ZSBwYWdlIGZhdWx0IA0KPj4+IGhhcyB0byBiZSBoYW5kbGVkIGNvcnJlY3RseSBvciBub3QuIFRo
dXMsIHRoZSBWTUEgaXMgcHJvdGVjdGVkIA0KPj4+IHRocm91Z2ggYSBzZXF1ZW5jZSBsb2NrIHdo
aWNoIGFsbG93cyBmYXN0IGRldGVjdGlvbiBvZiBjb25jdXJyZW50IA0KPj4+IFZNQSBjaGFuZ2Vz
LiBJZiBzdWNoIGEgY2hhbmdlIGlzIGRldGVjdGVkLCB0aGUgc3BlY3VsYXRpdmUgcGFnZSANCj4+
PiBmYXVsdCBpcyBhYm9ydGVkIGFuZCBhICpjbGFzc2ljKiBwYWdlIGZhdWx0IGlzIHRyaWVkLiAg
Vk1BIHNlcXVlbmNlIA0KPj4+IGxvY2tpbmdzIGFyZSBhZGRlZCB3aGVuIFZNQSBhdHRyaWJ1dGVz
IHdoaWNoIGFyZSBjaGVja2VkIGR1cmluZyB0aGUgcGFnZSBmYXVsdCBhcmUgbW9kaWZpZWQuDQo+
Pj4NCj4+PiBXaGVuIHRoZSBQVEUgaXMgZmV0Y2hlZCwgdGhlIFZNQSBpcyBjaGVja2VkIHRvIHNl
ZSBpZiBpdCBoYXMgYmVlbiANCj4+PiBjaGFuZ2VkLCBzbyBvbmNlIHRoZSBwYWdlIHRhYmxlIGlz
IGxvY2tlZCwgdGhlIFZNQSBpcyB2YWxpZCwgc28gYW55IA0KPj4+IG90aGVyIGNoYW5nZXMgbGVh
ZGluZyB0byB0b3VjaGluZyB0aGlzIFBURSB3aWxsIG5lZWQgdG8gbG9jayB0aGUgDQo+Pj4gcGFn
ZSB0YWJsZSwgc28gbm8gcGFyYWxsZWwgY2hhbmdlIGlzIHBvc3NpYmxlIGF0IHRoaXMgdGltZS4N
Cj4+Pg0KPj4+IFRoZSBsb2NraW5nIG9mIHRoZSBQVEUgaXMgZG9uZSB3aXRoIGludGVycnVwdHMg
ZGlzYWJsZWQsIHRoaXMgYWxsb3dzIA0KPj4+IGNoZWNraW5nIGZvciB0aGUgUE1EIHRvIGVuc3Vy
ZSB0aGF0IHRoZXJlIGlzIG5vdCBhbiBvbmdvaW5nIA0KPj4+IGNvbGxhcHNpbmcgb3BlcmF0aW9u
LiBTaW5jZSBraHVnZXBhZ2VkIGlzIGZpcnN0bHkgc2V0IHRoZSBQTUQgdG8gDQo+Pj4gcG1kX25v
bmUgYW5kIHRoZW4gaXMgd2FpdGluZyBmb3IgdGhlIG90aGVyIENQVSB0byBoYXZlIGNhdWdodCB0
aGUgDQo+Pj4gSVBJIGludGVycnVwdCwgaWYgdGhlIHBtZCBpcyB2YWxpZCBhdCB0aGUgdGltZSB0
aGUgUFRFIGlzIGxvY2tlZCwgd2UgDQo+Pj4gaGF2ZSB0aGUgZ3VhcmFudGVlIHRoYXQgdGhlIGNv
bGxhcHNpbmcgb3BlcmF0aW9uIHdpbGwgaGF2ZSB0byB3YWl0IG9uIHRoZSBQVEUgbG9jayB0byBt
b3ZlIGZvcndhcmQuDQo+Pj4gVGhpcyBhbGxvd3MgdGhlIFNQRiBoYW5kbGVyIHRvIG1hcCB0aGUg
UFRFIHNhZmVseS4gSWYgdGhlIFBNRCB2YWx1ZSANCj4+PiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUg
b25lIHJlY29yZGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIFNQRiANCj4+PiBvcGVyYXRpb24s
IHRoZSBjbGFzc2ljIHBhZ2UgZmF1bHQgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB0byBoYW5kbGUg
DQo+Pj4gdGhlIG9wZXJhdGlvbiB3aGlsZSBob2xkaW5nIHRoZSBtbWFwX3NlbS4gQXMgdGhlIFBU
RSBsb2NrIGlzIGRvbmUgDQo+Pj4gd2l0aCB0aGUgaW50ZXJydXB0cyBkaXNhYmxlZCwgdGhlIGxv
Y2sgaXMgZG9uZSB1c2luZyBzcGluX3RyeWxvY2soKSANCj4+PiB0byBhdm9pZCBkZWFkIGxvY2sg
d2hlbiBoYW5kbGluZyBhIHBhZ2UgZmF1bHQgd2hpbGUgYSBUTEIgaW52YWxpZGF0ZSANCj4+PiBp
cyByZXF1ZXN0ZWQgYnkgYW5vdGhlciBDUFUgaG9sZGluZyB0aGUgUFRFLg0KPj4+DQo+Pj4gSW4g
cHNldWRvIGNvZGUsIHRoaXMgY291bGQgYmUgc2VlbiBhczoNCj4+PiAgICAgc3BlY3VsYXRpdmVf
cGFnZV9mYXVsdCgpDQo+Pj4gICAgIHsNCj4+PiAgICAgICAgICAgICB2bWEgPSBnZXRfdm1hKCkN
Cj4+PiAgICAgICAgICAgICBjaGVjayB2bWEgc2VxdWVuY2UgY291bnQNCj4+PiAgICAgICAgICAg
ICBjaGVjayB2bWEncyBzdXBwb3J0DQo+Pj4gICAgICAgICAgICAgZGlzYWJsZSBpbnRlcnJ1cHQN
Cj4+PiAgICAgICAgICAgICAgICAgICBjaGVjayBwZ2QscDRkLC4uLixwdGUNCj4+PiAgICAgICAg
ICAgICAgICAgICBzYXZlIHBtZCBhbmQgcHRlIGluIHZtZg0KPj4+ICAgICAgICAgICAgICAgICAg
IHNhdmUgdm1hIHNlcXVlbmNlIGNvdW50ZXIgaW4gdm1mDQo+Pj4gICAgICAgICAgICAgZW5hYmxl
IGludGVycnVwdA0KPj4+ICAgICAgICAgICAgIGNoZWNrIHZtYSBzZXF1ZW5jZSBjb3VudA0KPj4+
ICAgICAgICAgICAgIGhhbmRsZV9wdGVfZmF1bHQodm1hKQ0KPj4+ICAgICAgICAgICAgICAgICAg
ICAgLi4NCj4+PiAgICAgICAgICAgICAgICAgICAgIHBhZ2UgPSBhbGxvY19wYWdlKCkNCj4+PiAg
ICAgICAgICAgICAgICAgICAgIHB0ZV9tYXBfbG9jaygpDQo+Pj4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpc2FibGUgaW50ZXJydXB0DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWJvcnQgaWYgc2VxdWVuY2UgY291bnRlciBoYXMgY2hhbmdlZA0KPj4+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0IGlmIHBtZCBvciBwdGUgaGFz
IGNoYW5nZWQNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdGUgbWFw
IGFuZCBsb2NrDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZSBpbnRlcnJ1
cHQNCj4+PiAgICAgICAgICAgICAgICAgICAgIGlmIGFib3J0DQo+Pj4gICAgICAgICAgICAgICAg
ICAgICAgICBmcmVlIHBhZ2UNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0DQo+Pj4g
ICAgICAgICAgICAgICAgICAgICAuLi4NCj4+PiAgICAgfQ0KPj4+DQo+Pj4gICAgIGFyY2hfZmF1
bHRfaGFuZGxlcigpDQo+Pj4gICAgIHsNCj4+PiAgICAgICAgICAgICBpZiAoc3BlY3VsYXRpdmVf
cGFnZV9mYXVsdCgmdm1hKSkNCj4+PiAgICAgICAgICAgICAgICBnb3RvIGRvbmUNCj4+PiAgICAg
YWdhaW46DQo+Pj4gICAgICAgICAgICAgbG9jayhtbWFwX3NlbSkNCj4+PiAgICAgICAgICAgICB2
bWEgPSBmaW5kX3ZtYSgpOw0KPj4+ICAgICAgICAgICAgIGhhbmRsZV9wdGVfZmF1bHQodm1hKTsN
Cj4+PiAgICAgICAgICAgICBpZiByZXRyeQ0KPj4+ICAgICAgICAgICAgICAgIHVubG9jayhtbWFw
X3NlbSkNCj4+PiAgICAgICAgICAgICAgICBnb3RvIGFnYWluOw0KPj4+ICAgICBkb25lOg0KPj4+
ICAgICAgICAgICAgIGhhbmRsZSBmYXVsdCBlcnJvcg0KPj4+ICAgICB9DQo+Pj4NCj4+PiBTdXBw
b3J0IGZvciBUSFAgaXMgbm90IGRvbmUgYmVjYXVzZSB3aGVuIGNoZWNraW5nIGZvciB0aGUgUE1E
LCB3ZSANCj4+PiBjYW4gYmUgY29uZnVzZWQgYnkgYW4gaW4gcHJvZ3Jlc3MgY29sbGFwc2luZyBv
cGVyYXRpb24gZG9uZSBieSANCj4+PiBraHVnZXBhZ2VkLiBUaGUgaXNzdWUgaXMgdGhhdCBwbWRf
bm9uZSgpIGNvdWxkIGJlIHRydWUgZWl0aGVyIGlmIHRoZSANCj4+PiBQTUQgaXMgbm90IGFscmVh
ZHkgcG9wdWxhdGVkIG9yIGlmIHRoZSB1bmRlcmx5aW5nIFBURSBhcmUgaW4gdGhlIHdheSANCj4+
PiB0byBiZSBjb2xsYXBzZWQuIFNvIHdlIGNhbm5vdCBzYWZlbHkgYWxsb2NhdGUgYSBQTUQgaWYg
cG1kX25vbmUoKSBpcyB0cnVlLg0KPj4+DQo+Pj4gVGhpcyBzZXJpZXMgYWRkIGEgbmV3IHNvZnR3
YXJlIHBlcmZvcm1hbmNlIGV2ZW50IG5hbWVkICdzcGVjdWxhdGl2ZS1mYXVsdHMnDQo+Pj4gb3Ig
J3NwZicuIEl0IGNvdW50cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgcGFnZSBmYXVsdCBldmVu
dCANCj4+PiBoYW5kbGVkIHNwZWN1bGF0aXZlbHkuIFdoZW4gcmVjb3JkaW5nICdmYXVsdHMsc3Bm
JyBldmVudHMsIHRoZSANCj4+PiBmYXVsdHMgb25lIGlzIGNvdW50aW5nIHRoZSB0b3RhbCBudW1i
ZXIgb2YgcGFnZSBmYXVsdCBldmVudHMgd2hpbGUgDQo+Pj4gJ3NwZicgaXMgb25seSBjb3VudGlu
ZyB0aGUgcGFydCBvZiB0aGUgZmF1bHRzIHByb2Nlc3NlZCBzcGVjdWxhdGl2ZWx5Lg0KPj4+DQo+
Pj4gVGhlcmUgYXJlIHNvbWUgdHJhY2UgZXZlbnRzIGludHJvZHVjZWQgYnkgdGhpcyBzZXJpZXMu
IFRoZXkgYWxsb3cgDQo+Pj4gaWRlbnRpZnlpbmcgd2h5IHRoZSBwYWdlIGZhdWx0cyB3ZXJlIG5v
dCBwcm9jZXNzZWQgc3BlY3VsYXRpdmVseS4gDQo+Pj4gVGhpcyBkb2Vzbid0IHRha2UgaW4gYWNj
b3VudCB0aGUgZmF1bHRzIGdlbmVyYXRlZCBieSBhIG1vbm90aHJlYWRlZCANCj4+PiBwcm9jZXNz
IHdoaWNoIGRpcmVjdGx5IHByb2Nlc3NlZCB3aGlsZSBob2xkaW5nIHRoZSBtbWFwX3NlbS4gVGhp
cyANCj4+PiB0cmFjZSBldmVudHMgYXJlIGdyb3VwZWQgaW4gYSBzeXN0ZW0gbmFtZWQgJ3BhZ2Vm
YXVsdCcsIHRoZXkgYXJlOg0KPj4+ICAtIHBhZ2VmYXVsdDpzcGZfdm1hX2NoYW5nZWQgOiBpZiB0
aGUgVk1BIGhhcyBiZWVuIGNoYW5nZWQgaW4gb3VyIA0KPj4+IGJhY2sNCj4+PiAgLSBwYWdlZmF1
bHQ6c3BmX3ZtYV9ub2Fub24gOiB0aGUgdm1hLT5hbm9uX3ZtYSBmaWVsZCB3YXMgbm90IHlldCBz
ZXQuDQo+Pj4gIC0gcGFnZWZhdWx0OnNwZl92bWFfbm90c3VwIDogdGhlIFZNQSdzIHR5cGUgaXMg
bm90IHN1cHBvcnRlZA0KPj4+ICAtIHBhZ2VmYXVsdDpzcGZfdm1hX2FjY2VzcyA6IHRoZSBWTUEn
cyBhY2Nlc3MgcmlnaHQgYXJlIG5vdCANCj4+PiByZXNwZWN0ZWQNCj4+PiAgLSBwYWdlZmF1bHQ6
c3BmX3BtZF9jaGFuZ2VkIDogdGhlIHVwcGVyIFBNRCBwb2ludGVyIGhhcyBjaGFuZ2VkIGluIG91
cg0KPj4+ICAgIGJhY2suDQo+Pj4NCj4+PiBUbyByZWNvcmQgYWxsIHRoZSByZWxhdGVkIGV2ZW50
cywgdGhlIGVhc2llciBpcyB0byBydW4gcGVyZiB3aXRoIHRoZSANCj4+PiBmb2xsb3dpbmcgYXJn
dW1lbnRzIDoNCj4+PiAkIHBlcmYgc3RhdCAtZSAnZmF1bHRzLHNwZixwYWdlZmF1bHQ6KicgPGNv
bW1hbmQ+DQo+Pj4NCj4+PiBUaGVyZSBpcyBhbHNvIGEgZGVkaWNhdGVkIHZtc3RhdCBjb3VudGVy
IHNob3dpbmcgdGhlIG51bWJlciBvZiANCj4+PiBzdWNjZXNzZnVsIHBhZ2UgZmF1bHQgaGFuZGxl
ZCBzcGVjdWxhdGl2ZWx5LiBJIGNhbiBiZSBzZWVuIHRoaXMgd2F5Og0KPj4+ICQgZ3JlcCBzcGVj
dWxhdGl2ZV9wZ2ZhdWx0IC9wcm9jL3Ztc3RhdA0KPj4+DQo+Pj4gVGhpcyBzZXJpZXMgYnVpbGRz
IG9uIHRvcCBvZiB2NC4xNi1tbW90bS0yMDE4LTA0LTEzLTE3LTI4IGFuZCBpcyANCj4+PiBmdW5j
dGlvbmFsIG9uIHg4NiwgUG93ZXJQQyBhbmQgYXJtNjQuDQo+Pj4NCj4+PiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCj4+PiBSZWFsIFdvcmtsb2FkIHJlc3VsdHMNCj4+Pg0KPj4+IEFzIG1lbnRpb25l
ZCBpbiBwcmV2aW91cyBlbWFpbCwgd2UgZGlkIG5vbiBvZmZpY2lhbCBydW5zIHVzaW5nIGEgDQo+
Pj4gInBvcHVsYXIgaW4gbWVtb3J5IG11bHRpdGhyZWFkZWQgZGF0YWJhc2UgcHJvZHVjdCIgb24g
MTc2IGNvcmVzIFNNVDggDQo+Pj4gUG93ZXIgc3lzdGVtIHdoaWNoIHNob3dlZCBhIDMwJSBpbXBy
b3ZlbWVudHMgaW4gdGhlIG51bWJlciBvZiANCj4+PiB0cmFuc2FjdGlvbiBwcm9jZXNzZWQgcGVy
IHNlY29uZC4gVGhpcyBydW4gaGFzIGJlZW4gZG9uZSBvbiB0aGUgdjYgDQo+Pj4gc2VyaWVzLCBi
dXQgY2hhbmdlcyBpbnRyb2R1Y2VkIGluIHRoaXMgbmV3IHZlcnNpb24gc2hvdWxkIG5vdCBpbXBh
Y3QgdGhlIHBlcmZvcm1hbmNlIGJvb3N0IHNlZW4uDQo+Pj4NCj4+PiBIZXJlIGFyZSB0aGUgcGVy
ZiBkYXRhIGNhcHR1cmVkIGR1cmluZyAyIG9mIHRoZXNlIHJ1bnMgb24gdG9wIG9mIHRoZSANCj4+
PiB2OA0KPj4+IHNlcmllczoNCj4+PiAgICAgICAgICAgICAgICAgdmFuaWxsYSAgICAgICAgIHNw
Zg0KPj4+IGZhdWx0cyAgICAgICAgICA4OS40MTggICAgICAgICAgMTAxLjM2NCAgICAgICAgICsx
MyUNCj4+PiBzcGYgICAgICAgICAgICAgICAgbi9hICAgICAgICAgICA5Ny45ODkNCj4+Pg0KPj4+
IFdpdGggdGhlIFNQRiBrZXJuZWwsIG1vc3Qgb2YgdGhlIHBhZ2UgZmF1bHQgd2VyZSBwcm9jZXNz
ZWQgaW4gYSANCj4+PiBzcGVjdWxhdGl2ZSB3YXkuDQo+Pj4NCj4+PiBHYW5lc2ggTWFoZW5kcmFu
IGhhZCBiYWNrcG9ydGVkIHRoZSBzZXJpZXMgb24gdG9wIG9mIGEgNC45IGtlcm5lbCANCj4+PiBh
bmQgZ2F2ZSBpdCBhIHRyeSBvbiBhbiBhbmRyb2lkIGRldmljZS4gSGUgcmVwb3J0ZWQgdGhhdCB0
aGUgDQo+Pj4gYXBwbGljYXRpb24gbGF1bmNoIHRpbWUgd2FzIGltcHJvdmVkIGluIGF2ZXJhZ2Ug
YnkgNiUsIGFuZCBmb3IgbGFyZ2UgDQo+Pj4gYXBwbGljYXRpb25zICh+MTAwIHRocmVhZHMpIGJ5
IDIwJS4NCj4+Pg0KPj4+IEhlcmUgYXJlIHRoZSBsYXVuY2ggdGltZSBHYW5lc2ggbWVzdXJlZCBv
biBBbmRyb2lkIDguMCBvbiB0b3Agb2YgYSANCj4+PiBRY29tDQo+Pj4gTVNNODQ1ICg4IGNvcmVz
KSB3aXRoIDZHQiAodGhlIGxlc3MgaXMgYmV0dGVyKToNCj4+Pg0KPj4+IEFwcGxpY2F0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0LjkgICAgIDQuOStzcGYgZGVsdGENCj4+PiBjb20u
dGVuY2VudC5tbSAgICAgICAgICAgICAgICAgICAgICAgICAgNDE2ICAgICAzODkgICAgIC03JQ0K
Pj4+IGNvbS5lZy5hbmRyb2lkLkFsaXBheUdwaG9uZSAgICAgICAgICAgICAxMTM1ICAgIDk4NiAg
ICAgLTEzJQ0KPj4+IGNvbS50ZW5jZW50Lm10dCAgICAgICAgICAgICAgICAgICAgICAgICA0NTUg
ICAgIDQ1NCAgICAgMCUNCj4+PiBjb20ucXFnYW1lLmhsZGR6ICAgICAgICAgICAgICAgICAgICAg
ICAgMTQ5NyAgICAxNDA5ICAgIC02JQ0KPj4+IGNvbS5hdXRvbmF2aS5taW5pbWFwICAgICAgICAg
ICAgICAgICAgICA3MTEgICAgIDcwMSAgICAgLTElDQo+Pj4gY29tLnRlbmNlbnQudG1ncC5zZ2Ft
ZSAgICAgICAgICAgICAgICAgIDc4OCAgICAgNzQ4ICAgICAtNSUNCj4+PiBjb20uaW1tb21vLm1v
bW8gICAgICAgICAgICAgICAgICAgICAgICAgNTAxICAgICA0ODcgICAgIC0zJQ0KPj4+IGNvbS50
ZW5jZW50LnBlbmcgICAgICAgICAgICAgICAgICAgICAgICAyMTQ1ICAgIDIxMTIgICAgLTIlDQo+
Pj4gY29tLnNtaWxlLmdpZm1ha2VyICAgICAgICAgICAgICAgICAgICAgIDQ5MSAgICAgNDYxICAg
ICAtNiUNCj4+PiBjb20uYmFpZHUuQmFpZHVNYXAgICAgICAgICAgICAgICAgICAgICAgNDc5ICAg
ICAzNjYgICAgIC0yMyUNCj4+PiBjb20udGFvYmFvLnRhb2JhbyAgICAgICAgICAgICAgICAgICAg
ICAgMTM0MSAgICAxMTk4ICAgIC0xMSUNCj4+PiBjb20uYmFpZHUuc2VhcmNoYm94ICAgICAgICAg
ICAgICAgICAgICAgMzMzICAgICAzMTQgICAgIC02JQ0KPj4+IGNvbS50ZW5jZW50Lm1vYmlsZXFx
ICAgICAgICAgICAgICAgICAgICAzOTQgICAgIDM4NCAgICAgLTMlDQo+Pj4gY29tLnNpbmEud2Vp
Ym8gICAgICAgICAgICAgICAgICAgICAgICAgIDkwNyAgICAgOTA2ICAgICAwJQ0KPj4+IGNvbS55
b3VrdS5waG9uZSAgICAgICAgICAgICAgICAgICAgICAgICA4MTYgICAgIDczMSAgICAgLTExJQ0K
Pj4+IGNvbS5oYXBweWVsZW1lbnRzLkFuZHJvaWRBbmltYWwucXEgICAgICA3NjMgICAgIDcxNyAg
ICAgLTYlDQo+Pj4gY29tLlVDTW9iaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxNSAg
ICAgNDExICAgICAtMSUNCj4+PiBjb20udGVuY2VudC50bWdwLmFrICAgICAgICAgICAgICAgICAg
ICAgMTQ2NCAgICAxNDMxICAgIC0yJQ0KPj4+IGNvbS50ZW5jZW50LnFxbXVzaWMgICAgICAgICAg
ICAgICAgICAgICAzMzYgICAgIDMyOSAgICAgLTIlDQo+Pj4gY29tLnNhbmt1YWkubWVpdHVhbiAg
ICAgICAgICAgICAgICAgICAgIDE2NjEgICAgMTMwMiAgICAtMjIlDQo+Pj4gY29tLm5ldGVhc2Uu
Y2xvdWRtdXNpYyAgICAgICAgICAgICAgICAgIDExOTMgICAgMTIwMCAgICAxJQ0KPj4+IGFpci50
di5kb3V5dS5hbmRyb2lkICAgICAgICAgICAgICAgICAgICA0MjU3ICAgIDQxNTIgICAgLTIlDQo+
Pj4NCj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0NCj4+PiBCZW5jaG1hcmtzIHJlc3VsdHMNCj4+Pg0K
Pj4+IEJhc2Uga2VybmVsIGlzIHY0LjE3LjAtcmM0LW1tMQ0KPj4+IFNQRiBpcyBCQVNFICsgdGhp
cyBzZXJpZXMNCj4+Pg0KPj4+IEtlcm5iZW5jaDoNCj4+PiAtLS0tLS0tLS0tDQo+Pj4gSGVyZSBh
cmUgdGhlIHJlc3VsdHMgb24gYSAxNiBDUFVzIFg4NiBndWVzdCB1c2luZyBrZXJuYmVuY2ggb24g
YSANCj4+PiA0LjE1IGtlcm5lbCAoa2VybmVsIGlzIGJ1aWxkIDUgdGltZXMpOg0KPj4+DQo+Pj4g
QXZlcmFnZSBIYWxmIGxvYWQgLWogOA0KPj4+ICAgICAgICAgICAgICAgICAgUnVuICAgIChzdGQg
ZGV2aWF0aW9uKQ0KPj4+ICAgICAgICAgICAgICAgICAgQkFTRSAgICAgICAgICAgICAgICAgICBT
UEYNCj4+PiBFbGFwc2VkIFRpbWUgICAgIDE0NDguNjUgKDUuNzIzMTIpICAgICAgMTQ1NS44NCAo
NC44NDk1MSkgICAgICAgMC41MCUNCj4+PiBVc2VyICAgIFRpbWUgICAgIDEwMTM1LjQgKDMwLjM2
OTkpICAgICAgMTAxNDguOCAoMzEuMTI1MikgICAgICAgMC4xMyUNCj4+PiBTeXN0ZW0gIFRpbWUg
ICAgIDkwMC40NyAgKDIuODExMzEpICAgICAgOTIzLjI4ICAoNy41Mjc3OSkgICAgICAgMi41MyUN
Cj4+PiBQZXJjZW50IENQVSAgICAgIDc2MS40ICAgKDEuMTQwMTgpICAgICAgNzYwLjIgICAoMC40
NDcyMTQpICAgICAgLTAuMTYlDQo+Pj4gQ29udGV4dCBTd2l0Y2hlcyA4NTM4MCAgICgzNDE5LjUy
KSAgICAgIDg0NzQ4ICAgKDE5MDQuNDQpICAgICAgIC0wLjc0JQ0KPj4+IFNsZWVwcyAgICAgICAg
ICAgMTA1MDY0ICAoMTI0MC45NikgICAgICAxMDUwNzQgICgzMzcuNjEyKSAgICAgICAwLjAxJQ0K
Pj4+DQo+Pj4gQXZlcmFnZSBPcHRpbWFsIGxvYWQgLWogMTYNCj4+PiAgICAgICAgICAgICAgICAg
IFJ1biAgICAoc3RkIGRldmlhdGlvbikNCj4+PiAgICAgICAgICAgICAgICAgIEJBU0UgICAgICAg
ICAgICAgICAgICAgU1BGDQo+Pj4gRWxhcHNlZCBUaW1lICAgICA5MjAuNTI4ICgxMC4xMjEyKSAg
ICAgIDkyNy40MDQgKDguOTE3ODkpICAgICAgIDAuNzUlDQo+Pj4gVXNlciAgICBUaW1lICAgICAx
MTA2NC44ICg5ODEuMTQyKSAgICAgIDExMDg1ICAgKDk5MC44OTcpICAgICAgIDAuMTglDQo+Pj4g
U3lzdGVtICBUaW1lICAgICA5NzkuOTA0ICg4NC4wNjE1KSAgICAgIDEwMDEuMTQgKDgyLjU1MjMp
ICAgICAgIDIuMTclDQo+Pj4gUGVyY2VudCBDUFUgICAgICAxMDg5LjUgICgzNDUuODk0KSAgICAg
IDEwODYuMSAgKDM0My41NDUpICAgICAgIC0wLjMxJQ0KPj4+IENvbnRleHQgU3dpdGNoZXMgMTU5
NDg4ICAoNzgxNTYuNCkgICAgICAxNTgyMjMgICg3NzQ3Mi4xKSAgICAgICAtMC43OSUNCj4+PiBT
bGVlcHMgICAgICAgICAgIDExMDU2NiAgKDU4NzcuNDkpICAgICAgMTEwMzg4ICAoNTYxNy43NSkg
ICAgICAgLTAuMTYlDQo+Pj4NCj4+Pg0KPj4+IER1cmluZyBhIHJ1biBvbiB0aGUgU1BGLCBwZXJm
IGV2ZW50cyB3ZXJlIGNhcHR1cmVkOg0KPj4+ICBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZv
ciAnLi4va2VybmJlbmNoIC1NJzoNCj4+PiAgICAgICAgICA1MjY3NDM3NjQgICAgICBmYXVsdHMN
Cj4+PiAgICAgICAgICAgICAgICAyMTAgICAgICBzcGYNCj4+PiAgICAgICAgICAgICAgICAgIDMg
ICAgICBwYWdlZmF1bHQ6c3BmX3ZtYV9jaGFuZ2VkDQo+Pj4gICAgICAgICAgICAgICAgICAwICAg
ICAgcGFnZWZhdWx0OnNwZl92bWFfbm9hbm9uDQo+Pj4gICAgICAgICAgICAgICAyMjc4ICAgICAg
cGFnZWZhdWx0OnNwZl92bWFfbm90c3VwDQo+Pj4gICAgICAgICAgICAgICAgICAwICAgICAgcGFn
ZWZhdWx0OnNwZl92bWFfYWNjZXNzDQo+Pj4gICAgICAgICAgICAgICAgICAwICAgICAgcGFnZWZh
dWx0OnNwZl9wbWRfY2hhbmdlZA0KPj4+DQo+Pj4gVmVyeSBmZXcgc3BlY3VsYXRpdmUgcGFnZSBm
YXVsdHMgd2VyZSByZWNvcmRlZCBhcyBtb3N0IG9mIHRoZSANCj4+PiBwcm9jZXNzZXMgaW52b2x2
ZWQgYXJlIG1vbm90aHJlYWRlZCAoc291bmRzIHRoYXQgb24gdGhpcyANCj4+PiBhcmNoaXRlY3R1
cmUgc29tZSB0aHJlYWRzIHdlcmUgY3JlYXRlZCBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9j
ZXNzaW5nKS4NCj4+Pg0KPj4+IEhlcmUgYXJlIHRoZSBrZXJiZW5jaCByZXN1bHRzIG9uIGEgODAg
Q1BVcyBQb3dlcjggc3lzdGVtOg0KPj4+DQo+Pj4gQXZlcmFnZSBIYWxmIGxvYWQgLWogNDANCj4+
PiAgICAgICAgICAgICAgICAgIFJ1biAgICAoc3RkIGRldmlhdGlvbikNCj4+PiAgICAgICAgICAg
ICAgICAgIEJBU0UgICAgICAgICAgICAgICAgICAgU1BGDQo+Pj4gRWxhcHNlZCBUaW1lICAgICAx
MTcuMTUyICgwLjc3NDY0MikgICAgIDExNy4xNjYgKDAuNDc2MDU3KSAgICAgIDAuMDElDQo+Pj4g
VXNlciAgICBUaW1lICAgICA0NDc4LjUyICgyNC43Njg4KSAgICAgIDQ0NzkuNzYgKDkuMDg1NTUp
ICAgICAgIDAuMDMlDQo+Pj4gU3lzdGVtICBUaW1lICAgICAxMzEuMTA0ICgwLjcyMDA1NikgICAg
IDEzNC4wNCAgKDAuNzA4NDE0KSAgICAgIDIuMjQlDQo+Pj4gUGVyY2VudCBDUFUgICAgICAzOTM0
ICAgICgxOS43MTA0KSAgICAgIDM5MzcuMiAgKDE5LjAxODQpICAgICAgIDAuMDglDQo+Pj4gQ29u
dGV4dCBTd2l0Y2hlcyA5MjEyNS40ICg1NzYuNzg3KSAgICAgIDkyNTgxLjYgKDE5OC42MjIpICAg
ICAgIDAuNTAlDQo+Pj4gU2xlZXBzICAgICAgICAgICAzMTc5MjMgICg2NTIuNDk5KSAgICAgIDMx
ODQ2OSAgKDEyNTUuNTkpICAgICAgIDAuMTclDQo+Pj4NCj4+PiBBdmVyYWdlIE9wdGltYWwgbG9h
ZCAtaiA4MA0KPj4+ICAgICAgICAgICAgICAgICAgUnVuICAgIChzdGQgZGV2aWF0aW9uKQ0KPj4+
ICAgICAgICAgICAgICAgICAgQkFTRSAgICAgICAgICAgICAgICAgICBTUEYNCj4+PiBFbGFwc2Vk
IFRpbWUgICAgIDEwNy43MyAgKDAuNjMyNDE2KSAgICAgMTA3LjMxICAoMC41ODQ5MzYpICAgICAg
LTAuMzklDQo+Pj4gVXNlciAgICBUaW1lICAgICA1ODY5Ljg2ICgxNDY2LjcyKSAgICAgIDU4NzEu
NzEgKDE0NjcuMjcpICAgICAgIDAuMDMlDQo+Pj4gU3lzdGVtICBUaW1lICAgICAxNTMuNzI4ICgy
My44NTczKSAgICAgIDE1Ny4xNTMgKDI0LjM3MDQpICAgICAgIDIuMjMlDQo+Pj4gUGVyY2VudCBD
UFUgICAgICA1NDE4LjYgICgxNTY1LjE3KSAgICAgIDU0MzYuNyAgKDE1ODAuOTEpICAgICAgIDAu
MzMlDQo+Pj4gQ29udGV4dCBTd2l0Y2hlcyAyMjM4NjEgICgxMzg4NjUpICAgICAgIDIyNTAzMiAg
KDEzOTYzMikgICAgICAgIDAuNTIlDQo+Pj4gU2xlZXBzICAgICAgICAgICAzMzA1MjkgICgxMzQ5
NS4xKSAgICAgIDMzMjAwMSAgKDE0NzQ2LjIpICAgICAgIDAuNDUlDQo+Pj4NCj4+PiBEdXJpbmcg
YSBydW4gb24gdGhlIFNQRiwgcGVyZiBldmVudHMgd2VyZSBjYXB0dXJlZDoNCj4+PiAgUGVyZm9y
bWFuY2UgY291bnRlciBzdGF0cyBmb3IgJy4uL2tlcm5iZW5jaCAtTSc6DQo+Pj4gICAgICAgICAg
MTE2NzMwODU2ICAgICAgZmF1bHRzDQo+Pj4gICAgICAgICAgICAgICAgICAwICAgICAgc3BmDQo+
Pj4gICAgICAgICAgICAgICAgICAzICAgICAgcGFnZWZhdWx0OnNwZl92bWFfY2hhbmdlZA0KPj4+
ICAgICAgICAgICAgICAgICAgMCAgICAgIHBhZ2VmYXVsdDpzcGZfdm1hX25vYW5vbg0KPj4+ICAg
ICAgICAgICAgICAgIDQ3NiAgICAgIHBhZ2VmYXVsdDpzcGZfdm1hX25vdHN1cA0KPj4+ICAgICAg
ICAgICAgICAgICAgMCAgICAgIHBhZ2VmYXVsdDpzcGZfdm1hX2FjY2Vzcw0KPj4+ICAgICAgICAg
ICAgICAgICAgMCAgICAgIHBhZ2VmYXVsdDpzcGZfcG1kX2NoYW5nZWQNCj4+Pg0KPj4+IE1vc3Qg
b2YgdGhlIHByb2Nlc3NlcyBpbnZvbHZlZCBhcmUgbW9ub3RocmVhZGVkIHNvIFNQRiBpcyBub3Qg
DQo+Pj4gYWN0aXZhdGVkIGJ1dCB0aGVyZSBpcyBubyBpbXBhY3Qgb24gdGhlIHBlcmZvcm1hbmNl
Lg0KPj4+DQo+Pj4gRWJpenp5Og0KPj4+IC0tLS0tLS0NCj4+PiBUaGUgdGVzdCBpcyBjb3VudGlu
ZyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgcGVyIHNlY29uZCBpdCBjYW4gbWFuYWdlLCANCj4+PiB0
aGUgaGlnaGVyIGlzIHRoZSBiZXN0LiBJIHJ1biBpdCBsaWtlIHRoaXMgJ2ViaXp6eSAtbVR0IDxu
cmNwdXM+Jy4gDQo+Pj4gVG8gZ2V0IGNvbnNpc3RlbnQgcmVzdWx0IEkgcmVwZWF0ZWQgdGhlIHRl
c3QgMTAwIHRpbWVzIGFuZCBtZWFzdXJlIA0KPj4+IHRoZSBhdmVyYWdlIHJlc3VsdC4gVGhlIG51
bWJlciBpcyB0aGUgcmVjb3JkIHByb2Nlc3NlcyBwZXIgc2Vjb25kLCANCj4+PiB0aGUgaGlnaGVy
IGlzIHRoZSBiZXN0Lg0KPj4+DQo+Pj4gICAgICAgICAgICAgICAgIEJBU0UgICAgICAgICAgICBT
UEYgICAgICAgICAgICAgZGVsdGENCj4+PiAxNiBDUFVzIHg4NiBWTSAgNzQyLjU3ICAgICAgICAg
IDE0OTAuMjQgICAgICAgICAxMDAuNjklDQo+Pj4gODAgQ1BVcyBQOCBub2RlIDEzMTA1LjQgICAg
ICAgICAyNDE3NC4yMyAgICAgICAgODQuNDYlDQo+Pj4NCj4+PiBIZXJlIGFyZSB0aGUgcGVyZm9y
bWFuY2UgY291bnRlciByZWFkIGR1cmluZyBhIHJ1biBvbiBhIDE2IENQVXMgeDg2IFZNOg0KPj4+
ICBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnLi9lYml6enkgLW1UdCAxNic6DQo+Pj4g
ICAgICAgICAgICAxNzA2Mzc5ICAgICAgZmF1bHRzDQo+Pj4gICAgICAgICAgICAxNjc0NTk5ICAg
ICAgc3BmDQo+Pj4gICAgICAgICAgICAgIDMwNTg4ICAgICAgcGFnZWZhdWx0OnNwZl92bWFfY2hh
bmdlZA0KPj4+ICAgICAgICAgICAgICAgICAgMCAgICAgIHBhZ2VmYXVsdDpzcGZfdm1hX25vYW5v
bg0KPj4+ICAgICAgICAgICAgICAgIDM2MyAgICAgIHBhZ2VmYXVsdDpzcGZfdm1hX25vdHN1cA0K
Pj4+ICAgICAgICAgICAgICAgICAgMCAgICAgIHBhZ2VmYXVsdDpzcGZfdm1hX2FjY2Vzcw0KPj4+
ICAgICAgICAgICAgICAgICAgMCAgICAgIHBhZ2VmYXVsdDpzcGZfcG1kX2NoYW5nZWQNCj4+Pg0K
Pj4+IEFuZCB0aGUgb25lcyBjYXB0dXJlZCBkdXJpbmcgYSBydW4gb24gYSA4MCBDUFVzIFBvd2Vy
IG5vZGU6DQo+Pj4gIFBlcmZvcm1hbmNlIGNvdW50ZXIgc3RhdHMgZm9yICcuL2ViaXp6eSAtbVR0
IDgwJzoNCj4+PiAgICAgICAgICAgIDE4NzQ3NzMgICAgICBmYXVsdHMNCj4+PiAgICAgICAgICAg
IDE0NjExNTMgICAgICBzcGYNCj4+PiAgICAgICAgICAgICA0MTMyOTMgICAgICBwYWdlZmF1bHQ6
c3BmX3ZtYV9jaGFuZ2VkDQo+Pj4gICAgICAgICAgICAgICAgICAwICAgICAgcGFnZWZhdWx0OnNw
Zl92bWFfbm9hbm9uDQo+Pj4gICAgICAgICAgICAgICAgMjAwICAgICAgcGFnZWZhdWx0OnNwZl92
bWFfbm90c3VwDQo+Pj4gICAgICAgICAgICAgICAgICAwICAgICAgcGFnZWZhdWx0OnNwZl92bWFf
YWNjZXNzDQo+Pj4gICAgICAgICAgICAgICAgICAwICAgICAgcGFnZWZhdWx0OnNwZl9wbWRfY2hh
bmdlZA0KPj4+DQo+Pj4gSW4gZWJpenp5J3MgY2FzZSBtb3N0IG9mIHRoZSBwYWdlIGZhdWx0IHdl
cmUgaGFuZGxlZCBpbiBhIA0KPj4+IHNwZWN1bGF0aXZlIHdheSwgbGVhZGluZyB0aGUgZWJpenp5
IHBlcmZvcm1hbmNlIGJvb3N0Lg0KPj4+DQo+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gQ2hh
bmdlcyBzaW5jZSB2MTAgKGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE4LzQvMTcvNTcyKToNCj4+
PiAgLSBBY2NvdW50ZWQgZm9yIGFsbCByZXZpZXcgZmVlZGJhY2tzIGZyb20gUHVuaXQgQWdyYXdh
bCwgR2FuZXNoIE1haGVuZHJhbg0KPj4+ICAgIGFuZCBNaW5jaGFuIEtpbSwgaG9wZWZ1bGx5Lg0K
Pj4+ICAtIFJlbW92ZSB1bm5lZWRlZCBjaGVjayBvbiBDT05GSUdfU1BFQ1VMQVRJVkVfUEFHRV9G
QVVMVCBpbg0KPj4+ICAgIF9fZG9fcGFnZV9mYXVsdCgpLg0KPj4+ICAtIExvb3AgaW4gcHRlX3Nw
aW5sb2NrKCkgYW5kIHB0ZV9tYXBfbG9jaygpIHdoZW4gcHRlIHRyeSBsb2NrIGZhaWxzDQo+Pj4g
ICAgaW5zdGVhZA0KPj4+ICAgIG9mIGFib3J0aW5nIHRoZSBzcGVjdWxhdGl2ZSBwYWdlIGZhdWx0
IGhhbmRsaW5nLiBEcm9wcGluZyB0aGUgbm93IA0KPj4+IHVzZWxlc3MNCj4+PiAgICB0cmFjZSBl
dmVudCBwYWdlZmF1bHQ6c3BmX3B0ZV9sb2NrLg0KPj4+ICAtIE5vIG1vcmUgdHJ5IHRvIHJldXNl
IHRoZSBmZXRjaGVkIFZNQSBkdXJpbmcgdGhlIHNwZWN1bGF0aXZlIHBhZ2UgZmF1bHQNCj4+PiAg
ICBoYW5kbGluZyB3aGVuIHJldHJ5aW5nIGlzIG5lZWRlZC4gVGhpcyBhZGRzIGEgbG90IG9mIGNv
bXBsZXhpdHkgYW5kDQo+Pj4gICAgYWRkaXRpb25hbCB0ZXN0cyBkb25lIGRpZG4ndCBzaG93IGEg
c2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuDQo+Pj4gIC0gQ29udmVydCBJU19F
TkFCTEVEKENPTkZJR19OVU1BKSBiYWNrIHRvICNpZmRlZiBkdWUgdG8gYnVpbGQgZXJyb3IuDQo+
Pj4NCj4+PiBbMV0gDQo+Pj4gaHR0cDovL2xpbnV4LWtlcm5lbC4yOTM1Lm43Lm5hYmJsZS5jb20v
UkZDLVBBVENILTAtNi1Bbm90aGVyLWdvLWF0LXMNCj4+PiBwZWN1bGF0aXZlLXBhZ2UtZmF1bHRz
LXR0OTY1NjQyLmh0bWwjbm9uZQ0KPj4+IFsyXSBodHRwczovL3BhdGNod29yay5rZXJuZWwub3Jn
L3BhdGNoLzk5OTk2ODcvDQo+Pj4NCj4+Pg0KPj4+IExhdXJlbnQgRHVmb3VyICgyMCk6DQo+Pj4g
ICBtbTogaW50cm9kdWNlIENPTkZJR19TUEVDVUxBVElWRV9QQUdFX0ZBVUxUDQo+Pj4gICB4ODYv
bW06IGRlZmluZSBBUkNIX1NVUFBPUlRTX1NQRUNVTEFUSVZFX1BBR0VfRkFVTFQNCj4+PiAgIHBv
d2VycGMvbW06IHNldCBBUkNIX1NVUFBPUlRTX1NQRUNVTEFUSVZFX1BBR0VfRkFVTFQNCj4+PiAg
IG1tOiBpbnRyb2R1Y2UgcHRlX3NwaW5sb2NrIGZvciBGQVVMVF9GTEFHX1NQRUNVTEFUSVZFDQo+
Pj4gICBtbTogbWFrZSBwdGVfdW5tYXBfc2FtZSBjb21wYXRpYmxlIHdpdGggU1BGDQo+Pj4gICBt
bTogaW50cm9kdWNlIElOSVRfVk1BKCkNCj4+PiAgIG1tOiBwcm90ZWN0IFZNQSBtb2RpZmljYXRp
b25zIHVzaW5nIFZNQSBzZXF1ZW5jZSBjb3VudA0KPj4+ICAgbW06IHByb3RlY3QgbXJlbWFwKCkg
YWdhaW5zdCBTUEYgaGFubGRlcg0KPj4+ICAgbW06IHByb3RlY3QgU1BGIGhhbmRsZXIgYWdhaW5z
dCBhbm9uX3ZtYSBjaGFuZ2VzDQo+Pj4gICBtbTogY2FjaGUgc29tZSBWTUEgZmllbGRzIGluIHRo
ZSB2bV9mYXVsdCBzdHJ1Y3R1cmUNCj4+PiAgIG1tL21pZ3JhdGU6IFBhc3Mgdm1fZmF1bHQgcG9p
bnRlciB0byBtaWdyYXRlX21pc3BsYWNlZF9wYWdlKCkNCj4+PiAgIG1tOiBpbnRyb2R1Y2UgX19s
cnVfY2FjaGVfYWRkX2FjdGl2ZV9vcl91bmV2aWN0YWJsZQ0KPj4+ICAgbW06IGludHJvZHVjZSBf
X3ZtX25vcm1hbF9wYWdlKCkNCj4+PiAgIG1tOiBpbnRyb2R1Y2UgX19wYWdlX2FkZF9uZXdfYW5v
bl9ybWFwKCkNCj4+PiAgIG1tOiBwcm90ZWN0IG1tX3JiIHRyZWUgd2l0aCBhIHJ3bG9jaw0KPj4+
ICAgbW06IGFkZGluZyBzcGVjdWxhdGl2ZSBwYWdlIGZhdWx0IGZhaWx1cmUgdHJhY2UgZXZlbnRz
DQo+Pj4gICBwZXJmOiBhZGQgYSBzcGVjdWxhdGl2ZSBwYWdlIGZhdWx0IHN3IGV2ZW50DQo+Pj4g
ICBwZXJmIHRvb2xzOiBhZGQgc3VwcG9ydCBmb3IgdGhlIFNQRiBwZXJmIGV2ZW50DQo+Pj4gICBt
bTogYWRkIHNwZWN1bGF0aXZlIHBhZ2UgZmF1bHQgdm1zdGF0cw0KPj4+ICAgcG93ZXJwYy9tbTog
YWRkIHNwZWN1bGF0aXZlIHBhZ2UgZmF1bHQNCj4+Pg0KPj4+IE1haGVuZHJhbiBHYW5lc2ggKDIp
Og0KPj4+ICAgYXJtNjQvbW06IGRlZmluZSBBUkNIX1NVUFBPUlRTX1NQRUNVTEFUSVZFX1BBR0Vf
RkFVTFQNCj4+PiAgIGFybTY0L21tOiBhZGQgc3BlY3VsYXRpdmUgcGFnZSBmYXVsdA0KPj4+DQo+
Pj4gUGV0ZXIgWmlqbHN0cmEgKDQpOg0KPj4+ICAgbW06IHByZXBhcmUgZm9yIEZBVUxUX0ZMQUdf
U1BFQ1VMQVRJVkUNCj4+PiAgIG1tOiBWTUEgc2VxdWVuY2UgY291bnQNCj4+PiAgIG1tOiBwcm92
aWRlIHNwZWN1bGF0aXZlIGZhdWx0IGluZnJhc3RydWN0dXJlDQo+Pj4gICB4ODYvbW06IGFkZCBz
cGVjdWxhdGl2ZSBwYWdlZmF1bHQgaGFuZGxpbmcNCj4+Pg0KPj4+ICBhcmNoL2FybTY0L0tjb25m
aWcgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4+PiAgYXJjaC9hcm02NC9tbS9mYXVsdC5j
ICAgICAgICAgICAgICAgICB8ICAxMiArDQo+Pj4gIGFyY2gvcG93ZXJwYy9LY29uZmlnICAgICAg
ICAgICAgICAgICAgfCAgIDEgKw0KPj4+ICBhcmNoL3Bvd2VycGMvbW0vZmF1bHQuYyAgICAgICAg
ICAgICAgIHwgIDE2ICsNCj4+PiAgYXJjaC94ODYvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMSArDQo+Pj4gIGFyY2gveDg2L21tL2ZhdWx0LmMgICAgICAgICAgICAgICAgICAgfCAg
MjcgKy0NCj4+PiAgZnMvZXhlYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr
LQ0KPj4+ICBmcy9wcm9jL3Rhc2tfbW11LmMgICAgICAgICAgICAgICAgICAgIHwgICA1ICstDQo+
Pj4gIGZzL3VzZXJmYXVsdGZkLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0NCj4+PiAg
aW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oICAgICAgICB8ICAgMiArLQ0KPj4+ICBpbmNs
dWRlL2xpbnV4L21pZ3JhdGUuaCAgICAgICAgICAgICAgIHwgICA0ICstDQo+Pj4gIGluY2x1ZGUv
bGludXgvbW0uaCAgICAgICAgICAgICAgICAgICAgfCAxMzYgKysrKysrKy0NCj4+PiAgaW5jbHVk
ZS9saW51eC9tbV90eXBlcy5oICAgICAgICAgICAgICB8ICAgNyArDQo+Pj4gIGluY2x1ZGUvbGlu
dXgvcGFnZW1hcC5oICAgICAgICAgICAgICAgfCAgIDQgKy0NCj4+PiAgaW5jbHVkZS9saW51eC9y
bWFwLmggICAgICAgICAgICAgICAgICB8ICAxMiArLQ0KPj4+ICBpbmNsdWRlL2xpbnV4L3N3YXAu
aCAgICAgICAgICAgICAgICAgIHwgIDEwICstDQo+Pj4gIGluY2x1ZGUvbGludXgvdm1fZXZlbnRf
aXRlbS5oICAgICAgICAgfCAgIDMgKw0KPj4+ICBpbmNsdWRlL3RyYWNlL2V2ZW50cy9wYWdlZmF1
bHQuaCAgICAgIHwgIDgwICsrKysrDQo+Pj4gIGluY2x1ZGUvdWFwaS9saW51eC9wZXJmX2V2ZW50
LmggICAgICAgfCAgIDEgKw0KPj4+ICBrZXJuZWwvZm9yay5jICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA1ICstDQo+Pj4gIG1tL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgMjIgKysNCj4+PiAgbW0vaHVnZV9tZW1vcnkuYyAgICAgICAgICAgICAgICAgICAgICB8ICAg
NiArLQ0KPj4+ICBtbS9odWdldGxiLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsN
Cj4+PiAgbW0vaW5pdC1tbS5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArDQo+Pj4g
IG1tL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjAgKysNCj4+PiAgbW0v
a2h1Z2VwYWdlZC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArDQo+Pj4gIG1tL21hZHZp
c2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0NCj4+PiAgbW0vbWVtb3J5LmMg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDYxMiArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKy0tLS0tDQo+Pj4gIG1tL21lbXBvbGljeS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAg
NTEgKystDQo+Pj4gIG1tL21pZ3JhdGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYg
Ky0NCj4+PiAgbW0vbWxvY2suYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArLQ0K
Pj4+ICBtbS9tbWFwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjI5ICsrKysrKysr
KystLS0NCj4+PiAgbW0vbXByb3RlY3QuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCAr
LQ0KPj4+ICBtbS9tcmVtYXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsNCj4+
PiAgbW0vbm9tbXUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQ0KPj4+ICBt
bS9ybWFwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstDQo+Pj4gIG1tL3N3
YXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0NCj4+PiAgbW0vc3dhcF9z
dGF0ZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQ0KPj4+ICBtbS92bXN0YXQuYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstDQo+Pj4gIHRvb2xzL2luY2x1ZGUvdWFw
aS9saW51eC9wZXJmX2V2ZW50LmggfCAgIDEgKw0KPj4+ICB0b29scy9wZXJmL3V0aWwvZXZzZWwu
YyAgICAgICAgICAgICAgIHwgICAxICsNCj4+PiAgdG9vbHMvcGVyZi91dGlsL3BhcnNlLWV2ZW50
cy5jICAgICAgICB8ICAgNCArDQo+Pj4gIHRvb2xzL3BlcmYvdXRpbC9wYXJzZS1ldmVudHMubCAg
ICAgICAgfCAgIDEgKw0KPj4+ICB0b29scy9wZXJmL3V0aWwvcHl0aG9uLmMgICAgICAgICAgICAg
IHwgICAxICsNCj4+PiAgNDQgZmlsZXMgY2hhbmdlZCwgMTE2MSBpbnNlcnRpb25zKCspLCAyMTEg
ZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZSANCj4+PiAxMDA2NDQgaW5jbHVkZS90cmFjZS9ldmVu
dHMvcGFnZWZhdWx0LmgNCj4+Pg0KPj4+IC0tDQo+Pj4gMi43LjQNCj4+Pg0KPj4+DQo+Pg0KPiAN
Cg0K

  reply	other threads:[~2018-05-28 12:10 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-17 11:06 [PATCH v11 00/26] Speculative page faults Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 01/26] mm: introduce CONFIG_SPECULATIVE_PAGE_FAULT Laurent Dufour
2018-05-17 16:36   ` Randy Dunlap
2018-05-17 17:19     ` Matthew Wilcox
2018-05-17 17:34       ` Randy Dunlap
2018-05-22 12:00         ` [FIX PATCH " Laurent Dufour
2018-05-22 11:44       ` [PATCH " Laurent Dufour
2018-05-22 11:47     ` Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 02/26] x86/mm: define ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 03/26] powerpc/mm: set ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 04/26] arm64/mm: define ARCH_SUPPORTS_SPECULATIVE_PAGE_FAULT Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 05/26] mm: prepare for FAULT_FLAG_SPECULATIVE Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 06/26] mm: introduce pte_spinlock " Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 07/26] mm: make pte_unmap_same compatible with SPF Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 08/26] mm: introduce INIT_VMA() Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 09/26] mm: VMA sequence count Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 10/26] mm: protect VMA modifications using " Laurent Dufour
2018-11-05  7:04   ` vinayak menon
2018-11-05  7:04     ` vinayak menon
2018-11-05 18:22     ` Laurent Dufour
2018-11-05 18:22       ` Laurent Dufour
2018-11-05 18:22       ` Laurent Dufour
2018-11-06  9:28       ` Vinayak Menon
2018-11-06  9:28         ` Vinayak Menon
2018-11-06  9:28         ` Vinayak Menon
2018-05-17 11:06 ` [PATCH v11 11/26] mm: protect mremap() against SPF hanlder Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 12/26] mm: protect SPF handler against anon_vma changes Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 13/26] mm: cache some VMA fields in the vm_fault structure Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 14/26] mm/migrate: Pass vm_fault pointer to migrate_misplaced_page() Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 15/26] mm: introduce __lru_cache_add_active_or_unevictable Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 16/26] mm: introduce __vm_normal_page() Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 17/26] mm: introduce __page_add_new_anon_rmap() Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 18/26] mm: protect mm_rb tree with a rwlock Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 19/26] mm: provide speculative fault infrastructure Laurent Dufour
2018-07-24 14:26   ` zhong jiang
2018-07-24 14:26     ` zhong jiang
2018-07-24 16:10     ` Laurent Dufour
2018-07-25  9:04       ` zhong jiang
2018-07-25  9:04         ` zhong jiang
2018-07-25 10:44         ` Laurent Dufour
2018-07-25 11:23           ` zhong jiang
2018-07-25 11:23             ` zhong jiang
2018-05-17 11:06 ` [PATCH v11 20/26] mm: adding speculative page fault failure trace events Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 21/26] perf: add a speculative page fault sw event Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 22/26] perf tools: add support for the SPF perf event Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 23/26] mm: add speculative page fault vmstats Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 24/26] x86/mm: add speculative pagefault handling Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 25/26] powerpc/mm: add speculative page fault Laurent Dufour
2018-05-17 11:06 ` [PATCH v11 26/26] arm64/mm: " Laurent Dufour
2018-05-28  5:23 ` [PATCH v11 00/26] Speculative page faults Song, HaiyanX
2018-05-28  5:23   ` Song, HaiyanX
2018-05-28  7:51   ` Laurent Dufour
2018-05-28  8:22     ` Haiyan Song
2018-05-28  8:54       ` Laurent Dufour
2018-05-28 11:04         ` Wang, Kemi [this message]
2018-05-28 11:04           ` Wang, Kemi
2018-06-11  7:49         ` Song, HaiyanX
2018-06-11  7:49           ` Song, HaiyanX
2018-06-11 15:15           ` Laurent Dufour
2018-06-19  9:16             ` Haiyan Song
2018-06-19  9:16               ` Haiyan Song
2018-07-02  8:59           ` Laurent Dufour
2018-07-04  3:23             ` Song, HaiyanX
2018-07-04  3:23               ` Song, HaiyanX
2018-07-04  7:51               ` Laurent Dufour
2018-07-04  7:51                 ` Laurent Dufour
2018-07-11 17:05                 ` Laurent Dufour
2018-07-11 17:05                   ` Laurent Dufour
2018-07-13  3:56                   ` Song, HaiyanX
2018-07-17  9:36                     ` Laurent Dufour
2018-07-17  9:36                       ` Laurent Dufour
2018-08-03  6:36                       ` Song, HaiyanX
2018-08-03  6:45                         ` Song, HaiyanX
2018-08-22 14:23                         ` Laurent Dufour
2018-08-22 14:23                           ` Laurent Dufour
2018-09-18  6:42                           ` Song, HaiyanX
2018-11-05 10:42 ` Balbir Singh
2018-11-05 10:42   ` Balbir Singh
2018-11-05 16:08   ` Laurent Dufour
2018-11-05 16:08     ` Laurent Dufour
2018-11-05 16:08     ` Laurent Dufour
2019-01-11 15:43 Vinayak Menon
2019-01-14 13:19 ` Vinayak Menon
2019-01-15  8:24   ` Laurent Dufour
2019-01-16 11:41     ` Vinayak Menon
2019-01-16 13:31       ` Laurent Dufour
2019-01-16 11:41     ` Vinayak Menon
2019-01-17 15:51       ` zhong jiang
2019-01-17 15:51         ` zhong jiang
2019-01-18  9:29         ` Laurent Dufour
2019-01-18 15:41           ` zhong jiang
2019-01-18 15:41             ` zhong jiang
2019-01-18 15:51             ` Laurent Dufour
2019-01-18 16:24         ` Laurent Dufour
2019-01-19 17:05           ` zhong jiang
2019-01-19 17:05             ` zhong jiang
2019-01-22 16:22           ` zhong jiang
2019-01-22 16:22             ` zhong jiang
2019-01-24  8:20             ` Laurent Dufour
2019-01-25 12:32               ` zhong jiang
2019-01-25 12:32                 ` zhong jiang
2019-01-28  8:59                 ` Laurent Dufour
2019-01-28 14:09                   ` zhong jiang
2019-01-28 14:09                     ` zhong jiang
2019-01-28 15:45                     ` Laurent Dufour
2019-01-29 15:40                       ` zhong jiang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=25017BF213203E48912DB000DE5F5E1E6B80D51D@SHSMSX101.ccr.corp.intel.com \
    --to=kemi.wang@intel.com \
    --cc=aarcange@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexei.starovoitov@gmail.com \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=benh@kernel.crashing.org \
    --cc=bsingharora@gmail.com \
    --cc=daniel.m.jordan@oracle.com \
    --cc=dave@stgolabs.net \
    --cc=haiyanx.song@intel.com \
    --cc=haren@linux.vnet.ibm.com \
    --cc=hpa@zytor.com \
    --cc=jack@suse.cz \
    --cc=jglisse@redhat.com \
    --cc=khandual@linux.vnet.ibm.com \
    --cc=kirill@shutemov.name \
    --cc=ldufour@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mhocko@kernel.org \
    --cc=minchan@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=opensource.ganesh@gmail.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=paulus@samba.org \
    --cc=peterz@infradead.org \
    --cc=punitagrawal@gmail.com \
    --cc=rientjes@google.com \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=tim.c.chen@linux.intel.com \
    --cc=vinayakm.list@gmail.com \
    --cc=will.deacon@arm.com \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    --cc=yang.shi@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.