<!DOCTYPE html>
<html lang='en'>
<head>
<title>sssd.git - sssd with jhrozek's patches</title>
<meta name='generator' content='cgit '/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit-data/cgit.css'/>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://fedorapeople.org/cgit/jhrozek/public_git/sssd.git/atom/src/sss_client/sudo?h=sssd-1.9.2-132.el6' type='application/atom+xml'/>
<link rel='vcs-git' href='git://fedorapeople.org/home/fedora/jhrozek/public_git/sssd.git' title='sssd.git Git repository'/>
<link rel='vcs-git' href='ssh://fedorapeople.org/home/fedora/jhrozek/public_git/sssd.git' title='sssd.git Git repository'/>
<link rel='vcs-git' href='https://fedorapeople.org/cgit/jhrozek/public_git/sssd.git' title='sssd.git Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/cgit/'><img src='/cgit-data/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/cgit/'>index</a> : <a title='sssd.git' href='/cgit/jhrozek/public_git/sssd.git/'>sssd.git</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='4ddfec6b995d6673dad93cf3dd849550dde1594c'/><select name='h' onchange='this.form.submit();'>
<option value='adlookup'>adlookup</option>
<option value='aramco'>aramco</option>
<option value='bycert'>bycert</option>
<option value='dpstr'>dpstr</option>
<option value='experimental-fo'>experimental-fo</option>
<option value='f23'>f23</option>
<option value='intg_test'>intg_test</option>
<option value='krb5test'>krb5test</option>
<option value='ldapdebug'>ldapdebug</option>
<option value='master'>master</option>
<option value='mdbtest'>mdbtest</option>
<option value='memberof'>memberof</option>
<option value='misc'>misc</option>
<option value='mpgfix'>mpgfix</option>
<option value='nonroot'>nonroot</option>
<option value='nonroot-libcap'>nonroot-libcap</option>
<option value='nsscrash19'>nsscrash19</option>
<option value='oneway'>oneway</option>
<option value='override-pb'>override-pb</option>
<option value='pk11child'>pk11child</option>
<option value='pwrap'>pwrap</option>
<option value='refactor'>refactor</option>
<option value='refactor-fo'>refactor-fo</option>
<option value='review'>review</option>
<option value='review-negcache'>review-negcache</option>
<option value='review-sc'>review-sc</option>
<option value='rhel-6.7'>rhel-6.7</option>
<option value='rhel-6.8'>rhel-6.8</option>
<option value='rhel-7.1'>rhel-7.1</option>
<option value='rhel-7.2'>rhel-7.2</option>
<option value='rhel5.10'>rhel5.10</option>
<option value='rhel5.8'>rhel5.8</option>
<option value='rhel5.9'>rhel5.9</option>
<option value='rhel6.3'>rhel6.3</option>
<option value='rhel6.4'>rhel6.4</option>
<option value='rhel6.5'>rhel6.5</option>
<option value='rhel6.6'>rhel6.6</option>
<option value='rhel7.0'>rhel7.0</option>
<option value='sbus-1-11'>sbus-1-11</option>
<option value='selinux'>selinux</option>
<option value='sid_index'>sid_index</option>
<option value='simo_ccname'>simo_ccname</option>
<option value='srvbackport'>srvbackport</option>
<option value='sssd-1-10'>sssd-1-10</option>
<option value='sssd-1-11'>sssd-1-11</option>
<option value='sssd-1-12'>sssd-1-12</option>
<option value='sssd-1-5'>sssd-1-5</option>
<option value='sssd-1-8'>sssd-1-8</option>
<option value='sssd-1-9'>sssd-1-9</option>
<option value='subdomfo'>subdomfo</option>
<option value='sysdb'>sysdb</option>
<option value='tests'>tests</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>sssd with jhrozek's patches</td><td class='sub right'>Jakub Hrozek</td></tr></table>
<table class='tabs'><tr><td>
<a href='/cgit/jhrozek/public_git/sssd.git/?h=sssd-1.9.2-132.el6'>summary</a><a href='/cgit/jhrozek/public_git/sssd.git/refs/?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>refs</a><a href='/cgit/jhrozek/public_git/sssd.git/log/src/sss_client/sudo?h=sssd-1.9.2-132.el6'>log</a><a href='/cgit/jhrozek/public_git/sssd.git/tree/src/sss_client/sudo?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>tree</a><a class='active' href='/cgit/jhrozek/public_git/sssd.git/commit/src/sss_client/sudo?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>commit</a><a href='/cgit/jhrozek/public_git/sssd.git/diff/src/sss_client/sudo?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>diff</a><a href='/cgit/jhrozek/public_git/sssd.git/stats/src/sss_client/sudo?h=sssd-1.9.2-132.el6'>stats</a></td><td class='form'><form class='right' method='get' action='/cgit/jhrozek/public_git/sssd.git/log/src/sss_client/sudo'>
<input type='hidden' name='h' value='sssd-1.9.2-132.el6'/><input type='hidden' name='id' value='4ddfec6b995d6673dad93cf3dd849550dde1594c'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/cgit/jhrozek/public_git/sssd.git/commit/?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>root</a>/<a href='/cgit/jhrozek/public_git/sssd.git/commit/src?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>src</a>/<a href='/cgit/jhrozek/public_git/sssd.git/commit/src/sss_client?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>sss_client</a>/<a href='/cgit/jhrozek/public_git/sssd.git/commit/src/sss_client/sudo?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>sudo</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='h' value='sssd-1.9.2-132.el6'/><input type='hidden' name='id' value='4ddfec6b995d6673dad93cf3dd849550dde1594c'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><table summary='commit info' class='commit-info'>
<tr><th>author</th><td>Jakub Hrozek &lt;jhrozek@redhat.com&gt;</td><td class='right'>2012-04-02 00:17:15 +0200</td></tr>
<tr><th>committer</th><td>Stephen Gallagher &lt;sgallagh@redhat.com&gt;</td><td class='right'>2012-04-05 15:21:34 -0700</td></tr>
<tr><th>commit</th><td colspan='2' class='sha1'><a href='/cgit/jhrozek/public_git/sssd.git/commit/src/sss_client/sudo?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>4ddfec6b995d6673dad93cf3dd849550dde1594c</a> (<a href='/cgit/jhrozek/public_git/sssd.git/patch/src/sss_client/sudo?id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>patch</a>)</td></tr>
<tr><th>tree</th><td colspan='2' class='sha1'><a href='/cgit/jhrozek/public_git/sssd.git/tree/?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>ec783303fb405e974a18d4ce14e4ac4e72079235</a> /<a href='/cgit/jhrozek/public_git/sssd.git/tree/src/sss_client/sudo?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>src/sss_client/sudo</a></td></tr>
<tr><th>parent</th><td colspan='2' class='sha1'><a href='/cgit/jhrozek/public_git/sssd.git/commit/src/sss_client/sudo?h=sssd-1.9.2-132.el6&amp;id=6e8b4d412a9a28bb79f575b9970c3fd7876609ac'>6e8b4d412a9a28bb79f575b9970c3fd7876609ac</a> (<a href='/cgit/jhrozek/public_git/sssd.git/diff/src/sss_client/sudo?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c&amp;id2=6e8b4d412a9a28bb79f575b9970c3fd7876609ac'>diff</a>)</td></tr><tr><th>download</th><td colspan='2' class='sha1'><a href='/cgit/jhrozek/public_git/sssd.git/snapshot/sssd-4ddfec6b995d6673dad93cf3dd849550dde1594c.tar.gz'>sssd-4ddfec6b995d6673dad93cf3dd849550dde1594c.tar.gz</a><br/><a href='/cgit/jhrozek/public_git/sssd.git/snapshot/sssd-4ddfec6b995d6673dad93cf3dd849550dde1594c.tar.xz'>sssd-4ddfec6b995d6673dad93cf3dd849550dde1594c.tar.xz</a><br/><a href='/cgit/jhrozek/public_git/sssd.git/snapshot/sssd-4ddfec6b995d6673dad93cf3dd849550dde1594c.zip'>sssd-4ddfec6b995d6673dad93cf3dd849550dde1594c.zip</a><br/></td></tr></table>
<div class='commit-subject'>Use HTML_TIMESTAMP instead of HTML_FOOTER_DESCRIPTION</div><div class='commit-msg'>https://fedorahosted.org/sssd/ticket/1271
</div><div class='diffstat-header'><a href='/cgit/jhrozek/public_git/sssd.git/diff/?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>Diffstat</a> (limited to 'src/sss_client/sudo')</div><table summary='diffstat' class='diffstat'><tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/cgit/jhrozek/public_git/sssd.git/diff/src/sss_client/sudo/sss_sudo.doxy.in?h=sssd-1.9.2-132.el6&amp;id=4ddfec6b995d6673dad93cf3dd849550dde1594c'>src/sss_client/sudo/sss_sudo.doxy.in</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='7%'><tr><td class='add' style='width: 57.1%;'/><td class='rem' style='width: 42.9%;'/><td class='none' style='width: 0.0%;'/></tr></table></td></tr>
</table><div class='diffstat-summary'>1 files changed, 4 insertions, 3 deletions</div><table summary='diff' class='diff'><tr><td><div class='head'>diff --git a/src/sss_client/sudo/sss_sudo.doxy.in b/src/sss_client/sudo/sss_sudo.doxy.in id='n164' href='#n164'>164</a>
<a id='n165' href='#n165'>165</a>
<a id='n166' href='#n166'>166</a>
<a id='n167' href='#n167'>167</a>
<a id='n168' href='#n168'>168</a>
<a id='n169' href='#n169'>169</a>
<a id='n170' href='#n170'>170</a>
<a id='n171' href='#n171'>171</a>
<a id='n172' href='#n172'>172</a>
<a id='n173' href='#n173'>173</a>
<a id='n174' href='#n174'>174</a>
<a id='n175' href='#n175'>175</a>
<a id='n176' href='#n176'>176</a>
<a id='n177' href='#n177'>177</a>
<a id='n178' href='#n178'>178</a>
<a id='n179' href='#n179'>179</a>
<a id='n180' href='#n180'>180</a>
<a id='n181' href='#n181'>181</a>
<a id='n182' href='#n182'>182</a>
<a id='n183' href='#n183'>183</a>
<a id='n184' href='#n184'>184</a>
<a id='n185' href='#n185'>185</a>
<a id='n186' href='#n186'>186</a>
<a id='n187' href='#n187'>187</a>
<a id='n188' href='#n188'>188</a>
<a id='n189' href='#n189'>189</a>
<a id='n190' href='#n190'>190</a>
<a id='n191' href='#n191'>191</a>
<a id='n192' href='#n192'>192</a>
<a id='n193' href='#n193'>193</a>
<a id='n194' href='#n194'>194</a>
<a id='n195' href='#n195'>195</a>
<a id='n196' href='#n196'>196</a>
<a id='n197' href='#n197'>197</a>
<a id='n198' href='#n198'>198</a>
<a id='n199' href='#n199'>199</a>
<a id='n200' href='#n200'>200</a>
<a id='n201' href='#n201'>201</a>
<a id='n202' href='#n202'>202</a>
<a id='n203' href='#n203'>203</a>
<a id='n204' href='#n204'>204</a>
<a id='n205' href='#n205'>205</a>
<a id='n206' href='#n206'>206</a>
<a id='n207' href='#n207'>207</a>
<a id='n208' href='#n208'>208</a>
<a id='n209' href='#n209'>209</a>
<a id='n210' href='#n210'>210</a>
<a id='n211' href='#n211'>211</a>
<a id='n212' href='#n212'>212</a>
<a id='n213' href='#n213'>213</a>
<a id='n214' href='#n214'>214</a>
<a id='n215' href='#n215'>215</a>
<a id='n216' href='#n216'>216</a>
<a id='n217' href='#n217'>217</a>
<a id='n218' href='#n218'>218</a>
<a id='n219' href='#n219'>219</a>
<a id='n220' href='#n220'>220</a>
<a id='n221' href='#n221'>221</a>
<a id='n222' href='#n222'>222</a>
<a id='n223' href='#n223'>223</a>
<a id='n224' href='#n224'>224</a>
<a id='n225' href='#n225'>225</a>
<a id='n226' href='#n226'>226</a>
<a id='n227' href='#n227'>227</a>
<a id='n228' href='#n228'>228</a>
<a id='n229' href='#n229'>229</a>
<a id='n230' href='#n230'>230</a>
<a id='n231' href='#n231'>231</a>
<a id='n232' href='#n232'>232</a>
<a id='n233' href='#n233'>233</a>
<a id='n234' href='#n234'>234</a>
<a id='n235' href='#n235'>235</a>
<a id='n236' href='#n236'>236</a>
<a id='n237' href='#n237'>237</a>
<a id='n238' href='#n238'>238</a>
<a id='n239' href='#n239'>239</a>
<a id='n240' href='#n240'>240</a>
<a id='n241' href='#n241'>241</a>
<a id='n242' href='#n242'>242</a>
<a id='n243' href='#n243'>243</a>
<a id='n244' href='#n244'>244</a>
<a id='n245' href='#n245'>245</a>
<a id='n246' href='#n246'>246</a>
<a id='n247' href='#n247'>247</a>
<a id='n248' href='#n248'>248</a>
<a id='n249' href='#n249'>249</a>
<a id='n250' href='#n250'>250</a>
<a id='n251' href='#n251'>251</a>
<a id='n252' href='#n252'>252</a>
<a id='n253' href='#n253'>253</a>
<a id='n254' href='#n254'>254</a>
<a id='n255' href='#n255'>255</a>
<a id='n256' href='#n256'>256</a>
<a id='n257' href='#n257'>257</a>
<a id='n258' href='#n258'>258</a>
<a id='n259' href='#n259'>259</a>
<a id='n260' href='#n260'>260</a>
<a id='n261' href='#n261'>261</a>
<a id='n262' href='#n262'>262</a>
<a id='n263' href='#n263'>263</a>
<a id='n264' href='#n264'>264</a>
<a id='n265' href='#n265'>265</a>
<a id='n266' href='#n266'>266</a>
<a id='n267' href='#n267'>267</a>
<a id='n268' href='#n268'>268</a>
<a id='n269' href='#n269'>269</a>
<a id='n270' href='#n270'>270</a>
<a id='n271' href='#n271'>271</a>
<a id='n272' href='#n272'>272</a>
<a id='n273' href='#n273'>273</a>
<a id='n274' href='#n274'>274</a>
<a id='n275' href='#n275'>275</a>
<a id='n276' href='#n276'>276</a>
<a id='n277' href='#n277'>277</a>
<a id='n278' href='#n278'>278</a>
<a id='n279' href='#n279'>279</a>
<a id='n280' href='#n280'>280</a>
<a id='n281' href='#n281'>281</a>
<a id='n282' href='#n282'>282</a>
<a id='n283' href='#n283'>283</a>
<a id='n284' href='#n284'>284</a>
<a id='n285' href='#n285'>285</a>
<a id='n286' href='#n286'>286</a>
<a id='n287' href='#n287'>287</a>
<a id='n288' href='#n288'>288</a>
<a id='n289' href='#n289'>289</a>
<a id='n290' href='#n290'>290</a>
<a id='n291' href='#n291'>291</a>
<a id='n292' href='#n292'>292</a>
<a id='n293' href='#n293'>293</a>
<a id='n294' href='#n294'>294</a>
<a id='n295' href='#n295'>295</a>
<a id='n296' href='#n296'>296</a>
<a id='n297' href='#n297'>297</a>
<a id='n298' href='#n298'>298</a>
<a id='n299' href='#n299'>299</a>
<a id='n300' href='#n300'>300</a>
<a id='n301' href='#n301'>301</a>
<a id='n302' href='#n302'>302</a>
<a id='n303' href='#n303'>303</a>
<a id='n304' href='#n304'>304</a>
<a id='n305' href='#n305'>305</a>
<a id='n306' href='#n306'>306</a>
<a id='n307' href='#n307'>307</a>
<a id='n308' href='#n308'>308</a>
<a id='n309' href='#n309'>309</a>
<a id='n310' href='#n310'>310</a>
<a id='n311' href='#n311'>311</a>
<a id='n312' href='#n312'>312</a>
<a id='n313' href='#n313'>313</a>
<a id='n314' href='#n314'>314</a>
<a id='n315' href='#n315'>315</a>
<a id='n316' href='#n316'>316</a>
<a id='n317' href='#n317'>317</a>
<a id='n318' href='#n318'>318</a>
<a id='n319' href='#n319'>319</a>
<a id='n320' href='#n320'>320</a>
<a id='n321' href='#n321'>321</a>
<a id='n322' href='#n322'>322</a>
<a id='n323' href='#n323'>323</a>
<a id='n324' href='#n324'>324</a>
<a id='n325' href='#n325'>325</a>
<a id='n326' href='#n326'>326</a>
<a id='n327' href='#n327'>327</a>
<a id='n328' href='#n328'>328</a>
<a id='n329' href='#n329'>329</a>
<a id='n330' href='#n330'>330</a>
<a id='n331' href='#n331'>331</a>
<a id='n332' href='#n332'>332</a>
<a id='n333' href='#n333'>333</a>
<a id='n334' href='#n334'>334</a>
<a id='n335' href='#n335'>335</a>
<a id='n336' href='#n336'>336</a>
<a id='n337' href='#n337'>337</a>
<a id='n338' href='#n338'>338</a>
<a id='n339' href='#n339'>339</a>
<a id='n340' href='#n340'>340</a>
<a id='n341' href='#n341'>341</a>
<a id='n342' href='#n342'>342</a>
<a id='n343' href='#n343'>343</a>
<a id='n344' href='#n344'>344</a>
<a id='n345' href='#n345'>345</a>
<a id='n346' href='#n346'>346</a>
<a id='n347' href='#n347'>347</a>
<a id='n348' href='#n348'>348</a>
<a id='n349' href='#n349'>349</a>
<a id='n350' href='#n350'>350</a>
<a id='n351' href='#n351'>351</a>
<a id='n352' href='#n352'>352</a>
<a id='n353' href='#n353'>353</a>
<a id='n354' href='#n354'>354</a>
<a id='n355' href='#n355'>355</a>
<a id='n356' href='#n356'>356</a>
<a id='n357' href='#n357'>357</a>
<a id='n358' href='#n358'>358</a>
<a id='n359' href='#n359'>359</a>
<a id='n360' href='#n360'>360</a>
<a id='n361' href='#n361'>361</a>
<a id='n362' href='#n362'>362</a>
<a id='n363' href='#n363'>363</a>
<a id='n364' href='#n364'>364</a>
<a id='n365' href='#n365'>365</a>
<a id='n366' href='#n366'>366</a>
<a id='n367' href='#n367'>367</a>
<a id='n368' href='#n368'>368</a>
<a id='n369' href='#n369'>369</a>
<a id='n370' href='#n370'>370</a>
<a id='n371' href='#n371'>371</a>
<a id='n372' href='#n372'>372</a>
<a id='n373' href='#n373'>373</a>
<a id='n374' href='#n374'>374</a>
<a id='n375' href='#n375'>375</a>
<a id='n376' href='#n376'>376</a>
<a id='n377' href='#n377'>377</a>
<a id='n378' href='#n378'>378</a>
<a id='n379' href='#n379'>379</a>
<a id='n380' href='#n380'>380</a>
<a id='n381' href='#n381'>381</a>
<a id='n382' href='#n382'>382</a>
<a id='n383' href='#n383'>383</a>
<a id='n384' href='#n384'>384</a>
<a id='n385' href='#n385'>385</a>
<a id='n386' href='#n386'>386</a>
<a id='n387' href='#n387'>387</a>
<a id='n388' href='#n388'>388</a>
<a id='n389' href='#n389'>389</a>
<a id='n390' href='#n390'>390</a>
<a id='n391' href='#n391'>391</a>
<a id='n392' href='#n392'>392</a>
<a id='n393' href='#n393'>393</a>
<a id='n394' href='#n394'>394</a>
<a id='n395' href='#n395'>395</a>
<a id='n396' href='#n396'>396</a>
<a id='n397' href='#n397'>397</a>
<a id='n398' href='#n398'>398</a>
<a id='n399' href='#n399'>399</a>
<a id='n400' href='#n400'>400</a>
<a id='n401' href='#n401'>401</a>
<a id='n402' href='#n402'>402</a>
<a id='n403' href='#n403'>403</a>
<a id='n404' href='#n404'>404</a>
<a id='n405' href='#n405'>405</a>
<a id='n406' href='#n406'>406</a>
<a id='n407' href='#n407'>407</a>
<a id='n408' href='#n408'>408</a>
<a id='n409' href='#n409'>409</a>
<a id='n410' href='#n410'>410</a>
<a id='n411' href='#n411'>411</a>
<a id='n412' href='#n412'>412</a>
<a id='n413' href='#n413'>413</a>
<a id='n414' href='#n414'>414</a>
<a id='n415' href='#n415'>415</a>
<a id='n416' href='#n416'>416</a>
<a id='n417' href='#n417'>417</a>
<a id='n418' href='#n418'>418</a>
<a id='n419' href='#n419'>419</a>
<a id='n420' href='#n420'>420</a>
<a id='n421' href='#n421'>421</a>
<a id='n422' href='#n422'>422</a>
<a id='n423' href='#n423'>423</a>
<a id='n424' href='#n424'>424</a>
<a id='n425' href='#n425'>425</a>
<a id='n426' href='#n426'>426</a>
<a id='n427' href='#n427'>427</a>
<a id='n428' href='#n428'>428</a>
<a id='n429' href='#n429'>429</a>
<a id='n430' href='#n430'>430</a>
<a id='n431' href='#n431'>431</a>
<a id='n432' href='#n432'>432</a>
<a id='n433' href='#n433'>433</a>
<a id='n434' href='#n434'>434</a>
<a id='n435' href='#n435'>435</a>
<a id='n436' href='#n436'>436</a>
<a id='n437' href='#n437'>437</a>
<a id='n438' href='#n438'>438</a>
<a id='n439' href='#n439'>439</a>
<a id='n440' href='#n440'>440</a>
<a id='n441' href='#n441'>441</a>
<a id='n442' href='#n442'>442</a>
<a id='n443' href='#n443'>443</a>
<a id='n444' href='#n444'>444</a>
<a id='n445' href='#n445'>445</a>
<a id='n446' href='#n446'>446</a>
<a id='n447' href='#n447'>447</a>
<a id='n448' href='#n448'>448</a>
<a id='n449' href='#n449'>449</a>
<a id='n450' href='#n450'>450</a>
<a id='n451' href='#n451'>451</a>
<a id='n452' href='#n452'>452</a>
<a id='n453' href='#n453'>453</a>
<a id='n454' href='#n454'>454</a>
<a id='n455' href='#n455'>455</a>
<a id='n456' href='#n456'>456</a>
<a id='n457' href='#n457'>457</a>
<a id='n458' href='#n458'>458</a>
<a id='n459' href='#n459'>459</a>
<a id='n460' href='#n460'>460</a>
<a id='n461' href='#n461'>461</a>
<a id='n462' href='#n462'>462</a>
<a id='n463' href='#n463'>463</a>
<a id='n464' href='#n464'>464</a>
<a id='n465' href='#n465'>465</a>
<a id='n466' href='#n466'>466</a>
<a id='n467' href='#n467'>467</a>
<a id='n468' href='#n468'>468</a>
<a id='n469' href='#n469'>469</a>
<a id='n470' href='#n470'>470</a>
<a id='n471' href='#n471'>471</a>
<a id='n472' href='#n472'>472</a>
<a id='n473' href='#n473'>473</a>
<a id='n474' href='#n474'>474</a>
<a id='n475' href='#n475'>475</a>
<a id='n476' href='#n476'>476</a>
<a id='n477' href='#n477'>477</a>
<a id='n478' href='#n478'>478</a>
<a id='n479' href='#n479'>479</a>
<a id='n480' href='#n480'>480</a>
<a id='n481' href='#n481'>481</a>
<a id='n482' href='#n482'>482</a>
<a id='n483' href='#n483'>483</a>
<a id='n484' href='#n484'>484</a>
<a id='n485' href='#n485'>485</a>
<a id='n486' href='#n486'>486</a>
<a id='n487' href='#n487'>487</a>
<a id='n488' href='#n488'>488</a>
<a id='n489' href='#n489'>489</a>
<a id='n490' href='#n490'>490</a>
<a id='n491' href='#n491'>491</a>
<a id='n492' href='#n492'>492</a>
<a id='n493' href='#n493'>493</a>
<a id='n494' href='#n494'>494</a>
<a id='n495' href='#n495'>495</a>
<a id='n496' href='#n496'>496</a>
<a id='n497' href='#n497'>497</a>
<a id='n498' href='#n498'>498</a>
<a id='n499' href='#n499'>499</a>
<a id='n500' href='#n500'>500</a>
<a id='n501' href='#n501'>501</a>
<a id='n502' href='#n502'>502</a>
<a id='n503' href='#n503'>503</a>
<a id='n504' href='#n504'>504</a>
<a id='n505' href='#n505'>505</a>
<a id='n506' href='#n506'>506</a>
<a id='n507' href='#n507'>507</a>
<a id='n508' href='#n508'>508</a>
<a id='n509' href='#n509'>509</a>
<a id='n510' href='#n510'>510</a>
<a id='n511' href='#n511'>511</a>
<a id='n512' href='#n512'>512</a>
<a id='n513' href='#n513'>513</a>
<a id='n514' href='#n514'>514</a>
<a id='n515' href='#n515'>515</a>
<a id='n516' href='#n516'>516</a>
<a id='n517' href='#n517'>517</a>
<a id='n518' href='#n518'>518</a>
<a id='n519' href='#n519'>519</a>
<a id='n520' href='#n520'>520</a>
<a id='n521' href='#n521'>521</a>
<a id='n522' href='#n522'>522</a>
<a id='n523' href='#n523'>523</a>
<a id='n524' href='#n524'>524</a>
<a id='n525' href='#n525'>525</a>
<a id='n526' href='#n526'>526</a>
<a id='n527' href='#n527'>527</a>
<a id='n528' href='#n528'>528</a>
<a id='n529' href='#n529'>529</a>
<a id='n530' href='#n530'>530</a>
<a id='n531' href='#n531'>531</a>
<a id='n532' href='#n532'>532</a>
<a id='n533' href='#n533'>533</a>
<a id='n534' href='#n534'>534</a>
<a id='n535' href='#n535'>535</a>
<a id='n536' href='#n536'>536</a>
<a id='n537' href='#n537'>537</a>
<a id='n538' href='#n538'>538</a>
<a id='n539' href='#n539'>539</a>
<a id='n540' href='#n540'>540</a>
<a id='n541' href='#n541'>541</a>
<a id='n542' href='#n542'>542</a>
<a id='n543' href='#n543'>543</a>
<a id='n544' href='#n544'>544</a>
<a id='n545' href='#n545'>545</a>
<a id='n546' href='#n546'>546</a>
<a id='n547' href='#n547'>547</a>
<a id='n548' href='#n548'>548</a>
<a id='n549' href='#n549'>549</a>
<a id='n550' href='#n550'>550</a>
<a id='n551' href='#n551'>551</a>
<a id='n552' href='#n552'>552</a>
<a id='n553' href='#n553'>553</a>
<a id='n554' href='#n554'>554</a>
<a id='n555' href='#n555'>555</a>
<a id='n556' href='#n556'>556</a>
<a id='n557' href='#n557'>557</a>
<a id='n558' href='#n558'>558</a>
<a id='n559' href='#n559'>559</a>
<a id='n560' href='#n560'>560</a>
<a id='n561' href='#n561'>561</a>
<a id='n562' href='#n562'>562</a>
<a id='n563' href='#n563'>563</a>
<a id='n564' href='#n564'>564</a>
<a id='n565' href='#n565'>565</a>
<a id='n566' href='#n566'>566</a>
<a id='n567' href='#n567'>567</a>
<a id='n568' href='#n568'>568</a>
<a id='n569' href='#n569'>569</a>
<a id='n570' href='#n570'>570</a>
<a id='n571' href='#n571'>571</a>
<a id='n572' href='#n572'>572</a>
<a id='n573' href='#n573'>573</a>
<a id='n574' href='#n574'>574</a>
<a id='n575' href='#n575'>575</a>
<a id='n576' href='#n576'>576</a>
<a id='n577' href='#n577'>577</a>
<a id='n578' href='#n578'>578</a>
<a id='n579' href='#n579'>579</a>
<a id='n580' href='#n580'>580</a>
<a id='n581' href='#n581'>581</a>
<a id='n582' href='#n582'>582</a>
<a id='n583' href='#n583'>583</a>
<a id='n584' href='#n584'>584</a>
<a id='n585' href='#n585'>585</a>
<a id='n586' href='#n586'>586</a>
<a id='n587' href='#n587'>587</a>
<a id='n588' href='#n588'>588</a>
<a id='n589' href='#n589'>589</a>
<a id='n590' href='#n590'>590</a>
<a id='n591' href='#n591'>591</a>
<a id='n592' href='#n592'>592</a>
<a id='n593' href='#n593'>593</a>
<a id='n594' href='#n594'>594</a>
<a id='n595' href='#n595'>595</a>
<a id='n596' href='#n596'>596</a>
<a id='n597' href='#n597'>597</a>
<a id='n598' href='#n598'>598</a>
<a id='n599' href='#n599'>599</a>
<a id='n600' href='#n600'>600</a>
<a id='n601' href='#n601'>601</a>
<a id='n602' href='#n602'>602</a>
<a id='n603' href='#n603'>603</a>
<a id='n604' href='#n604'>604</a>
<a id='n605' href='#n605'>605</a>
<a id='n606' href='#n606'>606</a>
<a id='n607' href='#n607'>607</a>
<a id='n608' href='#n608'>608</a>
<a id='n609' href='#n609'>609</a>
<a id='n610' href='#n610'>610</a>
<a id='n611' href='#n611'>611</a>
<a id='n612' href='#n612'>612</a>
<a id='n613' href='#n613'>613</a>
<a id='n614' href='#n614'>614</a>
<a id='n615' href='#n615'>615</a>
<a id='n616' href='#n616'>616</a>
<a id='n617' href='#n617'>617</a>
<a id='n618' href='#n618'>618</a>
<a id='n619' href='#n619'>619</a>
<a id='n620' href='#n620'>620</a>
<a id='n621' href='#n621'>621</a>
<a id='n622' href='#n622'>622</a>
<a id='n623' href='#n623'>623</a>
<a id='n624' href='#n624'>624</a>
<a id='n625' href='#n625'>625</a>
<a id='n626' href='#n626'>626</a>
<a id='n627' href='#n627'>627</a>
<a id='n628' href='#n628'>628</a>
<a id='n629' href='#n629'>629</a>
<a id='n630' href='#n630'>630</a>
<a id='n631' href='#n631'>631</a>
<a id='n632' href='#n632'>632</a>
<a id='n633' href='#n633'>633</a>
<a id='n634' href='#n634'>634</a>
<a id='n635' href='#n635'>635</a>
<a id='n636' href='#n636'>636</a>
<a id='n637' href='#n637'>637</a>
<a id='n638' href='#n638'>638</a>
<a id='n639' href='#n639'>639</a>
<a id='n640' href='#n640'>640</a>
<a id='n641' href='#n641'>641</a>
<a id='n642' href='#n642'>642</a>
<a id='n643' href='#n643'>643</a>
<a id='n644' href='#n644'>644</a>
<a id='n645' href='#n645'>645</a>
<a id='n646' href='#n646'>646</a>
<a id='n647' href='#n647'>647</a>
<a id='n648' href='#n648'>648</a>
<a id='n649' href='#n649'>649</a>
<a id='n650' href='#n650'>650</a>
<a id='n651' href='#n651'>651</a>
<a id='n652' href='#n652'>652</a>
<a id='n653' href='#n653'>653</a>
<a id='n654' href='#n654'>654</a>
<a id='n655' href='#n655'>655</a>
<a id='n656' href='#n656'>656</a>
<a id='n657' href='#n657'>657</a>
<a id='n658' href='#n658'>658</a>
<a id='n659' href='#n659'>659</a>
<a id='n660' href='#n660'>660</a>
<a id='n661' href='#n661'>661</a>
<a id='n662' href='#n662'>662</a>
<a id='n663' href='#n663'>663</a>
<a id='n664' href='#n664'>664</a>
<a id='n665' href='#n665'>665</a>
<a id='n666' href='#n666'>666</a>
<a id='n667' href='#n667'>667</a>
<a id='n668' href='#n668'>668</a>
<a id='n669' href='#n669'>669</a>
<a id='n670' href='#n670'>670</a>
<a id='n671' href='#n671'>671</a>
<a id='n672' href='#n672'>672</a>
<a id='n673' href='#n673'>673</a>
<a id='n674' href='#n674'>674</a>
<a id='n675' href='#n675'>675</a>
<a id='n676' href='#n676'>676</a>
<a id='n677' href='#n677'>677</a>
<a id='n678' href='#n678'>678</a>
<a id='n679' href='#n679'>679</a>
<a id='n680' href='#n680'>680</a>
<a id='n681' href='#n681'>681</a>
<a id='n682' href='#n682'>682</a>
<a id='n683' href='#n683'>683</a>
<a id='n684' href='#n684'>684</a>
<a id='n685' href='#n685'>685</a>
<a id='n686' href='#n686'>686</a>
<a id='n687' href='#n687'>687</a>
<a id='n688' href='#n688'>688</a>
<a id='n689' href='#n689'>689</a>
<a id='n690' href='#n690'>690</a>
<a id='n691' href='#n691'>691</a>
<a id='n692' href='#n692'>692</a>
<a id='n693' href='#n693'>693</a>
<a id='n694' href='#n694'>694</a>
<a id='n695' href='#n695'>695</a>
<a id='n696' href='#n696'>696</a>
<a id='n697' href='#n697'>697</a>
<a id='n698' href='#n698'>698</a>
<a id='n699' href='#n699'>699</a>
<a id='n700' href='#n700'>700</a>
<a id='n701' href='#n701'>701</a>
<a id='n702' href='#n702'>702</a>
<a id='n703' href='#n703'>703</a>
<a id='n704' href='#n704'>704</a>
<a id='n705' href='#n705'>705</a>
<a id='n706' href='#n706'>706</a>
<a id='n707' href='#n707'>707</a>
<a id='n708' href='#n708'>708</a>
<a id='n709' href='#n709'>709</a>
<a id='n710' href='#n710'>710</a>
<a id='n711' href='#n711'>711</a>
<a id='n712' href='#n712'>712</a>
<a id='n713' href='#n713'>713</a>
<a id='n714' href='#n714'>714</a>
<a id='n715' href='#n715'>715</a>
<a id='n716' href='#n716'>716</a>
<a id='n717' href='#n717'>717</a>
<a id='n718' href='#n718'>718</a>
<a id='n719' href='#n719'>719</a>
<a id='n720' href='#n720'>720</a>
<a id='n721' href='#n721'>721</a>
<a id='n722' href='#n722'>722</a>
<a id='n723' href='#n723'>723</a>
<a id='n724' href='#n724'>724</a>
<a id='n725' href='#n725'>725</a>
<a id='n726' href='#n726'>726</a>
<a id='n727' href='#n727'>727</a>
<a id='n728' href='#n728'>728</a>
<a id='n729' href='#n729'>729</a>
<a id='n730' href='#n730'>730</a>
<a id='n731' href='#n731'>731</a>
<a id='n732' href='#n732'>732</a>
<a id='n733' href='#n733'>733</a>
<a id='n734' href='#n734'>734</a>
<a id='n735' href='#n735'>735</a>
<a id='n736' href='#n736'>736</a>
<a id='n737' href='#n737'>737</a>
<a id='n738' href='#n738'>738</a>
<a id='n739' href='#n739'>739</a>
<a id='n740' href='#n740'>740</a>
<a id='n741' href='#n741'>741</a>
<a id='n742' href='#n742'>742</a>
<a id='n743' href='#n743'>743</a>
<a id='n744' href='#n744'>744</a>
<a id='n745' href='#n745'>745</a>
<a id='n746' href='#n746'>746</a>
<a id='n747' href='#n747'>747</a>
<a id='n748' href='#n748'>748</a>
<a id='n749' href='#n749'>749</a>
<a id='n750' href='#n750'>750</a>
<a id='n751' href='#n751'>751</a>
<a id='n752' href='#n752'>752</a>
<a id='n753' href='#n753'>753</a>
<a id='n754' href='#n754'>754</a>
<a id='n755' href='#n755'>755</a>
<a id='n756' href='#n756'>756</a>
<a id='n757' href='#n757'>757</a>
<a id='n758' href='#n758'>758</a>
<a id='n759' href='#n759'>759</a>
<a id='n760' href='#n760'>760</a>
<a id='n761' href='#n761'>761</a>
<a id='n762' href='#n762'>762</a>
<a id='n763' href='#n763'>763</a>
<a id='n764' href='#n764'>764</a>
<a id='n765' href='#n765'>765</a>
<a id='n766' href='#n766'>766</a>
<a id='n767' href='#n767'>767</a>
<a id='n768' href='#n768'>768</a>
<a id='n769' href='#n769'>769</a>
<a id='n770' href='#n770'>770</a>
<a id='n771' href='#n771'>771</a>
<a id='n772' href='#n772'>772</a>
<a id='n773' href='#n773'>773</a>
<a id='n774' href='#n774'>774</a>
<a id='n775' href='#n775'>775</a>
<a id='n776' href='#n776'>776</a>
<a id='n777' href='#n777'>777</a>
<a id='n778' href='#n778'>778</a>
<a id='n779' href='#n779'>779</a>
<a id='n780' href='#n780'>780</a>
<a id='n781' href='#n781'>781</a>
<a id='n782' href='#n782'>782</a>
<a id='n783' href='#n783'>783</a>
<a id='n784' href='#n784'>784</a>
<a id='n785' href='#n785'>785</a>
<a id='n786' href='#n786'>786</a>
<a id='n787' href='#n787'>787</a>
<a id='n788' href='#n788'>788</a>
<a id='n789' href='#n789'>789</a>
<a id='n790' href='#n790'>790</a>
<a id='n791' href='#n791'>791</a>
<a id='n792' href='#n792'>792</a>
<a id='n793' href='#n793'>793</a>
<a id='n794' href='#n794'>794</a>
<a id='n795' href='#n795'>795</a>
<a id='n796' href='#n796'>796</a>
<a id='n797' href='#n797'>797</a>
<a id='n798' href='#n798'>798</a>
<a id='n799' href='#n799'>799</a>
<a id='n800' href='#n800'>800</a>
<a id='n801' href='#n801'>801</a>
<a id='n802' href='#n802'>802</a>
<a id='n803' href='#n803'>803</a>
<a id='n804' href='#n804'>804</a>
<a id='n805' href='#n805'>805</a>
<a id='n806' href='#n806'>806</a>
<a id='n807' href='#n807'>807</a>
<a id='n808' href='#n808'>808</a>
<a id='n809' href='#n809'>809</a>
<a id='n810' href='#n810'>810</a>
<a id='n811' href='#n811'>811</a>
<a id='n812' href='#n812'>812</a>
<a id='n813' href='#n813'>813</a>
<a id='n814' href='#n814'>814</a>
<a id='n815' href='#n815'>815</a>
<a id='n816' href='#n816'>816</a>
<a id='n817' href='#n817'>817</a>
<a id='n818' href='#n818'>818</a>
<a id='n819' href='#n819'>819</a>
<a id='n820' href='#n820'>820</a>
<a id='n821' href='#n821'>821</a>
<a id='n822' href='#n822'>822</a>
<a id='n823' href='#n823'>823</a>
<a id='n824' href='#n824'>824</a>
<a id='n825' href='#n825'>825</a>
<a id='n826' href='#n826'>826</a>
<a id='n827' href='#n827'>827</a>
<a id='n828' href='#n828'>828</a>
<a id='n829' href='#n829'>829</a>
<a id='n830' href='#n830'>830</a>
<a id='n831' href='#n831'>831</a>
<a id='n832' href='#n832'>832</a>
<a id='n833' href='#n833'>833</a>
<a id='n834' href='#n834'>834</a>
<a id='n835' href='#n835'>835</a>
<a id='n836' href='#n836'>836</a>
<a id='n837' href='#n837'>837</a>
<a id='n838' href='#n838'>838</a>
<a id='n839' href='#n839'>839</a>
<a id='n840' href='#n840'>840</a>
<a id='n841' href='#n841'>841</a>
<a id='n842' href='#n842'>842</a>
<a id='n843' href='#n843'>843</a>
<a id='n844' href='#n844'>844</a>
<a id='n845' href='#n845'>845</a>
<a id='n846' href='#n846'>846</a>
<a id='n847' href='#n847'>847</a>
<a id='n848' href='#n848'>848</a>
<a id='n849' href='#n849'>849</a>
<a id='n850' href='#n850'>850</a>
<a id='n851' href='#n851'>851</a>
<a id='n852' href='#n852'>852</a>
<a id='n853' href='#n853'>853</a>
<a id='n854' href='#n854'>854</a>
<a id='n855' href='#n855'>855</a>
<a id='n856' href='#n856'>856</a>
<a id='n857' href='#n857'>857</a>
<a id='n858' href='#n858'>858</a>
<a id='n859' href='#n859'>859</a>
<a id='n860' href='#n860'>860</a>
<a id='n861' href='#n861'>861</a>
<a id='n862' href='#n862'>862</a>
<a id='n863' href='#n863'>863</a>
<a id='n864' href='#n864'>864</a>
<a id='n865' href='#n865'>865</a>
<a id='n866' href='#n866'>866</a>
<a id='n867' href='#n867'>867</a>
<a id='n868' href='#n868'>868</a>
<a id='n869' href='#n869'>869</a>
<a id='n870' href='#n870'>870</a>
<a id='n871' href='#n871'>871</a>
<a id='n872' href='#n872'>872</a>
<a id='n873' href='#n873'>873</a>
<a id='n874' href='#n874'>874</a>
<a id='n875' href='#n875'>875</a>
<a id='n876' href='#n876'>876</a>
<a id='n877' href='#n877'>877</a>
<a id='n878' href='#n878'>878</a>
<a id='n879' href='#n879'>879</a>
<a id='n880' href='#n880'>880</a>
<a id='n881' href='#n881'>881</a>
<a id='n882' href='#n882'>882</a>
<a id='n883' href='#n883'>883</a>
<a id='n884' href='#n884'>884</a>
<a id='n885' href='#n885'>885</a>
<a id='n886' href='#n886'>886</a>
<a id='n887' href='#n887'>887</a>
<a id='n888' href='#n888'>888</a>
<a id='n889' href='#n889'>889</a>
<a id='n890' href='#n890'>890</a>
<a id='n891' href='#n891'>891</a>
<a id='n892' href='#n892'>892</a>
<a id='n893' href='#n893'>893</a>
<a id='n894' href='#n894'>894</a>
<a id='n895' href='#n895'>895</a>
<a id='n896' href='#n896'>896</a>
<a id='n897' href='#n897'>897</a>
<a id='n898' href='#n898'>898</a>
<a id='n899' href='#n899'>899</a>
<a id='n900' href='#n900'>900</a>
<a id='n901' href='#n901'>901</a>
<a id='n902' href='#n902'>902</a>
<a id='n903' href='#n903'>903</a>
<a id='n904' href='#n904'>904</a>
<a id='n905' href='#n905'>905</a>
<a id='n906' href='#n906'>906</a>
<a id='n907' href='#n907'>907</a>
<a id='n908' href='#n908'>908</a>
<a id='n909' href='#n909'>909</a>
<a id='n910' href='#n910'>910</a>
<a id='n911' href='#n911'>911</a>
<a id='n912' href='#n912'>912</a>
<a id='n913' href='#n913'>913</a>
<a id='n914' href='#n914'>914</a>
<a id='n915' href='#n915'>915</a>
<a id='n916' href='#n916'>916</a>
<a id='n917' href='#n917'>917</a>
<a id='n918' href='#n918'>918</a>
<a id='n919' href='#n919'>919</a>
<a id='n920' href='#n920'>920</a>
<a id='n921' href='#n921'>921</a>
<a id='n922' href='#n922'>922</a>
<a id='n923' href='#n923'>923</a>
<a id='n924' href='#n924'>924</a>
<a id='n925' href='#n925'>925</a>
<a id='n926' href='#n926'>926</a>
<a id='n927' href='#n927'>927</a>
<a id='n928' href='#n928'>928</a>
<a id='n929' href='#n929'>929</a>
<a id='n930' href='#n930'>930</a>
<a id='n931' href='#n931'>931</a>
<a id='n932' href='#n932'>932</a>
<a id='n933' href='#n933'>933</a>
<a id='n934' href='#n934'>934</a>
<a id='n935' href='#n935'>935</a>
<a id='n936' href='#n936'>936</a>
<a id='n937' href='#n937'>937</a>
<a id='n938' href='#n938'>938</a>
<a id='n939' href='#n939'>939</a>
<a id='n940' href='#n940'>940</a>
<a id='n941' href='#n941'>941</a>
<a id='n942' href='#n942'>942</a>
<a id='n943' href='#n943'>943</a>
<a id='n944' href='#n944'>944</a>
<a id='n945' href='#n945'>945</a>
<a id='n946' href='#n946'>946</a>
<a id='n947' href='#n947'>947</a>
<a id='n948' href='#n948'>948</a>
<a id='n949' href='#n949'>949</a>
<a id='n950' href='#n950'>950</a>
<a id='n951' href='#n951'>951</a>
<a id='n952' href='#n952'>952</a>
<a id='n953' href='#n953'>953</a>
<a id='n954' href='#n954'>954</a>
<a id='n955' href='#n955'>955</a>
<a id='n956' href='#n956'>956</a>
<a id='n957' href='#n957'>957</a>
<a id='n958' href='#n958'>958</a>
<a id='n959' href='#n959'>959</a>
<a id='n960' href='#n960'>960</a>
<a id='n961' href='#n961'>961</a>
<a id='n962' href='#n962'>962</a>
<a id='n963' href='#n963'>963</a>
<a id='n964' href='#n964'>964</a>
<a id='n965' href='#n965'>965</a>
<a id='n966' href='#n966'>966</a>
<a id='n967' href='#n967'>967</a>
<a id='n968' href='#n968'>968</a>
<a id='n969' href='#n969'>969</a>
<a id='n970' href='#n970'>970</a>
<a id='n971' href='#n971'>971</a>
<a id='n972' href='#n972'>972</a>
<a id='n973' href='#n973'>973</a>
<a id='n974' href='#n974'>974</a>
<a id='n975' href='#n975'>975</a>
<a id='n976' href='#n976'>976</a>
<a id='n977' href='#n977'>977</a>
<a id='n978' href='#n978'>978</a>
<a id='n979' href='#n979'>979</a>
<a id='n980' href='#n980'>980</a>
<a id='n981' href='#n981'>981</a>
<a id='n982' href='#n982'>982</a>
<a id='n983' href='#n983'>983</a>
<a id='n984' href='#n984'>984</a>
<a id='n985' href='#n985'>985</a>
<a id='n986' href='#n986'>986</a>
<a id='n987' href='#n987'>987</a>
<a id='n988' href='#n988'>988</a>
<a id='n989' href='#n989'>989</a>
<a id='n990' href='#n990'>990</a>
<a id='n991' href='#n991'>991</a>
<a id='n992' href='#n992'>992</a>
<a id='n993' href='#n993'>993</a>
<a id='n994' href='#n994'>994</a>
<a id='n995' href='#n995'>995</a>
<a id='n996' href='#n996'>996</a>
<a id='n997' href='#n997'>997</a>
<a id='n998' href='#n998'>998</a>
<a id='n999' href='#n999'>999</a>
<a id='n1000' href='#n1000'>1000</a>
<a id='n1001' href='#n1001'>1001</a>
<a id='n1002' href='#n1002'>1002</a>
<a id='n1003' href='#n1003'>1003</a>
<a id='n1004' href='#n1004'>1004</a>
<a id='n1005' href='#n1005'>1005</a>
<a id='n1006' href='#n1006'>1006</a>
<a id='n1007' href='#n1007'>1007</a>
<a id='n1008' href='#n1008'>1008</a>
<a id='n1009' href='#n1009'>1009</a>
<a id='n1010' href='#n1010'>1010</a>
<a id='n1011' href='#n1011'>1011</a>
<a id='n1012' href='#n1012'>1012</a>
<a id='n1013' href='#n1013'>1013</a>
<a id='n1014' href='#n1014'>1014</a>
<a id='n1015' href='#n1015'>1015</a>
<a id='n1016' href='#n1016'>1016</a>
<a id='n1017' href='#n1017'>1017</a>
<a id='n1018' href='#n1018'>1018</a>
<a id='n1019' href='#n1019'>1019</a>
<a id='n1020' href='#n1020'>1020</a>
<a id='n1021' href='#n1021'>1021</a>
<a id='n1022' href='#n1022'>1022</a>
<a id='n1023' href='#n1023'>1023</a>
<a id='n1024' href='#n1024'>1024</a>
<a id='n1025' href='#n1025'>1025</a>
<a id='n1026' href='#n1026'>1026</a>
<a id='n1027' href='#n1027'>1027</a>
<a id='n1028' href='#n1028'>1028</a>
<a id='n1029' href='#n1029'>1029</a>
<a id='n1030' href='#n1030'>1030</a>
<a id='n1031' href='#n1031'>1031</a>
<a id='n1032' href='#n1032'>1032</a>
<a id='n1033' href='#n1033'>1033</a>
<a id='n1034' href='#n1034'>1034</a>
<a id='n1035' href='#n1035'>1035</a>
<a id='n1036' href='#n1036'>1036</a>
<a id='n1037' href='#n1037'>1037</a>
<a id='n1038' href='#n1038'>1038</a>
<a id='n1039' href='#n1039'>1039</a>
<a id='n1040' href='#n1040'>1040</a>
<a id='n1041' href='#n1041'>1041</a>
<a id='n1042' href='#n1042'>1042</a>
<a id='n1043' href='#n1043'>1043</a>
<a id='n1044' href='#n1044'>1044</a>
<a id='n1045' href='#n1045'>1045</a>
<a id='n1046' href='#n1046'>1046</a>
<a id='n1047' href='#n1047'>1047</a>
<a id='n1048' href='#n1048'>1048</a>
<a id='n1049' href='#n1049'>1049</a>
<a id='n1050' href='#n1050'>1050</a>
<a id='n1051' href='#n1051'>1051</a>
<a id='n1052' href='#n1052'>1052</a>
<a id='n1053' href='#n1053'>1053</a>
<a id='n1054' href='#n1054'>1054</a>
<a id='n1055' href='#n1055'>1055</a>
<a id='n1056' href='#n1056'>1056</a>
<a id='n1057' href='#n1057'>1057</a>
<a id='n1058' href='#n1058'>1058</a>
<a id='n1059' href='#n1059'>1059</a>
<a id='n1060' href='#n1060'>1060</a>
<a id='n1061' href='#n1061'>1061</a>
<a id='n1062' href='#n1062'>1062</a>
<a id='n1063' href='#n1063'>1063</a>
<a id='n1064' href='#n1064'>1064</a>
<a id='n1065' href='#n1065'>1065</a>
<a id='n1066' href='#n1066'>1066</a>
<a id='n1067' href='#n1067'>1067</a>
<a id='n1068' href='#n1068'>1068</a>
<a id='n1069' href='#n1069'>1069</a>
<a id='n1070' href='#n1070'>1070</a>
<a id='n1071' href='#n1071'>1071</a>
<a id='n1072' href='#n1072'>1072</a>
<a id='n1073' href='#n1073'>1073</a>
<a id='n1074' href='#n1074'>1074</a>
<a id='n1075' href='#n1075'>1075</a>
<a id='n1076' href='#n1076'>1076</a>
<a id='n1077' href='#n1077'>1077</a>
<a id='n1078' href='#n1078'>1078</a>
<a id='n1079' href='#n1079'>1079</a>
<a id='n1080' href='#n1080'>1080</a>
<a id='n1081' href='#n1081'>1081</a>
<a id='n1082' href='#n1082'>1082</a>
<a id='n1083' href='#n1083'>1083</a>
<a id='n1084' href='#n1084'>1084</a>
<a id='n1085' href='#n1085'>1085</a>
<a id='n1086' href='#n1086'>1086</a>
<a id='n1087' href='#n1087'>1087</a>
<a id='n1088' href='#n1088'>1088</a>
<a id='n1089' href='#n1089'>1089</a>
<a id='n1090' href='#n1090'>1090</a>
<a id='n1091' href='#n1091'>1091</a>
<a id='n1092' href='#n1092'>1092</a>
<a id='n1093' href='#n1093'>1093</a>
<a id='n1094' href='#n1094'>1094</a>
<a id='n1095' href='#n1095'>1095</a>
<a id='n1096' href='#n1096'>1096</a>
<a id='n1097' href='#n1097'>1097</a>
<a id='n1098' href='#n1098'>1098</a>
<a id='n1099' href='#n1099'>1099</a>
<a id='n1100' href='#n1100'>1100</a>
<a id='n1101' href='#n1101'>1101</a>
<a id='n1102' href='#n1102'>1102</a>
<a id='n1103' href='#n1103'>1103</a>
<a id='n1104' href='#n1104'>1104</a>
<a id='n1105' href='#n1105'>1105</a>
<a id='n1106' href='#n1106'>1106</a>
<a id='n1107' href='#n1107'>1107</a>
<a id='n1108' href='#n1108'>1108</a>
<a id='n1109' href='#n1109'>1109</a>
<a id='n1110' href='#n1110'>1110</a>
<a id='n1111' href='#n1111'>1111</a>
<a id='n1112' href='#n1112'>1112</a>
<a id='n1113' href='#n1113'>1113</a>
<a id='n1114' href='#n1114'>1114</a>
<a id='n1115' href='#n1115'>1115</a>
<a id='n1116' href='#n1116'>1116</a>
<a id='n1117' href='#n1117'>1117</a>
<a id='n1118' href='#n1118'>1118</a>
<a id='n1119' href='#n1119'>1119</a>
<a id='n1120' href='#n1120'>1120</a>
<a id='n1121' href='#n1121'>1121</a>
<a id='n1122' href='#n1122'>1122</a>
<a id='n1123' href='#n1123'>1123</a>
<a id='n1124' href='#n1124'>1124</a>
<a id='n1125' href='#n1125'>1125</a>
<a id='n1126' href='#n1126'>1126</a>
<a id='n1127' href='#n1127'>1127</a>
<a id='n1128' href='#n1128'>1128</a>
<a id='n1129' href='#n1129'>1129</a>
<a id='n1130' href='#n1130'>1130</a>
<a id='n1131' href='#n1131'>1131</a>
<a id='n1132' href='#n1132'>1132</a>
<a id='n1133' href='#n1133'>1133</a>
<a id='n1134' href='#n1134'>1134</a>
<a id='n1135' href='#n1135'>1135</a>
<a id='n1136' href='#n1136'>1136</a>
<a id='n1137' href='#n1137'>1137</a>
<a id='n1138' href='#n1138'>1138</a>
<a id='n1139' href='#n1139'>1139</a>
<a id='n1140' href='#n1140'>1140</a>
<a id='n1141' href='#n1141'>1141</a>
<a id='n1142' href='#n1142'>1142</a>
<a id='n1143' href='#n1143'>1143</a>
<a id='n1144' href='#n1144'>1144</a>
<a id='n1145' href='#n1145'>1145</a>
<a id='n1146' href='#n1146'>1146</a>
<a id='n1147' href='#n1147'>1147</a>
<a id='n1148' href='#n1148'>1148</a>
<a id='n1149' href='#n1149'>1149</a>
<a id='n1150' href='#n1150'>1150</a>
<a id='n1151' href='#n1151'>1151</a>
<a id='n1152' href='#n1152'>1152</a>
<a id='n1153' href='#n1153'>1153</a>
<a id='n1154' href='#n1154'>1154</a>
<a id='n1155' href='#n1155'>1155</a>
<a id='n1156' href='#n1156'>1156</a>
<a id='n1157' href='#n1157'>1157</a>
<a id='n1158' href='#n1158'>1158</a>
<a id='n1159' href='#n1159'>1159</a>
<a id='n1160' href='#n1160'>1160</a>
<a id='n1161' href='#n1161'>1161</a>
<a id='n1162' href='#n1162'>1162</a>
<a id='n1163' href='#n1163'>1163</a>
<a id='n1164' href='#n1164'>1164</a>
<a id='n1165' href='#n1165'>1165</a>
<a id='n1166' href='#n1166'>1166</a>
<a id='n1167' href='#n1167'>1167</a>
<a id='n1168' href='#n1168'>1168</a>
<a id='n1169' href='#n1169'>1169</a>
<a id='n1170' href='#n1170'>1170</a>
<a id='n1171' href='#n1171'>1171</a>
<a id='n1172' href='#n1172'>1172</a>
<a id='n1173' href='#n1173'>1173</a>
<a id='n1174' href='#n1174'>1174</a>
<a id='n1175' href='#n1175'>1175</a>
<a id='n1176' href='#n1176'>1176</a>
<a id='n1177' href='#n1177'>1177</a>
<a id='n1178' href='#n1178'>1178</a>
<a id='n1179' href='#n1179'>1179</a>
<a id='n1180' href='#n1180'>1180</a>
<a id='n1181' href='#n1181'>1181</a>
<a id='n1182' href='#n1182'>1182</a>
<a id='n1183' href='#n1183'>1183</a>
<a id='n1184' href='#n1184'>1184</a>
<a id='n1185' href='#n1185'>1185</a>
<a id='n1186' href='#n1186'>1186</a>
<a id='n1187' href='#n1187'>1187</a>
<a id='n1188' href='#n1188'>1188</a>
<a id='n1189' href='#n1189'>1189</a>
<a id='n1190' href='#n1190'>1190</a>
<a id='n1191' href='#n1191'>1191</a>
<a id='n1192' href='#n1192'>1192</a>
<a id='n1193' href='#n1193'>1193</a>
<a id='n1194' href='#n1194'>1194</a>
<a id='n1195' href='#n1195'>1195</a>
<a id='n1196' href='#n1196'>1196</a>
<a id='n1197' href='#n1197'>1197</a>
<a id='n1198' href='#n1198'>1198</a>
<a id='n1199' href='#n1199'>1199</a>
<a id='n1200' href='#n1200'>1200</a>
<a id='n1201' href='#n1201'>1201</a>
<a id='n1202' href='#n1202'>1202</a>
<a id='n1203' href='#n1203'>1203</a>
<a id='n1204' href='#n1204'>1204</a>
<a id='n1205' href='#n1205'>1205</a>
<a id='n1206' href='#n1206'>1206</a>
<a id='n1207' href='#n1207'>1207</a>
<a id='n1208' href='#n1208'>1208</a>
<a id='n1209' href='#n1209'>1209</a>
<a id='n1210' href='#n1210'>1210</a>
<a id='n1211' href='#n1211'>1211</a>
<a id='n1212' href='#n1212'>1212</a>
<a id='n1213' href='#n1213'>1213</a>
<a id='n1214' href='#n1214'>1214</a>
<a id='n1215' href='#n1215'>1215</a>
<a id='n1216' href='#n1216'>1216</a>
<a id='n1217' href='#n1217'>1217</a>
<a id='n1218' href='#n1218'>1218</a>
<a id='n1219' href='#n1219'>1219</a>
<a id='n1220' href='#n1220'>1220</a>
<a id='n1221' href='#n1221'>1221</a>
<a id='n1222' href='#n1222'>1222</a>
<a id='n1223' href='#n1223'>1223</a>
<a id='n1224' href='#n1224'>1224</a>
<a id='n1225' href='#n1225'>1225</a>
<a id='n1226' href='#n1226'>1226</a>
<a id='n1227' href='#n1227'>1227</a>
<a id='n1228' href='#n1228'>1228</a>
<a id='n1229' href='#n1229'>1229</a>
<a id='n1230' href='#n1230'>1230</a>
<a id='n1231' href='#n1231'>1231</a>
<a id='n1232' href='#n1232'>1232</a>
<a id='n1233' href='#n1233'>1233</a>
<a id='n1234' href='#n1234'>1234</a>
<a id='n1235' href='#n1235'>1235</a>
<a id='n1236' href='#n1236'>1236</a>
<a id='n1237' href='#n1237'>1237</a>
<a id='n1238' href='#n1238'>1238</a>
<a id='n1239' href='#n1239'>1239</a>
<a id='n1240' href='#n1240'>1240</a>
<a id='n1241' href='#n1241'>1241</a>
<a id='n1242' href='#n1242'>1242</a>
<a id='n1243' href='#n1243'>1243</a>
<a id='n1244' href='#n1244'>1244</a>
<a id='n1245' href='#n1245'>1245</a>
<a id='n1246' href='#n1246'>1246</a>
<a id='n1247' href='#n1247'>1247</a>
<a id='n1248' href='#n1248'>1248</a>
<a id='n1249' href='#n1249'>1249</a>
<a id='n1250' href='#n1250'>1250</a>
<a id='n1251' href='#n1251'>1251</a>
<a id='n1252' href='#n1252'>1252</a>
<a id='n1253' href='#n1253'>1253</a>
<a id='n1254' href='#n1254'>1254</a>
<a id='n1255' href='#n1255'>1255</a>
<a id='n1256' href='#n1256'>1256</a>
<a id='n1257' href='#n1257'>1257</a>
<a id='n1258' href='#n1258'>1258</a>
<a id='n1259' href='#n1259'>1259</a>
<a id='n1260' href='#n1260'>1260</a>
<a id='n1261' href='#n1261'>1261</a>
<a id='n1262' href='#n1262'>1262</a>
<a id='n1263' href='#n1263'>1263</a>
<a id='n1264' href='#n1264'>1264</a>
<a id='n1265' href='#n1265'>1265</a>
<a id='n1266' href='#n1266'>1266</a>
<a id='n1267' href='#n1267'>1267</a>
<a id='n1268' href='#n1268'>1268</a>
<a id='n1269' href='#n1269'>1269</a>
<a id='n1270' href='#n1270'>1270</a>
<a id='n1271' href='#n1271'>1271</a>
<a id='n1272' href='#n1272'>1272</a>
<a id='n1273' href='#n1273'>1273</a>
<a id='n1274' href='#n1274'>1274</a>
<a id='n1275' href='#n1275'>1275</a>
<a id='n1276' href='#n1276'>1276</a>
<a id='n1277' href='#n1277'>1277</a>
<a id='n1278' href='#n1278'>1278</a>
<a id='n1279' href='#n1279'>1279</a>
<a id='n1280' href='#n1280'>1280</a>
<a id='n1281' href='#n1281'>1281</a>
<a id='n1282' href='#n1282'>1282</a>
<a id='n1283' href='#n1283'>1283</a>
<a id='n1284' href='#n1284'>1284</a>
<a id='n1285' href='#n1285'>1285</a>
<a id='n1286' href='#n1286'>1286</a>
<a id='n1287' href='#n1287'>1287</a>
<a id='n1288' href='#n1288'>1288</a>
<a id='n1289' href='#n1289'>1289</a>
<a id='n1290' href='#n1290'>1290</a>
<a id='n1291' href='#n1291'>1291</a>
<a id='n1292' href='#n1292'>1292</a>
<a id='n1293' href='#n1293'>1293</a>
<a id='n1294' href='#n1294'>1294</a>
<a id='n1295' href='#n1295'>1295</a>
<a id='n1296' href='#n1296'>1296</a>
<a id='n1297' href='#n1297'>1297</a>
<a id='n1298' href='#n1298'>1298</a>
<a id='n1299' href='#n1299'>1299</a>
<a id='n1300' href='#n1300'>1300</a>
<a id='n1301' href='#n1301'>1301</a>
<a id='n1302' href='#n1302'>1302</a>
<a id='n1303' href='#n1303'>1303</a>
<a id='n1304' href='#n1304'>1304</a>
<a id='n1305' href='#n1305'>1305</a>
<a id='n1306' href='#n1306'>1306</a>
<a id='n1307' href='#n1307'>1307</a>
<a id='n1308' href='#n1308'>1308</a>
<a id='n1309' href='#n1309'>1309</a>
<a id='n1310' href='#n1310'>1310</a>
<a id='n1311' href='#n1311'>1311</a>
<a id='n1312' href='#n1312'>1312</a>
<a id='n1313' href='#n1313'>1313</a>
<a id='n1314' href='#n1314'>1314</a>
<a id='n1315' href='#n1315'>1315</a>
<a id='n1316' href='#n1316'>1316</a>
<a id='n1317' href='#n1317'>1317</a>
<a id='n1318' href='#n1318'>1318</a>
<a id='n1319' href='#n1319'>1319</a>
<a id='n1320' href='#n1320'>1320</a>
<a id='n1321' href='#n1321'>1321</a>
<a id='n1322' href='#n1322'>1322</a>
<a id='n1323' href='#n1323'>1323</a>
<a id='n1324' href='#n1324'>1324</a>
<a id='n1325' href='#n1325'>1325</a>
<a id='n1326' href='#n1326'>1326</a>
<a id='n1327' href='#n1327'>1327</a>
<a id='n1328' href='#n1328'>1328</a>
<a id='n1329' href='#n1329'>1329</a>
<a id='n1330' href='#n1330'>1330</a>
<a id='n1331' href='#n1331'>1331</a>
<a id='n1332' href='#n1332'>1332</a>
<a id='n1333' href='#n1333'>1333</a>
<a id='n1334' href='#n1334'>1334</a>
<a id='n1335' href='#n1335'>1335</a>
<a id='n1336' href='#n1336'>1336</a>
<a id='n1337' href='#n1337'>1337</a>
<a id='n1338' href='#n1338'>1338</a>
<a id='n1339' href='#n1339'>1339</a>
<a id='n1340' href='#n1340'>1340</a>
<a id='n1341' href='#n1341'>1341</a>
<a id='n1342' href='#n1342'>1342</a>
<a id='n1343' href='#n1343'>1343</a>
<a id='n1344' href='#n1344'>1344</a>
<a id='n1345' href='#n1345'>1345</a>
<a id='n1346' href='#n1346'>1346</a>
<a id='n1347' href='#n1347'>1347</a>
<a id='n1348' href='#n1348'>1348</a>
<a id='n1349' href='#n1349'>1349</a>
<a id='n1350' href='#n1350'>1350</a>
<a id='n1351' href='#n1351'>1351</a>
<a id='n1352' href='#n1352'>1352</a>
<a id='n1353' href='#n1353'>1353</a>
<a id='n1354' href='#n1354'>1354</a>
<a id='n1355' href='#n1355'>1355</a>
<a id='n1356' href='#n1356'>1356</a>
<a id='n1357' href='#n1357'>1357</a>
<a id='n1358' href='#n1358'>1358</a>
<a id='n1359' href='#n1359'>1359</a>
<a id='n1360' href='#n1360'>1360</a>
<a id='n1361' href='#n1361'>1361</a>
<a id='n1362' href='#n1362'>1362</a>
<a id='n1363' href='#n1363'>1363</a>
<a id='n1364' href='#n1364'>1364</a>
<a id='n1365' href='#n1365'>1365</a>
<a id='n1366' href='#n1366'>1366</a>
<a id='n1367' href='#n1367'>1367</a>
<a id='n1368' href='#n1368'>1368</a>
<a id='n1369' href='#n1369'>1369</a>
<a id='n1370' href='#n1370'>1370</a>
<a id='n1371' href='#n1371'>1371</a>
<a id='n1372' href='#n1372'>1372</a>
<a id='n1373' href='#n1373'>1373</a>
<a id='n1374' href='#n1374'>1374</a>
<a id='n1375' href='#n1375'>1375</a>
<a id='n1376' href='#n1376'>1376</a>
<a id='n1377' href='#n1377'>1377</a>
<a id='n1378' href='#n1378'>1378</a>
<a id='n1379' href='#n1379'>1379</a>
<a id='n1380' href='#n1380'>1380</a>
<a id='n1381' href='#n1381'>1381</a>
<a id='n1382' href='#n1382'>1382</a>
<a id='n1383' href='#n1383'>1383</a>
<a id='n1384' href='#n1384'>1384</a>
<a id='n1385' href='#n1385'>1385</a>
<a id='n1386' href='#n1386'>1386</a>
<a id='n1387' href='#n1387'>1387</a>
<a id='n1388' href='#n1388'>1388</a>
<a id='n1389' href='#n1389'>1389</a>
<a id='n1390' href='#n1390'>1390</a>
<a id='n1391' href='#n1391'>1391</a>
<a id='n1392' href='#n1392'>1392</a>
<a id='n1393' href='#n1393'>1393</a>
<a id='n1394' href='#n1394'>1394</a>
<a id='n1395' href='#n1395'>1395</a>
<a id='n1396' href='#n1396'>1396</a>
<a id='n1397' href='#n1397'>1397</a>
<a id='n1398' href='#n1398'>1398</a>
<a id='n1399' href='#n1399'>1399</a>
<a id='n1400' href='#n1400'>1400</a>
<a id='n1401' href='#n1401'>1401</a>
<a id='n1402' href='#n1402'>1402</a>
<a id='n1403' href='#n1403'>1403</a>
<a id='n1404' href='#n1404'>1404</a>
<a id='n1405' href='#n1405'>1405</a>
<a id='n1406' href='#n1406'>1406</a>
<a id='n1407' href='#n1407'>1407</a>
<a id='n1408' href='#n1408'>1408</a>
<a id='n1409' href='#n1409'>1409</a>
<a id='n1410' href='#n1410'>1410</a>
<a id='n1411' href='#n1411'>1411</a>
<a id='n1412' href='#n1412'>1412</a>
<a id='n1413' href='#n1413'>1413</a>
<a id='n1414' href='#n1414'>1414</a>
<a id='n1415' href='#n1415'>1415</a>
<a id='n1416' href='#n1416'>1416</a>
<a id='n1417' href='#n1417'>1417</a>
<a id='n1418' href='#n1418'>1418</a>
<a id='n1419' href='#n1419'>1419</a>
<a id='n1420' href='#n1420'>1420</a>
<a id='n1421' href='#n1421'>1421</a>
<a id='n1422' href='#n1422'>1422</a>
<a id='n1423' href='#n1423'>1423</a>
<a id='n1424' href='#n1424'>1424</a>
<a id='n1425' href='#n1425'>1425</a>
<a id='n1426' href='#n1426'>1426</a>
<a id='n1427' href='#n1427'>1427</a>
<a id='n1428' href='#n1428'>1428</a>
<a id='n1429' href='#n1429'>1429</a>
<a id='n1430' href='#n1430'>1430</a>
<a id='n1431' href='#n1431'>1431</a>
<a id='n1432' href='#n1432'>1432</a>
<a id='n1433' href='#n1433'>1433</a>
<a id='n1434' href='#n1434'>1434</a>
<a id='n1435' href='#n1435'>1435</a>
<a id='n1436' href='#n1436'>1436</a>
<a id='n1437' href='#n1437'>1437</a>
<a id='n1438' href='#n1438'>1438</a>
<a id='n1439' href='#n1439'>1439</a>
<a id='n1440' href='#n1440'>1440</a>
<a id='n1441' href='#n1441'>1441</a>
<a id='n1442' href='#n1442'>1442</a>
<a id='n1443' href='#n1443'>1443</a>
<a id='n1444' href='#n1444'>1444</a>
<a id='n1445' href='#n1445'>1445</a>
<a id='n1446' href='#n1446'>1446</a>
<a id='n1447' href='#n1447'>1447</a>
<a id='n1448' href='#n1448'>1448</a>
<a id='n1449' href='#n1449'>1449</a>
<a id='n1450' href='#n1450'>1450</a>
<a id='n1451' href='#n1451'>1451</a>
<a id='n1452' href='#n1452'>1452</a>
<a id='n1453' href='#n1453'>1453</a>
<a id='n1454' href='#n1454'>1454</a>
<a id='n1455' href='#n1455'>1455</a>
<a id='n1456' href='#n1456'>1456</a>
<a id='n1457' href='#n1457'>1457</a>
<a id='n1458' href='#n1458'>1458</a>
<a id='n1459' href='#n1459'>1459</a>
<a id='n1460' href='#n1460'>1460</a>
<a id='n1461' href='#n1461'>1461</a>
<a id='n1462' href='#n1462'>1462</a>
<a id='n1463' href='#n1463'>1463</a>
<a id='n1464' href='#n1464'>1464</a>
<a id='n1465' href='#n1465'>1465</a>
<a id='n1466' href='#n1466'>1466</a>
<a id='n1467' href='#n1467'>1467</a>
<a id='n1468' href='#n1468'>1468</a>
<a id='n1469' href='#n1469'>1469</a>
<a id='n1470' href='#n1470'>1470</a>
<a id='n1471' href='#n1471'>1471</a>
<a id='n1472' href='#n1472'>1472</a>
<a id='n1473' href='#n1473'>1473</a>
<a id='n1474' href='#n1474'>1474</a>
<a id='n1475' href='#n1475'>1475</a>
<a id='n1476' href='#n1476'>1476</a>
<a id='n1477' href='#n1477'>1477</a>
<a id='n1478' href='#n1478'>1478</a>
<a id='n1479' href='#n1479'>1479</a>
<a id='n1480' href='#n1480'>1480</a>
<a id='n1481' href='#n1481'>1481</a>
<a id='n1482' href='#n1482'>1482</a>
<a id='n1483' href='#n1483'>1483</a>
<a id='n1484' href='#n1484'>1484</a>
<a id='n1485' href='#n1485'>1485</a>
<a id='n1486' href='#n1486'>1486</a>
<a id='n1487' href='#n1487'>1487</a>
<a id='n1488' href='#n1488'>1488</a>
<a id='n1489' href='#n1489'>1489</a>
<a id='n1490' href='#n1490'>1490</a>
<a id='n1491' href='#n1491'>1491</a>
<a id='n1492' href='#n1492'>1492</a>
<a id='n1493' href='#n1493'>1493</a>
<a id='n1494' href='#n1494'>1494</a>
<a id='n1495' href='#n1495'>1495</a>
<a id='n1496' href='#n1496'>1496</a>
<a id='n1497' href='#n1497'>1497</a>
<a id='n1498' href='#n1498'>1498</a>
<a id='n1499' href='#n1499'>1499</a>
<a id='n1500' href='#n1500'>1500</a>
<a id='n1501' href='#n1501'>1501</a>
<a id='n1502' href='#n1502'>1502</a>
<a id='n1503' href='#n1503'>1503</a>
<a id='n1504' href='#n1504'>1504</a>
<a id='n1505' href='#n1505'>1505</a>
<a id='n1506' href='#n1506'>1506</a>
<a id='n1507' href='#n1507'>1507</a>
<a id='n1508' href='#n1508'>1508</a>
<a id='n1509' href='#n1509'>1509</a>
<a id='n1510' href='#n1510'>1510</a>
<a id='n1511' href='#n1511'>1511</a>
<a id='n1512' href='#n1512'>1512</a>
<a id='n1513' href='#n1513'>1513</a>
<a id='n1514' href='#n1514'>1514</a>
<a id='n1515' href='#n1515'>1515</a>
<a id='n1516' href='#n1516'>1516</a>
<a id='n1517' href='#n1517'>1517</a>
<a id='n1518' href='#n1518'>1518</a>
<a id='n1519' href='#n1519'>1519</a>
<a id='n1520' href='#n1520'>1520</a>
<a id='n1521' href='#n1521'>1521</a>
<a id='n1522' href='#n1522'>1522</a>
<a id='n1523' href='#n1523'>1523</a>
<a id='n1524' href='#n1524'>1524</a>
<a id='n1525' href='#n1525'>1525</a>
<a id='n1526' href='#n1526'>1526</a>
<a id='n1527' href='#n1527'>1527</a>
<a id='n1528' href='#n1528'>1528</a>
<a id='n1529' href='#n1529'>1529</a>
<a id='n1530' href='#n1530'>1530</a>
<a id='n1531' href='#n1531'>1531</a>
<a id='n1532' href='#n1532'>1532</a>
<a id='n1533' href='#n1533'>1533</a>
<a id='n1534' href='#n1534'>1534</a>
<a id='n1535' href='#n1535'>1535</a>
<a id='n1536' href='#n1536'>1536</a>
<a id='n1537' href='#n1537'>1537</a>
<a id='n1538' href='#n1538'>1538</a>
<a id='n1539' href='#n1539'>1539</a>
<a id='n1540' href='#n1540'>1540</a>
<a id='n1541' href='#n1541'>1541</a>
<a id='n1542' href='#n1542'>1542</a>
<a id='n1543' href='#n1543'>1543</a>
<a id='n1544' href='#n1544'>1544</a>
<a id='n1545' href='#n1545'>1545</a>
<a id='n1546' href='#n1546'>1546</a>
<a id='n1547' href='#n1547'>1547</a>
<a id='n1548' href='#n1548'>1548</a>
<a id='n1549' href='#n1549'>1549</a>
<a id='n1550' href='#n1550'>1550</a>
<a id='n1551' href='#n1551'>1551</a>
<a id='n1552' href='#n1552'>1552</a>
<a id='n1553' href='#n1553'>1553</a>
<a id='n1554' href='#n1554'>1554</a>
<a id='n1555' href='#n1555'>1555</a>
<a id='n1556' href='#n1556'>1556</a>
<a id='n1557' href='#n1557'>1557</a>
<a id='n1558' href='#n1558'>1558</a>
<a id='n1559' href='#n1559'>1559</a>
<a id='n1560' href='#n1560'>1560</a>
<a id='n1561' href='#n1561'>1561</a>
<a id='n1562' href='#n1562'>1562</a>
<a id='n1563' href='#n1563'>1563</a>
<a id='n1564' href='#n1564'>1564</a>
<a id='n1565' href='#n1565'>1565</a>
<a id='n1566' href='#n1566'>1566</a>
<a id='n1567' href='#n1567'>1567</a>
<a id='n1568' href='#n1568'>1568</a>
<a id='n1569' href='#n1569'>1569</a>
<a id='n1570' href='#n1570'>1570</a>
<a id='n1571' href='#n1571'>1571</a>
<a id='n1572' href='#n1572'>1572</a>
<a id='n1573' href='#n1573'>1573</a>
<a id='n1574' href='#n1574'>1574</a>
<a id='n1575' href='#n1575'>1575</a>
<a id='n1576' href='#n1576'>1576</a>
<a id='n1577' href='#n1577'>1577</a>
<a id='n1578' href='#n1578'>1578</a>
<a id='n1579' href='#n1579'>1579</a>
<a id='n1580' href='#n1580'>1580</a>
<a id='n1581' href='#n1581'>1581</a>
<a id='n1582' href='#n1582'>1582</a>
<a id='n1583' href='#n1583'>1583</a>
<a id='n1584' href='#n1584'>1584</a>
<a id='n1585' href='#n1585'>1585</a>
<a id='n1586' href='#n1586'>1586</a>
<a id='n1587' href='#n1587'>1587</a>
<a id='n1588' href='#n1588'>1588</a>
<a id='n1589' href='#n1589'>1589</a>
<a id='n1590' href='#n1590'>1590</a>
<a id='n1591' href='#n1591'>1591</a>
<a id='n1592' href='#n1592'>1592</a>
<a id='n1593' href='#n1593'>1593</a>
<a id='n1594' href='#n1594'>1594</a>
<a id='n1595' href='#n1595'>1595</a>
<a id='n1596' href='#n1596'>1596</a>
<a id='n1597' href='#n1597'>1597</a>
<a id='n1598' href='#n1598'>1598</a>
<a id='n1599' href='#n1599'>1599</a>
<a id='n1600' href='#n1600'>1600</a>
<a id='n1601' href='#n1601'>1601</a>
<a id='n1602' href='#n1602'>1602</a>
<a id='n1603' href='#n1603'>1603</a>
<a id='n1604' href='#n1604'>1604</a>
<a id='n1605' href='#n1605'>1605</a>
<a id='n1606' href='#n1606'>1606</a>
<a id='n1607' href='#n1607'>1607</a>
<a id='n1608' href='#n1608'>1608</a>
<a id='n1609' href='#n1609'>1609</a>
<a id='n1610' href='#n1610'>1610</a>
<a id='n1611' href='#n1611'>1611</a>
<a id='n1612' href='#n1612'>1612</a>
<a id='n1613' href='#n1613'>1613</a>
<a id='n1614' href='#n1614'>1614</a>
<a id='n1615' href='#n1615'>1615</a>
<a id='n1616' href='#n1616'>1616</a>
<a id='n1617' href='#n1617'>1617</a>
<a id='n1618' href='#n1618'>1618</a>
<a id='n1619' href='#n1619'>1619</a>
<a id='n1620' href='#n1620'>1620</a>
<a id='n1621' href='#n1621'>1621</a>
<a id='n1622' href='#n1622'>1622</a>
<a id='n1623' href='#n1623'>1623</a>
<a id='n1624' href='#n1624'>1624</a>
<a id='n1625' href='#n1625'>1625</a>
<a id='n1626' href='#n1626'>1626</a>
<a id='n1627' href='#n1627'>1627</a>
<a id='n1628' href='#n1628'>1628</a>
<a id='n1629' href='#n1629'>1629</a>
<a id='n1630' href='#n1630'>1630</a>
<a id='n1631' href='#n1631'>1631</a>
<a id='n1632' href='#n1632'>1632</a>
<a id='n1633' href='#n1633'>1633</a>
<a id='n1634' href='#n1634'>1634</a>
<a id='n1635' href='#n1635'>1635</a>
<a id='n1636' href='#n1636'>1636</a>
<a id='n1637' href='#n1637'>1637</a>
<a id='n1638' href='#n1638'>1638</a>
<a id='n1639' href='#n1639'>1639</a>
<a id='n1640' href='#n1640'>1640</a>
<a id='n1641' href='#n1641'>1641</a>
<a id='n1642' href='#n1642'>1642</a>
<a id='n1643' href='#n1643'>1643</a>
<a id='n1644' href='#n1644'>1644</a>
<a id='n1645' href='#n1645'>1645</a>
<a id='n1646' href='#n1646'>1646</a>
<a id='n1647' href='#n1647'>1647</a>
<a id='n1648' href='#n1648'>1648</a>
<a id='n1649' href='#n1649'>1649</a>
<a id='n1650' href='#n1650'>1650</a>
<a id='n1651' href='#n1651'>1651</a>
<a id='n1652' href='#n1652'>1652</a>
<a id='n1653' href='#n1653'>1653</a>
<a id='n1654' href='#n1654'>1654</a>
<a id='n1655' href='#n1655'>1655</a>
<a id='n1656' href='#n1656'>1656</a>
<a id='n1657' href='#n1657'>1657</a>
<a id='n1658' href='#n1658'>1658</a>
<a id='n1659' href='#n1659'>1659</a>
<a id='n1660' href='#n1660'>1660</a>
<a id='n1661' href='#n1661'>1661</a>
<a id='n1662' href='#n1662'>1662</a>
<a id='n1663' href='#n1663'>1663</a>
<a id='n1664' href='#n1664'>1664</a>
<a id='n1665' href='#n1665'>1665</a>
<a id='n1666' href='#n1666'>1666</a>
<a id='n1667' href='#n1667'>1667</a>
<a id='n1668' href='#n1668'>1668</a>
<a id='n1669' href='#n1669'>1669</a>
<a id='n1670' href='#n1670'>1670</a>
<a id='n1671' href='#n1671'>1671</a>
<a id='n1672' href='#n1672'>1672</a>
<a id='n1673' href='#n1673'>1673</a>
<a id='n1674' href='#n1674'>1674</a>
<a id='n1675' href='#n1675'>1675</a>
<a id='n1676' href='#n1676'>1676</a>
<a id='n1677' href='#n1677'>1677</a>
<a id='n1678' href='#n1678'>1678</a>
<a id='n1679' href='#n1679'>1679</a>
<a id='n1680' href='#n1680'>1680</a>
<a id='n1681' href='#n1681'>1681</a>
<a id='n1682' href='#n1682'>1682</a>
<a id='n1683' href='#n1683'>1683</a>
<a id='n1684' href='#n1684'>1684</a>
<a id='n1685' href='#n1685'>1685</a>
<a id='n1686' href='#n1686'>1686</a>
<a id='n1687' href='#n1687'>1687</a>
<a id='n1688' href='#n1688'>1688</a>
<a id='n1689' href='#n1689'>1689</a>
<a id='n1690' href='#n1690'>1690</a>
<a id='n1691' href='#n1691'>1691</a>
<a id='n1692' href='#n1692'>1692</a>
<a id='n1693' href='#n1693'>1693</a>
<a id='n1694' href='#n1694'>1694</a>
<a id='n1695' href='#n1695'>1695</a>
<a id='n1696' href='#n1696'>1696</a>
<a id='n1697' href='#n1697'>1697</a>
<a id='n1698' href='#n1698'>1698</a>
<a id='n1699' href='#n1699'>1699</a>
<a id='n1700' href='#n1700'>1700</a>
<a id='n1701' href='#n1701'>1701</a>
<a id='n1702' href='#n1702'>1702</a>
<a id='n1703' href='#n1703'>1703</a>
<a id='n1704' href='#n1704'>1704</a>
<a id='n1705' href='#n1705'>1705</a>
<a id='n1706' href='#n1706'>1706</a>
<a id='n1707' href='#n1707'>1707</a>
<a id='n1708' href='#n1708'>1708</a>
<a id='n1709' href='#n1709'>1709</a>
<a id='n1710' href='#n1710'>1710</a>
<a id='n1711' href='#n1711'>1711</a>
<a id='n1712' href='#n1712'>1712</a>
<a id='n1713' href='#n1713'>1713</a>
<a id='n1714' href='#n1714'>1714</a>
<a id='n1715' href='#n1715'>1715</a>
<a id='n1716' href='#n1716'>1716</a>
<a id='n1717' href='#n1717'>1717</a>
<a id='n1718' href='#n1718'>1718</a>
<a id='n1719' href='#n1719'>1719</a>
<a id='n1720' href='#n1720'>1720</a>
<a id='n1721' href='#n1721'>1721</a>
<a id='n1722' href='#n1722'>1722</a>
<a id='n1723' href='#n1723'>1723</a>
<a id='n1724' href='#n1724'>1724</a>
<a id='n1725' href='#n1725'>1725</a>
<a id='n1726' href='#n1726'>1726</a>
<a id='n1727' href='#n1727'>1727</a>
<a id='n1728' href='#n1728'>1728</a>
<a id='n1729' href='#n1729'>1729</a>
<a id='n1730' href='#n1730'>1730</a>
<a id='n1731' href='#n1731'>1731</a>
<a id='n1732' href='#n1732'>1732</a>
<a id='n1733' href='#n1733'>1733</a>
<a id='n1734' href='#n1734'>1734</a>
<a id='n1735' href='#n1735'>1735</a>
<a id='n1736' href='#n1736'>1736</a>
<a id='n1737' href='#n1737'>1737</a>
<a id='n1738' href='#n1738'>1738</a>
<a id='n1739' href='#n1739'>1739</a>
<a id='n1740' href='#n1740'>1740</a>
<a id='n1741' href='#n1741'>1741</a>
<a id='n1742' href='#n1742'>1742</a>
<a id='n1743' href='#n1743'>1743</a>
<a id='n1744' href='#n1744'>1744</a>
<a id='n1745' href='#n1745'>1745</a>
<a id='n1746' href='#n1746'>1746</a>
<a id='n1747' href='#n1747'>1747</a>
<a id='n1748' href='#n1748'>1748</a>
<a id='n1749' href='#n1749'>1749</a>
<a id='n1750' href='#n1750'>1750</a>
<a id='n1751' href='#n1751'>1751</a>
<a id='n1752' href='#n1752'>1752</a>
<a id='n1753' href='#n1753'>1753</a>
<a id='n1754' href='#n1754'>1754</a>
<a id='n1755' href='#n1755'>1755</a>
<a id='n1756' href='#n1756'>1756</a>
<a id='n1757' href='#n1757'>1757</a>
<a id='n1758' href='#n1758'>1758</a>
<a id='n1759' href='#n1759'>1759</a>
<a id='n1760' href='#n1760'>1760</a>
<a id='n1761' href='#n1761'>1761</a>
<a id='n1762' href='#n1762'>1762</a>
<a id='n1763' href='#n1763'>1763</a>
<a id='n1764' href='#n1764'>1764</a>
<a id='n1765' href='#n1765'>1765</a>
<a id='n1766' href='#n1766'>1766</a>
<a id='n1767' href='#n1767'>1767</a>
<a id='n1768' href='#n1768'>1768</a>
<a id='n1769' href='#n1769'>1769</a>
<a id='n1770' href='#n1770'>1770</a>
<a id='n1771' href='#n1771'>1771</a>
<a id='n1772' href='#n1772'>1772</a>
<a id='n1773' href='#n1773'>1773</a>
<a id='n1774' href='#n1774'>1774</a>
<a id='n1775' href='#n1775'>1775</a>
<a id='n1776' href='#n1776'>1776</a>
<a id='n1777' href='#n1777'>1777</a>
<a id='n1778' href='#n1778'>1778</a>
<a id='n1779' href='#n1779'>1779</a>
<a id='n1780' href='#n1780'>1780</a>
<a id='n1781' href='#n1781'>1781</a>
<a id='n1782' href='#n1782'>1782</a>
<a id='n1783' href='#n1783'>1783</a>
<a id='n1784' href='#n1784'>1784</a>
<a id='n1785' href='#n1785'>1785</a>
<a id='n1786' href='#n1786'>1786</a>
<a id='n1787' href='#n1787'>1787</a>
<a id='n1788' href='#n1788'>1788</a>
<a id='n1789' href='#n1789'>1789</a>
<a id='n1790' href='#n1790'>1790</a>
<a id='n1791' href='#n1791'>1791</a>
<a id='n1792' href='#n1792'>1792</a>
<a id='n1793' href='#n1793'>1793</a>
<a id='n1794' href='#n1794'>1794</a>
<a id='n1795' href='#n1795'>1795</a>
<a id='n1796' href='#n1796'>1796</a>
<a id='n1797' href='#n1797'>1797</a>
<a id='n1798' href='#n1798'>1798</a>
<a id='n1799' href='#n1799'>1799</a>
<a id='n1800' href='#n1800'>1800</a>
<a id='n1801' href='#n1801'>1801</a>
<a id='n1802' href='#n1802'>1802</a>
<a id='n1803' href='#n1803'>1803</a>
<a id='n1804' href='#n1804'>1804</a>
<a id='n1805' href='#n1805'>1805</a>
<a id='n1806' href='#n1806'>1806</a>
<a id='n1807' href='#n1807'>1807</a>
<a id='n1808' href='#n1808'>1808</a>
<a id='n1809' href='#n1809'>1809</a>
<a id='n1810' href='#n1810'>1810</a>
<a id='n1811' href='#n1811'>1811</a>
<a id='n1812' href='#n1812'>1812</a>
<a id='n1813' href='#n1813'>1813</a>
<a id='n1814' href='#n1814'>1814</a>
<a id='n1815' href='#n1815'>1815</a>
<a id='n1816' href='#n1816'>1816</a>
<a id='n1817' href='#n1817'>1817</a>
<a id='n1818' href='#n1818'>1818</a>
<a id='n1819' href='#n1819'>1819</a>
<a id='n1820' href='#n1820'>1820</a>
<a id='n1821' href='#n1821'>1821</a>
<a id='n1822' href='#n1822'>1822</a>
<a id='n1823' href='#n1823'>1823</a>
<a id='n1824' href='#n1824'>1824</a>
<a id='n1825' href='#n1825'>1825</a>
<a id='n1826' href='#n1826'>1826</a>
<a id='n1827' href='#n1827'>1827</a>
<a id='n1828' href='#n1828'>1828</a>
<a id='n1829' href='#n1829'>1829</a>
<a id='n1830' href='#n1830'>1830</a>
<a id='n1831' href='#n1831'>1831</a>
<a id='n1832' href='#n1832'>1832</a>
<a id='n1833' href='#n1833'>1833</a>
<a id='n1834' href='#n1834'>1834</a>
<a id='n1835' href='#n1835'>1835</a>
<a id='n1836' href='#n1836'>1836</a>
<a id='n1837' href='#n1837'>1837</a>
<a id='n1838' href='#n1838'>1838</a>
<a id='n1839' href='#n1839'>1839</a>
<a id='n1840' href='#n1840'>1840</a>
<a id='n1841' href='#n1841'>1841</a>
<a id='n1842' href='#n1842'>1842</a>
<a id='n1843' href='#n1843'>1843</a>
<a id='n1844' href='#n1844'>1844</a>
<a id='n1845' href='#n1845'>1845</a>
<a id='n1846' href='#n1846'>1846</a>
<a id='n1847' href='#n1847'>1847</a>
<a id='n1848' href='#n1848'>1848</a>
<a id='n1849' href='#n1849'>1849</a>
<a id='n1850' href='#n1850'>1850</a>
<a id='n1851' href='#n1851'>1851</a>
<a id='n1852' href='#n1852'>1852</a>
<a id='n1853' href='#n1853'>1853</a>
<a id='n1854' href='#n1854'>1854</a>
<a id='n1855' href='#n1855'>1855</a>
<a id='n1856' href='#n1856'>1856</a>
<a id='n1857' href='#n1857'>1857</a>
<a id='n1858' href='#n1858'>1858</a>
<a id='n1859' href='#n1859'>1859</a>
<a id='n1860' href='#n1860'>1860</a>
<a id='n1861' href='#n1861'>1861</a>
<a id='n1862' href='#n1862'>1862</a>
<a id='n1863' href='#n1863'>1863</a>
<a id='n1864' href='#n1864'>1864</a>
<a id='n1865' href='#n1865'>1865</a>
<a id='n1866' href='#n1866'>1866</a>
<a id='n1867' href='#n1867'>1867</a>
<a id='n1868' href='#n1868'>1868</a>
<a id='n1869' href='#n1869'>1869</a>
<a id='n1870' href='#n1870'>1870</a>
<a id='n1871' href='#n1871'>1871</a>
<a id='n1872' href='#n1872'>1872</a>
<a id='n1873' href='#n1873'>1873</a>
<a id='n1874' href='#n1874'>1874</a>
<a id='n1875' href='#n1875'>1875</a>
<a id='n1876' href='#n1876'>1876</a>
<a id='n1877' href='#n1877'>1877</a>
<a id='n1878' href='#n1878'>1878</a>
<a id='n1879' href='#n1879'>1879</a>
<a id='n1880' href='#n1880'>1880</a>
<a id='n1881' href='#n1881'>1881</a>
<a id='n1882' href='#n1882'>1882</a>
<a id='n1883' href='#n1883'>1883</a>
<a id='n1884' href='#n1884'>1884</a>
<a id='n1885' href='#n1885'>1885</a>
<a id='n1886' href='#n1886'>1886</a>
<a id='n1887' href='#n1887'>1887</a>
<a id='n1888' href='#n1888'>1888</a>
<a id='n1889' href='#n1889'>1889</a>
<a id='n1890' href='#n1890'>1890</a>
<a id='n1891' href='#n1891'>1891</a>
<a id='n1892' href='#n1892'>1892</a>
<a id='n1893' href='#n1893'>1893</a>
<a id='n1894' href='#n1894'>1894</a>
<a id='n1895' href='#n1895'>1895</a>
<a id='n1896' href='#n1896'>1896</a>
<a id='n1897' href='#n1897'>1897</a>
<a id='n1898' href='#n1898'>1898</a>
<a id='n1899' href='#n1899'>1899</a>
<a id='n1900' href='#n1900'>1900</a>
<a id='n1901' href='#n1901'>1901</a>
<a id='n1902' href='#n1902'>1902</a>
<a id='n1903' href='#n1903'>1903</a>
<a id='n1904' href='#n1904'>1904</a>
<a id='n1905' href='#n1905'>1905</a>
<a id='n1906' href='#n1906'>1906</a>
<a id='n1907' href='#n1907'>1907</a>
<a id='n1908' href='#n1908'>1908</a>
<a id='n1909' href='#n1909'>1909</a>
<a id='n1910' href='#n1910'>1910</a>
<a id='n1911' href='#n1911'>1911</a>
<a id='n1912' href='#n1912'>1912</a>
<a id='n1913' href='#n1913'>1913</a>
<a id='n1914' href='#n1914'>1914</a>
<a id='n1915' href='#n1915'>1915</a>
<a id='n1916' href='#n1916'>1916</a>
<a id='n1917' href='#n1917'>1917</a>
<a id='n1918' href='#n1918'>1918</a>
<a id='n1919' href='#n1919'>1919</a>
<a id='n1920' href='#n1920'>1920</a>
<a id='n1921' href='#n1921'>1921</a>
<a id='n1922' href='#n1922'>1922</a>
<a id='n1923' href='#n1923'>1923</a>
<a id='n1924' href='#n1924'>1924</a>
<a id='n1925' href='#n1925'>1925</a>
<a id='n1926' href='#n1926'>1926</a>
<a id='n1927' href='#n1927'>1927</a>
<a id='n1928' href='#n1928'>1928</a>
<a id='n1929' href='#n1929'>1929</a>
<a id='n1930' href='#n1930'>1930</a>
<a id='n1931' href='#n1931'>1931</a>
<a id='n1932' href='#n1932'>1932</a>
<a id='n1933' href='#n1933'>1933</a>
<a id='n1934' href='#n1934'>1934</a>
<a id='n1935' href='#n1935'>1935</a>
<a id='n1936' href='#n1936'>1936</a>
<a id='n1937' href='#n1937'>1937</a>
<a id='n1938' href='#n1938'>1938</a>
<a id='n1939' href='#n1939'>1939</a>
<a id='n1940' href='#n1940'>1940</a>
<a id='n1941' href='#n1941'>1941</a>
<a id='n1942' href='#n1942'>1942</a>
<a id='n1943' href='#n1943'>1943</a>
<a id='n1944' href='#n1944'>1944</a>
<a id='n1945' href='#n1945'>1945</a>
<a id='n1946' href='#n1946'>1946</a>
<a id='n1947' href='#n1947'>1947</a>
<a id='n1948' href='#n1948'>1948</a>
<a id='n1949' href='#n1949'>1949</a>
<a id='n1950' href='#n1950'>1950</a>
<a id='n1951' href='#n1951'>1951</a>
<a id='n1952' href='#n1952'>1952</a>
<a id='n1953' href='#n1953'>1953</a>
<a id='n1954' href='#n1954'>1954</a>
<a id='n1955' href='#n1955'>1955</a>
<a id='n1956' href='#n1956'>1956</a>
<a id='n1957' href='#n1957'>1957</a>
<a id='n1958' href='#n1958'>1958</a>
<a id='n1959' href='#n1959'>1959</a>
<a id='n1960' href='#n1960'>1960</a>
<a id='n1961' href='#n1961'>1961</a>
<a id='n1962' href='#n1962'>1962</a>
<a id='n1963' href='#n1963'>1963</a>
<a id='n1964' href='#n1964'>1964</a>
<a id='n1965' href='#n1965'>1965</a>
<a id='n1966' href='#n1966'>1966</a>
<a id='n1967' href='#n1967'>1967</a>
<a id='n1968' href='#n1968'>1968</a>
<a id='n1969' href='#n1969'>1969</a>
<a id='n1970' href='#n1970'>1970</a>
<a id='n1971' href='#n1971'>1971</a>
<a id='n1972' href='#n1972'>1972</a>
<a id='n1973' href='#n1973'>1973</a>
<a id='n1974' href='#n1974'>1974</a>
<a id='n1975' href='#n1975'>1975</a>
<a id='n1976' href='#n1976'>1976</a>
<a id='n1977' href='#n1977'>1977</a>
<a id='n1978' href='#n1978'>1978</a>
<a id='n1979' href='#n1979'>1979</a>
<a id='n1980' href='#n1980'>1980</a>
<a id='n1981' href='#n1981'>1981</a>
<a id='n1982' href='#n1982'>1982</a>
<a id='n1983' href='#n1983'>1983</a>
<a id='n1984' href='#n1984'>1984</a>
<a id='n1985' href='#n1985'>1985</a>
<a id='n1986' href='#n1986'>1986</a>
<a id='n1987' href='#n1987'>1987</a>
<a id='n1988' href='#n1988'>1988</a>
<a id='n1989' href='#n1989'>1989</a>
<a id='n1990' href='#n1990'>1990</a>
<a id='n1991' href='#n1991'>1991</a>
<a id='n1992' href='#n1992'>1992</a>
<a id='n1993' href='#n1993'>1993</a>
<a id='n1994' href='#n1994'>1994</a>
<a id='n1995' href='#n1995'>1995</a>
<a id='n1996' href='#n1996'>1996</a>
<a id='n1997' href='#n1997'>1997</a>
<a id='n1998' href='#n1998'>1998</a>
<a id='n1999' href='#n1999'>1999</a>
<a id='n2000' href='#n2000'>2000</a>
<a id='n2001' href='#n2001'>2001</a>
<a id='n2002' href='#n2002'>2002</a>
<a id='n2003' href='#n2003'>2003</a>
<a id='n2004' href='#n2004'>2004</a>
<a id='n2005' href='#n2005'>2005</a>
<a id='n2006' href='#n2006'>2006</a>
<a id='n2007' href='#n2007'>2007</a>
<a id='n2008' href='#n2008'>2008</a>
<a id='n2009' href='#n2009'>2009</a>
<a id='n2010' href='#n2010'>2010</a>
<a id='n2011' href='#n2011'>2011</a>
<a id='n2012' href='#n2012'>2012</a>
<a id='n2013' href='#n2013'>2013</a>
<a id='n2014' href='#n2014'>2014</a>
<a id='n2015' href='#n2015'>2015</a>
<a id='n2016' href='#n2016'>2016</a>
<a id='n2017' href='#n2017'>2017</a>
<a id='n2018' href='#n2018'>2018</a>
<a id='n2019' href='#n2019'>2019</a>
<a id='n2020' href='#n2020'>2020</a>
<a id='n2021' href='#n2021'>2021</a>
<a id='n2022' href='#n2022'>2022</a>
<a id='n2023' href='#n2023'>2023</a>
<a id='n2024' href='#n2024'>2024</a>
<a id='n2025' href='#n2025'>2025</a>
<a id='n2026' href='#n2026'>2026</a>
<a id='n2027' href='#n2027'>2027</a>
<a id='n2028' href='#n2028'>2028</a>
<a id='n2029' href='#n2029'>2029</a>
<a id='n2030' href='#n2030'>2030</a>
<a id='n2031' href='#n2031'>2031</a>
<a id='n2032' href='#n2032'>2032</a>
<a id='n2033' href='#n2033'>2033</a>
<a id='n2034' href='#n2034'>2034</a>
<a id='n2035' href='#n2035'>2035</a>
<a id='n2036' href='#n2036'>2036</a>
<a id='n2037' href='#n2037'>2037</a>
<a id='n2038' href='#n2038'>2038</a>
<a id='n2039' href='#n2039'>2039</a>
<a id='n2040' href='#n2040'>2040</a>
<a id='n2041' href='#n2041'>2041</a>
<a id='n2042' href='#n2042'>2042</a>
<a id='n2043' href='#n2043'>2043</a>
<a id='n2044' href='#n2044'>2044</a>
<a id='n2045' href='#n2045'>2045</a>
<a id='n2046' href='#n2046'>2046</a>
<a id='n2047' href='#n2047'>2047</a>
<a id='n2048' href='#n2048'>2048</a>
<a id='n2049' href='#n2049'>2049</a>
<a id='n2050' href='#n2050'>2050</a>
<a id='n2051' href='#n2051'>2051</a>
<a id='n2052' href='#n2052'>2052</a>
<a id='n2053' href='#n2053'>2053</a>
<a id='n2054' href='#n2054'>2054</a>
<a id='n2055' href='#n2055'>2055</a>
<a id='n2056' href='#n2056'>2056</a>
<a id='n2057' href='#n2057'>2057</a>
<a id='n2058' href='#n2058'>2058</a>
<a id='n2059' href='#n2059'>2059</a>
<a id='n2060' href='#n2060'>2060</a>
<a id='n2061' href='#n2061'>2061</a>
<a id='n2062' href='#n2062'>2062</a>
<a id='n2063' href='#n2063'>2063</a>
<a id='n2064' href='#n2064'>2064</a>
<a id='n2065' href='#n2065'>2065</a>
<a id='n2066' href='#n2066'>2066</a>
<a id='n2067' href='#n2067'>2067</a>
<a id='n2068' href='#n2068'>2068</a>
<a id='n2069' href='#n2069'>2069</a>
<a id='n2070' href='#n2070'>2070</a>
<a id='n2071' href='#n2071'>2071</a>
<a id='n2072' href='#n2072'>2072</a>
<a id='n2073' href='#n2073'>2073</a>
<a id='n2074' href='#n2074'>2074</a>
<a id='n2075' href='#n2075'>2075</a>
<a id='n2076' href='#n2076'>2076</a>
<a id='n2077' href='#n2077'>2077</a>
<a id='n2078' href='#n2078'>2078</a>
<a id='n2079' href='#n2079'>2079</a>
<a id='n2080' href='#n2080'>2080</a>
<a id='n2081' href='#n2081'>2081</a>
<a id='n2082' href='#n2082'>2082</a>
<a id='n2083' href='#n2083'>2083</a>
<a id='n2084' href='#n2084'>2084</a>
<a id='n2085' href='#n2085'>2085</a>
<a id='n2086' href='#n2086'>2086</a>
<a id='n2087' href='#n2087'>2087</a>
<a id='n2088' href='#n2088'>2088</a>
<a id='n2089' href='#n2089'>2089</a>
<a id='n2090' href='#n2090'>2090</a>
<a id='n2091' href='#n2091'>2091</a>
<a id='n2092' href='#n2092'>2092</a>
<a id='n2093' href='#n2093'>2093</a>
<a id='n2094' href='#n2094'>2094</a>
<a id='n2095' href='#n2095'>2095</a>
<a id='n2096' href='#n2096'>2096</a>
<a id='n2097' href='#n2097'>2097</a>
<a id='n2098' href='#n2098'>2098</a>
<a id='n2099' href='#n2099'>2099</a>
<a id='n2100' href='#n2100'>2100</a>
<a id='n2101' href='#n2101'>2101</a>
<a id='n2102' href='#n2102'>2102</a>
<a id='n2103' href='#n2103'>2103</a>
<a id='n2104' href='#n2104'>2104</a>
<a id='n2105' href='#n2105'>2105</a>
<a id='n2106' href='#n2106'>2106</a>
<a id='n2107' href='#n2107'>2107</a>
<a id='n2108' href='#n2108'>2108</a>
<a id='n2109' href='#n2109'>2109</a>
<a id='n2110' href='#n2110'>2110</a>
<a id='n2111' href='#n2111'>2111</a>
<a id='n2112' href='#n2112'>2112</a>
<a id='n2113' href='#n2113'>2113</a>
<a id='n2114' href='#n2114'>2114</a>
<a id='n2115' href='#n2115'>2115</a>
<a id='n2116' href='#n2116'>2116</a>
<a id='n2117' href='#n2117'>2117</a>
<a id='n2118' href='#n2118'>2118</a>
<a id='n2119' href='#n2119'>2119</a>
<a id='n2120' href='#n2120'>2120</a>
<a id='n2121' href='#n2121'>2121</a>
<a id='n2122' href='#n2122'>2122</a>
<a id='n2123' href='#n2123'>2123</a>
<a id='n2124' href='#n2124'>2124</a>
<a id='n2125' href='#n2125'>2125</a>
<a id='n2126' href='#n2126'>2126</a>
<a id='n2127' href='#n2127'>2127</a>
<a id='n2128' href='#n2128'>2128</a>
<a id='n2129' href='#n2129'>2129</a>
<a id='n2130' href='#n2130'>2130</a>
<a id='n2131' href='#n2131'>2131</a>
<a id='n2132' href='#n2132'>2132</a>
<a id='n2133' href='#n2133'>2133</a>
<a id='n2134' href='#n2134'>2134</a>
<a id='n2135' href='#n2135'>2135</a>
<a id='n2136' href='#n2136'>2136</a>
<a id='n2137' href='#n2137'>2137</a>
<a id='n2138' href='#n2138'>2138</a>
<a id='n2139' href='#n2139'>2139</a>
<a id='n2140' href='#n2140'>2140</a>
<a id='n2141' href='#n2141'>2141</a>
<a id='n2142' href='#n2142'>2142</a>
<a id='n2143' href='#n2143'>2143</a>
<a id='n2144' href='#n2144'>2144</a>
<a id='n2145' href='#n2145'>2145</a>
<a id='n2146' href='#n2146'>2146</a>
<a id='n2147' href='#n2147'>2147</a>
<a id='n2148' href='#n2148'>2148</a>
<a id='n2149' href='#n2149'>2149</a>
<a id='n2150' href='#n2150'>2150</a>
<a id='n2151' href='#n2151'>2151</a>
<a id='n2152' href='#n2152'>2152</a>
<a id='n2153' href='#n2153'>2153</a>
<a id='n2154' href='#n2154'>2154</a>
<a id='n2155' href='#n2155'>2155</a>
<a id='n2156' href='#n2156'>2156</a>
<a id='n2157' href='#n2157'>2157</a>
<a id='n2158' href='#n2158'>2158</a>
<a id='n2159' href='#n2159'>2159</a>
<a id='n2160' href='#n2160'>2160</a>
<a id='n2161' href='#n2161'>2161</a>
<a id='n2162' href='#n2162'>2162</a>
<a id='n2163' href='#n2163'>2163</a>
<a id='n2164' href='#n2164'>2164</a>
<a id='n2165' href='#n2165'>2165</a>
<a id='n2166' href='#n2166'>2166</a>
<a id='n2167' href='#n2167'>2167</a>
<a id='n2168' href='#n2168'>2168</a>
<a id='n2169' href='#n2169'>2169</a>
<a id='n2170' href='#n2170'>2170</a>
<a id='n2171' href='#n2171'>2171</a>
<a id='n2172' href='#n2172'>2172</a>
<a id='n2173' href='#n2173'>2173</a>
<a id='n2174' href='#n2174'>2174</a>
<a id='n2175' href='#n2175'>2175</a>
<a id='n2176' href='#n2176'>2176</a>
<a id='n2177' href='#n2177'>2177</a>
<a id='n2178' href='#n2178'>2178</a>
<a id='n2179' href='#n2179'>2179</a>
<a id='n2180' href='#n2180'>2180</a>
<a id='n2181' href='#n2181'>2181</a>
<a id='n2182' href='#n2182'>2182</a>
<a id='n2183' href='#n2183'>2183</a>
<a id='n2184' href='#n2184'>2184</a>
<a id='n2185' href='#n2185'>2185</a>
<a id='n2186' href='#n2186'>2186</a>
<a id='n2187' href='#n2187'>2187</a>
<a id='n2188' href='#n2188'>2188</a>
<a id='n2189' href='#n2189'>2189</a>
<a id='n2190' href='#n2190'>2190</a>
<a id='n2191' href='#n2191'>2191</a>
<a id='n2192' href='#n2192'>2192</a>
<a id='n2193' href='#n2193'>2193</a>
<a id='n2194' href='#n2194'>2194</a>
<a id='n2195' href='#n2195'>2195</a>
<a id='n2196' href='#n2196'>2196</a>
<a id='n2197' href='#n2197'>2197</a>
<a id='n2198' href='#n2198'>2198</a>
<a id='n2199' href='#n2199'>2199</a>
<a id='n2200' href='#n2200'>2200</a>
<a id='n2201' href='#n2201'>2201</a>
<a id='n2202' href='#n2202'>2202</a>
<a id='n2203' href='#n2203'>2203</a>
<a id='n2204' href='#n2204'>2204</a>
<a id='n2205' href='#n2205'>2205</a>
<a id='n2206' href='#n2206'>2206</a>
<a id='n2207' href='#n2207'>2207</a>
<a id='n2208' href='#n2208'>2208</a>
<a id='n2209' href='#n2209'>2209</a>
<a id='n2210' href='#n2210'>2210</a>
<a id='n2211' href='#n2211'>2211</a>
<a id='n2212' href='#n2212'>2212</a>
<a id='n2213' href='#n2213'>2213</a>
<a id='n2214' href='#n2214'>2214</a>
<a id='n2215' href='#n2215'>2215</a>
<a id='n2216' href='#n2216'>2216</a>
<a id='n2217' href='#n2217'>2217</a>
<a id='n2218' href='#n2218'>2218</a>
<a id='n2219' href='#n2219'>2219</a>
<a id='n2220' href='#n2220'>2220</a>
<a id='n2221' href='#n2221'>2221</a>
<a id='n2222' href='#n2222'>2222</a>
<a id='n2223' href='#n2223'>2223</a>
<a id='n2224' href='#n2224'>2224</a>
<a id='n2225' href='#n2225'>2225</a>
<a id='n2226' href='#n2226'>2226</a>
<a id='n2227' href='#n2227'>2227</a>
<a id='n2228' href='#n2228'>2228</a>
<a id='n2229' href='#n2229'>2229</a>
<a id='n2230' href='#n2230'>2230</a>
<a id='n2231' href='#n2231'>2231</a>
<a id='n2232' href='#n2232'>2232</a>
<a id='n2233' href='#n2233'>2233</a>
<a id='n2234' href='#n2234'>2234</a>
<a id='n2235' href='#n2235'>2235</a>
<a id='n2236' href='#n2236'>2236</a>
<a id='n2237' href='#n2237'>2237</a>
<a id='n2238' href='#n2238'>2238</a>
<a id='n2239' href='#n2239'>2239</a>
<a id='n2240' href='#n2240'>2240</a>
<a id='n2241' href='#n2241'>2241</a>
<a id='n2242' href='#n2242'>2242</a>
<a id='n2243' href='#n2243'>2243</a>
<a id='n2244' href='#n2244'>2244</a>
<a id='n2245' href='#n2245'>2245</a>
<a id='n2246' href='#n2246'>2246</a>
<a id='n2247' href='#n2247'>2247</a>
<a id='n2248' href='#n2248'>2248</a>
<a id='n2249' href='#n2249'>2249</a>
<a id='n2250' href='#n2250'>2250</a>
<a id='n2251' href='#n2251'>2251</a>
<a id='n2252' href='#n2252'>2252</a>
<a id='n2253' href='#n2253'>2253</a>
<a id='n2254' href='#n2254'>2254</a>
<a id='n2255' href='#n2255'>2255</a>
<a id='n2256' href='#n2256'>2256</a>
<a id='n2257' href='#n2257'>2257</a>
<a id='n2258' href='#n2258'>2258</a>
<a id='n2259' href='#n2259'>2259</a>
<a id='n2260' href='#n2260'>2260</a>
<a id='n2261' href='#n2261'>2261</a>
<a id='n2262' href='#n2262'>2262</a>
<a id='n2263' href='#n2263'>2263</a>
<a id='n2264' href='#n2264'>2264</a>
<a id='n2265' href='#n2265'>2265</a>
<a id='n2266' href='#n2266'>2266</a>
<a id='n2267' href='#n2267'>2267</a>
<a id='n2268' href='#n2268'>2268</a>
<a id='n2269' href='#n2269'>2269</a>
<a id='n2270' href='#n2270'>2270</a>
<a id='n2271' href='#n2271'>2271</a>
<a id='n2272' href='#n2272'>2272</a>
<a id='n2273' href='#n2273'>2273</a>
<a id='n2274' href='#n2274'>2274</a>
<a id='n2275' href='#n2275'>2275</a>
<a id='n2276' href='#n2276'>2276</a>
<a id='n2277' href='#n2277'>2277</a>
<a id='n2278' href='#n2278'>2278</a>
<a id='n2279' href='#n2279'>2279</a>
<a id='n2280' href='#n2280'>2280</a>
<a id='n2281' href='#n2281'>2281</a>
<a id='n2282' href='#n2282'>2282</a>
<a id='n2283' href='#n2283'>2283</a>
<a id='n2284' href='#n2284'>2284</a>
<a id='n2285' href='#n2285'>2285</a>
<a id='n2286' href='#n2286'>2286</a>
<a id='n2287' href='#n2287'>2287</a>
<a id='n2288' href='#n2288'>2288</a>
<a id='n2289' href='#n2289'>2289</a>
<a id='n2290' href='#n2290'>2290</a>
<a id='n2291' href='#n2291'>2291</a>
<a id='n2292' href='#n2292'>2292</a>
<a id='n2293' href='#n2293'>2293</a>
<a id='n2294' href='#n2294'>2294</a>
<a id='n2295' href='#n2295'>2295</a>
<a id='n2296' href='#n2296'>2296</a>
<a id='n2297' href='#n2297'>2297</a>
<a id='n2298' href='#n2298'>2298</a>
<a id='n2299' href='#n2299'>2299</a>
<a id='n2300' href='#n2300'>2300</a>
<a id='n2301' href='#n2301'>2301</a>
<a id='n2302' href='#n2302'>2302</a>
<a id='n2303' href='#n2303'>2303</a>
<a id='n2304' href='#n2304'>2304</a>
<a id='n2305' href='#n2305'>2305</a>
<a id='n2306' href='#n2306'>2306</a>
<a id='n2307' href='#n2307'>2307</a>
<a id='n2308' href='#n2308'>2308</a>
<a id='n2309' href='#n2309'>2309</a>
<a id='n2310' href='#n2310'>2310</a>
<a id='n2311' href='#n2311'>2311</a>
<a id='n2312' href='#n2312'>2312</a>
<a id='n2313' href='#n2313'>2313</a>
<a id='n2314' href='#n2314'>2314</a>
<a id='n2315' href='#n2315'>2315</a>
<a id='n2316' href='#n2316'>2316</a>
<a id='n2317' href='#n2317'>2317</a>
<a id='n2318' href='#n2318'>2318</a>
<a id='n2319' href='#n2319'>2319</a>
<a id='n2320' href='#n2320'>2320</a>
<a id='n2321' href='#n2321'>2321</a>
<a id='n2322' href='#n2322'>2322</a>
<a id='n2323' href='#n2323'>2323</a>
<a id='n2324' href='#n2324'>2324</a>
<a id='n2325' href='#n2325'>2325</a>
<a id='n2326' href='#n2326'>2326</a>
<a id='n2327' href='#n2327'>2327</a>
<a id='n2328' href='#n2328'>2328</a>
<a id='n2329' href='#n2329'>2329</a>
<a id='n2330' href='#n2330'>2330</a>
<a id='n2331' href='#n2331'>2331</a>
<a id='n2332' href='#n2332'>2332</a>
<a id='n2333' href='#n2333'>2333</a>
<a id='n2334' href='#n2334'>2334</a>
<a id='n2335' href='#n2335'>2335</a>
<a id='n2336' href='#n2336'>2336</a>
<a id='n2337' href='#n2337'>2337</a>
<a id='n2338' href='#n2338'>2338</a>
<a id='n2339' href='#n2339'>2339</a>
<a id='n2340' href='#n2340'>2340</a>
<a id='n2341' href='#n2341'>2341</a>
<a id='n2342' href='#n2342'>2342</a>
<a id='n2343' href='#n2343'>2343</a>
<a id='n2344' href='#n2344'>2344</a>
<a id='n2345' href='#n2345'>2345</a>
<a id='n2346' href='#n2346'>2346</a>
<a id='n2347' href='#n2347'>2347</a>
<a id='n2348' href='#n2348'>2348</a>
<a id='n2349' href='#n2349'>2349</a>
<a id='n2350' href='#n2350'>2350</a>
<a id='n2351' href='#n2351'>2351</a>
<a id='n2352' href='#n2352'>2352</a>
<a id='n2353' href='#n2353'>2353</a>
<a id='n2354' href='#n2354'>2354</a>
<a id='n2355' href='#n2355'>2355</a>
<a id='n2356' href='#n2356'>2356</a>
<a id='n2357' href='#n2357'>2357</a>
<a id='n2358' href='#n2358'>2358</a>
<a id='n2359' href='#n2359'>2359</a>
<a id='n2360' href='#n2360'>2360</a>
<a id='n2361' href='#n2361'>2361</a>
<a id='n2362' href='#n2362'>2362</a>
<a id='n2363' href='#n2363'>2363</a>
<a id='n2364' href='#n2364'>2364</a>
<a id='n2365' href='#n2365'>2365</a>
<a id='n2366' href='#n2366'>2366</a>
<a id='n2367' href='#n2367'>2367</a>
<a id='n2368' href='#n2368'>2368</a>
<a id='n2369' href='#n2369'>2369</a>
<a id='n2370' href='#n2370'>2370</a>
<a id='n2371' href='#n2371'>2371</a>
<a id='n2372' href='#n2372'>2372</a>
<a id='n2373' href='#n2373'>2373</a>
<a id='n2374' href='#n2374'>2374</a>
<a id='n2375' href='#n2375'>2375</a>
<a id='n2376' href='#n2376'>2376</a>
<a id='n2377' href='#n2377'>2377</a>
<a id='n2378' href='#n2378'>2378</a>
<a id='n2379' href='#n2379'>2379</a>
<a id='n2380' href='#n2380'>2380</a>
<a id='n2381' href='#n2381'>2381</a>
<a id='n2382' href='#n2382'>2382</a>
<a id='n2383' href='#n2383'>2383</a>
<a id='n2384' href='#n2384'>2384</a>
<a id='n2385' href='#n2385'>2385</a>
<a id='n2386' href='#n2386'>2386</a>
<a id='n2387' href='#n2387'>2387</a>
<a id='n2388' href='#n2388'>2388</a>
<a id='n2389' href='#n2389'>2389</a>
<a id='n2390' href='#n2390'>2390</a>
<a id='n2391' href='#n2391'>2391</a>
<a id='n2392' href='#n2392'>2392</a>
<a id='n2393' href='#n2393'>2393</a>
<a id='n2394' href='#n2394'>2394</a>
<a id='n2395' href='#n2395'>2395</a>
<a id='n2396' href='#n2396'>2396</a>
<a id='n2397' href='#n2397'>2397</a>
<a id='n2398' href='#n2398'>2398</a>
<a id='n2399' href='#n2399'>2399</a>
<a id='n2400' href='#n2400'>2400</a>
<a id='n2401' href='#n2401'>2401</a>
<a id='n2402' href='#n2402'>2402</a>
<a id='n2403' href='#n2403'>2403</a>
<a id='n2404' href='#n2404'>2404</a>
<a id='n2405' href='#n2405'>2405</a>
<a id='n2406' href='#n2406'>2406</a>
<a id='n2407' href='#n2407'>2407</a>
<a id='n2408' href='#n2408'>2408</a>
<a id='n2409' href='#n2409'>2409</a>
<a id='n2410' href='#n2410'>2410</a>
<a id='n2411' href='#n2411'>2411</a>
<a id='n2412' href='#n2412'>2412</a>
<a id='n2413' href='#n2413'>2413</a>
<a id='n2414' href='#n2414'>2414</a>
<a id='n2415' href='#n2415'>2415</a>
<a id='n2416' href='#n2416'>2416</a>
<a id='n2417' href='#n2417'>2417</a>
<a id='n2418' href='#n2418'>2418</a>
<a id='n2419' href='#n2419'>2419</a>
<a id='n2420' href='#n2420'>2420</a>
<a id='n2421' href='#n2421'>2421</a>
<a id='n2422' href='#n2422'>2422</a>
<a id='n2423' href='#n2423'>2423</a>
<a id='n2424' href='#n2424'>2424</a>
<a id='n2425' href='#n2425'>2425</a>
<a id='n2426' href='#n2426'>2426</a>
<a id='n2427' href='#n2427'>2427</a>
<a id='n2428' href='#n2428'>2428</a>
<a id='n2429' href='#n2429'>2429</a>
<a id='n2430' href='#n2430'>2430</a>
<a id='n2431' href='#n2431'>2431</a>
<a id='n2432' href='#n2432'>2432</a>
<a id='n2433' href='#n2433'>2433</a>
<a id='n2434' href='#n2434'>2434</a>
<a id='n2435' href='#n2435'>2435</a>
<a id='n2436' href='#n2436'>2436</a>
<a id='n2437' href='#n2437'>2437</a>
<a id='n2438' href='#n2438'>2438</a>
<a id='n2439' href='#n2439'>2439</a>
<a id='n2440' href='#n2440'>2440</a>
<a id='n2441' href='#n2441'>2441</a>
<a id='n2442' href='#n2442'>2442</a>
<a id='n2443' href='#n2443'>2443</a>
<a id='n2444' href='#n2444'>2444</a>
<a id='n2445' href='#n2445'>2445</a>
<a id='n2446' href='#n2446'>2446</a>
<a id='n2447' href='#n2447'>2447</a>
<a id='n2448' href='#n2448'>2448</a>
<a id='n2449' href='#n2449'>2449</a>
<a id='n2450' href='#n2450'>2450</a>
<a id='n2451' href='#n2451'>2451</a>
<a id='n2452' href='#n2452'>2452</a>
<a id='n2453' href='#n2453'>2453</a>
<a id='n2454' href='#n2454'>2454</a>
<a id='n2455' href='#n2455'>2455</a>
<a id='n2456' href='#n2456'>2456</a>
<a id='n2457' href='#n2457'>2457</a>
<a id='n2458' href='#n2458'>2458</a>
<a id='n2459' href='#n2459'>2459</a>
<a id='n2460' href='#n2460'>2460</a>
<a id='n2461' href='#n2461'>2461</a>
<a id='n2462' href='#n2462'>2462</a>
<a id='n2463' href='#n2463'>2463</a>
<a id='n2464' href='#n2464'>2464</a>
<a id='n2465' href='#n2465'>2465</a>
<a id='n2466' href='#n2466'>2466</a>
<a id='n2467' href='#n2467'>2467</a>
<a id='n2468' href='#n2468'>2468</a>
<a id='n2469' href='#n2469'>2469</a>
<a id='n2470' href='#n2470'>2470</a>
<a id='n2471' href='#n2471'>2471</a>
<a id='n2472' href='#n2472'>2472</a>
<a id='n2473' href='#n2473'>2473</a>
<a id='n2474' href='#n2474'>2474</a>
<a id='n2475' href='#n2475'>2475</a>
<a id='n2476' href='#n2476'>2476</a>
<a id='n2477' href='#n2477'>2477</a>
<a id='n2478' href='#n2478'>2478</a>
<a id='n2479' href='#n2479'>2479</a>
<a id='n2480' href='#n2480'>2480</a>
<a id='n2481' href='#n2481'>2481</a>
<a id='n2482' href='#n2482'>2482</a>
<a id='n2483' href='#n2483'>2483</a>
<a id='n2484' href='#n2484'>2484</a>
<a id='n2485' href='#n2485'>2485</a>
<a id='n2486' href='#n2486'>2486</a>
<a id='n2487' href='#n2487'>2487</a>
<a id='n2488' href='#n2488'>2488</a>
<a id='n2489' href='#n2489'>2489</a>
<a id='n2490' href='#n2490'>2490</a>
<a id='n2491' href='#n2491'>2491</a>
<a id='n2492' href='#n2492'>2492</a>
<a id='n2493' href='#n2493'>2493</a>
<a id='n2494' href='#n2494'>2494</a>
<a id='n2495' href='#n2495'>2495</a>
<a id='n2496' href='#n2496'>2496</a>
<a id='n2497' href='#n2497'>2497</a>
<a id='n2498' href='#n2498'>2498</a>
<a id='n2499' href='#n2499'>2499</a>
<a id='n2500' href='#n2500'>2500</a>
<a id='n2501' href='#n2501'>2501</a>
<a id='n2502' href='#n2502'>2502</a>
<a id='n2503' href='#n2503'>2503</a>
<a id='n2504' href='#n2504'>2504</a>
<a id='n2505' href='#n2505'>2505</a>
<a id='n2506' href='#n2506'>2506</a>
<a id='n2507' href='#n2507'>2507</a>
<a id='n2508' href='#n2508'>2508</a>
<a id='n2509' href='#n2509'>2509</a>
<a id='n2510' href='#n2510'>2510</a>
<a id='n2511' href='#n2511'>2511</a>
<a id='n2512' href='#n2512'>2512</a>
<a id='n2513' href='#n2513'>2513</a>
<a id='n2514' href='#n2514'>2514</a>
<a id='n2515' href='#n2515'>2515</a>
<a id='n2516' href='#n2516'>2516</a>
<a id='n2517' href='#n2517'>2517</a>
<a id='n2518' href='#n2518'>2518</a>
<a id='n2519' href='#n2519'>2519</a>
<a id='n2520' href='#n2520'>2520</a>
<a id='n2521' href='#n2521'>2521</a>
<a id='n2522' href='#n2522'>2522</a>
<a id='n2523' href='#n2523'>2523</a>
<a id='n2524' href='#n2524'>2524</a>
<a id='n2525' href='#n2525'>2525</a>
<a id='n2526' href='#n2526'>2526</a>
<a id='n2527' href='#n2527'>2527</a>
<a id='n2528' href='#n2528'>2528</a>
<a id='n2529' href='#n2529'>2529</a>
<a id='n2530' href='#n2530'>2530</a>
<a id='n2531' href='#n2531'>2531</a>
<a id='n2532' href='#n2532'>2532</a>
<a id='n2533' href='#n2533'>2533</a>
<a id='n2534' href='#n2534'>2534</a>
<a id='n2535' href='#n2535'>2535</a>
<a id='n2536' href='#n2536'>2536</a>
<a id='n2537' href='#n2537'>2537</a>
<a id='n2538' href='#n2538'>2538</a>
<a id='n2539' href='#n2539'>2539</a>
<a id='n2540' href='#n2540'>2540</a>
<a id='n2541' href='#n2541'>2541</a>
<a id='n2542' href='#n2542'>2542</a>
<a id='n2543' href='#n2543'>2543</a>
<a id='n2544' href='#n2544'>2544</a>
<a id='n2545' href='#n2545'>2545</a>
<a id='n2546' href='#n2546'>2546</a>
<a id='n2547' href='#n2547'>2547</a>
<a id='n2548' href='#n2548'>2548</a>
<a id='n2549' href='#n2549'>2549</a>
<a id='n2550' href='#n2550'>2550</a>
<a id='n2551' href='#n2551'>2551</a>
<a id='n2552' href='#n2552'>2552</a>
<a id='n2553' href='#n2553'>2553</a>
<a id='n2554' href='#n2554'>2554</a>
<a id='n2555' href='#n2555'>2555</a>
<a id='n2556' href='#n2556'>2556</a>
<a id='n2557' href='#n2557'>2557</a>
<a id='n2558' href='#n2558'>2558</a>
<a id='n2559' href='#n2559'>2559</a>
<a id='n2560' href='#n2560'>2560</a>
<a id='n2561' href='#n2561'>2561</a>
<a id='n2562' href='#n2562'>2562</a>
<a id='n2563' href='#n2563'>2563</a>
<a id='n2564' href='#n2564'>2564</a>
<a id='n2565' href='#n2565'>2565</a>
<a id='n2566' href='#n2566'>2566</a>
<a id='n2567' href='#n2567'>2567</a>
<a id='n2568' href='#n2568'>2568</a>
<a id='n2569' href='#n2569'>2569</a>
<a id='n2570' href='#n2570'>2570</a>
<a id='n2571' href='#n2571'>2571</a>
<a id='n2572' href='#n2572'>2572</a>
<a id='n2573' href='#n2573'>2573</a>
<a id='n2574' href='#n2574'>2574</a>
<a id='n2575' href='#n2575'>2575</a>
<a id='n2576' href='#n2576'>2576</a>
<a id='n2577' href='#n2577'>2577</a>
<a id='n2578' href='#n2578'>2578</a>
<a id='n2579' href='#n2579'>2579</a>
<a id='n2580' href='#n2580'>2580</a>
<a id='n2581' href='#n2581'>2581</a>
<a id='n2582' href='#n2582'>2582</a>
<a id='n2583' href='#n2583'>2583</a>
<a id='n2584' href='#n2584'>2584</a>
<a id='n2585' href='#n2585'>2585</a>
<a id='n2586' href='#n2586'>2586</a>
<a id='n2587' href='#n2587'>2587</a>
<a id='n2588' href='#n2588'>2588</a>
<a id='n2589' href='#n2589'>2589</a>
<a id='n2590' href='#n2590'>2590</a>
<a id='n2591' href='#n2591'>2591</a>
<a id='n2592' href='#n2592'>2592</a>
<a id='n2593' href='#n2593'>2593</a>
<a id='n2594' href='#n2594'>2594</a>
<a id='n2595' href='#n2595'>2595</a>
<a id='n2596' href='#n2596'>2596</a>
<a id='n2597' href='#n2597'>2597</a>
<a id='n2598' href='#n2598'>2598</a>
<a id='n2599' href='#n2599'>2599</a>
<a id='n2600' href='#n2600'>2600</a>
<a id='n2601' href='#n2601'>2601</a>
<a id='n2602' href='#n2602'>2602</a>
<a id='n2603' href='#n2603'>2603</a>
<a id='n2604' href='#n2604'>2604</a>
<a id='n2605' href='#n2605'>2605</a>
<a id='n2606' href='#n2606'>2606</a>
<a id='n2607' href='#n2607'>2607</a>
<a id='n2608' href='#n2608'>2608</a>
<a id='n2609' href='#n2609'>2609</a>
<a id='n2610' href='#n2610'>2610</a>
<a id='n2611' href='#n2611'>2611</a>
<a id='n2612' href='#n2612'>2612</a>
<a id='n2613' href='#n2613'>2613</a>
<a id='n2614' href='#n2614'>2614</a>
<a id='n2615' href='#n2615'>2615</a>
<a id='n2616' href='#n2616'>2616</a>
<a id='n2617' href='#n2617'>2617</a>
<a id='n2618' href='#n2618'>2618</a>
<a id='n2619' href='#n2619'>2619</a>
<a id='n2620' href='#n2620'>2620</a>
<a id='n2621' href='#n2621'>2621</a>
<a id='n2622' href='#n2622'>2622</a>
<a id='n2623' href='#n2623'>2623</a>
<a id='n2624' href='#n2624'>2624</a>
<a id='n2625' href='#n2625'>2625</a>
<a id='n2626' href='#n2626'>2626</a>
<a id='n2627' href='#n2627'>2627</a>
<a id='n2628' href='#n2628'>2628</a>
<a id='n2629' href='#n2629'>2629</a>
<a id='n2630' href='#n2630'>2630</a>
<a id='n2631' href='#n2631'>2631</a>
<a id='n2632' href='#n2632'>2632</a>
<a id='n2633' href='#n2633'>2633</a>
<a id='n2634' href='#n2634'>2634</a>
<a id='n2635' href='#n2635'>2635</a>
<a id='n2636' href='#n2636'>2636</a>
<a id='n2637' href='#n2637'>2637</a>
<a id='n2638' href='#n2638'>2638</a>
<a id='n2639' href='#n2639'>2639</a>
<a id='n2640' href='#n2640'>2640</a>
<a id='n2641' href='#n2641'>2641</a>
<a id='n2642' href='#n2642'>2642</a>
<a id='n2643' href='#n2643'>2643</a>
<a id='n2644' href='#n2644'>2644</a>
<a id='n2645' href='#n2645'>2645</a>
<a id='n2646' href='#n2646'>2646</a>
<a id='n2647' href='#n2647'>2647</a>
<a id='n2648' href='#n2648'>2648</a>
<a id='n2649' href='#n2649'>2649</a>
<a id='n2650' href='#n2650'>2650</a>
<a id='n2651' href='#n2651'>2651</a>
<a id='n2652' href='#n2652'>2652</a>
<a id='n2653' href='#n2653'>2653</a>
<a id='n2654' href='#n2654'>2654</a>
<a id='n2655' href='#n2655'>2655</a>
<a id='n2656' href='#n2656'>2656</a>
<a id='n2657' href='#n2657'>2657</a>
<a id='n2658' href='#n2658'>2658</a>
<a id='n2659' href='#n2659'>2659</a>
<a id='n2660' href='#n2660'>2660</a>
<a id='n2661' href='#n2661'>2661</a>
<a id='n2662' href='#n2662'>2662</a>
<a id='n2663' href='#n2663'>2663</a>
<a id='n2664' href='#n2664'>2664</a>
<a id='n2665' href='#n2665'>2665</a>
<a id='n2666' href='#n2666'>2666</a>
<a id='n2667' href='#n2667'>2667</a>
<a id='n2668' href='#n2668'>2668</a>
<a id='n2669' href='#n2669'>2669</a>
<a id='n2670' href='#n2670'>2670</a>
<a id='n2671' href='#n2671'>2671</a>
<a id='n2672' href='#n2672'>2672</a>
<a id='n2673' href='#n2673'>2673</a>
<a id='n2674' href='#n2674'>2674</a>
<a id='n2675' href='#n2675'>2675</a>
<a id='n2676' href='#n2676'>2676</a>
<a id='n2677' href='#n2677'>2677</a>
<a id='n2678' href='#n2678'>2678</a>
<a id='n2679' href='#n2679'>2679</a>
<a id='n2680' href='#n2680'>2680</a>
<a id='n2681' href='#n2681'>2681</a>
<a id='n2682' href='#n2682'>2682</a>
<a id='n2683' href='#n2683'>2683</a>
<a id='n2684' href='#n2684'>2684</a>
<a id='n2685' href='#n2685'>2685</a>
<a id='n2686' href='#n2686'>2686</a>
<a id='n2687' href='#n2687'>2687</a>
<a id='n2688' href='#n2688'>2688</a>
<a id='n2689' href='#n2689'>2689</a>
<a id='n2690' href='#n2690'>2690</a>
<a id='n2691' href='#n2691'>2691</a>
<a id='n2692' href='#n2692'>2692</a>
<a id='n2693' href='#n2693'>2693</a>
<a id='n2694' href='#n2694'>2694</a>
<a id='n2695' href='#n2695'>2695</a>
<a id='n2696' href='#n2696'>2696</a>
<a id='n2697' href='#n2697'>2697</a>
<a id='n2698' href='#n2698'>2698</a>
<a id='n2699' href='#n2699'>2699</a>
<a id='n2700' href='#n2700'>2700</a>
<a id='n2701' href='#n2701'>2701</a>
<a id='n2702' href='#n2702'>2702</a>
<a id='n2703' href='#n2703'>2703</a>
<a id='n2704' href='#n2704'>2704</a>
<a id='n2705' href='#n2705'>2705</a>
<a id='n2706' href='#n2706'>2706</a>
<a id='n2707' href='#n2707'>2707</a>
<a id='n2708' href='#n2708'>2708</a>
<a id='n2709' href='#n2709'>2709</a>
<a id='n2710' href='#n2710'>2710</a>
<a id='n2711' href='#n2711'>2711</a>
<a id='n2712' href='#n2712'>2712</a>
<a id='n2713' href='#n2713'>2713</a>
<a id='n2714' href='#n2714'>2714</a>
<a id='n2715' href='#n2715'>2715</a>
<a id='n2716' href='#n2716'>2716</a>
<a id='n2717' href='#n2717'>2717</a>
<a id='n2718' href='#n2718'>2718</a>
<a id='n2719' href='#n2719'>2719</a>
<a id='n2720' href='#n2720'>2720</a>
<a id='n2721' href='#n2721'>2721</a>
<a id='n2722' href='#n2722'>2722</a>
<a id='n2723' href='#n2723'>2723</a>
<a id='n2724' href='#n2724'>2724</a>
<a id='n2725' href='#n2725'>2725</a>
<a id='n2726' href='#n2726'>2726</a>
<a id='n2727' href='#n2727'>2727</a>
<a id='n2728' href='#n2728'>2728</a>
<a id='n2729' href='#n2729'>2729</a>
<a id='n2730' href='#n2730'>2730</a>
<a id='n2731' href='#n2731'>2731</a>
<a id='n2732' href='#n2732'>2732</a>
<a id='n2733' href='#n2733'>2733</a>
<a id='n2734' href='#n2734'>2734</a>
<a id='n2735' href='#n2735'>2735</a>
<a id='n2736' href='#n2736'>2736</a>
<a id='n2737' href='#n2737'>2737</a>
<a id='n2738' href='#n2738'>2738</a>
<a id='n2739' href='#n2739'>2739</a>
<a id='n2740' href='#n2740'>2740</a>
<a id='n2741' href='#n2741'>2741</a>
<a id='n2742' href='#n2742'>2742</a>
<a id='n2743' href='#n2743'>2743</a>
<a id='n2744' href='#n2744'>2744</a>
<a id='n2745' href='#n2745'>2745</a>
<a id='n2746' href='#n2746'>2746</a>
<a id='n2747' href='#n2747'>2747</a>
<a id='n2748' href='#n2748'>2748</a>
<a id='n2749' href='#n2749'>2749</a>
<a id='n2750' href='#n2750'>2750</a>
<a id='n2751' href='#n2751'>2751</a>
<a id='n2752' href='#n2752'>2752</a>
<a id='n2753' href='#n2753'>2753</a>
<a id='n2754' href='#n2754'>2754</a>
<a id='n2755' href='#n2755'>2755</a>
<a id='n2756' href='#n2756'>2756</a>
<a id='n2757' href='#n2757'>2757</a>
<a id='n2758' href='#n2758'>2758</a>
<a id='n2759' href='#n2759'>2759</a>
<a id='n2760' href='#n2760'>2760</a>
<a id='n2761' href='#n2761'>2761</a>
<a id='n2762' href='#n2762'>2762</a>
<a id='n2763' href='#n2763'>2763</a>
<a id='n2764' href='#n2764'>2764</a>
<a id='n2765' href='#n2765'>2765</a>
<a id='n2766' href='#n2766'>2766</a>
<a id='n2767' href='#n2767'>2767</a>
<a id='n2768' href='#n2768'>2768</a>
<a id='n2769' href='#n2769'>2769</a>
<a id='n2770' href='#n2770'>2770</a>
<a id='n2771' href='#n2771'>2771</a>
<a id='n2772' href='#n2772'>2772</a>
<a id='n2773' href='#n2773'>2773</a>
<a id='n2774' href='#n2774'>2774</a>
<a id='n2775' href='#n2775'>2775</a>
<a id='n2776' href='#n2776'>2776</a>
<a id='n2777' href='#n2777'>2777</a>
<a id='n2778' href='#n2778'>2778</a>
<a id='n2779' href='#n2779'>2779</a>
<a id='n2780' href='#n2780'>2780</a>
<a id='n2781' href='#n2781'>2781</a>
<a id='n2782' href='#n2782'>2782</a>
<a id='n2783' href='#n2783'>2783</a>
<a id='n2784' href='#n2784'>2784</a>
<a id='n2785' href='#n2785'>2785</a>
<a id='n2786' href='#n2786'>2786</a>
<a id='n2787' href='#n2787'>2787</a>
<a id='n2788' href='#n2788'>2788</a>
<a id='n2789' href='#n2789'>2789</a>
<a id='n2790' href='#n2790'>2790</a>
<a id='n2791' href='#n2791'>2791</a>
<a id='n2792' href='#n2792'>2792</a>
<a id='n2793' href='#n2793'>2793</a>
<a id='n2794' href='#n2794'>2794</a>
<a id='n2795' href='#n2795'>2795</a>
<a id='n2796' href='#n2796'>2796</a>
<a id='n2797' href='#n2797'>2797</a>
<a id='n2798' href='#n2798'>2798</a>
<a id='n2799' href='#n2799'>2799</a>
<a id='n2800' href='#n2800'>2800</a>
<a id='n2801' href='#n2801'>2801</a>
<a id='n2802' href='#n2802'>2802</a>
<a id='n2803' href='#n2803'>2803</a>
<a id='n2804' href='#n2804'>2804</a>
<a id='n2805' href='#n2805'>2805</a>
<a id='n2806' href='#n2806'>2806</a>
<a id='n2807' href='#n2807'>2807</a>
<a id='n2808' href='#n2808'>2808</a>
<a id='n2809' href='#n2809'>2809</a>
<a id='n2810' href='#n2810'>2810</a>
<a id='n2811' href='#n2811'>2811</a>
<a id='n2812' href='#n2812'>2812</a>
<a id='n2813' href='#n2813'>2813</a>
<a id='n2814' href='#n2814'>2814</a>
<a id='n2815' href='#n2815'>2815</a>
<a id='n2816' href='#n2816'>2816</a>
<a id='n2817' href='#n2817'>2817</a>
<a id='n2818' href='#n2818'>2818</a>
<a id='n2819' href='#n2819'>2819</a>
<a id='n2820' href='#n2820'>2820</a>
<a id='n2821' href='#n2821'>2821</a>
<a id='n2822' href='#n2822'>2822</a>
<a id='n2823' href='#n2823'>2823</a>
<a id='n2824' href='#n2824'>2824</a>
<a id='n2825' href='#n2825'>2825</a>
<a id='n2826' href='#n2826'>2826</a>
<a id='n2827' href='#n2827'>2827</a>
<a id='n2828' href='#n2828'>2828</a>
<a id='n2829' href='#n2829'>2829</a>
<a id='n2830' href='#n2830'>2830</a>
<a id='n2831' href='#n2831'>2831</a>
<a id='n2832' href='#n2832'>2832</a>
<a id='n2833' href='#n2833'>2833</a>
<a id='n2834' href='#n2834'>2834</a>
<a id='n2835' href='#n2835'>2835</a>
<a id='n2836' href='#n2836'>2836</a>
<a id='n2837' href='#n2837'>2837</a>
<a id='n2838' href='#n2838'>2838</a>
<a id='n2839' href='#n2839'>2839</a>
<a id='n2840' href='#n2840'>2840</a>
<a id='n2841' href='#n2841'>2841</a>
<a id='n2842' href='#n2842'>2842</a>
<a id='n2843' href='#n2843'>2843</a>
<a id='n2844' href='#n2844'>2844</a>
<a id='n2845' href='#n2845'>2845</a>
<a id='n2846' href='#n2846'>2846</a>
<a id='n2847' href='#n2847'>2847</a>
<a id='n2848' href='#n2848'>2848</a>
<a id='n2849' href='#n2849'>2849</a>
<a id='n2850' href='#n2850'>2850</a>
<a id='n2851' href='#n2851'>2851</a>
<a id='n2852' href='#n2852'>2852</a>
<a id='n2853' href='#n2853'>2853</a>
<a id='n2854' href='#n2854'>2854</a>
<a id='n2855' href='#n2855'>2855</a>
<a id='n2856' href='#n2856'>2856</a>
<a id='n2857' href='#n2857'>2857</a>
<a id='n2858' href='#n2858'>2858</a>
<a id='n2859' href='#n2859'>2859</a>
<a id='n2860' href='#n2860'>2860</a>
<a id='n2861' href='#n2861'>2861</a>
<a id='n2862' href='#n2862'>2862</a>
<a id='n2863' href='#n2863'>2863</a>
<a id='n2864' href='#n2864'>2864</a>
<a id='n2865' href='#n2865'>2865</a>
<a id='n2866' href='#n2866'>2866</a>
<a id='n2867' href='#n2867'>2867</a>
<a id='n2868' href='#n2868'>2868</a>
<a id='n2869' href='#n2869'>2869</a>
<a id='n2870' href='#n2870'>2870</a>
<a id='n2871' href='#n2871'>2871</a>
<a id='n2872' href='#n2872'>2872</a>
<a id='n2873' href='#n2873'>2873</a>
<a id='n2874' href='#n2874'>2874</a>
<a id='n2875' href='#n2875'>2875</a>
<a id='n2876' href='#n2876'>2876</a>
<a id='n2877' href='#n2877'>2877</a>
<a id='n2878' href='#n2878'>2878</a>
<a id='n2879' href='#n2879'>2879</a>
<a id='n2880' href='#n2880'>2880</a>
<a id='n2881' href='#n2881'>2881</a>
<a id='n2882' href='#n2882'>2882</a>
<a id='n2883' href='#n2883'>2883</a>
<a id='n2884' href='#n2884'>2884</a>
<a id='n2885' href='#n2885'>2885</a>
<a id='n2886' href='#n2886'>2886</a>
<a id='n2887' href='#n2887'>2887</a>
<a id='n2888' href='#n2888'>2888</a>
<a id='n2889' href='#n2889'>2889</a>
<a id='n2890' href='#n2890'>2890</a>
<a id='n2891' href='#n2891'>2891</a>
<a id='n2892' href='#n2892'>2892</a>
<a id='n2893' href='#n2893'>2893</a>
<a id='n2894' href='#n2894'>2894</a>
<a id='n2895' href='#n2895'>2895</a>
<a id='n2896' href='#n2896'>2896</a>
<a id='n2897' href='#n2897'>2897</a>
<a id='n2898' href='#n2898'>2898</a>
<a id='n2899' href='#n2899'>2899</a>
<a id='n2900' href='#n2900'>2900</a>
<a id='n2901' href='#n2901'>2901</a>
<a id='n2902' href='#n2902'>2902</a>
<a id='n2903' href='#n2903'>2903</a>
<a id='n2904' href='#n2904'>2904</a>
<a id='n2905' href='#n2905'>2905</a>
<a id='n2906' href='#n2906'>2906</a>
<a id='n2907' href='#n2907'>2907</a>
<a id='n2908' href='#n2908'>2908</a>
<a id='n2909' href='#n2909'>2909</a>
<a id='n2910' href='#n2910'>2910</a>
<a id='n2911' href='#n2911'>2911</a>
<a id='n2912' href='#n2912'>2912</a>
<a id='n2913' href='#n2913'>2913</a>
<a id='n2914' href='#n2914'>2914</a>
<a id='n2915' href='#n2915'>2915</a>
<a id='n2916' href='#n2916'>2916</a>
<a id='n2917' href='#n2917'>2917</a>
<a id='n2918' href='#n2918'>2918</a>
<a id='n2919' href='#n2919'>2919</a>
<a id='n2920' href='#n2920'>2920</a>
<a id='n2921' href='#n2921'>2921</a>
<a id='n2922' href='#n2922'>2922</a>
<a id='n2923' href='#n2923'>2923</a>
<a id='n2924' href='#n2924'>2924</a>
<a id='n2925' href='#n2925'>2925</a>
<a id='n2926' href='#n2926'>2926</a>
<a id='n2927' href='#n2927'>2927</a>
<a id='n2928' href='#n2928'>2928</a>
<a id='n2929' href='#n2929'>2929</a>
<a id='n2930' href='#n2930'>2930</a>
<a id='n2931' href='#n2931'>2931</a>
<a id='n2932' href='#n2932'>2932</a>
<a id='n2933' href='#n2933'>2933</a>
<a id='n2934' href='#n2934'>2934</a>
<a id='n2935' href='#n2935'>2935</a>
<a id='n2936' href='#n2936'>2936</a>
<a id='n2937' href='#n2937'>2937</a>
<a id='n2938' href='#n2938'>2938</a>
<a id='n2939' href='#n2939'>2939</a>
<a id='n2940' href='#n2940'>2940</a>
<a id='n2941' href='#n2941'>2941</a>
<a id='n2942' href='#n2942'>2942</a>
<a id='n2943' href='#n2943'>2943</a>
<a id='n2944' href='#n2944'>2944</a>
<a id='n2945' href='#n2945'>2945</a>
<a id='n2946' href='#n2946'>2946</a>
<a id='n2947' href='#n2947'>2947</a>
<a id='n2948' href='#n2948'>2948</a>
<a id='n2949' href='#n2949'>2949</a>
<a id='n2950' href='#n2950'>2950</a>
<a id='n2951' href='#n2951'>2951</a>
<a id='n2952' href='#n2952'>2952</a>
<a id='n2953' href='#n2953'>2953</a>
<a id='n2954' href='#n2954'>2954</a>
<a id='n2955' href='#n2955'>2955</a>
<a id='n2956' href='#n2956'>2956</a>
<a id='n2957' href='#n2957'>2957</a>
<a id='n2958' href='#n2958'>2958</a>
<a id='n2959' href='#n2959'>2959</a>
<a id='n2960' href='#n2960'>2960</a>
<a id='n2961' href='#n2961'>2961</a>
<a id='n2962' href='#n2962'>2962</a>
<a id='n2963' href='#n2963'>2963</a>
<a id='n2964' href='#n2964'>2964</a>
<a id='n2965' href='#n2965'>2965</a>
<a id='n2966' href='#n2966'>2966</a>
<a id='n2967' href='#n2967'>2967</a>
<a id='n2968' href='#n2968'>2968</a>
<a id='n2969' href='#n2969'>2969</a>
<a id='n2970' href='#n2970'>2970</a>
<a id='n2971' href='#n2971'>2971</a>
<a id='n2972' href='#n2972'>2972</a>
<a id='n2973' href='#n2973'>2973</a>
<a id='n2974' href='#n2974'>2974</a>
<a id='n2975' href='#n2975'>2975</a>
<a id='n2976' href='#n2976'>2976</a>
<a id='n2977' href='#n2977'>2977</a>
<a id='n2978' href='#n2978'>2978</a>
<a id='n2979' href='#n2979'>2979</a>
<a id='n2980' href='#n2980'>2980</a>
<a id='n2981' href='#n2981'>2981</a>
<a id='n2982' href='#n2982'>2982</a>
<a id='n2983' href='#n2983'>2983</a>
<a id='n2984' href='#n2984'>2984</a>
<a id='n2985' href='#n2985'>2985</a>
<a id='n2986' href='#n2986'>2986</a>
<a id='n2987' href='#n2987'>2987</a>
<a id='n2988' href='#n2988'>2988</a>
<a id='n2989' href='#n2989'>2989</a>
<a id='n2990' href='#n2990'>2990</a>
<a id='n2991' href='#n2991'>2991</a>
<a id='n2992' href='#n2992'>2992</a>
<a id='n2993' href='#n2993'>2993</a>
<a id='n2994' href='#n2994'>2994</a>
<a id='n2995' href='#n2995'>2995</a>
<a id='n2996' href='#n2996'>2996</a>
<a id='n2997' href='#n2997'>2997</a>
<a id='n2998' href='#n2998'>2998</a>
<a id='n2999' href='#n2999'>2999</a>
<a id='n3000' href='#n3000'>3000</a>
<a id='n3001' href='#n3001'>3001</a>
<a id='n3002' href='#n3002'>3002</a>
<a id='n3003' href='#n3003'>3003</a>
<a id='n3004' href='#n3004'>3004</a>
<a id='n3005' href='#n3005'>3005</a>
<a id='n3006' href='#n3006'>3006</a>
<a id='n3007' href='#n3007'>3007</a>
<a id='n3008' href='#n3008'>3008</a>
<a id='n3009' href='#n3009'>3009</a>
<a id='n3010' href='#n3010'>3010</a>
<a id='n3011' href='#n3011'>3011</a>
<a id='n3012' href='#n3012'>3012</a>
<a id='n3013' href='#n3013'>3013</a>
<a id='n3014' href='#n3014'>3014</a>
<a id='n3015' href='#n3015'>3015</a>
<a id='n3016' href='#n3016'>3016</a>
<a id='n3017' href='#n3017'>3017</a>
<a id='n3018' href='#n3018'>3018</a>
<a id='n3019' href='#n3019'>3019</a>
<a id='n3020' href='#n3020'>3020</a>
<a id='n3021' href='#n3021'>3021</a>
<a id='n3022' href='#n3022'>3022</a>
<a id='n3023' href='#n3023'>3023</a>
<a id='n3024' href='#n3024'>3024</a>
<a id='n3025' href='#n3025'>3025</a>
<a id='n3026' href='#n3026'>3026</a>
<a id='n3027' href='#n3027'>3027</a>
<a id='n3028' href='#n3028'>3028</a>
<a id='n3029' href='#n3029'>3029</a>
<a id='n3030' href='#n3030'>3030</a>
<a id='n3031' href='#n3031'>3031</a>
<a id='n3032' href='#n3032'>3032</a>
<a id='n3033' href='#n3033'>3033</a>
<a id='n3034' href='#n3034'>3034</a>
<a id='n3035' href='#n3035'>3035</a>
<a id='n3036' href='#n3036'>3036</a>
<a id='n3037' href='#n3037'>3037</a>
<a id='n3038' href='#n3038'>3038</a>
<a id='n3039' href='#n3039'>3039</a>
<a id='n3040' href='#n3040'>3040</a>
<a id='n3041' href='#n3041'>3041</a>
<a id='n3042' href='#n3042'>3042</a>
<a id='n3043' href='#n3043'>3043</a>
<a id='n3044' href='#n3044'>3044</a>
<a id='n3045' href='#n3045'>3045</a>
<a id='n3046' href='#n3046'>3046</a>
<a id='n3047' href='#n3047'>3047</a>
<a id='n3048' href='#n3048'>3048</a>
<a id='n3049' href='#n3049'>3049</a>
<a id='n3050' href='#n3050'>3050</a>
<a id='n3051' href='#n3051'>3051</a>
<a id='n3052' href='#n3052'>3052</a>
<a id='n3053' href='#n3053'>3053</a>
<a id='n3054' href='#n3054'>3054</a>
<a id='n3055' href='#n3055'>3055</a>
<a id='n3056' href='#n3056'>3056</a>
<a id='n3057' href='#n3057'>3057</a>
<a id='n3058' href='#n3058'>3058</a>
<a id='n3059' href='#n3059'>3059</a>
<a id='n3060' href='#n3060'>3060</a>
<a id='n3061' href='#n3061'>3061</a>
<a id='n3062' href='#n3062'>3062</a>
<a id='n3063' href='#n3063'>3063</a>
<a id='n3064' href='#n3064'>3064</a>
<a id='n3065' href='#n3065'>3065</a>
<a id='n3066' href='#n3066'>3066</a>
<a id='n3067' href='#n3067'>3067</a>
<a id='n3068' href='#n3068'>3068</a>
<a id='n3069' href='#n3069'>3069</a>
<a id='n3070' href='#n3070'>3070</a>
<a id='n3071' href='#n3071'>3071</a>
<a id='n3072' href='#n3072'>3072</a>
<a id='n3073' href='#n3073'>3073</a>
<a id='n3074' href='#n3074'>3074</a>
<a id='n3075' href='#n3075'>3075</a>
<a id='n3076' href='#n3076'>3076</a>
<a id='n3077' href='#n3077'>3077</a>
<a id='n3078' href='#n3078'>3078</a>
</pre></td>
<td class='lines'><pre><code> Documentation/admin-guide/kdump/kdump.rst          |  11 +
 Documentation/admin-guide/kernel-parameters.txt    |   8 +
 .../bindings/display/panel/xingbangda,xbd599.yaml  |  50 +++
 Kconfig                                            |   2 +
 Kconfig.redhat                                     |  17 +
 Makefile                                           |  13 +-
 arch/arm/Kconfig                                   |   4 +-
 arch/arm/include/asm/uaccess.h                     |   8 +-
 arch/arm64/Kconfig                                 |   3 +-
 arch/arm64/kernel/acpi.c                           |   4 +
 arch/s390/include/asm/ipl.h                        |   1 +
 arch/s390/kernel/ipl.c                             |   5 +
 arch/s390/kernel/setup.c                           |   4 +
 arch/x86/kernel/cpu/common.c                       |   1 +
 arch/x86/kernel/setup.c                            |  71 +++-
 drivers/acpi/apei/hest.c                           |   8 +
 drivers/acpi/irq.c                                 |  17 +-
 drivers/acpi/scan.c                                |   9 +
 drivers/ata/libahci.c                              |  18 +
 drivers/char/ipmi/ipmi_dmi.c                       |  15 +
 drivers/char/ipmi/ipmi_msghandler.c                |  16 +-
 drivers/firmware/efi/Makefile                      |   1 +
 drivers/firmware/efi/efi.c                         | 124 +++++--
 drivers/firmware/efi/secureboot.c                  |  38 +++
 drivers/gpu/drm/panel/Kconfig                      |   9 +
 drivers/gpu/drm/panel/Makefile                     |   1 +
 drivers/gpu/drm/panel/panel-xingbangda-xbd599.c    | 366 +++++++++++++++++++++
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c             |  10 +-
 drivers/hid/hid-rmi.c                              |  64 ----
 drivers/infiniband/sw/rxe/rxe.c                    |   2 +
 drivers/input/rmi4/rmi_driver.c                    | 124 ++++---
 drivers/iommu/iommu.c                              |  22 ++
 drivers/message/fusion/mptsas.c                    |  10 +
 drivers/message/fusion/mptspi.c                    |  11 +
 drivers/net/ethernet/intel/ice/ice_main.c          |   1 +
 drivers/pci/pci-driver.c                           |  29 ++
 drivers/pci/quirks.c                               |  24 ++
 drivers/scsi/aacraid/linit.c                       |   2 +
 drivers/scsi/be2iscsi/be_main.c                    |   2 +
 drivers/scsi/hpsa.c                                |   4 +
 drivers/scsi/lpfc/lpfc_ids.h                       |  14 +
 drivers/scsi/megaraid/megaraid_sas_base.c          |   2 +
 drivers/scsi/mpt3sas/mpt3sas_scsih.c               |   4 +
 drivers/scsi/qla2xxx/qla_os.c                      |   6 +
 drivers/scsi/qla4xxx/ql4_os.c                      |   2 +
 drivers/scsi/smartpqi/smartpqi_init.c              |  16 +
 drivers/usb/core/hub.c                             |   7 +
 include/linux/efi.h                                |  22 +-
 include/linux/kernel.h                             |  34 +-
 include/linux/lsm_hook_defs.h                      |   2 +
 include/linux/lsm_hooks.h                          |   6 +
 include/linux/module.h                             |   1 +
 include/linux/pci.h                                |   4 +
 include/linux/rh_kabi.h                            | 297 +++++++++++++++++
 include/linux/rmi.h                                |   1 +
 include/linux/security.h                           |   5 +
 kernel/Makefile                                    |   2 +
 kernel/bpf/syscall.c                               |  27 +-
 kernel/crash_core.c                                |  28 +-
 kernel/module.c                                    |   2 +
 kernel/module_signing.c                            |   9 +-
 kernel/panic.c                                     |  14 +
 kernel/rh_taint.c                                  |  93 ++++++
 mm/kmemleak.c                                      |   5 +
 scripts/mod/modpost.c                              |   8 +
 scripts/tags.sh                                    |   2 +
 security/integrity/platform_certs/load_uefi.c      |   6 +-
 security/lockdown/Kconfig                          |  13 +
 security/lockdown/lockdown.c                       |   1 +
 security/security.c                                |   6 +
 70 files changed, 1580 insertions(+), 188 deletions(-)

diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst
index 75a9dd98e76e..3ff3291551f9 100644
<span class="hl kwb">--- a/Documentation/admin-guide/kdump/kdump.rst</span>
<span class="hl kwa">+++ b/Documentation/admin-guide/kdump/kdump.rst</span>
&#64;&#64; -285,6 +285,17 &#64;&#64; This would mean:
     2) if the RAM size is between 512M and 2G (exclusive), then reserve 64M
     3) if the RAM size is larger than 2G, then reserve 128M

<span class="hl kwa">+Or you can use crashkernel=auto if you have enough memory.  The threshold</span>
<span class="hl kwa">+is 2G on x86_64, arm64, ppc64 and ppc64le. The threshold is 4G for s390x.</span>
<span class="hl kwa">+If your system memory is less than the threshold crashkernel=auto will not</span>
<span class="hl kwa">+reserve memory.</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+The automatically reserved memory size varies based on architecture.</span>
<span class="hl kwa">+The size changes according to system memory size like below:</span>
<span class="hl kwa">+    x86_64: 1G-64G:160M,64G-1T:256M,1T-:512M</span>
<span class="hl kwa">+    s390x:  4G-64G:160M,64G-1T:256M,1T-:512M</span>
<span class="hl kwa">+    arm64:  2G-:512M</span>
<span class="hl kwa">+    ppc64:  2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G</span>


 Boot into System Kernel
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index a10b545c2070..119710ce904a 100644
<span class="hl kwb">--- a/Documentation/admin-guide/kernel-parameters.txt</span>
<span class="hl kwa">+++ b/Documentation/admin-guide/kernel-parameters.txt</span>
<span class="hl kwd">&#64;&#64; -5526,6 +5526,14 &#64;&#64;</span>
 	unknown_nmi_panic
 			[X86] Cause panic on unknown NMI.

<span class="hl kwa">+	unprivileged_bpf_disabled=</span>
<span class="hl kwa">+			Format: { &quot;0&quot; | &quot;1&quot; }</span>
<span class="hl kwa">+			Sets the initial value of</span>
<span class="hl kwa">+			kernel.unprivileged_bpf_disabled sysctl knob.</span>
<span class="hl kwa">+			0 - unprivileged bpf() syscall access is enabled.</span>
<span class="hl kwa">+			1 - unprivileged bpf() syscall access is disabled.</span>
<span class="hl kwa">+			Default value is 1.</span>
<span class="hl kwa">+</span>
 	usbcore.authorized_default=
 			[USB] Default USB device authorization:
 			(default -1 = authorized except for wireless USB,
diff --git a/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml b/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml
new file mode 100644
index 000000000000..b27bcf11198f
<span class="hl kwb">--- /dev/null</span>
<span class="hl kwa">+++ b/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml</span>
<span class="hl kwd">&#64;&#64; -0,0 +1,50 &#64;&#64;</span>
<span class="hl kwa">+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)</span>
<span class="hl kwa">+%YAML 1.2</span>
<span class="hl kwa">+---</span>
<span class="hl kwa">+$id: http://devicetree.org/schemas/display/panel/xingbangda,xbd599.yaml#</span>
<span class="hl kwa">+$schema: http://devicetree.org/meta-schemas/core.yaml#</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+title: Xingbangda XBD599 5.99in MIPI-DSI LCD panel</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+maintainers:</span>
<span class="hl kwa">+  - Icenowy Zheng &lt;icenowy&#64;aosc.io&gt;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+allOf:</span>
<span class="hl kwa">+  - $ref: panel-common.yaml#</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+properties:</span>
<span class="hl kwa">+  compatible:</span>
<span class="hl kwa">+    const: xingbangda,xbd599</span>
<span class="hl kwa">+  reg: true</span>
<span class="hl kwa">+  backlight: true</span>
<span class="hl kwa">+  reset-gpios: true</span>
<span class="hl kwa">+  vcc-supply:</span>
<span class="hl kwa">+    description: regulator that supplies the VCC voltage</span>
<span class="hl kwa">+  iovcc-supply:</span>
<span class="hl kwa">+    description: regulator that supplies the IOVCC voltage</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+required:</span>
<span class="hl kwa">+  - compatible</span>
<span class="hl kwa">+  - reg</span>
<span class="hl kwa">+  - backlight</span>
<span class="hl kwa">+  - vcc-supply</span>
<span class="hl kwa">+  - iovcc-supply</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+additionalProperties: false</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+examples:</span>
<span class="hl kwa">+  - |</span>
<span class="hl kwa">+    dsi {</span>
<span class="hl kwa">+        #address-cells = &lt;1&gt;;</span>
<span class="hl kwa">+        #size-cells = &lt;0&gt;;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+        panel&#64;0 {</span>
<span class="hl kwa">+            compatible = &quot;xingbangda,xbd599&quot;;</span>
<span class="hl kwa">+            reg = &lt;0&gt;;</span>
<span class="hl kwa">+            backlight = &lt;&amp;backlight&gt;;</span>
<span class="hl kwa">+            iovcc-supply = &lt;&amp;reg_dldo2&gt;;</span>
<span class="hl kwa">+            vcc-supply = &lt;&amp;reg_ldo_io0&gt;;</span>
<span class="hl kwa">+        };</span>
<span class="hl kwa">+    };</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+...</span>
diff --git a/Kconfig b/Kconfig
index 745bc773f567..f57ff40109d7 100644
<span class="hl kwb">--- a/Kconfig</span>
<span class="hl kwa">+++ b/Kconfig</span>
&#64;&#64; -30,3 +30,5 &#64;&#64; source &quot;lib/Kconfig&quot;
 source &quot;lib/Kconfig.debug&quot;

 source &quot;Documentation/Kconfig&quot;
<span class="hl kwa">+</span>
<span class="hl kwa">+source &quot;Kconfig.redhat&quot;</span>
diff --git a/Kconfig.redhat b/Kconfig.redhat
new file mode 100644
index 000000000000..effb81d04bfd
<span class="hl kwb">--- /dev/null</span>
<span class="hl kwa">+++ b/Kconfig.redhat</span>
<span class="hl kwd">&#64;&#64; -0,0 +1,17 &#64;&#64;</span>
<span class="hl kwa">+# SPDX-License-Identifier: GPL-2.0-only</span>
<span class="hl kwa">+#</span>
<span class="hl kwa">+# Red Hat specific options</span>
<span class="hl kwa">+#</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+menu &quot;Red Hat options&quot;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+config RHEL_DIFFERENCES</span>
<span class="hl kwa">+	bool &quot;Remove support for deprecated features&quot;</span>
<span class="hl kwa">+	help</span>
<span class="hl kwa">+	  Red Hat may choose to deprecate certain features in its kernels.</span>
<span class="hl kwa">+	  Enable this option to remove support for hardware that is no</span>
<span class="hl kwa">+	  longer supported.</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	  Unless you want a restricted kernel, say N here.</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+endmenu</span>
diff --git a/Makefile b/Makefile
index e0af7a4a5598..ef96c9dae155 100644
<span class="hl kwb">--- a/Makefile</span>
<span class="hl kwa">+++ b/Makefile</span>
&#64;&#64; -18,6 +18,10 &#64;&#64; $(if $(filter __%, $(MAKECMDGOALS)), \
 PHONY := __all
 __all:

<span class="hl kwa">+# Set RHEL variables</span>
<span class="hl kwa">+# Use this spot to avoid future merge conflicts</span>
<span class="hl kwa">+include Makefile.rhelver</span>
<span class="hl kwa">+</span>
 # We are using a recursive build, so we need to do a little thinking
 # to get the ordering right.
 #
&#64;&#64; -495,6 +499,7 &#64;&#64; KBUILD_AFLAGS   := -D__ASSEMBLY__ -fno-PIE
 KBUILD_CFLAGS   := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \
 		   -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
 		   -Werror=implicit-function-declaration -Werror=implicit-int \
<span class="hl kwa">+		   -Wno-address-of-packed-member \</span>
 		   -Werror=return-type -Wno-format-security \
 		   -std=gnu89
 KBUILD_CPPFLAGS := -D__KERNEL__
&#64;&#64; -1253,7 +1258,13 &#64;&#64; endef
 define filechk_version.h
 	echo \#define LINUX_VERSION_CODE $(shell                         \
 	expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 0$(SUBLEVEL)); \
<span class="hl kwb">-	echo '#define KERNEL_VERSION(a,b,c) (((a) &lt;&lt; 16) + ((b) &lt;&lt; 8) + (c))'</span>
<span class="hl kwa">+	echo '#define KERNEL_VERSION(a,b,c) (((a) &lt;&lt; 16) + ((b) &lt;&lt; 8) + (c))'; \</span>
<span class="hl kwa">+	echo '#define RHEL_MAJOR $(RHEL_MAJOR)'; \</span>
<span class="hl kwa">+	echo '#define RHEL_MINOR $(RHEL_MINOR)'; \</span>
<span class="hl kwa">+	echo '#define RHEL_RELEASE_VERSION(a,b) (((a) &lt;&lt; 8) + (b))'; \</span>
<span class="hl kwa">+	echo '#define RHEL_RELEASE_CODE \</span>
<span class="hl kwa">+		$(shell expr $(RHEL_MAJOR) \* 256 + $(RHEL_MINOR))'; \</span>
<span class="hl kwa">+	echo '#define RHEL_RELEASE &quot;$(RHEL_RELEASE)&quot;'</span>
 endef

 $(version_h): FORCE
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 138248999df7..b962482a442e 100644
<span class="hl kwb">--- a/arch/arm/Kconfig</span>
<span class="hl kwa">+++ b/arch/arm/Kconfig</span>
&#64;&#64; -1492,9 +1492,9 &#64;&#64; config HIGHMEM
 	  If unsure, say n.

 config HIGHPTE
<span class="hl kwb">-	bool &quot;Allocate 2nd-level pagetables from highmem&quot; if EXPERT</span>
<span class="hl kwa">+	bool &quot;Allocate 2nd-level pagetables from highmem&quot;</span>
 	depends on HIGHMEM
<span class="hl kwb">-	default y</span>
<span class="hl kwa">+	default n</span>
 	help
 	  The VM uses one page of physical memory for each page table.
 	  For systems with a lot of processes, this can use a lot of
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
index a13d90206472..6a6aae01755b 100644
<span class="hl kwb">--- a/arch/arm/include/asm/uaccess.h</span>
<span class="hl kwa">+++ b/arch/arm/include/asm/uaccess.h</span>
&#64;&#64; -195,11 +195,12 &#64;&#64; extern int __get_user_64t_4(void *);
 #define __get_user_check(x, p)						\
 	({								\
 		unsigned long __limit = current_thread_info()-&gt;addr_limit - 1; \
<span class="hl kwa">+		unsigned int __ua_flags = uaccess_save_and_enable();	\</span>
 		register typeof(*(p)) __user *__p asm(&quot;r0&quot;) = (p);	\
 		register __inttype(x) __r2 asm(&quot;r2&quot;);			\
 		register unsigned long __l asm(&quot;r1&quot;) = __limit;		\
 		register int __e asm(&quot;r0&quot;);				\
<span class="hl kwb">-		unsigned int __ua_flags = uaccess_save_and_enable();	\</span>
<span class="hl kwa">+		unsigned int __err;					\</span>
 		switch (sizeof(*(__p))) {				\
 		case 1:							\
 			if (sizeof((x)) &gt;= 8)				\
&#64;&#64; -227,9 +228,10 &#64;&#64; extern int __get_user_64t_4(void *);
 			break;						\
 		default: __e = __get_user_bad(); break;			\
 		}							\
<span class="hl kwb">-		uaccess_restore(__ua_flags);				\</span>
<span class="hl kwa">+		__err = __e;						\</span>
 		x = (typeof(*(p))) __r2;				\
<span class="hl kwb">-		__e;							\</span>
<span class="hl kwa">+		uaccess_restore(__ua_flags);				\</span>
<span class="hl kwa">+		__err;							\</span>
 	})

 #define get_user(x, p)							\
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index f39568b28ec1..794d5413765b 100644
<span class="hl kwb">--- a/arch/arm64/Kconfig</span>
<span class="hl kwa">+++ b/arch/arm64/Kconfig</span>
&#64;&#64; -894,7 +894,7 &#64;&#64; endchoice

 config ARM64_FORCE_52BIT
 	bool &quot;Force 52-bit virtual addresses for userspace&quot;
<span class="hl kwb">-	depends on ARM64_VA_BITS_52 &amp;&amp; EXPERT</span>
<span class="hl kwa">+	depends on ARM64_VA_BITS_52</span>
 	help
 	  For systems with 52-bit userspace VAs enabled, the kernel will attempt
 	  to maintain compatibility with older software by providing 48-bit VAs
&#64;&#64; -1147,6 +1147,7 &#64;&#64; config XEN
 config FORCE_MAX_ZONEORDER
 	int
 	default &quot;14&quot; if (ARM64_64K_PAGES &amp;&amp; TRANSPARENT_HUGEPAGE)
<span class="hl kwa">+	default &quot;13&quot; if (ARCH_THUNDER &amp;&amp; !ARM64_64K_PAGES &amp;&amp; !RHEL_DIFFERENCES)</span>
 	default &quot;12&quot; if (ARM64_16K_PAGES &amp;&amp; TRANSPARENT_HUGEPAGE)
 	default &quot;11&quot;
 	help
diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
index cada0b816c8a..77b30bf451aa 100644
<span class="hl kwb">--- a/arch/arm64/kernel/acpi.c</span>
<span class="hl kwa">+++ b/arch/arm64/kernel/acpi.c</span>
&#64;&#64; -40,7 +40,11 &#64;&#64; int acpi_pci_disabled = 1;	/* skip ACPI PCI scan and IRQ initialization */
 EXPORT_SYMBOL(acpi_pci_disabled);

 static bool param_acpi_off __initdata;
<span class="hl kwa">+#ifdef CONFIG_RHEL_DIFFERENCES</span>
<span class="hl kwa">+static bool param_acpi_on __initdata = true;</span>
<span class="hl kwa">+#else</span>
 static bool param_acpi_on __initdata;
<span class="hl kwa">+#endif</span>
 static bool param_acpi_force __initdata;

 static int __init parse_acpi(char *arg)
diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h
index a9e2c7295b35..6ff11f3a2d47 100644
<span class="hl kwb">--- a/arch/s390/include/asm/ipl.h</span>
<span class="hl kwa">+++ b/arch/s390/include/asm/ipl.h</span>
&#64;&#64; -127,6 +127,7 &#64;&#64; int ipl_report_add_component(struct ipl_report *report, struct kexec_buf *kbuf,
 			     unsigned char flags, unsigned short cert);
 int ipl_report_add_certificate(struct ipl_report *report, void *key,
 			       unsigned long addr, unsigned long len);
<span class="hl kwa">+bool ipl_get_secureboot(void);</span>

 /*
  * DIAG 308 support
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 7a21eca498aa..565f143c9858 100644
<span class="hl kwb">--- a/arch/s390/kernel/ipl.c</span>
<span class="hl kwa">+++ b/arch/s390/kernel/ipl.c</span>
&#64;&#64; -2215,3 +2215,8 &#64;&#64; int ipl_report_free(struct ipl_report *report)
 }

 #endif
<span class="hl kwa">+</span>
<span class="hl kwa">+bool ipl_get_secureboot(void)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	return !!ipl_secure_flag;</span>
<span class="hl kwa">+}</span>
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 1fbed91c73bc..73f5724342b1 100644
<span class="hl kwb">--- a/arch/s390/kernel/setup.c</span>
<span class="hl kwa">+++ b/arch/s390/kernel/setup.c</span>
<span class="hl kwd">&#64;&#64; -49,6 +49,7 &#64;&#64;</span>
 #include &lt;linux/memory.h&gt;
 #include &lt;linux/compat.h&gt;
 #include &lt;linux/start_kernel.h&gt;
<span class="hl kwa">+#include &lt;linux/security.h&gt;</span>
 #include &lt;linux/hugetlb.h&gt;

 #include &lt;asm/boot_data.h&gt;
&#64;&#64; -1100,6 +1101,9 &#64;&#64; void __init setup_arch(char **cmdline_p)

 	log_component_list();

<span class="hl kwa">+	if (ipl_get_secureboot())</span>
<span class="hl kwa">+		security_lock_kernel_down(&quot;Secure IPL mode&quot;, LOCKDOWN_INTEGRITY_MAX);</span>
<span class="hl kwa">+</span>
 	/* Have one command line that is parsed and saved in /proc/cmdline */
 	/* boot_command_line has been already set up in early.c */
 	*cmdline_p = boot_command_line;
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 35ad8480c464..fade48ea4c2d 100644
<span class="hl kwb">--- a/arch/x86/kernel/cpu/common.c</span>
<span class="hl kwa">+++ b/arch/x86/kernel/cpu/common.c</span>
&#64;&#64; -1307,6 +1307,7 &#64;&#64; static void __init early_identify_cpu(struct cpuinfo_x86 *c)
 		cpu_detect(c);
 		get_cpu_vendor(c);
 		get_cpu_cap(c);
<span class="hl kwa">+		get_model_name(c); /* RHEL: get model name for unsupported check */</span>
 		get_cpu_address_sizes(c);
 		setup_force_cpu_cap(X86_FEATURE_CPUID);
 		cpu_parse_early_param();
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 3412c4595efd..637343dc5ade 100644
<span class="hl kwb">--- a/arch/x86/kernel/setup.c</span>
<span class="hl kwa">+++ b/arch/x86/kernel/setup.c</span>
<span class="hl kwd">&#64;&#64; -19,6 +19,7 &#64;&#64;</span>
 #include &lt;linux/sfi.h&gt;
 #include &lt;linux/hugetlb.h&gt;
 #include &lt;linux/tboot.h&gt;
<span class="hl kwa">+#include &lt;linux/security.h&gt;</span>
 #include &lt;linux/usb/xhci-dbgp.h&gt;
 #include &lt;linux/static_call.h&gt;
 #include &lt;linux/swiotlb.h&gt;
<span class="hl kwd">&#64;&#64; -48,6 +49,7 &#64;&#64;</span>
 #include &lt;asm/unwind.h&gt;
 #include &lt;asm/vsyscall.h&gt;
 #include &lt;linux/vmalloc.h&gt;
<span class="hl kwa">+#include &lt;asm/intel-family.h&gt;</span>

 /*
  * max_low_pfn_mapped: highest directly mapped pfn &lt; 4 GB
&#64;&#64; -728,7 +730,51 &#64;&#64; static void __init trim_low_memory_range(void)
 	 */
 	memblock_reserve(0, ALIGN(reserve_low, PAGE_SIZE));
 }
<span class="hl kwb">-	</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#ifdef CONFIG_RHEL_DIFFERENCES</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static void rh_check_supported(void)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	bool guest;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	guest = (x86_hyper_type != X86_HYPER_NATIVE || boot_cpu_has(X86_FEATURE_HYPERVISOR));</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	/* RHEL supports single cpu on guests only */</span>
<span class="hl kwa">+	if (((boot_cpu_data.x86_max_cores * smp_num_siblings) == 1) &amp;&amp;</span>
<span class="hl kwa">+	    !guest &amp;&amp; is_kdump_kernel()) {</span>
<span class="hl kwa">+		pr_crit(&quot;Detected single cpu native boot.\n&quot;);</span>
<span class="hl kwa">+		pr_crit(&quot;Important:  In this kernel, single threaded, single CPU 64-bit physical systems are unsupported.&quot;);</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	/*</span>
<span class="hl kwa">+	 * If the RHEL kernel does not support this hardware, the kernel will</span>
<span class="hl kwa">+	 * attempt to boot, but no support is provided for this hardware</span>
<span class="hl kwa">+	 */</span>
<span class="hl kwa">+	switch (boot_cpu_data.x86_vendor) {</span>
<span class="hl kwa">+	case X86_VENDOR_AMD:</span>
<span class="hl kwa">+	case X86_VENDOR_INTEL:</span>
<span class="hl kwa">+		break;</span>
<span class="hl kwa">+	default:</span>
<span class="hl kwa">+		pr_crit(&quot;Detected processor %s %s\n&quot;,</span>
<span class="hl kwa">+			boot_cpu_data.x86_vendor_id,</span>
<span class="hl kwa">+			boot_cpu_data.x86_model_id);</span>
<span class="hl kwa">+		mark_hardware_unsupported(&quot;Processor&quot;);</span>
<span class="hl kwa">+		break;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	/*</span>
<span class="hl kwa">+	 * Due to the complexity of x86 lapic &amp; ioapic enumeration, and PCI IRQ</span>
<span class="hl kwa">+	 * routing, ACPI is required for x86.  acpi=off is a valid debug kernel</span>
<span class="hl kwa">+	 * parameter, so just print out a loud warning in case something</span>
<span class="hl kwa">+	 * goes wrong (which is most of the time).</span>
<span class="hl kwa">+	 */</span>
<span class="hl kwa">+	if (acpi_disabled &amp;&amp; !guest)</span>
<span class="hl kwa">+		pr_crit(&quot;ACPI has been disabled or is not available on this hardware.  This may result in a single cpu boot, incorrect PCI IRQ routing, or boot failure.\n&quot;);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+#else</span>
<span class="hl kwa">+#define rh_check_supported()</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 /*
  * Dump out kernel offset information on panic.
  */
&#64;&#64; -953,6 +999,13 &#64;&#64; void __init setup_arch(char **cmdline_p)
 	if (efi_enabled(EFI_BOOT))
 		efi_init();

<span class="hl kwa">+	efi_set_secure_boot(boot_params.secure_boot);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#ifdef CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT</span>
<span class="hl kwa">+	if (efi_enabled(EFI_SECURE_BOOT))</span>
<span class="hl kwa">+		security_lock_kernel_down(&quot;EFI Secure Boot mode&quot;, LOCKDOWN_INTEGRITY_MAX);</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 	dmi_setup();

 	/*
&#64;&#64; -1111,19 +1164,7 &#64;&#64; void __init setup_arch(char **cmdline_p)
 	/* Allocate bigger log buffer */
 	setup_log_buf(1);

<span class="hl kwb">-	if (efi_enabled(EFI_BOOT)) {</span>
<span class="hl kwb">-		switch (boot_params.secure_boot) {</span>
<span class="hl kwb">-		case efi_secureboot_mode_disabled:</span>
<span class="hl kwb">-			pr_info(&quot;Secure boot disabled\n&quot;);</span>
<span class="hl kwb">-			break;</span>
<span class="hl kwb">-		case efi_secureboot_mode_enabled:</span>
<span class="hl kwb">-			pr_info(&quot;Secure boot enabled\n&quot;);</span>
<span class="hl kwb">-			break;</span>
<span class="hl kwb">-		default:</span>
<span class="hl kwb">-			pr_info(&quot;Secure boot could not be determined\n&quot;);</span>
<span class="hl kwb">-			break;</span>
<span class="hl kwb">-		}</span>
<span class="hl kwb">-	}</span>
<span class="hl kwa">+	efi_set_secure_boot(boot_params.secure_boot);</span>

 	reserve_initrd();

&#64;&#64; -1232,6 +1273,8 &#64;&#64; void __init setup_arch(char **cmdline_p)
 		efi_apply_memmap_quirks();
 #endif

<span class="hl kwa">+	rh_check_supported();</span>
<span class="hl kwa">+</span>
 	unwind_init();
 }

diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
index 6e980fe16772..37bc003e7a83 100644
<span class="hl kwb">--- a/drivers/acpi/apei/hest.c</span>
<span class="hl kwa">+++ b/drivers/acpi/apei/hest.c</span>
&#64;&#64; -88,6 +88,14 &#64;&#64; int apei_hest_parse(apei_hest_func_t func, void *data)
 	if (hest_disable || !hest_tab)
 		return -EINVAL;

<span class="hl kwa">+#ifdef CONFIG_ARM64</span>
<span class="hl kwa">+	/* Ignore broken firmware */</span>
<span class="hl kwa">+	if (!strncmp(hest_tab-&gt;header.oem_id, &quot;HPE   &quot;, 6) &amp;&amp;</span>
<span class="hl kwa">+	    !strncmp(hest_tab-&gt;header.oem_table_id, &quot;ProLiant&quot;, 8) &amp;&amp;</span>
<span class="hl kwa">+	    MIDR_IMPLEMENTOR(read_cpuid_id()) == ARM_CPU_IMP_APM)</span>
<span class="hl kwa">+		return -EINVAL;</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 	hest_hdr = (struct acpi_hest_header *)(hest_tab + 1);
 	for (i = 0; i &lt; hest_tab-&gt;error_source_count; i++) {
 		len = hest_esrc_len(hest_hdr);
diff --git a/drivers/acpi/irq.c b/drivers/acpi/irq.c
index e209081d644b..7484bcf59a1b 100644
<span class="hl kwb">--- a/drivers/acpi/irq.c</span>
<span class="hl kwa">+++ b/drivers/acpi/irq.c</span>
&#64;&#64; -126,6 +126,7 &#64;&#64; struct acpi_irq_parse_one_ctx {
 	unsigned int index;
 	unsigned long *res_flags;
 	struct irq_fwspec *fwspec;
<span class="hl kwa">+	bool skip_producer_check;</span>
 };

 /**
&#64;&#64; -197,7 +198,8 &#64;&#64; static acpi_status acpi_irq_parse_one_cb(struct acpi_resource *ares,
 		return AE_CTRL_TERMINATE;
 	case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
 		eirq = &amp;ares-&gt;data.extended_irq;
<span class="hl kwb">-		if (eirq-&gt;producer_consumer == ACPI_PRODUCER)</span>
<span class="hl kwa">+		if (!ctx-&gt;skip_producer_check &amp;&amp;</span>
<span class="hl kwa">+		    eirq-&gt;producer_consumer == ACPI_PRODUCER)</span>
 			return AE_OK;
 		if (ctx-&gt;index &gt;= eirq-&gt;interrupt_count) {
 			ctx-&gt;index -= eirq-&gt;interrupt_count;
&#64;&#64; -232,8 +234,19 &#64;&#64; static acpi_status acpi_irq_parse_one_cb(struct acpi_resource *ares,
 static int acpi_irq_parse_one(acpi_handle handle, unsigned int index,
 			      struct irq_fwspec *fwspec, unsigned long *flags)
 {
<span class="hl kwb">-	struct acpi_irq_parse_one_ctx ctx = { -EINVAL, index, flags, fwspec };</span>
<span class="hl kwa">+	struct acpi_irq_parse_one_ctx ctx = { -EINVAL, index, flags, fwspec, false };</span>

<span class="hl kwa">+	/*</span>
<span class="hl kwa">+	 * Firmware on arm64-based HPE m400 platform incorrectly marks</span>
<span class="hl kwa">+	 * its UART interrupt as ACPI_PRODUCER rather than ACPI_CONSUMER.</span>
<span class="hl kwa">+	 * Don't do the producer/consumer check for that device.</span>
<span class="hl kwa">+	 */</span>
<span class="hl kwa">+	if (IS_ENABLED(CONFIG_ARM64)) {</span>
<span class="hl kwa">+		struct acpi_device *adev = acpi_bus_get_acpi_device(handle);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+		if (adev &amp;&amp; !strcmp(acpi_device_hid(adev), &quot;APMC0D08&quot;))</span>
<span class="hl kwa">+			ctx.skip_producer_check = true;</span>
<span class="hl kwa">+	}</span>
 	acpi_walk_resources(handle, METHOD_NAME__CRS, acpi_irq_parse_one_cb, &amp;ctx);
 	return ctx.rc;
 }
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 1db063b02f63..f0a5fb19524f 100644
<span class="hl kwb">--- a/drivers/acpi/scan.c</span>
<span class="hl kwa">+++ b/drivers/acpi/scan.c</span>
&#64;&#64; -1620,6 +1620,15 &#64;&#64; static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
 	if (!acpi_match_device_ids(device, i2c_multi_instantiate_ids))
 		return false;

<span class="hl kwa">+	/*</span>
<span class="hl kwa">+	 * Firmware on some arm64 X-Gene platforms will make the UART</span>
<span class="hl kwa">+	 * device appear as both a UART and a slave of that UART. Just</span>
<span class="hl kwa">+	 * bail out here for X-Gene UARTs.</span>
<span class="hl kwa">+	 */</span>
<span class="hl kwa">+	if (IS_ENABLED(CONFIG_ARM64) &amp;&amp;</span>
<span class="hl kwa">+	    !strcmp(acpi_device_hid(device), &quot;APMC0D08&quot;))</span>
<span class="hl kwa">+		return false;</span>
<span class="hl kwa">+</span>
 	INIT_LIST_HEAD(&amp;resource_list);
 	acpi_dev_get_resources(device, &amp;resource_list,
 			       acpi_check_serial_bus_slave,
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
index ea5bf5f4cbed..71c55cae27ac 100644
<span class="hl kwb">--- a/drivers/ata/libahci.c</span>
<span class="hl kwa">+++ b/drivers/ata/libahci.c</span>
&#64;&#64; -666,6 +666,24 &#64;&#64; int ahci_stop_engine(struct ata_port *ap)
 	tmp &amp;= ~PORT_CMD_START;
 	writel(tmp, port_mmio + PORT_CMD);

<span class="hl kwa">+#ifdef CONFIG_ARM64</span>
<span class="hl kwa">+	/* Rev Ax of Cavium CN99XX needs a hack for port stop */</span>
<span class="hl kwa">+	if (dev_is_pci(ap-&gt;host-&gt;dev) &amp;&amp;</span>
<span class="hl kwa">+	    to_pci_dev(ap-&gt;host-&gt;dev)-&gt;vendor == 0x14e4 &amp;&amp;</span>
<span class="hl kwa">+	    to_pci_dev(ap-&gt;host-&gt;dev)-&gt;device == 0x9027 &amp;&amp;</span>
<span class="hl kwa">+	    midr_is_cpu_model_range(read_cpuid_id(),</span>
<span class="hl kwa">+			MIDR_CPU_MODEL(ARM_CPU_IMP_BRCM, BRCM_CPU_PART_VULCAN),</span>
<span class="hl kwa">+			MIDR_CPU_VAR_REV(0, 0),</span>
<span class="hl kwa">+			MIDR_CPU_VAR_REV(0, MIDR_REVISION_MASK))) {</span>
<span class="hl kwa">+		tmp = readl(hpriv-&gt;mmio + 0x8000);</span>
<span class="hl kwa">+		udelay(100);</span>
<span class="hl kwa">+		writel(tmp | (1 &lt;&lt; 26), hpriv-&gt;mmio + 0x8000);</span>
<span class="hl kwa">+		udelay(100);</span>
<span class="hl kwa">+		writel(tmp &amp; ~(1 &lt;&lt; 26), hpriv-&gt;mmio + 0x8000);</span>
<span class="hl kwa">+		dev_warn(ap-&gt;host-&gt;dev, &quot;CN99XX SATA reset workaround applied\n&quot;);</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 	/* wait for engine to stop. This could be as long as 500 msec */
 	tmp = ata_wait_register(ap, port_mmio + PORT_CMD,
 				PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500);
diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c
index bbf7029e224b..cf7faa970dd6 100644
<span class="hl kwb">--- a/drivers/char/ipmi/ipmi_dmi.c</span>
<span class="hl kwa">+++ b/drivers/char/ipmi/ipmi_dmi.c</span>
&#64;&#64; -215,6 +215,21 &#64;&#64; static int __init scan_for_dmi_ipmi(void)
 {
 	const struct dmi_device *dev = NULL;

<span class="hl kwa">+#ifdef CONFIG_ARM64</span>
<span class="hl kwa">+	/* RHEL-only</span>
<span class="hl kwa">+	 * If this is ARM-based HPE m400, return now, because that platform</span>
<span class="hl kwa">+	 * reports the host-side ipmi address as intel port-io space, which</span>
<span class="hl kwa">+	 * does not exist in the ARM architecture.</span>
<span class="hl kwa">+	 */</span>
<span class="hl kwa">+	const char *dmistr = dmi_get_system_info(DMI_PRODUCT_NAME);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (dmistr &amp;&amp; (strcmp(&quot;ProLiant m400 Server&quot;, dmistr) == 0)) {</span>
<span class="hl kwa">+		pr_debug(&quot;%s does not support host ipmi\n&quot;, dmistr);</span>
<span class="hl kwa">+		return 0;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+	/* END RHEL-only */</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 	while ((dev = dmi_find_device(DMI_DEV_TYPE_IPMI, NULL, dev)))
 		dmi_decode_ipmi((const struct dmi_header *) dev-&gt;device_data);

diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index c44ad18464f1..3ec1db4cbbc3 100644
<span class="hl kwb">--- a/drivers/char/ipmi/ipmi_msghandler.c</span>
<span class="hl kwa">+++ b/drivers/char/ipmi/ipmi_msghandler.c</span>
<span class="hl kwd">&#64;&#64; -34,6 +34,7 &#64;&#64;</span>
 #include &lt;linux/uuid.h&gt;
 #include &lt;linux/nospec.h&gt;
 #include &lt;linux/vmalloc.h&gt;
<span class="hl kwa">+#include &lt;linux/dmi.h&gt;</span>
 #include &lt;linux/delay.h&gt;

 #define IPMI_DRIVER_VERSION &quot;39.2&quot;
&#64;&#64; -5174,8 +5175,21 &#64;&#64; static int __init ipmi_init_msghandler_mod(void)
 {
 	int rv;

<span class="hl kwb">-	pr_info(&quot;version &quot; IPMI_DRIVER_VERSION &quot;\n&quot;);</span>
<span class="hl kwa">+#ifdef CONFIG_ARM64</span>
<span class="hl kwa">+	/* RHEL-only</span>
<span class="hl kwa">+	 * If this is ARM-based HPE m400, return now, because that platform</span>
<span class="hl kwa">+	 * reports the host-side ipmi address as intel port-io space, which</span>
<span class="hl kwa">+	 * does not exist in the ARM architecture.</span>
<span class="hl kwa">+	 */</span>
<span class="hl kwa">+	const char *dmistr = dmi_get_system_info(DMI_PRODUCT_NAME);</span>

<span class="hl kwa">+	if (dmistr &amp;&amp; (strcmp(&quot;ProLiant m400 Server&quot;, dmistr) == 0)) {</span>
<span class="hl kwa">+		pr_debug(&quot;%s does not support host ipmi\n&quot;, dmistr);</span>
<span class="hl kwa">+		return -ENOSYS;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+	/* END RHEL-only */</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+	pr_info(&quot;version &quot; IPMI_DRIVER_VERSION &quot;\n&quot;);</span>
 	mutex_lock(&amp;ipmi_interfaces_mutex);
 	rv = ipmi_register_driver();
 	mutex_unlock(&amp;ipmi_interfaces_mutex);
diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile
index 467e94259679..9b6f5b8e5397 100644
<span class="hl kwb">--- a/drivers/firmware/efi/Makefile</span>
<span class="hl kwa">+++ b/drivers/firmware/efi/Makefile</span>
&#64;&#64; -28,6 +28,7 &#64;&#64; obj-$(CONFIG_EFI_FAKE_MEMMAP)		+= fake_map.o
 obj-$(CONFIG_EFI_BOOTLOADER_CONTROL)	+= efibc.o
 obj-$(CONFIG_EFI_TEST)			+= test/
 obj-$(CONFIG_EFI_DEV_PATH_PARSER)	+= dev-path-parser.o
<span class="hl kwa">+obj-$(CONFIG_EFI)			+= secureboot.o</span>
 obj-$(CONFIG_APPLE_PROPERTIES)		+= apple-properties.o
 obj-$(CONFIG_EFI_RCI2_TABLE)		+= rci2-table.o
 obj-$(CONFIG_EFI_EMBEDDED_FIRMWARE)	+= embedded-firmware.o
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index df3f9bcab581..8d5b6eb36467 100644
<span class="hl kwb">--- a/drivers/firmware/efi/efi.c</span>
<span class="hl kwa">+++ b/drivers/firmware/efi/efi.c</span>
<span class="hl kwd">&#64;&#64; -31,6 +31,7 &#64;&#64;</span>
 #include &lt;linux/ucs2_string.h&gt;
 #include &lt;linux/memblock.h&gt;
 #include &lt;linux/security.h&gt;
<span class="hl kwa">+#include &lt;linux/bsearch.h&gt;</span>

 #include &lt;asm/early_ioremap.h&gt;

&#64;&#64; -841,40 +842,101 &#64;&#64; int efi_mem_type(unsigned long phys_addr)
 }
 #endif

<span class="hl kwa">+struct efi_error_code {</span>
<span class="hl kwa">+	efi_status_t status;</span>
<span class="hl kwa">+	int errno;</span>
<span class="hl kwa">+	const char *description;</span>
<span class="hl kwa">+};</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static const struct efi_error_code efi_error_codes[] = {</span>
<span class="hl kwa">+	{ EFI_SUCCESS, 0, &quot;Success&quot;},</span>
<span class="hl kwa">+#if 0</span>
<span class="hl kwa">+	{ EFI_LOAD_ERROR, -EPICK_AN_ERRNO, &quot;Load Error&quot;},</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+	{ EFI_INVALID_PARAMETER, -EINVAL, &quot;Invalid Parameter&quot;},</span>
<span class="hl kwa">+	{ EFI_UNSUPPORTED, -ENOSYS, &quot;Unsupported&quot;},</span>
<span class="hl kwa">+	{ EFI_BAD_BUFFER_SIZE, -ENOSPC, &quot;Bad Buffer Size&quot;},</span>
<span class="hl kwa">+	{ EFI_BUFFER_TOO_SMALL, -ENOSPC, &quot;Buffer Too Small&quot;},</span>
<span class="hl kwa">+	{ EFI_NOT_READY, -EAGAIN, &quot;Not Ready&quot;},</span>
<span class="hl kwa">+	{ EFI_DEVICE_ERROR, -EIO, &quot;Device Error&quot;},</span>
<span class="hl kwa">+	{ EFI_WRITE_PROTECTED, -EROFS, &quot;Write Protected&quot;},</span>
<span class="hl kwa">+	{ EFI_OUT_OF_RESOURCES, -ENOMEM, &quot;Out of Resources&quot;},</span>
<span class="hl kwa">+#if 0</span>
<span class="hl kwa">+	{ EFI_VOLUME_CORRUPTED, -EPICK_AN_ERRNO, &quot;Volume Corrupt&quot;},</span>
<span class="hl kwa">+	{ EFI_VOLUME_FULL, -EPICK_AN_ERRNO, &quot;Volume Full&quot;},</span>
<span class="hl kwa">+	{ EFI_NO_MEDIA, -EPICK_AN_ERRNO, &quot;No Media&quot;},</span>
<span class="hl kwa">+	{ EFI_MEDIA_CHANGED, -EPICK_AN_ERRNO, &quot;Media changed&quot;},</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+	{ EFI_NOT_FOUND, -ENOENT, &quot;Not Found&quot;},</span>
<span class="hl kwa">+#if 0</span>
<span class="hl kwa">+	{ EFI_ACCESS_DENIED, -EPICK_AN_ERRNO, &quot;Access Denied&quot;},</span>
<span class="hl kwa">+	{ EFI_NO_RESPONSE, -EPICK_AN_ERRNO, &quot;No Response&quot;},</span>
<span class="hl kwa">+	{ EFI_NO_MAPPING, -EPICK_AN_ERRNO, &quot;No mapping&quot;},</span>
<span class="hl kwa">+	{ EFI_TIMEOUT, -EPICK_AN_ERRNO, &quot;Time out&quot;},</span>
<span class="hl kwa">+	{ EFI_NOT_STARTED, -EPICK_AN_ERRNO, &quot;Not started&quot;},</span>
<span class="hl kwa">+	{ EFI_ALREADY_STARTED, -EPICK_AN_ERRNO, &quot;Already started&quot;},</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+	{ EFI_ABORTED, -EINTR, &quot;Aborted&quot;},</span>
<span class="hl kwa">+#if 0</span>
<span class="hl kwa">+	{ EFI_ICMP_ERROR, -EPICK_AN_ERRNO, &quot;ICMP Error&quot;},</span>
<span class="hl kwa">+	{ EFI_TFTP_ERROR, -EPICK_AN_ERRNO, &quot;TFTP Error&quot;},</span>
<span class="hl kwa">+	{ EFI_PROTOCOL_ERROR, -EPICK_AN_ERRNO, &quot;Protocol Error&quot;},</span>
<span class="hl kwa">+	{ EFI_INCOMPATIBLE_VERSION, -EPICK_AN_ERRNO, &quot;Incompatible Version&quot;},</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+	{ EFI_SECURITY_VIOLATION, -EACCES, &quot;Security Policy Violation&quot;},</span>
<span class="hl kwa">+#if 0</span>
<span class="hl kwa">+	{ EFI_CRC_ERROR, -EPICK_AN_ERRNO, &quot;CRC Error&quot;},</span>
<span class="hl kwa">+	{ EFI_END_OF_MEDIA, -EPICK_AN_ERRNO, &quot;End of Media&quot;},</span>
<span class="hl kwa">+	{ EFI_END_OF_FILE, -EPICK_AN_ERRNO, &quot;End of File&quot;},</span>
<span class="hl kwa">+	{ EFI_INVALID_LANGUAGE, -EPICK_AN_ERRNO, &quot;Invalid Languages&quot;},</span>
<span class="hl kwa">+	{ EFI_COMPROMISED_DATA, -EPICK_AN_ERRNO, &quot;Compromised Data&quot;},</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	// warnings</span>
<span class="hl kwa">+	{ EFI_WARN_UNKOWN_GLYPH, -EPICK_AN_ERRNO, &quot;Warning Unknown Glyph&quot;},</span>
<span class="hl kwa">+	{ EFI_WARN_DELETE_FAILURE, -EPICK_AN_ERRNO, &quot;Warning Delete Failure&quot;},</span>
<span class="hl kwa">+	{ EFI_WARN_WRITE_FAILURE, -EPICK_AN_ERRNO, &quot;Warning Write Failure&quot;},</span>
<span class="hl kwa">+	{ EFI_WARN_BUFFER_TOO_SMALL, -EPICK_AN_ERRNO, &quot;Warning Buffer Too Small&quot;},</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+};</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int</span>
<span class="hl kwa">+efi_status_cmp_bsearch(const void *key, const void *item)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	u64 status = (u64)(uintptr_t)key;</span>
<span class="hl kwa">+	struct efi_error_code *code = (struct efi_error_code *)item;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (status &lt; code-&gt;status)</span>
<span class="hl kwa">+		return -1;</span>
<span class="hl kwa">+	if (status &gt; code-&gt;status)</span>
<span class="hl kwa">+		return 1;</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
 int efi_status_to_err(efi_status_t status)
 {
<span class="hl kwb">-	int err;</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	switch (status) {</span>
<span class="hl kwb">-	case EFI_SUCCESS:</span>
<span class="hl kwb">-		err = 0;</span>
<span class="hl kwb">-		break;</span>
<span class="hl kwb">-	case EFI_INVALID_PARAMETER:</span>
<span class="hl kwb">-		err = -EINVAL;</span>
<span class="hl kwb">-		break;</span>
<span class="hl kwb">-	case EFI_OUT_OF_RESOURCES:</span>
<span class="hl kwb">-		err = -ENOSPC;</span>
<span class="hl kwb">-		break;</span>
<span class="hl kwb">-	case EFI_DEVICE_ERROR:</span>
<span class="hl kwb">-		err = -EIO;</span>
<span class="hl kwb">-		break;</span>
<span class="hl kwb">-	case EFI_WRITE_PROTECTED:</span>
<span class="hl kwb">-		err = -EROFS;</span>
<span class="hl kwb">-		break;</span>
<span class="hl kwb">-	case EFI_SECURITY_VIOLATION:</span>
<span class="hl kwb">-		err = -EACCES;</span>
<span class="hl kwb">-		break;</span>
<span class="hl kwb">-	case EFI_NOT_FOUND:</span>
<span class="hl kwb">-		err = -ENOENT;</span>
<span class="hl kwb">-		break;</span>
<span class="hl kwb">-	case EFI_ABORTED:</span>
<span class="hl kwb">-		err = -EINTR;</span>
<span class="hl kwb">-		break;</span>
<span class="hl kwb">-	default:</span>
<span class="hl kwb">-		err = -EINVAL;</span>
<span class="hl kwb">-	}</span>
<span class="hl kwa">+	struct efi_error_code *found;</span>
<span class="hl kwa">+	size_t num = sizeof(efi_error_codes) / sizeof(struct efi_error_code);</span>

<span class="hl kwb">-	return err;</span>
<span class="hl kwa">+	found = bsearch((void *)(uintptr_t)status, efi_error_codes,</span>
<span class="hl kwa">+			sizeof(struct efi_error_code), num,</span>
<span class="hl kwa">+			efi_status_cmp_bsearch);</span>
<span class="hl kwa">+	if (!found)</span>
<span class="hl kwa">+		return -EINVAL;</span>
<span class="hl kwa">+	return found-&gt;errno;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+const char *</span>
<span class="hl kwa">+efi_status_to_str(efi_status_t status)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct efi_error_code *found;</span>
<span class="hl kwa">+	size_t num = sizeof(efi_error_codes) / sizeof(struct efi_error_code);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	found = bsearch((void *)(uintptr_t)status, efi_error_codes,</span>
<span class="hl kwa">+			sizeof(struct efi_error_code), num,</span>
<span class="hl kwa">+			efi_status_cmp_bsearch);</span>
<span class="hl kwa">+	if (!found)</span>
<span class="hl kwa">+		return &quot;Unknown error code&quot;;</span>
<span class="hl kwa">+	return found-&gt;description;</span>
 }

 static DEFINE_SPINLOCK(efi_mem_reserve_persistent_lock);
diff --git a/drivers/firmware/efi/secureboot.c b/drivers/firmware/efi/secureboot.c
new file mode 100644
index 000000000000..de0a3714a5d4
<span class="hl kwb">--- /dev/null</span>
<span class="hl kwa">+++ b/drivers/firmware/efi/secureboot.c</span>
<span class="hl kwd">&#64;&#64; -0,0 +1,38 &#64;&#64;</span>
<span class="hl kwa">+/* Core kernel secure boot support.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Copyright (C) 2017 Red Hat, Inc. All Rights Reserved.</span>
<span class="hl kwa">+ * Written by David Howells (dhowells&#64;redhat.com)</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * This program is free software; you can redistribute it and/or</span>
<span class="hl kwa">+ * modify it under the terms of the GNU General Public Licence</span>
<span class="hl kwa">+ * as published by the Free Software Foundation; either version</span>
<span class="hl kwa">+ * 2 of the Licence, or (at your option) any later version.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#define pr_fmt(fmt) KBUILD_MODNAME &quot;: &quot; fmt</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#include &lt;linux/efi.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/kernel.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/printk.h&gt;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * Decide what to do when UEFI secure boot mode is enabled.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+void __init efi_set_secure_boot(enum efi_secureboot_mode mode)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	if (efi_enabled(EFI_BOOT)) {</span>
<span class="hl kwa">+		switch (mode) {</span>
<span class="hl kwa">+		case efi_secureboot_mode_disabled:</span>
<span class="hl kwa">+			pr_info(&quot;Secure boot disabled\n&quot;);</span>
<span class="hl kwa">+			break;</span>
<span class="hl kwa">+		case efi_secureboot_mode_enabled:</span>
<span class="hl kwa">+			set_bit(EFI_SECURE_BOOT, &amp;efi.flags);</span>
<span class="hl kwa">+			pr_info(&quot;Secure boot enabled\n&quot;);</span>
<span class="hl kwa">+			break;</span>
<span class="hl kwa">+		default:</span>
<span class="hl kwa">+			pr_warn(&quot;Secure boot could not be determined (mode %u)\n&quot;,</span>
<span class="hl kwa">+				   mode);</span>
<span class="hl kwa">+			break;</span>
<span class="hl kwa">+		}</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+}</span>
diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index b4e021ea30f9..5687b745ebe2 100644
<span class="hl kwb">--- a/drivers/gpu/drm/panel/Kconfig</span>
<span class="hl kwa">+++ b/drivers/gpu/drm/panel/Kconfig</span>
&#64;&#64; -532,6 +532,15 &#64;&#64; config DRM_PANEL_VISIONOX_RM69299
 	  Say Y here if you want to enable support for Visionox
 	  RM69299  DSI Video Mode panel.

<span class="hl kwa">+config DRM_PANEL_XINGBANGDA_XBD599</span>
<span class="hl kwa">+	tristate &quot;Xingbangda XBD599 panel&quot;</span>
<span class="hl kwa">+	depends on OF</span>
<span class="hl kwa">+	depends on DRM_MIPI_DSI</span>
<span class="hl kwa">+	depends on BACKLIGHT_CLASS_DEVICE</span>
<span class="hl kwa">+	help</span>
<span class="hl kwa">+	  Say Y here if you want to enable support for the Xingbangda XBD599</span>
<span class="hl kwa">+	  MIPI DSI Video Mode panel.</span>
<span class="hl kwa">+</span>
 config DRM_PANEL_XINPENG_XPP055C272
 	tristate &quot;Xinpeng XPP055C272 panel driver&quot;
 	depends on OF
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
index ebbf488c7eac..cc539a167f40 100644
<span class="hl kwb">--- a/drivers/gpu/drm/panel/Makefile</span>
<span class="hl kwa">+++ b/drivers/gpu/drm/panel/Makefile</span>
&#64;&#64; -56,4 +56,5 &#64;&#64; obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o
 obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o
 obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o
 obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o
<span class="hl kwa">+obj-$(CONFIG_DRM_PANEL_XINGBANGDA_XBD599) += panel-xingbangda-xbd599.o</span>
 obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o
diff --git a/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c b/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c
new file mode 100644
index 000000000000..b483f96ee1db
<span class="hl kwb">--- /dev/null</span>
<span class="hl kwa">+++ b/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c</span>
<span class="hl kwd">&#64;&#64; -0,0 +1,366 &#64;&#64;</span>
<span class="hl kwa">+// SPDX-License-Identifier: GPL-2.0</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * Xingbangda XBD599 MIPI-DSI panel driver</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Copyright (C) 2019-2020 Icenowy Zheng &lt;icenowy&#64;aosc.io&gt;</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Based on panel-rocktech-jh057n00900.c, which is:</span>
<span class="hl kwa">+ *   Copyright (C) Purism SPC 2019</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#include &lt;linux/delay.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/gpio/consumer.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/mod_devicetable.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/module.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/of_device.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/regulator/consumer.h&gt;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#include &lt;drm/drm_mipi_dsi.h&gt;</span>
<span class="hl kwa">+#include &lt;drm/drm_modes.h&gt;</span>
<span class="hl kwa">+#include &lt;drm/drm_panel.h&gt;</span>
<span class="hl kwa">+#include &lt;drm/drm_print.h&gt;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/* Manufacturer specific Commands send via DSI */</span>
<span class="hl kwa">+#define ST7703_CMD_ALL_PIXEL_OFF 0x22</span>
<span class="hl kwa">+#define ST7703_CMD_ALL_PIXEL_ON	 0x23</span>
<span class="hl kwa">+#define ST7703_CMD_SETDISP	 0xB2</span>
<span class="hl kwa">+#define ST7703_CMD_SETRGBIF	 0xB3</span>
<span class="hl kwa">+#define ST7703_CMD_SETCYC	 0xB4</span>
<span class="hl kwa">+#define ST7703_CMD_SETBGP	 0xB5</span>
<span class="hl kwa">+#define ST7703_CMD_SETVCOM	 0xB6</span>
<span class="hl kwa">+#define ST7703_CMD_SETOTP	 0xB7</span>
<span class="hl kwa">+#define ST7703_CMD_SETPOWER_EXT	 0xB8</span>
<span class="hl kwa">+#define ST7703_CMD_SETEXTC	 0xB9</span>
<span class="hl kwa">+#define ST7703_CMD_SETMIPI	 0xBA</span>
<span class="hl kwa">+#define ST7703_CMD_SETVDC	 0xBC</span>
<span class="hl kwa">+#define ST7703_CMD_SETSCR	 0xC0</span>
<span class="hl kwa">+#define ST7703_CMD_SETPOWER	 0xC1</span>
<span class="hl kwa">+#define ST7703_CMD_UNK_C6	 0xC6</span>
<span class="hl kwa">+#define ST7703_CMD_SETPANEL	 0xCC</span>
<span class="hl kwa">+#define ST7703_CMD_SETGAMMA	 0xE0</span>
<span class="hl kwa">+#define ST7703_CMD_SETEQ	 0xE3</span>
<span class="hl kwa">+#define ST7703_CMD_SETGIP1	 0xE9</span>
<span class="hl kwa">+#define ST7703_CMD_SETGIP2	 0xEA</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static const char * const regulator_names[] = {</span>
<span class="hl kwa">+	&quot;iovcc&quot;,</span>
<span class="hl kwa">+	&quot;vcc&quot;,</span>
<span class="hl kwa">+};</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+struct xbd599 {</span>
<span class="hl kwa">+	struct device *dev;</span>
<span class="hl kwa">+	struct drm_panel panel;</span>
<span class="hl kwa">+	struct gpio_desc *reset_gpio;</span>
<span class="hl kwa">+	struct regulator_bulk_data supplies[ARRAY_SIZE(regulator_names)];</span>
<span class="hl kwa">+	bool prepared;</span>
<span class="hl kwa">+};</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static inline struct xbd599 *panel_to_xbd599(struct drm_panel *panel)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	return container_of(panel, struct xbd599, panel);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#define dsi_dcs_write_seq(dsi, cmd, seq...) do {			\</span>
<span class="hl kwa">+		static const u8 d[] = { seq };				\</span>
<span class="hl kwa">+		int ret;						\</span>
<span class="hl kwa">+		ret = mipi_dsi_dcs_write(dsi, cmd, d, ARRAY_SIZE(d));	\</span>
<span class="hl kwa">+		if (ret &lt; 0)						\</span>
<span class="hl kwa">+			return ret;					\</span>
<span class="hl kwa">+	} while (0)</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int xbd599_init_sequence(struct xbd599 *ctx)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx-&gt;dev);</span>
<span class="hl kwa">+	struct device *dev = ctx-&gt;dev;</span>
<span class="hl kwa">+	int ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	/*</span>
<span class="hl kwa">+	 * Init sequence was supplied by the panel vendor.</span>
<span class="hl kwa">+	 */</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETEXTC,</span>
<span class="hl kwa">+			  0xF1, 0x12, 0x83);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETMIPI,</span>
<span class="hl kwa">+			  0x33, 0x81, 0x05, 0xF9, 0x0E, 0x0E, 0x20, 0x00,</span>
<span class="hl kwa">+			  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25,</span>
<span class="hl kwa">+			  0x00, 0x91, 0x0a, 0x00, 0x00, 0x02, 0x4F, 0x11,</span>
<span class="hl kwa">+			  0x00, 0x00, 0x37);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER_EXT,</span>
<span class="hl kwa">+			  0x25, 0x22, 0x20, 0x03);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETRGBIF,</span>
<span class="hl kwa">+			  0x10, 0x10, 0x05, 0x05, 0x03, 0xFF, 0x00, 0x00,</span>
<span class="hl kwa">+			  0x00, 0x00);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETSCR,</span>
<span class="hl kwa">+			  0x73, 0x73, 0x50, 0x50, 0x00, 0xC0, 0x08, 0x70,</span>
<span class="hl kwa">+			  0x00);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETVDC, 0x4E);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETPANEL, 0x0B);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETCYC, 0x80);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETDISP, 0xF0, 0x12, 0xF0);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETEQ,</span>
<span class="hl kwa">+			  0x00, 0x00, 0x0B, 0x0B, 0x10, 0x10, 0x00, 0x00,</span>
<span class="hl kwa">+			  0x00, 0x00, 0xFF, 0x00, 0xC0, 0x10);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, 0xC6, 0x01, 0x00, 0xFF, 0xFF, 0x00);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER,</span>
<span class="hl kwa">+			  0x74, 0x00, 0x32, 0x32, 0x77, 0xF1, 0xFF, 0xFF,</span>
<span class="hl kwa">+			  0xCC, 0xCC, 0x77, 0x77);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETBGP, 0x07, 0x07);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETVCOM, 0x2C, 0x2C);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, 0xBF, 0x02, 0x11, 0x00);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP1,</span>
<span class="hl kwa">+			  0x82, 0x10, 0x06, 0x05, 0xA2, 0x0A, 0xA5, 0x12,</span>
<span class="hl kwa">+			  0x31, 0x23, 0x37, 0x83, 0x04, 0xBC, 0x27, 0x38,</span>
<span class="hl kwa">+			  0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00,</span>
<span class="hl kwa">+			  0x03, 0x00, 0x00, 0x00, 0x75, 0x75, 0x31, 0x88,</span>
<span class="hl kwa">+			  0x88, 0x88, 0x88, 0x88, 0x88, 0x13, 0x88, 0x64,</span>
<span class="hl kwa">+			  0x64, 0x20, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,</span>
<span class="hl kwa">+			  0x02, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span>
<span class="hl kwa">+			  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP2,</span>
<span class="hl kwa">+			  0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span>
<span class="hl kwa">+			  0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x02, 0x88,</span>
<span class="hl kwa">+			  0x88, 0x88, 0x88, 0x88, 0x88, 0x64, 0x88, 0x13,</span>
<span class="hl kwa">+			  0x57, 0x13, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,</span>
<span class="hl kwa">+			  0x75, 0x88, 0x23, 0x14, 0x00, 0x00, 0x02, 0x00,</span>
<span class="hl kwa">+			  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span>
<span class="hl kwa">+			  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0A,</span>
<span class="hl kwa">+			  0xA5, 0x00, 0x00, 0x00, 0x00);</span>
<span class="hl kwa">+	dsi_dcs_write_seq(dsi, ST7703_CMD_SETGAMMA,</span>
<span class="hl kwa">+			  0x00, 0x09, 0x0D, 0x23, 0x27, 0x3C, 0x41, 0x35,</span>
<span class="hl kwa">+			  0x07, 0x0D, 0x0E, 0x12, 0x13, 0x10, 0x12, 0x12,</span>
<span class="hl kwa">+			  0x18, 0x00, 0x09, 0x0D, 0x23, 0x27, 0x3C, 0x41,</span>
<span class="hl kwa">+			  0x35, 0x07, 0x0D, 0x0E, 0x12, 0x13, 0x10, 0x12,</span>
<span class="hl kwa">+			  0x12, 0x18);</span>
<span class="hl kwa">+	msleep(20);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = mipi_dsi_dcs_exit_sleep_mode(dsi);</span>
<span class="hl kwa">+	if (ret &lt; 0) {</span>
<span class="hl kwa">+		DRM_DEV_ERROR(dev, &quot;Failed to exit sleep mode\n&quot;);</span>
<span class="hl kwa">+		return ret;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+	msleep(250);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = mipi_dsi_dcs_set_display_on(dsi);</span>
<span class="hl kwa">+	if (ret)</span>
<span class="hl kwa">+		return ret;</span>
<span class="hl kwa">+	msleep(50);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	DRM_DEV_DEBUG_DRIVER(dev, &quot;Panel init sequence done\n&quot;);</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int xbd599_prepare(struct drm_panel *panel)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct xbd599 *ctx = panel_to_xbd599(panel);</span>
<span class="hl kwa">+	int ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (ctx-&gt;prepared)</span>
<span class="hl kwa">+		return 0;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = regulator_bulk_enable(ARRAY_SIZE(ctx-&gt;supplies), ctx-&gt;supplies);</span>
<span class="hl kwa">+	if (ret)</span>
<span class="hl kwa">+		return ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	DRM_DEV_DEBUG_DRIVER(ctx-&gt;dev, &quot;Resetting the panel\n&quot;);</span>
<span class="hl kwa">+	gpiod_set_value_cansleep(ctx-&gt;reset_gpio, 1);</span>
<span class="hl kwa">+	usleep_range(20, 40);</span>
<span class="hl kwa">+	gpiod_set_value_cansleep(ctx-&gt;reset_gpio, 0);</span>
<span class="hl kwa">+	msleep(20);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ctx-&gt;prepared = true;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int xbd599_enable(struct drm_panel *panel)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct xbd599 *ctx = panel_to_xbd599(panel);</span>
<span class="hl kwa">+	int ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = xbd599_init_sequence(ctx);</span>
<span class="hl kwa">+	if (ret &lt; 0) {</span>
<span class="hl kwa">+		DRM_DEV_ERROR(ctx-&gt;dev, &quot;Panel init sequence failed: %d\n&quot;,</span>
<span class="hl kwa">+			      ret);</span>
<span class="hl kwa">+		return ret;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int xbd599_disable(struct drm_panel *panel)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct xbd599 *ctx = panel_to_xbd599(panel);</span>
<span class="hl kwa">+	struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx-&gt;dev);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return mipi_dsi_dcs_set_display_off(dsi);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int xbd599_unprepare(struct drm_panel *panel)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct xbd599 *ctx = panel_to_xbd599(panel);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (!ctx-&gt;prepared)</span>
<span class="hl kwa">+		return 0;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	gpiod_set_value_cansleep(ctx-&gt;reset_gpio, 1);</span>
<span class="hl kwa">+	regulator_bulk_disable(ARRAY_SIZE(ctx-&gt;supplies), ctx-&gt;supplies);</span>
<span class="hl kwa">+	ctx-&gt;prepared = false;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static const struct drm_display_mode xbd599_default_mode = {</span>
<span class="hl kwa">+	.hdisplay    = 720,</span>
<span class="hl kwa">+	.hsync_start = 720 + 40,</span>
<span class="hl kwa">+	.hsync_end   = 720 + 40 + 40,</span>
<span class="hl kwa">+	.htotal	     = 720 + 40 + 40 + 40,</span>
<span class="hl kwa">+	.vdisplay    = 1440,</span>
<span class="hl kwa">+	.vsync_start = 1440 + 18,</span>
<span class="hl kwa">+	.vsync_end   = 1440 + 18 + 10,</span>
<span class="hl kwa">+	.vtotal	     = 1440 + 18 + 10 + 17,</span>
<span class="hl kwa">+	.vrefresh    = 60,</span>
<span class="hl kwa">+	.clock	     = 69000,</span>
<span class="hl kwa">+	.flags	     = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	.width_mm    = 68,</span>
<span class="hl kwa">+	.height_mm   = 136,</span>
<span class="hl kwa">+	.type        = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,</span>
<span class="hl kwa">+};</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int xbd599_get_modes(struct drm_panel *panel,</span>
<span class="hl kwa">+			    struct drm_connector *connector)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct xbd599 *ctx = panel_to_xbd599(panel);</span>
<span class="hl kwa">+	struct drm_display_mode *mode;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	mode = drm_mode_duplicate(connector-&gt;dev, &amp;xbd599_default_mode);</span>
<span class="hl kwa">+	if (!mode) {</span>
<span class="hl kwa">+		DRM_DEV_ERROR(ctx-&gt;dev, &quot;Failed to add mode\n&quot;);</span>
<span class="hl kwa">+		return -ENOMEM;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	drm_mode_set_name(mode);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	mode-&gt;type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;</span>
<span class="hl kwa">+	connector-&gt;display_info.width_mm = mode-&gt;width_mm;</span>
<span class="hl kwa">+	connector-&gt;display_info.height_mm = mode-&gt;height_mm;</span>
<span class="hl kwa">+	drm_mode_probed_add(connector, mode);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return 1;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static const struct drm_panel_funcs xbd599_drm_funcs = {</span>
<span class="hl kwa">+	.prepare   = xbd599_prepare,</span>
<span class="hl kwa">+	.enable    = xbd599_enable,</span>
<span class="hl kwa">+	.disable   = xbd599_disable,</span>
<span class="hl kwa">+	.unprepare = xbd599_unprepare,</span>
<span class="hl kwa">+	.get_modes = xbd599_get_modes,</span>
<span class="hl kwa">+};</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int xbd599_probe(struct mipi_dsi_device *dsi)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct device *dev = &amp;dsi-&gt;dev;</span>
<span class="hl kwa">+	struct xbd599 *ctx;</span>
<span class="hl kwa">+	int i, ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);</span>
<span class="hl kwa">+	if (!ctx)</span>
<span class="hl kwa">+		return -ENOMEM;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	for (i = 0; i &lt; ARRAY_SIZE(ctx-&gt;supplies); i++)</span>
<span class="hl kwa">+		ctx-&gt;supplies[i].supply = regulator_names[i];</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx-&gt;supplies),</span>
<span class="hl kwa">+				      ctx-&gt;supplies);</span>
<span class="hl kwa">+	if (ret &lt; 0) {</span>
<span class="hl kwa">+		DRM_DEV_ERROR(&amp;dsi-&gt;dev, &quot;cannot get regulators\n&quot;);</span>
<span class="hl kwa">+		return ret;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ctx-&gt;reset_gpio = devm_gpiod_get(dev, &quot;reset&quot;, GPIOD_OUT_LOW);</span>
<span class="hl kwa">+	if (IS_ERR(ctx-&gt;reset_gpio)) {</span>
<span class="hl kwa">+		DRM_DEV_ERROR(dev, &quot;cannot get reset gpio\n&quot;);</span>
<span class="hl kwa">+		return PTR_ERR(ctx-&gt;reset_gpio);</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	mipi_dsi_set_drvdata(dsi, ctx);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ctx-&gt;dev = dev;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	dsi-&gt;lanes = 4;</span>
<span class="hl kwa">+	dsi-&gt;format = MIPI_DSI_FMT_RGB888;</span>
<span class="hl kwa">+	dsi-&gt;mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	drm_panel_init(&amp;ctx-&gt;panel, &amp;dsi-&gt;dev, &amp;xbd599_drm_funcs,</span>
<span class="hl kwa">+		       DRM_MODE_CONNECTOR_DSI);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = drm_panel_of_backlight(&amp;ctx-&gt;panel);</span>
<span class="hl kwa">+	if (ret)</span>
<span class="hl kwa">+		return ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	drm_panel_add(&amp;ctx-&gt;panel);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = mipi_dsi_attach(dsi);</span>
<span class="hl kwa">+	if (ret &lt; 0) {</span>
<span class="hl kwa">+		DRM_DEV_ERROR(dev, &quot;mipi_dsi_attach failed. Is host ready?\n&quot;);</span>
<span class="hl kwa">+		drm_panel_remove(&amp;ctx-&gt;panel);</span>
<span class="hl kwa">+		return ret;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	DRM_DEV_INFO(dev, &quot;%ux%u&#64;%u %ubpp dsi %udl - ready\n&quot;,</span>
<span class="hl kwa">+		     xbd599_default_mode.hdisplay,</span>
<span class="hl kwa">+		     xbd599_default_mode.vdisplay,</span>
<span class="hl kwa">+		     xbd599_default_mode.vrefresh,</span>
<span class="hl kwa">+		     mipi_dsi_pixel_format_to_bpp(dsi-&gt;format), dsi-&gt;lanes);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static void xbd599_shutdown(struct mipi_dsi_device *dsi)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct xbd599 *ctx = mipi_dsi_get_drvdata(dsi);</span>
<span class="hl kwa">+	int ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = drm_panel_unprepare(&amp;ctx-&gt;panel);</span>
<span class="hl kwa">+	if (ret &lt; 0)</span>
<span class="hl kwa">+		DRM_DEV_ERROR(&amp;dsi-&gt;dev, &quot;Failed to unprepare panel: %d\n&quot;,</span>
<span class="hl kwa">+			      ret);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int xbd599_remove(struct mipi_dsi_device *dsi)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct xbd599 *ctx = mipi_dsi_get_drvdata(dsi);</span>
<span class="hl kwa">+	int ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	xbd599_shutdown(dsi);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = mipi_dsi_detach(dsi);</span>
<span class="hl kwa">+	if (ret &lt; 0)</span>
<span class="hl kwa">+		DRM_DEV_ERROR(&amp;dsi-&gt;dev, &quot;Failed to detach from DSI host: %d\n&quot;,</span>
<span class="hl kwa">+			      ret);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	drm_panel_remove(&amp;ctx-&gt;panel);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static const struct of_device_id xbd599_of_match[] = {</span>
<span class="hl kwa">+	{ .compatible = &quot;xingbangda,xbd599&quot;, },</span>
<span class="hl kwa">+	{ /* sentinel */ }</span>
<span class="hl kwa">+};</span>
<span class="hl kwa">+MODULE_DEVICE_TABLE(of, xbd599_of_match);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static struct mipi_dsi_driver xbd599_driver = {</span>
<span class="hl kwa">+	.probe	= xbd599_probe,</span>
<span class="hl kwa">+	.remove = xbd599_remove,</span>
<span class="hl kwa">+	.shutdown = xbd599_shutdown,</span>
<span class="hl kwa">+	.driver = {</span>
<span class="hl kwa">+		.name = &quot;panel-xingbangda-xbd599&quot;,</span>
<span class="hl kwa">+		.of_match_table = xbd599_of_match,</span>
<span class="hl kwa">+	},</span>
<span class="hl kwa">+};</span>
<span class="hl kwa">+module_mipi_dsi_driver(xbd599_driver);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+MODULE_AUTHOR(&quot;Icenowy Zheng &lt;icenowy&#64;aosc.io&gt;&quot;);</span>
<span class="hl kwa">+MODULE_DESCRIPTION(&quot;DRM driver for Xingbangda XBD599 MIPI DSI panel&quot;);</span>
<span class="hl kwa">+MODULE_LICENSE(&quot;GPL v2&quot;);</span>
diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index 4f5efcace68e..5af808078efd 100644
<span class="hl kwb">--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c</span>
<span class="hl kwa">+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c</span>
&#64;&#64; -556,7 +556,7 &#64;&#64; static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 		 */
 #define HSA_PACKET_OVERHEAD	10
 		hsa = max((unsigned int)HSA_PACKET_OVERHEAD,
<span class="hl kwb">-			  (mode-&gt;hsync_end - mode-&gt;hsync_start) * Bpp - HSA_PACKET_OVERHEAD);</span>
<span class="hl kwa">+			  (mode-&gt;hsync_end - mode-&gt;hsync_start) * Bpp) - HSA_PACKET_OVERHEAD;</span>

 		/*
 		 * The backporch is set using a blanking packet (4
&#64;&#64; -565,7 +565,7 &#64;&#64; static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 		 */
 #define HBP_PACKET_OVERHEAD	6
 		hbp = max((unsigned int)HBP_PACKET_OVERHEAD,
<span class="hl kwb">-			  (mode-&gt;htotal - mode-&gt;hsync_end) * Bpp - HBP_PACKET_OVERHEAD);</span>
<span class="hl kwa">+			  (mode-&gt;htotal - mode-&gt;hsync_end) * Bpp) - HBP_PACKET_OVERHEAD;</span>

 		/*
 		 * The frontporch is set using a sync event (4 bytes)
&#64;&#64; -575,7 +575,7 &#64;&#64; static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 		 */
 #define HFP_PACKET_OVERHEAD	16
 		hfp = max((unsigned int)HFP_PACKET_OVERHEAD,
<span class="hl kwb">-			  (mode-&gt;hsync_start - mode-&gt;hdisplay) * Bpp - HFP_PACKET_OVERHEAD);</span>
<span class="hl kwa">+			  (mode-&gt;hsync_start - mode-&gt;hdisplay) * Bpp) - HFP_PACKET_OVERHEAD;</span>

 		/*
 		 * The blanking is set using a sync event (4 bytes)
&#64;&#64; -584,8 +584,8 &#64;&#64; static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 		 */
 #define HBLK_PACKET_OVERHEAD	10
 		hblk = max((unsigned int)HBLK_PACKET_OVERHEAD,
<span class="hl kwb">-			   (mode-&gt;htotal - (mode-&gt;hsync_end - mode-&gt;hsync_start)) * Bpp -</span>
<span class="hl kwb">-			   HBLK_PACKET_OVERHEAD);</span>
<span class="hl kwa">+			   (mode-&gt;htotal - (mode-&gt;hsync_end - mode-&gt;hsync_start)) * Bpp) -</span>
<span class="hl kwa">+			   HBLK_PACKET_OVERHEAD;</span>

 		/*
 		 * And I'm not entirely sure what vblk is about. The driver in
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
index 311eee599ce9..2460c6bd46f8 100644
<span class="hl kwb">--- a/drivers/hid/hid-rmi.c</span>
<span class="hl kwa">+++ b/drivers/hid/hid-rmi.c</span>
&#64;&#64; -322,19 +322,12 &#64;&#64; static int rmi_input_event(struct hid_device *hdev, u8 *data, int size)
 {
 	struct rmi_data *hdata = hid_get_drvdata(hdev);
 	struct rmi_device *rmi_dev = hdata-&gt;xport.rmi_dev;
<span class="hl kwb">-	unsigned long flags;</span>

 	if (!(test_bit(RMI_STARTED, &amp;hdata-&gt;flags)))
 		return 0;

<span class="hl kwb">-	local_irq_save(flags);</span>
<span class="hl kwb">-</span>
 	rmi_set_attn_data(rmi_dev, data[1], &amp;data[2], size - 2);

<span class="hl kwb">-	generic_handle_irq(hdata-&gt;rmi_irq);</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	local_irq_restore(flags);</span>
<span class="hl kwb">-</span>
 	return 1;
 }

&#64;&#64; -591,56 +584,6 &#64;&#64; static const struct rmi_transport_ops hid_rmi_ops = {
 	.reset		= rmi_hid_reset,
 };

<span class="hl kwb">-static void rmi_irq_teardown(void *data)</span>
<span class="hl kwb">-{</span>
<span class="hl kwb">-	struct rmi_data *hdata = data;</span>
<span class="hl kwb">-	struct irq_domain *domain = hdata-&gt;domain;</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	if (!domain)</span>
<span class="hl kwb">-		return;</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	irq_dispose_mapping(irq_find_mapping(domain, 0));</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	irq_domain_remove(domain);</span>
<span class="hl kwb">-	hdata-&gt;domain = NULL;</span>
<span class="hl kwb">-	hdata-&gt;rmi_irq = 0;</span>
<span class="hl kwb">-}</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-static int rmi_irq_map(struct irq_domain *h, unsigned int virq,</span>
<span class="hl kwb">-		       irq_hw_number_t hw_irq_num)</span>
<span class="hl kwb">-{</span>
<span class="hl kwb">-	irq_set_chip_and_handler(virq, &amp;dummy_irq_chip, handle_simple_irq);</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	return 0;</span>
<span class="hl kwb">-}</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-static const struct irq_domain_ops rmi_irq_ops = {</span>
<span class="hl kwb">-	.map = rmi_irq_map,</span>
<span class="hl kwb">-};</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-static int rmi_setup_irq_domain(struct hid_device *hdev)</span>
<span class="hl kwb">-{</span>
<span class="hl kwb">-	struct rmi_data *hdata = hid_get_drvdata(hdev);</span>
<span class="hl kwb">-	int ret;</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	hdata-&gt;domain = irq_domain_create_linear(hdev-&gt;dev.fwnode, 1,</span>
<span class="hl kwb">-						 &amp;rmi_irq_ops, hdata);</span>
<span class="hl kwb">-	if (!hdata-&gt;domain)</span>
<span class="hl kwb">-		return -ENOMEM;</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	ret = devm_add_action_or_reset(&amp;hdev-&gt;dev, &amp;rmi_irq_teardown, hdata);</span>
<span class="hl kwb">-	if (ret)</span>
<span class="hl kwb">-		return ret;</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	hdata-&gt;rmi_irq = irq_create_mapping(hdata-&gt;domain, 0);</span>
<span class="hl kwb">-	if (hdata-&gt;rmi_irq &lt;= 0) {</span>
<span class="hl kwb">-		hid_err(hdev, &quot;Can't allocate an IRQ\n&quot;);</span>
<span class="hl kwb">-		return hdata-&gt;rmi_irq &lt; 0 ? hdata-&gt;rmi_irq : -ENXIO;</span>
<span class="hl kwb">-	}</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	return 0;</span>
<span class="hl kwb">-}</span>
<span class="hl kwb">-</span>
 static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id)
 {
 	struct rmi_data *data = NULL;
&#64;&#64; -713,18 +656,11 &#64;&#64; static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id)

 	mutex_init(&amp;data-&gt;page_mutex);

<span class="hl kwb">-	ret = rmi_setup_irq_domain(hdev);</span>
<span class="hl kwb">-	if (ret) {</span>
<span class="hl kwb">-		hid_err(hdev, &quot;failed to allocate IRQ domain\n&quot;);</span>
<span class="hl kwb">-		return ret;</span>
<span class="hl kwb">-	}</span>
<span class="hl kwb">-</span>
 	if (data-&gt;device_flags &amp; RMI_DEVICE_HAS_PHYS_BUTTONS)
 		rmi_hid_pdata.gpio_data.disable = true;

 	data-&gt;xport.dev = hdev-&gt;dev.parent;
 	data-&gt;xport.pdata = rmi_hid_pdata;
<span class="hl kwb">-	data-&gt;xport.pdata.irq = data-&gt;rmi_irq;</span>
 	data-&gt;xport.proto_name = &quot;hid&quot;;
 	data-&gt;xport.ops = &amp;hid_rmi_ops;

diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
index 95f0de0c8b49..faa8a6cadef1 100644
<span class="hl kwb">--- a/drivers/infiniband/sw/rxe/rxe.c</span>
<span class="hl kwa">+++ b/drivers/infiniband/sw/rxe/rxe.c</span>
&#64;&#64; -284,6 +284,8 &#64;&#64; static int __init rxe_module_init(void)
 {
 	int err;

<span class="hl kwa">+	mark_tech_preview(&quot;Soft-RoCE Transport Driver&quot;, THIS_MODULE);</span>
<span class="hl kwa">+</span>
 	err = rxe_net_init();
 	if (err)
 		return err;
diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
index 258d5fe3d395..f7298e3dc8f3 100644
<span class="hl kwb">--- a/drivers/input/rmi4/rmi_driver.c</span>
<span class="hl kwa">+++ b/drivers/input/rmi4/rmi_driver.c</span>
&#64;&#64; -182,34 +182,47 &#64;&#64; void rmi_set_attn_data(struct rmi_device *rmi_dev, unsigned long irq_status,
 	attn_data.data = fifo_data;

 	kfifo_put(&amp;drvdata-&gt;attn_fifo, attn_data);
<span class="hl kwa">+</span>
<span class="hl kwa">+	schedule_work(&amp;drvdata-&gt;attn_work);</span>
 }
 EXPORT_SYMBOL_GPL(rmi_set_attn_data);

<span class="hl kwb">-static irqreturn_t rmi_irq_fn(int irq, void *dev_id)</span>
<span class="hl kwa">+static void attn_callback(struct work_struct *work)</span>
 {
<span class="hl kwb">-	struct rmi_device *rmi_dev = dev_id;</span>
<span class="hl kwb">-	struct rmi_driver_data *drvdata = dev_get_drvdata(&amp;rmi_dev-&gt;dev);</span>
<span class="hl kwa">+	struct rmi_driver_data *drvdata = container_of(work,</span>
<span class="hl kwa">+							struct rmi_driver_data,</span>
<span class="hl kwa">+							attn_work);</span>
 	struct rmi4_attn_data attn_data = {0};
 	int ret, count;

 	count = kfifo_get(&amp;drvdata-&gt;attn_fifo, &amp;attn_data);
<span class="hl kwb">-	if (count) {</span>
<span class="hl kwb">-		*(drvdata-&gt;irq_status) = attn_data.irq_status;</span>
<span class="hl kwb">-		drvdata-&gt;attn_data = attn_data;</span>
<span class="hl kwb">-	}</span>
<span class="hl kwa">+	if (!count)</span>
<span class="hl kwa">+		return;</span>

<span class="hl kwb">-	ret = rmi_process_interrupt_requests(rmi_dev);</span>
<span class="hl kwa">+	*(drvdata-&gt;irq_status) = attn_data.irq_status;</span>
<span class="hl kwa">+	drvdata-&gt;attn_data = attn_data;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = rmi_process_interrupt_requests(drvdata-&gt;rmi_dev);</span>
 	if (ret)
<span class="hl kwb">-		rmi_dbg(RMI_DEBUG_CORE, &amp;rmi_dev-&gt;dev,</span>
<span class="hl kwa">+		rmi_dbg(RMI_DEBUG_CORE, &amp;drvdata-&gt;rmi_dev-&gt;dev,</span>
 			&quot;Failed to process interrupt request: %d\n&quot;, ret);

<span class="hl kwb">-	if (count) {</span>
<span class="hl kwb">-		kfree(attn_data.data);</span>
<span class="hl kwb">-		drvdata-&gt;attn_data.data = NULL;</span>
<span class="hl kwb">-	}</span>
<span class="hl kwa">+	kfree(attn_data.data);</span>
<span class="hl kwa">+	drvdata-&gt;attn_data.data = NULL;</span>

 	if (!kfifo_is_empty(&amp;drvdata-&gt;attn_fifo))
<span class="hl kwb">-		return rmi_irq_fn(irq, dev_id);</span>
<span class="hl kwa">+		schedule_work(&amp;drvdata-&gt;attn_work);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static irqreturn_t rmi_irq_fn(int irq, void *dev_id)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct rmi_device *rmi_dev = dev_id;</span>
<span class="hl kwa">+	int ret;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	ret = rmi_process_interrupt_requests(rmi_dev);</span>
<span class="hl kwa">+	if (ret)</span>
<span class="hl kwa">+		rmi_dbg(RMI_DEBUG_CORE, &amp;rmi_dev-&gt;dev,</span>
<span class="hl kwa">+			&quot;Failed to process interrupt request: %d\n&quot;, ret);</span>

 	return IRQ_HANDLED;
 }
&#64;&#64; -217,7 +230,6 &#64;&#64; static irqreturn_t rmi_irq_fn(int irq, void *dev_id)
 static int rmi_irq_init(struct rmi_device *rmi_dev)
 {
 	struct rmi_device_platform_data *pdata = rmi_get_platform_data(rmi_dev);
<span class="hl kwb">-	struct rmi_driver_data *data = dev_get_drvdata(&amp;rmi_dev-&gt;dev);</span>
 	int irq_flags = irq_get_trigger_type(pdata-&gt;irq);
 	int ret;

&#64;&#64; -235,8 +247,6 &#64;&#64; static int rmi_irq_init(struct rmi_device *rmi_dev)
 		return ret;
 	}

<span class="hl kwb">-	data-&gt;enabled = true;</span>
<span class="hl kwb">-</span>
 	return 0;
 }

&#64;&#64; -886,23 +896,27 &#64;&#64; void rmi_enable_irq(struct rmi_device *rmi_dev, bool clear_wake)
 	if (data-&gt;enabled)
 		goto out;

<span class="hl kwb">-	enable_irq(irq);</span>
<span class="hl kwb">-	data-&gt;enabled = true;</span>
<span class="hl kwb">-	if (clear_wake &amp;&amp; device_may_wakeup(rmi_dev-&gt;xport-&gt;dev)) {</span>
<span class="hl kwb">-		retval = disable_irq_wake(irq);</span>
<span class="hl kwb">-		if (retval)</span>
<span class="hl kwb">-			dev_warn(&amp;rmi_dev-&gt;dev,</span>
<span class="hl kwb">-				 &quot;Failed to disable irq for wake: %d\n&quot;,</span>
<span class="hl kwb">-				 retval);</span>
<span class="hl kwb">-	}</span>
<span class="hl kwa">+	if (irq) {</span>
<span class="hl kwa">+		enable_irq(irq);</span>
<span class="hl kwa">+		data-&gt;enabled = true;</span>
<span class="hl kwa">+		if (clear_wake &amp;&amp; device_may_wakeup(rmi_dev-&gt;xport-&gt;dev)) {</span>
<span class="hl kwa">+			retval = disable_irq_wake(irq);</span>
<span class="hl kwa">+			if (retval)</span>
<span class="hl kwa">+				dev_warn(&amp;rmi_dev-&gt;dev,</span>
<span class="hl kwa">+					 &quot;Failed to disable irq for wake: %d\n&quot;,</span>
<span class="hl kwa">+					 retval);</span>
<span class="hl kwa">+		}</span>

<span class="hl kwb">-	/*</span>
<span class="hl kwb">-	 * Call rmi_process_interrupt_requests() after enabling irq,</span>
<span class="hl kwb">-	 * otherwise we may lose interrupt on edge-triggered systems.</span>
<span class="hl kwb">-	 */</span>
<span class="hl kwb">-	irq_flags = irq_get_trigger_type(pdata-&gt;irq);</span>
<span class="hl kwb">-	if (irq_flags &amp; IRQ_TYPE_EDGE_BOTH)</span>
<span class="hl kwb">-		rmi_process_interrupt_requests(rmi_dev);</span>
<span class="hl kwa">+		/*</span>
<span class="hl kwa">+		 * Call rmi_process_interrupt_requests() after enabling irq,</span>
<span class="hl kwa">+		 * otherwise we may lose interrupt on edge-triggered systems.</span>
<span class="hl kwa">+		 */</span>
<span class="hl kwa">+		irq_flags = irq_get_trigger_type(pdata-&gt;irq);</span>
<span class="hl kwa">+		if (irq_flags &amp; IRQ_TYPE_EDGE_BOTH)</span>
<span class="hl kwa">+			rmi_process_interrupt_requests(rmi_dev);</span>
<span class="hl kwa">+	} else {</span>
<span class="hl kwa">+		data-&gt;enabled = true;</span>
<span class="hl kwa">+	}</span>

 out:
 	mutex_unlock(&amp;data-&gt;enabled_mutex);
&#64;&#64; -922,20 +936,22 &#64;&#64; void rmi_disable_irq(struct rmi_device *rmi_dev, bool enable_wake)
 		goto out;

 	data-&gt;enabled = false;
<span class="hl kwb">-	disable_irq(irq);</span>
<span class="hl kwb">-	if (enable_wake &amp;&amp; device_may_wakeup(rmi_dev-&gt;xport-&gt;dev)) {</span>
<span class="hl kwb">-		retval = enable_irq_wake(irq);</span>
<span class="hl kwb">-		if (retval)</span>
<span class="hl kwb">-			dev_warn(&amp;rmi_dev-&gt;dev,</span>
<span class="hl kwb">-				 &quot;Failed to enable irq for wake: %d\n&quot;,</span>
<span class="hl kwb">-				 retval);</span>
<span class="hl kwb">-	}</span>
<span class="hl kwb">-</span>
<span class="hl kwb">-	/* make sure the fifo is clean */</span>
<span class="hl kwb">-	while (!kfifo_is_empty(&amp;data-&gt;attn_fifo)) {</span>
<span class="hl kwb">-		count = kfifo_get(&amp;data-&gt;attn_fifo, &amp;attn_data);</span>
<span class="hl kwb">-		if (count)</span>
<span class="hl kwb">-			kfree(attn_data.data);</span>
<span class="hl kwa">+	if (irq) {</span>
<span class="hl kwa">+		disable_irq(irq);</span>
<span class="hl kwa">+		if (enable_wake &amp;&amp; device_may_wakeup(rmi_dev-&gt;xport-&gt;dev)) {</span>
<span class="hl kwa">+			retval = enable_irq_wake(irq);</span>
<span class="hl kwa">+			if (retval)</span>
<span class="hl kwa">+				dev_warn(&amp;rmi_dev-&gt;dev,</span>
<span class="hl kwa">+					 &quot;Failed to enable irq for wake: %d\n&quot;,</span>
<span class="hl kwa">+					 retval);</span>
<span class="hl kwa">+		}</span>
<span class="hl kwa">+	} else {</span>
<span class="hl kwa">+		/* make sure the fifo is clean */</span>
<span class="hl kwa">+		while (!kfifo_is_empty(&amp;data-&gt;attn_fifo)) {</span>
<span class="hl kwa">+			count = kfifo_get(&amp;data-&gt;attn_fifo, &amp;attn_data);</span>
<span class="hl kwa">+			if (count)</span>
<span class="hl kwa">+				kfree(attn_data.data);</span>
<span class="hl kwa">+		}</span>
 	}

 out:
&#64;&#64; -981,6 +997,8 &#64;&#64; static int rmi_driver_remove(struct device *dev)
 	irq_domain_remove(data-&gt;irqdomain);
 	data-&gt;irqdomain = NULL;

<span class="hl kwa">+	cancel_work_sync(&amp;data-&gt;attn_work);</span>
<span class="hl kwa">+</span>
 	rmi_f34_remove_sysfs(rmi_dev);
 	rmi_free_function_list(rmi_dev);

&#64;&#64; -1219,9 +1237,15 &#64;&#64; static int rmi_driver_probe(struct device *dev)
 		}
 	}

<span class="hl kwb">-	retval = rmi_irq_init(rmi_dev);</span>
<span class="hl kwb">-	if (retval &lt; 0)</span>
<span class="hl kwb">-		goto err_destroy_functions;</span>
<span class="hl kwa">+	if (pdata-&gt;irq) {</span>
<span class="hl kwa">+		retval = rmi_irq_init(rmi_dev);</span>
<span class="hl kwa">+		if (retval &lt; 0)</span>
<span class="hl kwa">+			goto err_destroy_functions;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	data-&gt;enabled = true;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	INIT_WORK(&amp;data-&gt;attn_work, attn_callback);</span>

 	if (data-&gt;f01_container-&gt;dev.driver) {
 		/* Driver already bound, so enable ATTN now. */
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index ffeebda8d6de..2314da0ce11c 100644
<span class="hl kwb">--- a/drivers/iommu/iommu.c</span>
<span class="hl kwa">+++ b/drivers/iommu/iommu.c</span>
<span class="hl kwd">&#64;&#64; -7,6 +7,7 &#64;&#64;</span>
 #define pr_fmt(fmt)    &quot;iommu: &quot; fmt

 #include &lt;linux/device.h&gt;
<span class="hl kwa">+#include &lt;linux/dmi.h&gt;</span>
 #include &lt;linux/kernel.h&gt;
 #include &lt;linux/bug.h&gt;
 #include &lt;linux/types.h&gt;
&#64;&#64; -3047,6 +3048,27 &#64;&#64; u32 iommu_sva_get_pasid(struct iommu_sva *handle)
 }
 EXPORT_SYMBOL_GPL(iommu_sva_get_pasid);

<span class="hl kwa">+#ifdef CONFIG_ARM64</span>
<span class="hl kwa">+static int __init iommu_quirks(void)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	const char *vendor, *name;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	vendor = dmi_get_system_info(DMI_SYS_VENDOR);</span>
<span class="hl kwa">+	name = dmi_get_system_info(DMI_PRODUCT_NAME);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (vendor &amp;&amp;</span>
<span class="hl kwa">+	    (strncmp(vendor, &quot;GIGABYTE&quot;, 8) == 0 &amp;&amp; name &amp;&amp;</span>
<span class="hl kwa">+	     (strncmp(name, &quot;R120&quot;, 4) == 0 ||</span>
<span class="hl kwa">+	      strncmp(name, &quot;R270&quot;, 4) == 0))) {</span>
<span class="hl kwa">+		pr_warn(&quot;Gigabyte %s detected, force iommu passthrough mode&quot;, name);</span>
<span class="hl kwa">+		iommu_def_domain_type = IOMMU_DOMAIN_IDENTITY;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+arch_initcall(iommu_quirks);</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 /*
  * Changes the default domain of an iommu group that has *only* one device
  *
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 5eb0b3361e4e..1d071bfec4bd 100644
<span class="hl kwb">--- a/drivers/message/fusion/mptsas.c</span>
<span class="hl kwa">+++ b/drivers/message/fusion/mptsas.c</span>
&#64;&#64; -5315,6 +5315,11 &#64;&#64; mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 		    ioc, MPI_SAS_OP_CLEAR_ALL_PERSISTENT);
 	}

<span class="hl kwa">+#ifdef CONFIG_RHEL_DIFFERENCES</span>
<span class="hl kwa">+	add_taint(TAINT_SUPPORT_REMOVED, LOCKDEP_STILL_OK);</span>
<span class="hl kwa">+	pr_warn(&quot;MPTSAS MODULE IS NOT SUPPORTED\n&quot;);</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 	error = scsi_add_host(sh, &amp;ioc-&gt;pcidev-&gt;dev);
 	if (error) {
 		dprintk(ioc, printk(MYIOC_s_ERR_FMT
&#64;&#64; -5378,6 +5383,10 &#64;&#64; static void mptsas_remove(struct pci_dev *pdev)
 }

 static struct pci_device_id mptsas_pci_table[] = {
<span class="hl kwa">+#ifdef CONFIG_RHEL_DIFFERENCES</span>
<span class="hl kwa">+	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068,</span>
<span class="hl kwa">+		PCI_VENDOR_ID_VMWARE, PCI_ANY_ID },</span>
<span class="hl kwa">+#else</span>
 	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1064,
 		PCI_ANY_ID, PCI_ANY_ID },
 	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068,
&#64;&#64; -5390,6 +5399,7 &#64;&#64; static struct pci_device_id mptsas_pci_table[] = {
 		PCI_ANY_ID, PCI_ANY_ID },
 	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068_820XELP,
 		PCI_ANY_ID, PCI_ANY_ID },
<span class="hl kwa">+#endif</span>
 	{0}	/* Terminating entry */
 };
 MODULE_DEVICE_TABLE(pci, mptsas_pci_table);
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
index af0ce5611e4a..1c226920c12d 100644
<span class="hl kwb">--- a/drivers/message/fusion/mptspi.c</span>
<span class="hl kwa">+++ b/drivers/message/fusion/mptspi.c</span>
&#64;&#64; -1238,12 +1238,17 &#64;&#64; static struct spi_function_template mptspi_transport_functions = {
  */

 static struct pci_device_id mptspi_pci_table[] = {
<span class="hl kwa">+#ifdef CONFIG_RHEL_DIFFERENCES</span>
<span class="hl kwa">+	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_53C1030,</span>
<span class="hl kwa">+	PCI_VENDOR_ID_VMWARE, PCI_ANY_ID },</span>
<span class="hl kwa">+#else</span>
 	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_53C1030,
 		PCI_ANY_ID, PCI_ANY_ID },
 	{ PCI_VENDOR_ID_ATTO, MPI_MANUFACTPAGE_DEVID_53C1030,
 		PCI_ANY_ID, PCI_ANY_ID },
 	{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_53C1035,
 		PCI_ANY_ID, PCI_ANY_ID },
<span class="hl kwa">+#endif</span>
 	{0}	/* Terminating entry */
 };
 MODULE_DEVICE_TABLE(pci, mptspi_pci_table);
&#64;&#64; -1534,6 +1539,12 &#64;&#64; mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 		    0, 0, 0, 0, 5);

 	scsi_scan_host(sh);
<span class="hl kwa">+</span>
<span class="hl kwa">+#ifdef CONFIG_RHEL_DIFFERENCES</span>
<span class="hl kwa">+	add_taint(TAINT_SUPPORT_REMOVED, LOCKDEP_STILL_OK);</span>
<span class="hl kwa">+	pr_warn(&quot;MPTSPI MODULE IS NOT SUPPORTED\n&quot;);</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 	return 0;

 out_mptspi_probe:
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index c52b9bb0e3ab..3e463dccac33 100644
<span class="hl kwb">--- a/drivers/net/ethernet/intel/ice/ice_main.c</span>
<span class="hl kwa">+++ b/drivers/net/ethernet/intel/ice/ice_main.c</span>
&#64;&#64; -4810,6 +4810,7 &#64;&#64; static int __init ice_module_init(void)

 	pr_info(&quot;%s\n&quot;, ice_driver_string);
 	pr_info(&quot;%s\n&quot;, ice_copyright);
<span class="hl kwa">+	mark_tech_preview(DRV_SUMMARY, THIS_MODULE);</span>

 	ice_wq = alloc_workqueue(&quot;%s&quot;, WQ_MEM_RECLAIM, 0, KBUILD_MODNAME);
 	if (!ice_wq) {
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index ec44a79e951a..5025827ef396 100644
<span class="hl kwb">--- a/drivers/pci/pci-driver.c</span>
<span class="hl kwa">+++ b/drivers/pci/pci-driver.c</span>
<span class="hl kwd">&#64;&#64; -19,6 +19,7 &#64;&#64;</span>
 #include &lt;linux/kexec.h&gt;
 #include &lt;linux/of_device.h&gt;
 #include &lt;linux/acpi.h&gt;
<span class="hl kwa">+#include &lt;linux/kernel.h&gt;</span>
 #include &lt;linux/dma-map-ops.h&gt;
 #include &quot;pci.h&quot;
 #include &quot;pcie/portdrv.h&quot;
&#64;&#64; -281,6 +282,34 &#64;&#64; static struct attribute *pci_drv_attrs[] = {
 };
 ATTRIBUTE_GROUPS(pci_drv);

<span class="hl kwa">+/**</span>
<span class="hl kwa">+ * pci_hw_vendor_status - Tell if a PCI device is supported by the HW vendor</span>
<span class="hl kwa">+ * &#64;ids: array of PCI device id structures to search in</span>
<span class="hl kwa">+ * &#64;dev: the PCI device structure to match against</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Used by a driver to check whether this device is in its list of unsupported</span>
<span class="hl kwa">+ * devices.  Returns the matching pci_device_id structure or %NULL if there is</span>
<span class="hl kwa">+ * no match.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Reserved for Internal Red Hat use only.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+const struct pci_device_id *pci_hw_vendor_status(</span>
<span class="hl kwa">+						const struct pci_device_id *ids,</span>
<span class="hl kwa">+						struct pci_dev *dev)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	char devinfo[64];</span>
<span class="hl kwa">+	const struct pci_device_id *ret = pci_match_id(ids, dev);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (ret) {</span>
<span class="hl kwa">+		snprintf(devinfo, sizeof(devinfo), &quot;%s %s&quot;,</span>
<span class="hl kwa">+			 dev_driver_string(&amp;dev-&gt;dev), dev_name(&amp;dev-&gt;dev));</span>
<span class="hl kwa">+		mark_hardware_deprecated(devinfo);</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return ret;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+EXPORT_SYMBOL(pci_hw_vendor_status);</span>
<span class="hl kwa">+</span>
 struct drv_dev_and_id {
 	struct pci_driver *drv;
 	struct pci_dev *dev;
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 653660e3ba9e..98851d00dc4d 100644
<span class="hl kwb">--- a/drivers/pci/quirks.c</span>
<span class="hl kwa">+++ b/drivers/pci/quirks.c</span>
&#64;&#64; -4143,6 +4143,30 &#64;&#64; DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9000,
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9084,
 				quirk_bridge_cavm_thrx2_pcie_root);

<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * PCI BAR 5 is not setup correctly for the on-board AHCI controller</span>
<span class="hl kwa">+ * on Broadcom's Vulcan processor. Added a quirk to fix BAR 5 by</span>
<span class="hl kwa">+ * using BAR 4's resources which are populated correctly and NOT</span>
<span class="hl kwa">+ * actually used by the AHCI controller.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+static void quirk_fix_vulcan_ahci_bars(struct pci_dev *dev)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	struct resource *r =  &amp;dev-&gt;resource[4];</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (!(r-&gt;flags &amp; IORESOURCE_MEM) || (r-&gt;start == 0))</span>
<span class="hl kwa">+		return;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	/* Set BAR5 resource to BAR4 */</span>
<span class="hl kwa">+	dev-&gt;resource[5] = *r;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	/* Update BAR5 in pci config space */</span>
<span class="hl kwa">+	pci_write_config_dword(dev, PCI_BASE_ADDRESS_5, r-&gt;start);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	/* Clear BAR4's resource */</span>
<span class="hl kwa">+	memset(r, 0, sizeof(*r));</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9027, quirk_fix_vulcan_ahci_bars);</span>
<span class="hl kwa">+</span>
 /*
  * Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero)
  * class code.  Fix it.
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 3168915adaa7..71b48e29b708 100644
<span class="hl kwb">--- a/drivers/scsi/aacraid/linit.c</span>
<span class="hl kwa">+++ b/drivers/scsi/aacraid/linit.c</span>
&#64;&#64; -78,6 +78,7 &#64;&#64; char aac_driver_version[] = AAC_DRIVER_FULL_VERSION;
  * Note: The last field is used to index into aac_drivers below.
  */
 static const struct pci_device_id aac_pci_tbl[] = {
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{ 0x1028, 0x0001, 0x1028, 0x0001, 0, 0, 0 }, /* PERC 2/Si (Iguana/PERC2Si) */
 	{ 0x1028, 0x0002, 0x1028, 0x0002, 0, 0, 1 }, /* PERC 3/Di (Opal/PERC3Di) */
 	{ 0x1028, 0x0003, 0x1028, 0x0003, 0, 0, 2 }, /* PERC 3/Si (SlimFast/PERC3Si */
&#64;&#64; -145,6 +146,7 &#64;&#64; static const struct pci_device_id aac_pci_tbl[] = {
 	{ 0x9005, 0x0285, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 59 }, /* Adaptec Catch All */
 	{ 0x9005, 0x0286, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 60 }, /* Adaptec Rocket Catch All */
 	{ 0x9005, 0x0288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 61 }, /* Adaptec NEMER/ARK Catch All */
<span class="hl kwa">+#endif</span>
 	{ 0x9005, 0x028b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 62 }, /* Adaptec PMC Series 6 (Tupelo) */
 	{ 0x9005, 0x028c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 63 }, /* Adaptec PMC Series 7 (Denali) */
 	{ 0x9005, 0x028d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 64 }, /* Adaptec PMC Series 8 */
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index 90fcddb76f46..f22d7b2608ce 100644
<span class="hl kwb">--- a/drivers/scsi/be2iscsi/be_main.c</span>
<span class="hl kwa">+++ b/drivers/scsi/be2iscsi/be_main.c</span>
&#64;&#64; -370,11 +370,13 &#64;&#64; static int beiscsi_eh_device_reset(struct scsi_cmnd *sc)

 /*------------------- PCI Driver operations and data ----------------- */
 static const struct pci_device_id beiscsi_pci_id_table[] = {
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{ PCI_DEVICE(BE_VENDOR_ID, BE_DEVICE_ID1) },
 	{ PCI_DEVICE(BE_VENDOR_ID, BE_DEVICE_ID2) },
 	{ PCI_DEVICE(BE_VENDOR_ID, OC_DEVICE_ID1) },
 	{ PCI_DEVICE(BE_VENDOR_ID, OC_DEVICE_ID2) },
 	{ PCI_DEVICE(BE_VENDOR_ID, OC_DEVICE_ID3) },
<span class="hl kwa">+#endif</span>
 	{ PCI_DEVICE(ELX_VENDOR_ID, OC_SKH_ID1) },
 	{ 0 }
 };
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index f4d3747cfa0b..b41594b315fe 100644
<span class="hl kwb">--- a/drivers/scsi/hpsa.c</span>
<span class="hl kwa">+++ b/drivers/scsi/hpsa.c</span>
&#64;&#64; -83,7 +83,9 &#64;&#64; MODULE_DESCRIPTION(&quot;Driver for HP Smart Array Controller version &quot; \
 MODULE_SUPPORTED_DEVICE(&quot;HP Smart Array Controllers&quot;);
 MODULE_VERSION(HPSA_DRIVER_VERSION);
 MODULE_LICENSE(&quot;GPL&quot;);
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 MODULE_ALIAS(&quot;cciss&quot;);
<span class="hl kwa">+#endif</span>

 static int hpsa_simple_mode;
 module_param(hpsa_simple_mode, int, S_IRUGO|S_IWUSR);
&#64;&#64; -145,10 +147,12 &#64;&#64; static const struct pci_device_id hpsa_pci_device_id[] = {
 	{PCI_VENDOR_ID_HP_3PAR, 0x0075, 0x1590, 0x007D},
 	{PCI_VENDOR_ID_HP_3PAR, 0x0075, 0x1590, 0x0088},
 	{PCI_VENDOR_ID_HP, 0x333f, 0x103c, 0x333f},
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_VENDOR_ID_HP,     PCI_ANY_ID,	PCI_ANY_ID, PCI_ANY_ID,
 		PCI_CLASS_STORAGE_RAID &lt;&lt; 8, 0xffff &lt;&lt; 8, 0},
 	{PCI_VENDOR_ID_COMPAQ,     PCI_ANY_ID,	PCI_ANY_ID, PCI_ANY_ID,
 		PCI_CLASS_STORAGE_RAID &lt;&lt; 8, 0xffff &lt;&lt; 8, 0},
<span class="hl kwa">+#endif</span>
 	{0,}
 };

diff --git a/drivers/scsi/lpfc/lpfc_ids.h b/drivers/scsi/lpfc/lpfc_ids.h
index d48414e295a0..ba0e384412c9 100644
<span class="hl kwb">--- a/drivers/scsi/lpfc/lpfc_ids.h</span>
<span class="hl kwa">+++ b/drivers/scsi/lpfc/lpfc_ids.h</span>
<span class="hl kwd">&#64;&#64; -24,6 +24,7 &#64;&#64;</span>
 #include &lt;linux/pci.h&gt;

 const struct pci_device_id lpfc_id_table[] = {
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_VIPER,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_FIREFLY,
&#64;&#64; -54,14 +55,19 &#64;&#64; const struct pci_device_id lpfc_id_table[] = {
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_DCSP,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#endif</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#endif</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HORNET,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#endif</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_SCSP,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_DCSP,
&#64;&#64; -70,6 +76,7 &#64;&#64; const struct pci_device_id lpfc_id_table[] = {
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_TFLY,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP101,
&#64;&#64; -80,6 +87,7 &#64;&#64; const struct pci_device_id lpfc_id_table[] = {
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LPE11000S,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#endif</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_SAT,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_SAT_MID,
&#64;&#64; -92,6 +100,7 &#64;&#64; const struct pci_device_id lpfc_id_table[] = {
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_SAT_S,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PROTEUS_VF,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PROTEUS_PF,
&#64;&#64; -102,18 +111,23 &#64;&#64; const struct pci_device_id lpfc_id_table[] = {
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_SERVERENGINE, PCI_DEVICE_ID_TOMCAT,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#endif</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_FALCON,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BALIUS,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#endif</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_FC,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_FCOE,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_FC_VF,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_FCOE_VF,
 		PCI_ANY_ID, PCI_ANY_ID, },
<span class="hl kwa">+#endif</span>
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_G6_FC,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LANCER_G7_FC,
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 63a4f48bdc75..786af4c41caf 100644
<span class="hl kwb">--- a/drivers/scsi/megaraid/megaraid_sas_base.c</span>
<span class="hl kwa">+++ b/drivers/scsi/megaraid/megaraid_sas_base.c</span>
&#64;&#64; -138,6 +138,7 &#64;&#64; static void megasas_get_pd_info(struct megasas_instance *instance,
  */
 static struct pci_device_id megasas_pci_table[] = {

<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_SAS1064R)},
 	/* xscale IOP */
 	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_SAS1078R)},
&#64;&#64; -156,6 +157,7 &#64;&#64; static struct pci_device_id megasas_pci_table[] = {
 	/* xscale IOP, vega */
 	{PCI_DEVICE(PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_DELL_PERC5)},
 	/* xscale IOP */
<span class="hl kwa">+#endif</span>
 	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FUSION)},
 	/* Fusion */
 	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_PLASMA)},
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index c8b09a81834d..24c8d6ea8838 100644
<span class="hl kwb">--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c</span>
<span class="hl kwa">+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c</span>
&#64;&#64; -12267,6 +12267,7 &#64;&#64; bool scsih_ncq_prio_supp(struct scsi_device *sdev)
  * The pci device ids are defined in mpi/mpi2_cnfg.h.
  */
 static const struct pci_device_id mpt3sas_pci_table[] = {
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	/* Spitfire ~ 2004 */
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SAS2004,
 		PCI_ANY_ID, PCI_ANY_ID },
&#64;&#64; -12285,6 +12286,7 &#64;&#64; static const struct pci_device_id mpt3sas_pci_table[] = {
 		PCI_ANY_ID, PCI_ANY_ID },
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SAS2116_2,
 		PCI_ANY_ID, PCI_ANY_ID },
<span class="hl kwa">+#endif</span>
 	/* Thunderbolt ~ 2208 */
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SAS2208_1,
 		PCI_ANY_ID, PCI_ANY_ID },
&#64;&#64; -12309,9 +12311,11 &#64;&#64; static const struct pci_device_id mpt3sas_pci_table[] = {
 		PCI_ANY_ID, PCI_ANY_ID },
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SWITCH_MPI_EP_1,
 		PCI_ANY_ID, PCI_ANY_ID },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	/* SSS6200 */
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI2_MFGPAGE_DEVID_SSS6200,
 		PCI_ANY_ID, PCI_ANY_ID },
<span class="hl kwa">+#endif</span>
 	/* Fury ~ 3004 and 3008 */
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3004,
 		PCI_ANY_ID, PCI_ANY_ID },
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index f80abe28f35a..02d8de118b5f 100644
<span class="hl kwb">--- a/drivers/scsi/qla2xxx/qla_os.c</span>
<span class="hl kwa">+++ b/drivers/scsi/qla2xxx/qla_os.c</span>
&#64;&#64; -7698,6 +7698,7 &#64;&#64; static const struct pci_error_handlers qla2xxx_err_handler = {
 };

 static struct pci_device_id qla2xxx_pci_tbl[] = {
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2100) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2200) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2300) },
&#64;&#64; -7710,13 +7711,18 &#64;&#64; static struct pci_device_id qla2xxx_pci_tbl[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8432) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP5422) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP5432) },
<span class="hl kwa">+#endif</span>
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2532) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2031) },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8001) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8021) },
<span class="hl kwa">+#endif</span>
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8031) },
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISPF001) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8044) },
<span class="hl kwa">+#endif</span>
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2071) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2271) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2261) },
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index a4b014e1cd8c..4b2b4a88e931 100644
<span class="hl kwb">--- a/drivers/scsi/qla4xxx/ql4_os.c</span>
<span class="hl kwa">+++ b/drivers/scsi/qla4xxx/ql4_os.c</span>
&#64;&#64; -9864,6 +9864,7 &#64;&#64; static struct pci_device_id qla4xxx_pci_tbl[] = {
 		.subvendor	= PCI_ANY_ID,
 		.subdevice	= PCI_ANY_ID,
 	},
<span class="hl kwa">+#ifndef CONFIG_RHEL_DIFFERENCES</span>
 	{
 		.vendor         = PCI_VENDOR_ID_QLOGIC,
 		.device         = PCI_DEVICE_ID_QLOGIC_ISP8022,
&#64;&#64; -9882,6 +9883,7 &#64;&#64; static struct pci_device_id qla4xxx_pci_tbl[] = {
 		.subvendor	= PCI_ANY_ID,
 		.subdevice	= PCI_ANY_ID,
 	},
<span class="hl kwa">+#endif</span>
 	{0, 0},
 };
 MODULE_DEVICE_TABLE(pci, qla4xxx_pci_tbl);
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index c53f456fbd09..ea190660c86e 100644
<span class="hl kwb">--- a/drivers/scsi/smartpqi/smartpqi_init.c</span>
<span class="hl kwa">+++ b/drivers/scsi/smartpqi/smartpqi_init.c</span>
&#64;&#64; -8313,6 +8313,18 &#64;&#64; static const struct pci_device_id pqi_pci_id_table[] = {
 		PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
 			       0x19e5, 0xd22c)
 	},
<span class="hl kwa">+	{</span>
<span class="hl kwa">+		PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,</span>
<span class="hl kwa">+			       0x1bd4, 0x004a)</span>
<span class="hl kwa">+	},</span>
<span class="hl kwa">+	{</span>
<span class="hl kwa">+		PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,</span>
<span class="hl kwa">+			       0x1bd4, 0x004b)</span>
<span class="hl kwa">+	},</span>
<span class="hl kwa">+	{</span>
<span class="hl kwa">+		PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,</span>
<span class="hl kwa">+			       0x1bd4, 0x004c)</span>
<span class="hl kwa">+	},</span>
 	{
 		PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
 			       PCI_VENDOR_ID_ADAPTEC2, 0x0110)
&#64;&#64; -8453,6 +8465,10 &#64;&#64; static const struct pci_device_id pqi_pci_id_table[] = {
 		PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
 			       PCI_VENDOR_ID_ADVANTECH, 0x8312)
 	},
<span class="hl kwa">+	{</span>
<span class="hl kwa">+		PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,</span>
<span class="hl kwa">+			       PCI_VENDOR_ID_ADVANTECH, 0x8312)</span>
<span class="hl kwa">+	},</span>
 	{
 		PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f,
 			       PCI_VENDOR_ID_DELL, 0x1fe0)
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 7f71218cc1e5..283fc0f41cd2 100644
<span class="hl kwb">--- a/drivers/usb/core/hub.c</span>
<span class="hl kwa">+++ b/drivers/usb/core/hub.c</span>
&#64;&#64; -5532,6 +5532,13 &#64;&#64; static void hub_event(struct work_struct *work)
 			(u16) hub-&gt;change_bits[0],
 			(u16) hub-&gt;event_bits[0]);

<span class="hl kwa">+	/* Don't disconnect USB-SATA on TrimSlice */</span>
<span class="hl kwa">+	if (strcmp(dev_name(hdev-&gt;bus-&gt;controller), &quot;tegra-ehci.0&quot;) == 0) {</span>
<span class="hl kwa">+		if ((hdev-&gt;state == 7) &amp;&amp; (hub-&gt;change_bits[0] == 0) &amp;&amp;</span>
<span class="hl kwa">+				(hub-&gt;event_bits[0] == 0x2))</span>
<span class="hl kwa">+			hub-&gt;event_bits[0] = 0;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
 	/* Lock the device, then check to see if we were
 	 * disconnected while waiting for the lock to succeed. */
 	usb_lock_device(hdev);
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 763b816ba19c..4c55e3aa7e95 100644
<span class="hl kwb">--- a/include/linux/efi.h</span>
<span class="hl kwa">+++ b/include/linux/efi.h</span>
<span class="hl kwd">&#64;&#64; -43,6 +43,8 &#64;&#64;</span>
 #define EFI_ABORTED		(21 | (1UL &lt;&lt; (BITS_PER_LONG-1)))
 #define EFI_SECURITY_VIOLATION	(26 | (1UL &lt;&lt; (BITS_PER_LONG-1)))

<span class="hl kwa">+#define EFI_IS_ERROR(x)		((x) &amp; (1UL &lt;&lt; (BITS_PER_LONG-1)))</span>
<span class="hl kwa">+</span>
 typedef unsigned long efi_status_t;
 typedef u8 efi_bool_t;
 typedef u16 efi_char16_t;		/* UNICODE character */
&#64;&#64; -786,6 +788,14 &#64;&#64; extern int __init efi_setup_pcdp_console(char *);
 #define EFI_MEM_ATTR		10	/* Did firmware publish an EFI_MEMORY_ATTRIBUTES table? */
 #define EFI_MEM_NO_SOFT_RESERVE	11	/* Is the kernel configured to ignore soft reservations? */
 #define EFI_PRESERVE_BS_REGIONS	12	/* Are EFI boot-services memory segments available? */
<span class="hl kwa">+#define EFI_SECURE_BOOT		13	/* Are we in Secure Boot mode? */</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+enum efi_secureboot_mode {</span>
<span class="hl kwa">+	efi_secureboot_mode_unset,</span>
<span class="hl kwa">+	efi_secureboot_mode_unknown,</span>
<span class="hl kwa">+	efi_secureboot_mode_disabled,</span>
<span class="hl kwa">+	efi_secureboot_mode_enabled,</span>
<span class="hl kwa">+};</span>

 #ifdef CONFIG_EFI
 /*
&#64;&#64; -797,6 +807,8 &#64;&#64; static inline bool efi_enabled(int feature)
 }
 extern void efi_reboot(enum reboot_mode reboot_mode, const char *__unused);

<span class="hl kwa">+extern void __init efi_set_secure_boot(enum efi_secureboot_mode mode);</span>
<span class="hl kwa">+</span>
 bool __pure __efi_soft_reserve_enabled(void);

 static inline bool __pure efi_soft_reserve_enabled(void)
&#64;&#64; -817,6 +829,8 &#64;&#64; static inline bool efi_enabled(int feature)
 static inline void
 efi_reboot(enum reboot_mode reboot_mode, const char *__unused) {}

<span class="hl kwa">+static inline void efi_set_secure_boot(enum efi_secureboot_mode mode) {}</span>
<span class="hl kwa">+</span>
 static inline bool efi_soft_reserve_enabled(void)
 {
 	return false;
&#64;&#64; -829,6 +843,7 &#64;&#64; static inline bool efi_rt_services_supported(unsigned int mask)
 #endif

 extern int efi_status_to_err(efi_status_t status);
<span class="hl kwa">+extern const char *efi_status_to_str(efi_status_t status);</span>

 /*
  * Variable Attributes
&#64;&#64; -1081,13 +1096,6 &#64;&#64; static inline bool efi_runtime_disabled(void) { return true; }
 extern void efi_call_virt_check_flags(unsigned long flags, const char *call);
 extern unsigned long efi_call_virt_save_flags(void);

<span class="hl kwb">-enum efi_secureboot_mode {</span>
<span class="hl kwb">-	efi_secureboot_mode_unset,</span>
<span class="hl kwb">-	efi_secureboot_mode_unknown,</span>
<span class="hl kwb">-	efi_secureboot_mode_disabled,</span>
<span class="hl kwb">-	efi_secureboot_mode_enabled,</span>
<span class="hl kwb">-};</span>
<span class="hl kwb">-</span>
 static inline
 enum efi_secureboot_mode efi_get_secureboot_mode(efi_get_variable_t *get_var)
 {
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index f7902d8c1048..8d612af767c4 100644
<span class="hl kwb">--- a/include/linux/kernel.h</span>
<span class="hl kwa">+++ b/include/linux/kernel.h</span>
&#64;&#64; -443,7 +443,24 &#64;&#64; extern enum system_states {
 #define TAINT_LIVEPATCH			15
 #define TAINT_AUX			16
 #define TAINT_RANDSTRUCT		17
<span class="hl kwb">-#define TAINT_FLAGS_COUNT		18</span>
<span class="hl kwa">+/* Start of Red Hat-specific taint flags */</span>
<span class="hl kwa">+#define TAINT_18			18</span>
<span class="hl kwa">+#define TAINT_19			19</span>
<span class="hl kwa">+#define TAINT_20			20</span>
<span class="hl kwa">+#define TAINT_21			21</span>
<span class="hl kwa">+#define TAINT_22			22</span>
<span class="hl kwa">+#define TAINT_23			23</span>
<span class="hl kwa">+#define TAINT_24			24</span>
<span class="hl kwa">+#define TAINT_25			25</span>
<span class="hl kwa">+#define TAINT_26			26</span>
<span class="hl kwa">+#define TAINT_SUPPORT_REMOVED		27</span>
<span class="hl kwa">+/* Bits 28 - 31 are reserved for Red Hat use only */</span>
<span class="hl kwa">+#define TAINT_RESERVED28		28</span>
<span class="hl kwa">+#define TAINT_RESERVED29		29</span>
<span class="hl kwa">+#define TAINT_RESERVED30		30</span>
<span class="hl kwa">+#define TAINT_UNPRIVILEGED_BPF		31</span>
<span class="hl kwa">+/* End of Red Hat-specific taint flags */</span>
<span class="hl kwa">+#define TAINT_FLAGS_COUNT		32</span>
 #define TAINT_FLAGS_MAX			((1UL &lt;&lt; TAINT_FLAGS_COUNT) - 1)

 struct taint_flag {
&#64;&#64; -729,4 +746,19 &#64;&#64; static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
 	 /* OTHER_WRITABLE?  Generally considered a bad idea. */		\
 	 BUILD_BUG_ON_ZERO((perms) &amp; 2) +					\
 	 (perms))
<span class="hl kwa">+</span>
<span class="hl kwa">+struct module;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#ifdef CONFIG_RHEL_DIFFERENCES</span>
<span class="hl kwa">+void mark_hardware_unsupported(const char *msg);</span>
<span class="hl kwa">+void mark_hardware_deprecated(const char *msg);</span>
<span class="hl kwa">+void mark_tech_preview(const char *msg, struct module *mod);</span>
<span class="hl kwa">+void mark_driver_unsupported(const char *name);</span>
<span class="hl kwa">+#else</span>
<span class="hl kwa">+static inline void mark_hardware_unsupported(const char *msg) { }</span>
<span class="hl kwa">+static inline void mark_hardware_deprecated(const char *msg) { }</span>
<span class="hl kwa">+static inline void mark_tech_preview(const char *msg, struct module *mod) { }</span>
<span class="hl kwa">+static inline void mark_driver_unsupported(const char *name) { }</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
 #endif
diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
index 7aaa753b8608..8e164db118c3 100644
<span class="hl kwb">--- a/include/linux/lsm_hook_defs.h</span>
<span class="hl kwa">+++ b/include/linux/lsm_hook_defs.h</span>
&#64;&#64; -385,6 +385,8 &#64;&#64; LSM_HOOK(void, LSM_RET_VOID, bpf_prog_free_security, struct bpf_prog_aux *aux)
 #endif /* CONFIG_BPF_SYSCALL */

 LSM_HOOK(int, 0, locked_down, enum lockdown_reason what)
<span class="hl kwa">+LSM_HOOK(int, 0, lock_kernel_down, const char *where, enum lockdown_reason level)</span>
<span class="hl kwa">+</span>

 #ifdef CONFIG_PERF_EVENTS
 LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type)
diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h
index a19adef1f088..57cce0d5c347 100644
<span class="hl kwb">--- a/include/linux/lsm_hooks.h</span>
<span class="hl kwa">+++ b/include/linux/lsm_hooks.h</span>
<span class="hl kwd">&#64;&#64; -1520,6 +1520,12 &#64;&#64;</span>
  *
  *     &#64;what: kernel feature being accessed
  *
<span class="hl kwa">+ * &#64;lock_kernel_down</span>
<span class="hl kwa">+ * 	Put the kernel into lock-down mode.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * 	&#64;where: Where the lock-down is originating from (e.g. command line option)</span>
<span class="hl kwa">+ * 	&#64;level: The lock-down level (can only increase)</span>
<span class="hl kwa">+ *</span>
  * Security hooks for perf events
  *
  * &#64;perf_event_open:
diff --git a/include/linux/module.h b/include/linux/module.h
index 7a0bcb5b1ffc..3088a812acc5 100644
<span class="hl kwb">--- a/include/linux/module.h</span>
<span class="hl kwa">+++ b/include/linux/module.h</span>
&#64;&#64; -372,6 +372,7 &#64;&#64; struct module {
 	struct module_attribute *modinfo_attrs;
 	const char *version;
 	const char *srcversion;
<span class="hl kwa">+	const char *rhelversion;</span>
 	struct kobject *holders_dir;

 	/* Exported symbols */
diff --git a/include/linux/pci.h b/include/linux/pci.h
index b32126d26997..c5a1072e57a6 100644
<span class="hl kwb">--- a/include/linux/pci.h</span>
<span class="hl kwa">+++ b/include/linux/pci.h</span>
&#64;&#64; -1414,6 +1414,10 &#64;&#64; int pci_add_dynid(struct pci_driver *drv,
 		  unsigned long driver_data);
 const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
 					 struct pci_dev *dev);
<span class="hl kwa">+/* Reserved for Internal Red Hat use only */</span>
<span class="hl kwa">+const struct pci_device_id *pci_hw_vendor_status(</span>
<span class="hl kwa">+						const struct pci_device_id *ids,</span>
<span class="hl kwa">+						struct pci_dev *dev);</span>
 int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
 		    int pass);

diff --git a/include/linux/rh_kabi.h b/include/linux/rh_kabi.h
new file mode 100644
index 000000000000..ea9c136bf884
<span class="hl kwb">--- /dev/null</span>
<span class="hl kwa">+++ b/include/linux/rh_kabi.h</span>
<span class="hl kwd">&#64;&#64; -0,0 +1,297 &#64;&#64;</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * rh_kabi.h - Red Hat kABI abstraction header</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Copyright (c) 2014 Don Zickus</span>
<span class="hl kwa">+ * Copyright (c) 2015-2018 Jiri Benc</span>
<span class="hl kwa">+ * Copyright (c) 2015 Sabrina Dubroca, Hannes Frederic Sowa</span>
<span class="hl kwa">+ * Copyright (c) 2016-2018 Prarit Bhargava</span>
<span class="hl kwa">+ * Copyright (c) 2017 Paolo Abeni, Larry Woodman</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * This file is released under the GPLv2.</span>
<span class="hl kwa">+ * See the file COPYING for more details.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * These kabi macros hide the changes from the kabi checker and from the</span>
<span class="hl kwa">+ * process that computes the exported symbols' checksums.</span>
<span class="hl kwa">+ * They have 2 variants: one (defined under __GENKSYMS__) used when</span>
<span class="hl kwa">+ * generating the checksums, and the other used when building the kernel's</span>
<span class="hl kwa">+ * binaries.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * The use of these macros does not guarantee that the usage and modification</span>
<span class="hl kwa">+ * of code is correct.  As with all Red Hat only changes, an engineer must</span>
<span class="hl kwa">+ * explain why the use of the macro is valid in the patch containing the</span>
<span class="hl kwa">+ * changes.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#ifndef _LINUX_RH_KABI_H</span>
<span class="hl kwa">+#define _LINUX_RH_KABI_H</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#include &lt;linux/compiler.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/stringify.h&gt;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * RH_KABI_CONST</span>
<span class="hl kwa">+ *   Adds a new const modifier to a function parameter preserving the old</span>
<span class="hl kwa">+ *   checksum.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_DEPRECATE</span>
<span class="hl kwa">+ *   Mark the element as deprecated and make it unusable by modules while</span>
<span class="hl kwa">+ *   preserving kABI checksums.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_DEPRECATE_FN</span>
<span class="hl kwa">+ *   Mark the function pointer as deprecated and make it unusable by modules</span>
<span class="hl kwa">+ *   while preserving kABI checksums.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_EXTEND</span>
<span class="hl kwa">+ *   Simple macro for adding a new element to a struct.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_EXTEND_WITH_SIZE</span>
<span class="hl kwa">+ *   Adds a new element (usually a struct) to a struct and reserves extra</span>
<span class="hl kwa">+ *   space for the new element.  The provided 'size' is the total space to</span>
<span class="hl kwa">+ *   be added in longs (i.e. it's 8 * 'size' bytes), including the size of</span>
<span class="hl kwa">+ *   the added element.  It is automatically checked that the new element</span>
<span class="hl kwa">+ *   does not overflow the reserved space, now nor in the future. However,</span>
<span class="hl kwa">+ *   no attempt is done to check the content of the added element (struct)</span>
<span class="hl kwa">+ *   for kABI conformance - kABI checking inside the added element is</span>
<span class="hl kwa">+ *   effectively switched off.</span>
<span class="hl kwa">+ *   For any struct being added by RH_KABI_EXTEND_WITH_SIZE, it is</span>
<span class="hl kwa">+ *   recommended its content to be documented as not covered by kABI</span>
<span class="hl kwa">+ *   guarantee.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_FILL_HOLE</span>
<span class="hl kwa">+ *   Simple macro for filling a hole in a struct.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ *   Warning: only use if a hole exists for _all_ arches.  Use pahole to verify.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_RENAME</span>
<span class="hl kwa">+ *   Simple macro for renaming an element without changing its type.  This</span>
<span class="hl kwa">+ *   macro can be used in bitfields, for example.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ *   NOTE: does not include the final ';'</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_REPLACE</span>
<span class="hl kwa">+ *   Simple replacement of _orig with a union of _orig and _new.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ *   The RH_KABI_REPLACE* macros attempt to add the ability to use the '_new'</span>
<span class="hl kwa">+ *   element while preserving size alignment with the '_orig' element.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ *   The #ifdef __GENKSYMS__ preserves the kABI agreement, while the anonymous</span>
<span class="hl kwa">+ *   union structure preserves the size alignment (assuming the '_new' element</span>
<span class="hl kwa">+ *   is not bigger than the '_orig' element).</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_REPLACE_UNSAFE</span>
<span class="hl kwa">+ *   Unsafe version of RH_KABI_REPLACE.  Only use for typedefs.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_FORCE_CHANGE</span>
<span class="hl kwa">+ *   Force change of the symbol checksum.  The argument of the macro is a</span>
<span class="hl kwa">+ *   version for cases we need to do this more than once.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ *   This macro does the opposite: it changes the symbol checksum without</span>
<span class="hl kwa">+ *   actually changing anything about the exported symbol.  It is useful for</span>
<span class="hl kwa">+ *   symbols that are not whitelisted, we're changing them in an</span>
<span class="hl kwa">+ *   incompatible way and want to prevent 3rd party modules to silently</span>
<span class="hl kwa">+ *   corrupt memory.  Instead, by changing the symbol checksum, such modules</span>
<span class="hl kwa">+ *   won't be loaded by the kernel.  This macro should only be used as a</span>
<span class="hl kwa">+ *   last resort when all other KABI workarounds have failed.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * RH_KABI_EXCLUDE</span>
<span class="hl kwa">+ *   !!! WARNING: DANGEROUS, DO NOT USE unless you are aware of all the !!!</span>
<span class="hl kwa">+ *   !!! implications. This should be used ONLY EXCEPTIONALLY and only  !!!</span>
<span class="hl kwa">+ *   !!! under specific circumstances. Very likely, this macro does not !!!</span>
<span class="hl kwa">+ *   !!! do what you expect it to do. Note that any usage of this macro !!!</span>
<span class="hl kwa">+ *   !!! MUST be paired with a RH_KABI_FORCE_CHANGE annotation of       !!!</span>
<span class="hl kwa">+ *   !!! a suitable symbol (or an equivalent safeguard) and the commit  !!!</span>
<span class="hl kwa">+ *   !!! log MUST explain why the chosen solution is appropriate.       !!!</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ *   Exclude the element from checksum generation.  Any such element is</span>
<span class="hl kwa">+ *   considered not to be part of the kABI whitelist and may be changed at</span>
<span class="hl kwa">+ *   will.  Note however that it's the responsibility of the developer</span>
<span class="hl kwa">+ *   changing the element to ensure 3rd party drivers using this element</span>
<span class="hl kwa">+ *   won't panic, for example by not allowing them to be loaded.  That can</span>
<span class="hl kwa">+ *   be achieved by changing another, non-whitelisted symbol they use,</span>
<span class="hl kwa">+ *   either by nature of the change or by using RH_KABI_FORCE_CHANGE.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ *   Also note that any change to the element must preserve its size. Change</span>
<span class="hl kwa">+ *   of the size is not allowed and would constitute a silent kABI breakage.</span>
<span class="hl kwa">+ *   Beware that the RH_KABI_EXCLUDE macro does not do any size checks.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * NOTE</span>
<span class="hl kwa">+ *   Don't use ';' after these macros as it messes up the kABI checker by</span>
<span class="hl kwa">+ *   changing what the resulting token string looks like.  Instead let this</span>
<span class="hl kwa">+ *   macro add the ';' so it can be properly hidden from the kABI checker</span>
<span class="hl kwa">+ *   (mainly for RH_KABI_EXTEND, but applied to all macros for uniformity).</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+#ifdef __GENKSYMS__</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+# define RH_KABI_CONST</span>
<span class="hl kwa">+# define RH_KABI_EXTEND(_new)</span>
<span class="hl kwa">+# define RH_KABI_FILL_HOLE(_new)</span>
<span class="hl kwa">+# define RH_KABI_FORCE_CHANGE(ver)		__attribute__((rh_kabi_change ## ver))</span>
<span class="hl kwa">+# define RH_KABI_RENAME(_orig, _new)		_orig</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+# define _RH_KABI_DEPRECATE(_type, _orig)	_type _orig</span>
<span class="hl kwa">+# define _RH_KABI_DEPRECATE_FN(_type, _orig, _args...)	_type (*_orig)(_args)</span>
<span class="hl kwa">+# define _RH_KABI_REPLACE(_orig, _new)		_orig</span>
<span class="hl kwa">+# define _RH_KABI_REPLACE_UNSAFE(_orig, _new)	_orig</span>
<span class="hl kwa">+# define _RH_KABI_EXCLUDE(_elem)</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#else</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+# define RH_KABI_ALIGN_WARNING &quot;.  Disable CONFIG_RH_KABI_SIZE_ALIGN_CHECKS if debugging.&quot;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+# define RH_KABI_CONST				const</span>
<span class="hl kwa">+# define RH_KABI_EXTEND(_new)			_new;</span>
<span class="hl kwa">+# define RH_KABI_FILL_HOLE(_new)		_new;</span>
<span class="hl kwa">+# define RH_KABI_FORCE_CHANGE(ver)</span>
<span class="hl kwa">+# define RH_KABI_RENAME(_orig, _new)		_new</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#if IS_BUILTIN(CONFIG_RH_KABI_SIZE_ALIGN_CHECKS)</span>
<span class="hl kwa">+# define __RH_KABI_CHECK_SIZE_ALIGN(_orig, _new)			\</span>
<span class="hl kwa">+	union {								\</span>
<span class="hl kwa">+		_Static_assert(sizeof(struct{_new;}) &lt;= sizeof(struct{_orig;}), \</span>
<span class="hl kwa">+			       __FILE__ &quot;:&quot; __stringify(__LINE__) &quot;: &quot;  __stringify(_new) &quot; is larger than &quot; __stringify(_orig) RH_KABI_ALIGN_WARNING); \</span>
<span class="hl kwa">+		_Static_assert(__alignof__(struct{_new;}) &lt;= __alignof__(struct{_orig;}), \</span>
<span class="hl kwa">+			       __FILE__ &quot;:&quot; __stringify(__LINE__) &quot;: &quot;  __stringify(_orig) &quot; is not aligned the same as &quot; __stringify(_new) RH_KABI_ALIGN_WARNING); \</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+# define __RH_KABI_CHECK_SIZE(_item, _size)				\</span>
<span class="hl kwa">+	_Static_assert(sizeof(struct{_item;}) &lt;= _size,			\</span>
<span class="hl kwa">+		       __FILE__ &quot;:&quot; __stringify(__LINE__) &quot;: &quot; __stringify(_item) &quot; is larger than the reserved size (&quot; __stringify(_size) &quot; bytes)&quot; RH_KABI_ALIGN_WARNING)</span>
<span class="hl kwa">+#else</span>
<span class="hl kwa">+# define __RH_KABI_CHECK_SIZE_ALIGN(_orig, _new)</span>
<span class="hl kwa">+# define __RH_KABI_CHECK_SIZE(_item, _size)</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#define RH_KABI_UNIQUE_ID	__PASTE(rh_kabi_hidden_, __LINE__)</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+# define _RH_KABI_DEPRECATE(_type, _orig)	_type rh_reserved_##_orig</span>
<span class="hl kwa">+# define _RH_KABI_DEPRECATE_FN(_type, _orig, _args...)  \</span>
<span class="hl kwa">+	_type (* rh_reserved_##_orig)(_args)</span>
<span class="hl kwa">+# define _RH_KABI_REPLACE(_orig, _new)			  \</span>
<span class="hl kwa">+	union {						  \</span>
<span class="hl kwa">+		_new;					  \</span>
<span class="hl kwa">+		struct {				  \</span>
<span class="hl kwa">+			_orig;				  \</span>
<span class="hl kwa">+		} RH_KABI_UNIQUE_ID;			  \</span>
<span class="hl kwa">+		__RH_KABI_CHECK_SIZE_ALIGN(_orig, _new);  \</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+# define _RH_KABI_REPLACE_UNSAFE(_orig, _new)	_new</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+# define _RH_KABI_EXCLUDE(_elem)		_elem</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#endif /* __GENKSYMS__ */</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/* semicolon added wrappers for the RH_KABI_REPLACE macros */</span>
<span class="hl kwa">+# define RH_KABI_DEPRECATE(_type, _orig)	_RH_KABI_DEPRECATE(_type, _orig);</span>
<span class="hl kwa">+# define RH_KABI_DEPRECATE_FN(_type, _orig, _args...)  \</span>
<span class="hl kwa">+	_RH_KABI_DEPRECATE_FN(_type, _orig, _args);</span>
<span class="hl kwa">+# define RH_KABI_REPLACE(_orig, _new)		_RH_KABI_REPLACE(_orig, _new);</span>
<span class="hl kwa">+# define RH_KABI_REPLACE_UNSAFE(_orig, _new)	_RH_KABI_REPLACE_UNSAFE(_orig, _new);</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * Macro for breaking up a random element into two smaller chunks using an</span>
<span class="hl kwa">+ * anonymous struct inside an anonymous union.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+# define RH_KABI_REPLACE2(orig, _new1, _new2)	RH_KABI_REPLACE(orig, struct{ _new1; _new2;})</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+# define RH_KABI_RESERVE(n)		_RH_KABI_RESERVE(n);</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * Simple wrappers to replace standard Red Hat reserved elements.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+# define RH_KABI_USE(n, _new)		RH_KABI_REPLACE(_RH_KABI_RESERVE(n), _new)</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * Macros for breaking up a reserved element into two smaller chunks using</span>
<span class="hl kwa">+ * an anonymous struct inside an anonymous union.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+# define RH_KABI_USE2(n, _new1, _new2)	RH_KABI_REPLACE(_RH_KABI_RESERVE(n), struct{ _new1; _new2; })</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * We tried to standardize on Red Hat reserved names.  These wrappers</span>
<span class="hl kwa">+ * leverage those common names making it easier to read and find in the</span>
<span class="hl kwa">+ * code.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+# define _RH_KABI_RESERVE(n)		unsigned long rh_reserved##n</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#define RH_KABI_EXCLUDE(_elem)		_RH_KABI_EXCLUDE(_elem);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * Extending a struct while reserving extra space.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+#define RH_KABI_EXTEND_WITH_SIZE(_new, _size)				\</span>
<span class="hl kwa">+	RH_KABI_EXTEND(union {						\</span>
<span class="hl kwa">+		_new;							\</span>
<span class="hl kwa">+		unsigned long RH_KABI_UNIQUE_ID[_size];			\</span>
<span class="hl kwa">+		__RH_KABI_CHECK_SIZE(_new, 8 * (_size));		\</span>
<span class="hl kwa">+	})</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * RHEL macros to extend structs.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * base struct: The struct being extended.  For example, pci_dev.</span>
<span class="hl kwa">+ * extended struct: The Red Hat struct being added to the base struct.</span>
<span class="hl kwa">+ *		    For example, pci_dev_rh.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * These macros should be used to extend structs before KABI freeze.</span>
<span class="hl kwa">+ * They can be used post-KABI freeze in the limited case of the base</span>
<span class="hl kwa">+ * struct not being embedded in another struct.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Extended structs cannot be shrunk in size as changes will break</span>
<span class="hl kwa">+ * the size &amp; offset comparison.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Extended struct elements are not guaranteed for access by modules unless</span>
<span class="hl kwa">+ * explicitly commented as such in the declaration of the extended struct or</span>
<span class="hl kwa">+ * the element in the extended struct.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * RH_KABI_SIZE_AND_EXTEND|_PTR() extends a struct by embedding or adding</span>
<span class="hl kwa">+ * a pointer in a base struct.  The name of the new struct is the name</span>
<span class="hl kwa">+ * of the base struct appended with _rh.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+#define _RH_KABI_SIZE_AND_EXTEND_PTR(_struct)				\</span>
<span class="hl kwa">+	size_t _struct##_size_rh;					\</span>
<span class="hl kwa">+	RH_KABI_EXCLUDE(struct _struct##_rh *_struct##_rh)</span>
<span class="hl kwa">+#define RH_KABI_SIZE_AND_EXTEND_PTR(_struct)				\</span>
<span class="hl kwa">+	_RH_KABI_SIZE_AND_EXTEND_PTR(_struct)</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#define _RH_KABI_SIZE_AND_EXTEND(_struct)				\</span>
<span class="hl kwa">+	size_t _struct##_size_rh;					\</span>
<span class="hl kwa">+	RH_KABI_EXCLUDE(struct _struct##_rh _struct##_rh)</span>
<span class="hl kwa">+#define RH_KABI_SIZE_AND_EXTEND(_struct)				\</span>
<span class="hl kwa">+	_RH_KABI_SIZE_AND_EXTEND(_struct)</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * RH_KABI_SET_SIZE calculates and sets the size of the extended struct and</span>
<span class="hl kwa">+ * stores it in the size_rh field for structs that are dynamically allocated.</span>
<span class="hl kwa">+ * This macro MUST be called when expanding a base struct with</span>
<span class="hl kwa">+ * RH_KABI_SIZE_AND_EXTEND, and it MUST be called from the allocation site</span>
<span class="hl kwa">+ * regardless of being allocated in the kernel or a module.</span>
<span class="hl kwa">+ * Note: since this macro is intended to be invoked outside of a struct,</span>
<span class="hl kwa">+ * a semicolon is necessary at the end of the line where it is invoked.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+#define RH_KABI_SET_SIZE(_name, _struct) ({				\</span>
<span class="hl kwa">+	_name-&gt;_struct##_size_rh = sizeof(struct _struct##_rh);		\</span>
<span class="hl kwa">+})</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * RH_KABI_INIT_SIZE calculates and sets the size of the extended struct and</span>
<span class="hl kwa">+ * stores it in the size_rh field for structs that are statically allocated.</span>
<span class="hl kwa">+ * This macro MUST be called when expanding a base struct with</span>
<span class="hl kwa">+ * RH_KABI_SIZE_AND_EXTEND, and it MUST be called from the declaration site</span>
<span class="hl kwa">+ * regardless of being allocated in the kernel or a module.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+#define RH_KABI_INIT_SIZE(_struct)					\</span>
<span class="hl kwa">+	._struct##_size_rh = sizeof(struct _struct##_rh),</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * RH_KABI_CHECK_EXT verifies allocated memory exists.  This MUST be called to</span>
<span class="hl kwa">+ * verify that memory in the _rh struct is valid, and can be called</span>
<span class="hl kwa">+ * regardless if RH_KABI_SIZE_AND_EXTEND or RH_KABI_SIZE_AND_EXTEND_PTR is</span>
<span class="hl kwa">+ * used.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+#define RH_KABI_CHECK_EXT(_ptr, _struct, _field) ({			\</span>
<span class="hl kwa">+	size_t __off = offsetof(struct _struct##_rh, _field);		\</span>
<span class="hl kwa">+	_ptr-&gt;_struct##_size_rh &gt; __off ? true : false;			\</span>
<span class="hl kwa">+})</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+#endif /* _LINUX_RH_KABI_H */</span>
diff --git a/include/linux/rmi.h b/include/linux/rmi.h
index ab7eea01ab42..fff7c5f737fc 100644
<span class="hl kwb">--- a/include/linux/rmi.h</span>
<span class="hl kwa">+++ b/include/linux/rmi.h</span>
&#64;&#64; -364,6 +364,7 &#64;&#64; struct rmi_driver_data {

 	struct rmi4_attn_data attn_data;
 	DECLARE_KFIFO(attn_fifo, struct rmi4_attn_data, 16);
<span class="hl kwa">+	struct work_struct attn_work;</span>
 };

 int rmi_register_transport_device(struct rmi_transport_dev *xport);
diff --git a/include/linux/security.h b/include/linux/security.h
index c35ea0ffccd9..342d4579bf5c 100644
<span class="hl kwb">--- a/include/linux/security.h</span>
<span class="hl kwa">+++ b/include/linux/security.h</span>
&#64;&#64; -457,6 +457,7 &#64;&#64; int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen);
 int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen);
 int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen);
 int security_locked_down(enum lockdown_reason what);
<span class="hl kwa">+int security_lock_kernel_down(const char *where, enum lockdown_reason level);</span>
 #else /* CONFIG_SECURITY */

 static inline int call_blocking_lsm_notifier(enum lsm_event event, void *data)
&#64;&#64; -1305,6 +1306,10 &#64;&#64; static inline int security_locked_down(enum lockdown_reason what)
 {
 	return 0;
 }
<span class="hl kwa">+static inline int security_lock_kernel_down(const char *where, enum lockdown_reason level)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	return 0;</span>
<span class="hl kwa">+}</span>
 #endif	/* CONFIG_SECURITY */

 #if defined(CONFIG_SECURITY) &amp;&amp; defined(CONFIG_WATCH_QUEUE)
diff --git a/kernel/Makefile b/kernel/Makefile
index aa7368c7eabf..59724bef4bf2 100644
<span class="hl kwb">--- a/kernel/Makefile</span>
<span class="hl kwa">+++ b/kernel/Makefile</span>
&#64;&#64; -12,6 +12,8 &#64;&#64; obj-y     = fork.o exec_domain.o panic.o \
 	    notifier.o ksysfs.o cred.o reboot.o \
 	    async.o range.o smpboot.o ucount.o regset.o

<span class="hl kwa">+obj-$(CONFIG_RH_DISABLE_DEPRECATED) += rh_taint.o</span>
<span class="hl kwa">+obj-$(CONFIG_RHEL_DIFFERENCES) += rh_taint.o</span>
 obj-$(CONFIG_USERMODE_DRIVER) += usermode_driver.o
 obj-$(CONFIG_MODULES) += kmod.o
 obj-$(CONFIG_MULTIUSER) += groups.o
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index e5999d86c76e..746b35c7e69a 100644
<span class="hl kwb">--- a/kernel/bpf/syscall.c</span>
<span class="hl kwa">+++ b/kernel/bpf/syscall.c</span>
<span class="hl kwd">&#64;&#64; -24,6 +24,7 &#64;&#64;</span>
 #include &lt;linux/ctype.h&gt;
 #include &lt;linux/nospec.h&gt;
 #include &lt;linux/audit.h&gt;
<span class="hl kwa">+#include &lt;linux/init.h&gt;</span>
 #include &lt;uapi/linux/btf.h&gt;
 #include &lt;linux/pgtable.h&gt;
 #include &lt;linux/bpf_lsm.h&gt;
&#64;&#64; -50,7 +51,25 &#64;&#64; static DEFINE_SPINLOCK(map_idr_lock);
 static DEFINE_IDR(link_idr);
 static DEFINE_SPINLOCK(link_idr_lock);

<span class="hl kwb">-int sysctl_unprivileged_bpf_disabled __read_mostly;</span>
<span class="hl kwa">+/* RHEL-only: default to 1 */</span>
<span class="hl kwa">+int sysctl_unprivileged_bpf_disabled __read_mostly = 1;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+static int __init unprivileged_bpf_setup(char *str)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	unsigned long disabled;</span>
<span class="hl kwa">+	if (!kstrtoul(str, 0, &amp;disabled))</span>
<span class="hl kwa">+		sysctl_unprivileged_bpf_disabled = !!disabled;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (!sysctl_unprivileged_bpf_disabled) {</span>
<span class="hl kwa">+		pr_warn(&quot;Unprivileged BPF has been enabled &quot;</span>
<span class="hl kwa">+			&quot;(unprivileged_bpf_disabled=0 has been supplied &quot;</span>
<span class="hl kwa">+			&quot;in boot parameters), tainting the kernel&quot;);</span>
<span class="hl kwa">+		add_taint(TAINT_UNPRIVILEGED_BPF, LOCKDEP_STILL_OK);</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	return 1;</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+__setup(&quot;unprivileged_bpf_disabled=&quot;, unprivileged_bpf_setup);</span>

 static const struct bpf_map_ops * const bpf_map_types[] = {
 #define BPF_PROG_TYPE(_id, _name, prog_ctx_type, kern_ctx_type)
&#64;&#64; -4340,11 +4359,17 &#64;&#64; static int bpf_prog_bind_map(union bpf_attr *attr)
 SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
 {
 	union bpf_attr attr;
<span class="hl kwa">+	static int marked;</span>
 	int err;

 	if (sysctl_unprivileged_bpf_disabled &amp;&amp; !bpf_capable())
 		return -EPERM;

<span class="hl kwa">+	if (!marked) {</span>
<span class="hl kwa">+		mark_tech_preview(&quot;eBPF syscall&quot;, NULL);</span>
<span class="hl kwa">+		marked = true;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
 	err = bpf_check_uarg_tail_zero(uattr, sizeof(attr), size);
 	if (err)
 		return err;
diff --git a/kernel/crash_core.c b/kernel/crash_core.c
index 825284baaf46..0b2b3f510b16 100644
<span class="hl kwb">--- a/kernel/crash_core.c</span>
<span class="hl kwa">+++ b/kernel/crash_core.c</span>
<span class="hl kwd">&#64;&#64; -7,6 +7,7 &#64;&#64;</span>
 #include &lt;linux/crash_core.h&gt;
 #include &lt;linux/utsname.h&gt;
 #include &lt;linux/vmalloc.h&gt;
<span class="hl kwa">+#include &lt;linux/sizes.h&gt;</span>

 #include &lt;asm/page.h&gt;
 #include &lt;asm/sections.h&gt;
&#64;&#64; -41,6 +42,15 &#64;&#64; static int __init parse_crashkernel_mem(char *cmdline,
 					unsigned long long *crash_base)
 {
 	char *cur = cmdline, *tmp;
<span class="hl kwa">+	unsigned long long total_mem = system_ram;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	/*</span>
<span class="hl kwa">+	 * Firmware sometimes reserves some memory regions for it's own use.</span>
<span class="hl kwa">+	 * so we get less than actual system memory size.</span>
<span class="hl kwa">+	 * Workaround this by round up the total size to 128M which is</span>
<span class="hl kwa">+	 * enough for most test cases.</span>
<span class="hl kwa">+	 */</span>
<span class="hl kwa">+	total_mem = roundup(total_mem, SZ_128M);</span>

 	/* for each entry of the comma-separated list */
 	do {
&#64;&#64; -85,13 +95,13 &#64;&#64; static int __init parse_crashkernel_mem(char *cmdline,
 			return -EINVAL;
 		}
 		cur = tmp;
<span class="hl kwb">-		if (size &gt;= system_ram) {</span>
<span class="hl kwa">+		if (size &gt;= total_mem) {</span>
 			pr_warn(&quot;crashkernel: invalid size\n&quot;);
 			return -EINVAL;
 		}

 		/* match ? */
<span class="hl kwb">-		if (system_ram &gt;= start &amp;&amp; system_ram &lt; end) {</span>
<span class="hl kwa">+		if (total_mem &gt;= start &amp;&amp; total_mem &lt; end) {</span>
 			*crash_size = size;
 			break;
 		}
&#64;&#64; -250,6 +260,20 &#64;&#64; static int __init __parse_crashkernel(char *cmdline,
 	if (suffix)
 		return parse_crashkernel_suffix(ck_cmdline, crash_size,
 				suffix);
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (strncmp(ck_cmdline, &quot;auto&quot;, 4) == 0) {</span>
<span class="hl kwa">+#ifdef CONFIG_X86_64</span>
<span class="hl kwa">+		ck_cmdline = &quot;1G-64G:160M,64G-1T:256M,1T-:512M&quot;;</span>
<span class="hl kwa">+#elif defined(CONFIG_S390)</span>
<span class="hl kwa">+		ck_cmdline = &quot;4G-64G:160M,64G-1T:256M,1T-:512M&quot;;</span>
<span class="hl kwa">+#elif defined(CONFIG_ARM64)</span>
<span class="hl kwa">+		ck_cmdline = &quot;2G-:512M&quot;;</span>
<span class="hl kwa">+#elif defined(CONFIG_PPC64)</span>
<span class="hl kwa">+		ck_cmdline = &quot;2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G&quot;;</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+		pr_info(&quot;Using crashkernel=auto, the size chosen is a best effort estimation.\n&quot;);</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
 	/*
 	 * if the commandline contains a ':', then that's the extended
 	 * syntax -- if not, it must be the classic syntax
diff --git a/kernel/module.c b/kernel/module.c
index 4bf30e4b3eaa..b6b813ef93db 100644
<span class="hl kwb">--- a/kernel/module.c</span>
<span class="hl kwa">+++ b/kernel/module.c</span>
&#64;&#64; -837,6 +837,7 &#64;&#64; static struct module_attribute modinfo_##field = {                    \

 MODINFO_ATTR(version);
 MODINFO_ATTR(srcversion);
<span class="hl kwa">+MODINFO_ATTR(rhelversion);</span>

 static char last_unloaded_module[MODULE_NAME_LEN+1];

&#64;&#64; -1298,6 +1299,7 &#64;&#64; static struct module_attribute *modinfo_attrs[] = {
 	&amp;module_uevent,
 	&amp;modinfo_version,
 	&amp;modinfo_srcversion,
<span class="hl kwa">+	&amp;modinfo_rhelversion,</span>
 	&amp;modinfo_initstate,
 	&amp;modinfo_coresize,
 	&amp;modinfo_initsize,
diff --git a/kernel/module_signing.c b/kernel/module_signing.c
index 9d9fc678c91d..84ad75a53c83 100644
<span class="hl kwb">--- a/kernel/module_signing.c</span>
<span class="hl kwa">+++ b/kernel/module_signing.c</span>
&#64;&#64; -38,8 +38,15 &#64;&#64; int mod_verify_sig(const void *mod, struct load_info *info)
 	modlen -= sig_len + sizeof(ms);
 	info-&gt;len = modlen;

<span class="hl kwb">-	return verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,</span>
<span class="hl kwa">+	ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,</span>
 				      VERIFY_USE_SECONDARY_KEYRING,
 				      VERIFYING_MODULE_SIGNATURE,
 				      NULL, NULL);
<span class="hl kwa">+	if (ret == -ENOKEY &amp;&amp; IS_ENABLED(CONFIG_INTEGRITY_PLATFORM_KEYRING)) {</span>
<span class="hl kwa">+		ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,</span>
<span class="hl kwa">+				VERIFY_USE_PLATFORM_KEYRING,</span>
<span class="hl kwa">+				VERIFYING_MODULE_SIGNATURE,</span>
<span class="hl kwa">+				NULL, NULL);</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+	return ret;</span>
 }
diff --git a/kernel/panic.c b/kernel/panic.c
index 332736a72a58..1c81aa14f488 100644
<span class="hl kwb">--- a/kernel/panic.c</span>
<span class="hl kwa">+++ b/kernel/panic.c</span>
&#64;&#64; -386,6 +386,20 &#64;&#64; const struct taint_flag taint_flags[TAINT_FLAGS_COUNT] = {
 	[ TAINT_LIVEPATCH ]		= { 'K', ' ', true },
 	[ TAINT_AUX ]			= { 'X', ' ', true },
 	[ TAINT_RANDSTRUCT ]		= { 'T', ' ', true },
<span class="hl kwa">+	[ TAINT_18 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_19 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_20 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_21 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_22 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_23 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_24 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_25 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_26 ]			= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_SUPPORT_REMOVED ]	= { 'h', ' ', false },</span>
<span class="hl kwa">+	[ TAINT_RESERVED28 ]		= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_RESERVED29 ]		= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_RESERVED30 ]		= { '?', '-', false },</span>
<span class="hl kwa">+	[ TAINT_UNPRIVILEGED_BPF ]	= { 'u', ' ', false },</span>
 };

 /**
diff --git a/kernel/rh_taint.c b/kernel/rh_taint.c
new file mode 100644
index 000000000000..4050b6dead75
<span class="hl kwb">--- /dev/null</span>
<span class="hl kwa">+++ b/kernel/rh_taint.c</span>
<span class="hl kwd">&#64;&#64; -0,0 +1,93 &#64;&#64;</span>
<span class="hl kwa">+#include &lt;linux/kernel.h&gt;</span>
<span class="hl kwa">+#include &lt;linux/module.h&gt;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/*</span>
<span class="hl kwa">+ * The following functions are used by Red Hat to indicate to users that</span>
<span class="hl kwa">+ * hardware and drivers are unsupported, or have limited support in RHEL major</span>
<span class="hl kwa">+ * and minor releases.  These functions output loud warning messages to the end</span>
<span class="hl kwa">+ * user and should be USED WITH CAUTION.</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Any use of these functions _MUST_ be documented in the RHEL Release Notes,</span>
<span class="hl kwa">+ * and have approval of management.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/**</span>
<span class="hl kwa">+ * mark_hardware_unsupported() - Mark hardware, class, or type as unsupported.</span>
<span class="hl kwa">+ * &#64;msg: Hardware name, class, or type</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Called to mark a device, class of devices, or types of devices as not having</span>
<span class="hl kwa">+ * support in any RHEL minor release.  This does not TAINT the kernel.  Red Hat</span>
<span class="hl kwa">+ * will not fix bugs against this hardware in this minor release.  Red Hat may</span>
<span class="hl kwa">+ * declare support in a future major or minor update release.  This cannot be</span>
<span class="hl kwa">+ * used to mark drivers unsupported.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+void mark_hardware_unsupported(const char *msg)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	/* Print one single message */</span>
<span class="hl kwa">+	pr_crit(&quot;Warning: %s - this hardware has not undergone testing by Red Hat and might not be certified. Please consult https://catalog.redhat.com for certified hardware.\n&quot;, msg);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+EXPORT_SYMBOL(mark_hardware_unsupported);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/**</span>
<span class="hl kwa">+ * mark_hardware_deprecated() - Mark hardware, class, or type as deprecated.</span>
<span class="hl kwa">+ * &#64;msg: Hardware name, class, or type</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Called to minimize the support status of a previously supported device in</span>
<span class="hl kwa">+ * a minor release.  This does not TAINT the kernel.  Marking hardware</span>
<span class="hl kwa">+ * deprecated is usually done in conjunction with the hardware vendor.  Future</span>
<span class="hl kwa">+ * RHEL major releases may not include this driver.  Driver updates and fixes</span>
<span class="hl kwa">+ * for this device will be limited to critical issues in future minor releases.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+void mark_hardware_deprecated(const char *msg)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	pr_crit(&quot;Warning: %s - this hardware is not recommended for new deployments. It continues to be supported in this RHEL release, but it is likely to be removed in the next major release. Driver updates and fixes for this device will be limited to critical issues. Please contact Red Hat Support or your device's hardware vendor for additional information.\n&quot;, msg);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+EXPORT_SYMBOL(mark_hardware_deprecated);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/**</span>
<span class="hl kwa">+ * mark_tech_preview() - Mark driver or kernel subsystem as 'Tech Preview'</span>
<span class="hl kwa">+ * &#64;msg: Driver or kernel subsystem name</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * Called to minimize the support status of a new driver.  This does TAINT the</span>
<span class="hl kwa">+ * kernel.  Calling this function indicates that the driver or subsystem has</span>
<span class="hl kwa">+ * had limited testing and is not marked for full support within this RHEL</span>
<span class="hl kwa">+ * minor release.  The next RHEL minor release may contain full support for</span>
<span class="hl kwa">+ * this driver.  Red Hat does not guarantee that bugs reported against this</span>
<span class="hl kwa">+ * driver or subsystem will be resolved.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+void mark_tech_preview(const char *msg, struct module *mod)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	const char *str = NULL;</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	if (msg)</span>
<span class="hl kwa">+		str = msg;</span>
<span class="hl kwa">+#ifdef CONFIG_MODULES</span>
<span class="hl kwa">+	else if (mod &amp;&amp; mod-&gt;name)</span>
<span class="hl kwa">+		str = mod-&gt;name;</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	pr_warn(&quot;TECH PREVIEW: %s may not be fully supported.\n&quot;</span>
<span class="hl kwa">+		&quot;Please review provided documentation for limitations.\n&quot;,</span>
<span class="hl kwa">+		(str ? str : &quot;kernel&quot;));</span>
<span class="hl kwa">+	add_taint(TAINT_AUX, LOCKDEP_STILL_OK);</span>
<span class="hl kwa">+#ifdef CONFIG_MODULES</span>
<span class="hl kwa">+	if (mod)</span>
<span class="hl kwa">+		mod-&gt;taints |= (1U &lt;&lt; TAINT_AUX);</span>
<span class="hl kwa">+#endif</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+EXPORT_SYMBOL(mark_tech_preview);</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+/**</span>
<span class="hl kwa">+ * mark_driver_unsupported - drivers that we know we don't want to support</span>
<span class="hl kwa">+ * &#64;name: the name of the driver</span>
<span class="hl kwa">+ *</span>
<span class="hl kwa">+ * In some cases Red Hat has chosen to build a driver for internal QE</span>
<span class="hl kwa">+ * use. Use this function to mark those drivers as unsupported for</span>
<span class="hl kwa">+ * customers.</span>
<span class="hl kwa">+ */</span>
<span class="hl kwa">+void mark_driver_unsupported(const char *name)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	pr_crit(&quot;Warning: %s - This driver has not undergone sufficient testing by Red Hat for this release and therefore cannot be used in production systems.\n&quot;,</span>
<span class="hl kwa">+	        name ? name : &quot;kernel&quot;);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+EXPORT_SYMBOL(mark_driver_unsupported);</span>
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index c0014d3b91c1..c00e9820412a 100644
<span class="hl kwb">--- a/mm/kmemleak.c</span>
<span class="hl kwa">+++ b/mm/kmemleak.c</span>
&#64;&#64; -1960,6 +1960,11 &#64;&#64; void __init kmemleak_init(void)
  */
 static int __init kmemleak_late_init(void)
 {
<span class="hl kwa">+	if (!kmemleak_skip_disable) {</span>
<span class="hl kwa">+		kmemleak_disable();</span>
<span class="hl kwa">+		return 0;</span>
<span class="hl kwa">+	}</span>
<span class="hl kwa">+</span>
 	kmemleak_initialized = 1;

 	debugfs_create_file(&quot;kmemleak&quot;, 0644, NULL, NULL, &amp;kmemleak_fops);
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index d6c81657d695..c70e5904b7bc 100644
<span class="hl kwb">--- a/scripts/mod/modpost.c</span>
<span class="hl kwa">+++ b/scripts/mod/modpost.c</span>
<span class="hl kwd">&#64;&#64; -21,6 +21,7 &#64;&#64;</span>
 #include &lt;errno.h&gt;
 #include &quot;modpost.h&quot;
 #include &quot;../../include/linux/license.h&quot;
<span class="hl kwa">+#include &quot;../../include/generated/uapi/linux/version.h&quot;</span>

 /* Are we using CONFIG_MODVERSIONS? */
 static int modversions = 0;
&#64;&#64; -2381,6 +2382,12 &#64;&#64; static void write_buf(struct buffer *b, const char *fname)
 	}
 }

<span class="hl kwa">+static void add_rhelversion(struct buffer *b, struct module *mod)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	buf_printf(b, &quot;MODULE_INFO(rhelversion, \&quot;%d.%d\&quot;);\n&quot;, RHEL_MAJOR,</span>
<span class="hl kwa">+		   RHEL_MINOR);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+</span>
 static void write_if_changed(struct buffer *b, const char *fname)
 {
 	char *tmp;
&#64;&#64; -2630,6 +2637,7 &#64;&#64; int main(int argc, char **argv)
 		add_depends(&amp;buf, mod);
 		add_moddevtable(&amp;buf, mod);
 		add_srcversion(&amp;buf, mod);
<span class="hl kwa">+		add_rhelversion(&amp;buf, mod);</span>

 		sprintf(fname, &quot;%s.mod.c&quot;, mod-&gt;name);
 		write_if_changed(&amp;buf, fname);
diff --git a/scripts/tags.sh b/scripts/tags.sh
index fd96734deff1..5b540f3dcff1 100755
<span class="hl kwb">--- a/scripts/tags.sh</span>
<span class="hl kwa">+++ b/scripts/tags.sh</span>
&#64;&#64; -16,6 +16,8 &#64;&#64; fi
 ignore=&quot;$(echo &quot;$RCS_FIND_IGNORE&quot; | sed 's|\\||g' )&quot;
 # tags and cscope files should also ignore MODVERSION *.mod.c files
 ignore=&quot;$ignore ( -name *.mod.c ) -prune -o&quot;
<span class="hl kwa">+# RHEL tags and cscope should also ignore redhat/rpm</span>
<span class="hl kwa">+ignore=&quot;$ignore ( -path redhat/rpm ) -prune -o&quot;</span>

 # Use make KBUILD_ABS_SRCTREE=1 {tags|cscope}
 # to force full paths for a non-O= build
diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c
index ee4b4c666854..eff9ff593405 100644
<span class="hl kwb">--- a/security/integrity/platform_certs/load_uefi.c</span>
<span class="hl kwa">+++ b/security/integrity/platform_certs/load_uefi.c</span>
&#64;&#64; -46,7 +46,8 &#64;&#64; static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
 		return NULL;

 	if (*status != EFI_BUFFER_TOO_SMALL) {
<span class="hl kwb">-		pr_err(&quot;Couldn't get size: 0x%lx\n&quot;, *status);</span>
<span class="hl kwa">+		pr_err(&quot;Couldn't get size: %s (0x%lx)\n&quot;,</span>
<span class="hl kwa">+		       efi_status_to_str(*status), *status);</span>
 		return NULL;
 	}

&#64;&#64; -57,7 +58,8 &#64;&#64; static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
 	*status = efi.get_variable(name, guid, NULL, &amp;lsize, db);
 	if (*status != EFI_SUCCESS) {
 		kfree(db);
<span class="hl kwb">-		pr_err(&quot;Error reading db var: 0x%lx\n&quot;, *status);</span>
<span class="hl kwa">+		pr_err(&quot;Error reading db var: %s (0x%lx)\n&quot;,</span>
<span class="hl kwa">+		       efi_status_to_str(*status), *status);</span>
 		return NULL;
 	}

diff --git a/security/lockdown/Kconfig b/security/lockdown/Kconfig
index e84ddf484010..d0501353a4b9 100644
<span class="hl kwb">--- a/security/lockdown/Kconfig</span>
<span class="hl kwa">+++ b/security/lockdown/Kconfig</span>
&#64;&#64; -16,6 +16,19 &#64;&#64; config SECURITY_LOCKDOWN_LSM_EARLY
 	  subsystem is fully initialised. If enabled, lockdown will
 	  unconditionally be called before any other LSMs.

<span class="hl kwa">+config LOCK_DOWN_IN_EFI_SECURE_BOOT</span>
<span class="hl kwa">+	bool &quot;Lock down the kernel in EFI Secure Boot mode&quot;</span>
<span class="hl kwa">+	default n</span>
<span class="hl kwa">+	depends on EFI &amp;&amp; SECURITY_LOCKDOWN_LSM_EARLY</span>
<span class="hl kwa">+	help</span>
<span class="hl kwa">+	  UEFI Secure Boot provides a mechanism for ensuring that the firmware</span>
<span class="hl kwa">+	  will only load signed bootloaders and kernels.  Secure boot mode may</span>
<span class="hl kwa">+	  be determined from EFI variables provided by the system firmware if</span>
<span class="hl kwa">+	  not indicated by the boot parameters.</span>
<span class="hl kwa">+</span>
<span class="hl kwa">+	  Enabling this option results in kernel lockdown being triggered if</span>
<span class="hl kwa">+	  EFI Secure Boot is set.</span>
<span class="hl kwa">+</span>
 choice
 	prompt &quot;Kernel default lockdown mode&quot;
 	default LOCK_DOWN_KERNEL_FORCE_NONE
diff --git a/security/lockdown/lockdown.c b/security/lockdown/lockdown.c
index 87cbdc64d272..18555cf18da7 100644
<span class="hl kwb">--- a/security/lockdown/lockdown.c</span>
<span class="hl kwa">+++ b/security/lockdown/lockdown.c</span>
&#64;&#64; -73,6 +73,7 &#64;&#64; static int lockdown_is_locked_down(enum lockdown_reason what)

 static struct security_hook_list lockdown_hooks[] __lsm_ro_after_init = {
 	LSM_HOOK_INIT(locked_down, lockdown_is_locked_down),
<span class="hl kwa">+	LSM_HOOK_INIT(lock_kernel_down, lock_kernel_down),</span>
 };

 static int __init lockdown_lsm_init(void)
diff --git a/security/security.c b/security/security.c
index 7b09cfbae94f..e1c7bda4de13 100644
<span class="hl kwb">--- a/security/security.c</span>
<span class="hl kwa">+++ b/security/security.c</span>
&#64;&#64; -2534,6 +2534,12 &#64;&#64; int security_locked_down(enum lockdown_reason what)
 }
 EXPORT_SYMBOL(security_locked_down);

<span class="hl kwa">+int security_lock_kernel_down(const char *where, enum lockdown_reason level)</span>
<span class="hl kwa">+{</span>
<span class="hl kwa">+	return call_int_hook(lock_kernel_down, 0, where, level);</span>
<span class="hl kwa">+}</span>
<span class="hl kwa">+EXPORT_SYMBOL(security_lock_kernel_down);</span>
<span class="hl kwa">+</span>
 #ifdef CONFIG_PERF_EVENTS
 int security_perf_event_open(struct perf_event_attr *attr, int type)
 {
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit </a> (<a href='https://git-scm.com/'>git 2.34.1</a>) at 2024-05-27 23:44:39 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
