diff --git a/0001-Microchip-smartpqi-driver-for-SmartRAID-SmartHBA-con.patch b/0001-Microchip-smartpqi-driver-for-SmartRAID-SmartHBA-con.patch new file mode 100644 index 0000000000000000000000000000000000000000..8442d975cbe7f0a3620798959d2b32c2e9f88353 --- /dev/null +++ b/0001-Microchip-smartpqi-driver-for-SmartRAID-SmartHBA-con.patch @@ -0,0 +1,1456 @@ +From 2b8ede1046b1378cf139aca3d658656bbc4f5306 Mon Sep 17 00:00:00 2001 +From: Hao Zhang +Date: Mon, 24 Jul 2023 17:20:46 +0800 +Subject: [PATCH 1/3] Microchip smartpqi driver for SmartRAID/SmartHBA + controllers Init files commit + +Driver download link: +https://download.adaptec.com/raid/aac/linux/smartpqi_linux_drivers_v2.1.22-040.tgz + +Signed-off-by: Hao Zhang +--- + Module.supported | 1 + + smartpqi-2.1.22-040.tar.bz2 | Bin 0 -> 61765 bytes + smartpqi-fromsrc.conf | 1 + + smartpqi-src.spec | 214 ++++++++++++++++++++++++++++++++++++ + 4 files changed, 216 insertions(+) + create mode 100644 Module.supported + create mode 100644 smartpqi-2.1.22-040.tar.bz2 + create mode 100644 smartpqi-fromsrc.conf + create mode 100644 smartpqi-src.spec + +diff --git a/Module.supported b/Module.supported +new file mode 100644 +index 0000000..2bf848c +--- /dev/null ++++ b/Module.supported +@@ -0,0 +1 @@ ++smartpqi.ko external +diff --git a/smartpqi-2.1.22-040.tar.bz2 b/smartpqi-2.1.22-040.tar.bz2 +new file mode 100644 +index 0000000000000000000000000000000000000000..e1de81a0481a55f35750cfc03c159a0aea67fe0c +GIT binary patch +literal 61765 +zcmV()K;OSYT4*^jL0KkKS^d{HodFD5f7kx>0Z@Pc|NsC0|NsC0|NkNYKmZ5;fC2yk +z00?1i+TMLvJAGEk+NBS>rY-r4nhZLYW)i +zJ~w4mQu(k-LIl=rs;NaZ00YkW`hDBo8?e&3rS?T{bL)GD!+D@q#)SAVZ#UffuYvEN +z-GPcp(?JitRlC0LPI9}d_qP-0xE&fU_jx@i(9nFe08l!*=c1y#ayhnF)n!l)m)P0e +zdwuNPnCtH|ExWefy}RtEeKi~jb&6@NQ&Bo}0CW$msFBbEKmZW{004J<3+>!<-$uKs +zi3fY!9)Uu--CeL$SGGOKrUN{1^n11L_p@o?x?MEhX>QQAFTKIx?W@#>a!%j1DVoHMPyWWVs +zY7~}vK~1XAYh|&$GT{1m(#)&Mg--9idD6SHmUf9Q?B~lDyS;l`+R_+xldgNisJxg5 +zjOaSH8?%>Hw$;}+yy5FT#a20Gh<^kxo>VbQ<;QDANAs=>Ep!775 +z5w?_RrUCZ!=WA^HhtE5YJ?Nf$4&2;ug!ENyeRppzo;(fnY!>RO6IuW?=V9pg+f$>P +zwQ<{hy!rz?rAbqomAqQ39Fsud6aEG7=xVJ+)s`-1_trfl9cXsX3>DRrw&v(7uw9}rj +z8ZTga9k6YvuDv^+=dV=e!tbNd>&-qx3`7C|fFJ}k023eypg>OrH1#nw)XfMCfXE~v +z5P}h*2BQ-|nw}DyXrygS^$62x8zH261keBg&_TJqX10CZ4C0 +zOeyL#(De+1Ks`VnfB!%2gum)PyZv{kbpLPmpEueG^Z4}oN_oOrV1XS0ARk|^)V($J +z#CqCI_wyZy5CxGSX;j2b0^9%xC#yioc7Z93$XlW7DU0tX(tdUa9(g8peC}6CLr-m3W2xcm@ +zlV~73;V0;?*8X>I=Ke4BZNg9L{!RFQS1XRrpXt|KazE!fKj`ifln=H+1N-*rbd8l! +zKbGatbhspc$pNqgk{`lfzGM2gC40rcbOG56r8jDSTLv}#;q(gXri>kb2L11Q#7ofc +zcvIE-cQ#ezW(VVn7+mWK#$T1DGb9@6*3bvPg^deImRel +zv00kRnqmtj8iAsOVgRNJo8;zPyRg*#efzxk?!4|snV`&)$xOleH%_Jayu9)(Fe?>Y +zVfvh=#$s~}Trms+Hqw!OIBbi}cs(+^{x!2iliXA6YCYs!y?*SRMF<8%b +zH5;aBn(e*s5%1yu7O6DL<40C^W`nj-PuAwV(Z!j}-vnoJ6xD@lT+ +zoJ5Tl+n^G0b9o@sLf1RbG^H5rzF}r{`G%UAA&8x0i~@`?S}yCq7ggIOl#^mCQvBZB +z3NO2^D(WSE65%li{k8%!pca~>)k;#Dgw~&^^?7!)*KX2iq^X+%X(kbhO3jjBlWj(_ +ztlHT&no>-p(wT&oQUe%DO?vCC6-?Ud^S1LnHt4e7psMVOWRQFO?%Tm>rld?+jHH>F +zjV7j*q_vD&WYMXXh@vVa*od-hRBV>PMPo>4EdoZWLuA#9#eN25<5Mg&NQ;+jsWqcS +zGQ8^Ta^~Q#M4~Vzy1Cnl`A`Ha4Ww +zX{ZWiWi5=Ah>}@iwTUcfs~V*(jTsAazZ35^y=G*F!bpUMy|)qfyH|X=q_n1^21vwj +zmbjZnwHwDY%CCi7LiE+!X-~=R%HuUUWMzOz2vDQ~NKyi<#i-gc7{o8Aj9=E7m(?r^>>SUiN(HZXgjV|bB-?3J#U4d>dr>26!~_|ci`^`cff4b +z5lQwFv}NJTyGP$0BbTNjtEIKm-=AjYbc_gV&ibQ~dhv_j3E>>$F53M1?zP4NpI!qh +ztIskdg!}ARDIsE{(_2<;Nt&fhN=Ezbx*FOhCR8jI_xA4cv1u)Sr*=EKHDuapZIs2T +zFz{WA4hIf?AKQ1$YtNsZdi2I~P}^@IMK+pgh?~pFi6E>7 +z015*sDM*{<5Ntc)%VEmc#~?;pnKET*X|=L3KrMhO0JduQ(zh{ +z8dyx_NMKG-gs_H9Nd!VANsWMlNeW>RQVJk415GiBQD_oV3Co)+?&4Q{6Qj*CVY$n+> +zSVFRq6(wMpWF!TKh{RN6)EY=hMrI@>2+cCel?jC+NYN!=kqs2nC7HHNkSJ_Wp=QHO +zi4`{1X|1F&87UJ=SV*HKEK6q7Dwblcx#mWqpbu$7C8QCjd~(b(C6y^6Sxrrilhb`J +zUC$QP)1JoCa^`0RRJ^YA(N&nmvq7Sh7`Ly7r#;L7$)#7HQj%GiwR)*)JiF$_vm-&hE`LN*E+Il)6_d2^RCZ_1+%5vRfn& +zNRop@6N7aLy+uuFhD8iK9{DdKj5VN~dc|I;RTgrT=|CXU4Zw_TjauGCYfVJsrj4jU +zo!iTxp`ljDq);CZImr^DnMvJw^7ZG(zg|?qQj;Y%$|Pzwk~E=~noOlYG`7l&k!Q=8 +z#S%eDn3%L^G8Sc$Opw!T1jx~mi`$o}S4oYFOsg7$XoXFKXh_@M>(4h>sfN0}_q*3I +zu#4ZqJI|Z9FL!jMVz!1r+A&F>O%jr1r8SbqsH{fCnlGO@zI}NpOsy=TR+VBXq-!Cu +zE#pnL)|6uL37H@Xjws5;%QMbxxLBi8MO4kJDO)z%5~gj9W@!}>LT1@U#=;Q-!mOgu +zBoLDX2yI8to6Q?y(ln%-NMb}vpwpKl1ZNWT^lJq*@q&UyWI=~kk10l=d1A!VV+ss| +ztyl=Bm9wU+5fnFDbg3y5QjLmJmfX`zW_j1m*PdShGy&O_QnmQq*7dsMcdooGNUYk5 +z5Z+DIv5Rx(tGj%A_v&Z?T0tm8DMX&@#zql?G+v<@AX +z7M#fKPZKRn|iKI8vrgcaH;G+zx!iW&aq+tYrk&p>Lng2KVzhi&7&%OJ?2k!pM +zD1rY-o)4qOB>n%!&wYIF{{nbCKcy|E4qV*JD5oQXtfs0mq%EKG+_1ke?T30scepa9 +z+ve<|7TqdthV)kjnRu|PpZWMu;oD2gT?kAp|FF(goYWUrbscIpaljBY0;%Bt-Q)c~ +z?0h%?PKhlnob#w3{tbU)vEk!BKCWwrU2))V{sn{TKpmrU{JFgd3I&3b&~Uq1=whD} +zB}@|0Nh~;FHp=T*l{49x$m~WYf384cVZNsvBjn>lID(EbHo1`2r>Nnzyw+AG9JNbs +z7US&WGTGEFloF-ro9r}SiD+8IP= +zhdG6@?p*{pD5w!`<|l-zZDY>v=*VfdRFjBG85<_4oHDhUw>jK)p@wd@EJ4t*4W_vb +z*CVZv#&epkI0`qk%wtzOw0F_pU9}g6a?ofULIXJOmJ72;zjLs)sR}yg +zw1f%<7ua3Lc5_6h^6q_vqi(Ti`Uc3+U7G1Vv$oi;b~lRUB`Q`x +z`)=&}LBMH;#(1Y5D`&qdfcF7}@11yQaX37->OQSR$C +zIHpM3I55M^Ad)PF>$MU<)UdGyDqbO_J$%Sz=%{#_S(V<8D~#Z5V$#Y}qETkdC4g}W +zk&F)PjN(OcgJ^Hom9uRPw`D$!wtAW%eEmI7Obxk*Xy}zuFeD>9f?gHhoIN~F<#9MH +z#&F{zo|QSNOnhWX2REj(BGYwptJ!+#=8P7gjC!!CuGqcaB{`4|Cl!V4E)$aXrb7%m +z5XCkTi`!2gSF~}$%u|M2zgBAC*JfQ6{H?3u1S3VV0qczO)Sf6_$oJ*5z?u}5(?@3IWJIK>Vm?@mM&g;IW +zuT;Z5K6iu5I+&bi8Rrh%+Eel~5)hE$; +z1DYWq5Jiw6TexJsW3td5==S$n|LY<>Aq4o_^(c@1P^GE=v?PVJB!QS55k657pgV~i +zb4fJ#Qn@9!ku2`J*45+MDm8MAMUB4Zz5U+n#Aq#wv8b)>xvfPBV%jPyD8VdCMX0o8 +z$wP|YYuwu!ugSj)RL4BcDWbt)77HSWZf0VF(xSeo*DG^I(V{4;F73$LWu+6Hnq&s& +zHo105M3yp_ydZ;Yg@eA+os(}W8n1q??&`h{+*1PeQqow|Mg<>C!Jf57>oA0<1xm$H +zmpiT3OMsHyySAaLrZ#X<8tZFPC9ty5SH$SNVcJoO@$l{H_t>rF4AdoprS52z3l%GR +zw%Th%L`_R06;Lq8)2}CjNe8KMx6HjaOiSZ!Z+`0ZE7Nlnm6_vm^^FoD9B496C#2^C +zvr&>oIz?(ox4_X!Ihetsd;j_b(stxT|men!25$GR2B~!Hk3#uqiMvMlRB8X +zWKmcwiY$Z$4_6EVoaMExg%9)i#_6yS@WQbd)YF$F@^d|7MMaujmBA8d+fl6%8*`>= +z_Y}=CNnF=*;*>Hknjq)cIC*MXtx~5no?M@*fz|=h1h;U(M3Z+cWIZIp|h9t}mXwfEC +zmew3^C|H81ih0;xi$#KWsAP=Eb>^y(Q9?C?d{=d-ELhXdxnp4%&u&L9qN?Vo)yn0H +zq~%>D-Mcq5vXrHbWYVOI-d{b^V|)#7OHpgg+AZSW$MxHK`ng2bO}-~F5kjPztflDg +zsHs1U_vX82*}k~$RZcL@YZjJ_M~!ElY1X8@Q}Z}@blYf}!1dyaA_=K17y{DxL5JJ1 +ztrMOm3TIuNG0s;43?wPa+Jh3KAjMOo?rjXK8n(web>5ok=Gtx_W7Lz(k}J{!-Ojw% +zU3YIKcbhUMp^_`Q%0{Y=HykE?`L=+>nBxN#A%tHhxM?FLB14u-5hZsm8aF*vmyJb= +znYu<)j1bLrDHawoq2yZPtfM~P_{B_n(32i44E+`VyiMBC8V`d=;>^rFwN<7zHV$flB#zJF^}9VXFQ(#0-~4}3 +z;MyOb_o?&u`OTnLLh-|iP7Ya`IT@jTlIo9@RQivbyfjf^ +zm@jO~sSV=E9YT1xg?2_LzW47(`d$rdKD}6DT>gk0--<{D>l?qJ7|>1_DS| +z#ezWB^f#8i?!gItPb?mO$jqC77p+l)Z1H~-7y6*@5i$B{x*h$UgT0rN&)MMqdOc*_ +zP>n0*t+W59`v3FvWOKY&LXgWh$0*~J;TYD9ZaR0)b=Zs3jsFV^KaNS>s(m<&7{!f2#=~@_KgF;U>{t;}HWG9tt7ENJMNHZY@qrqPW2|Rf3jB9*@i=s4mLhLCjZ+XV? +zJ58KCY*`VCNJLSLF{5d=m1l1(1qI0Lqg=8=``e4gxMpSg&H41>&osx{d1_qDsVeF9 +z&4={$%F`Gi)@ntBU9$sQ^_=gRdq7nWj*ST^KG?z`X1MF5VOq1}{P2#~kkqIX1t+Bq +z98b*#NRI?ZOvK;3`f|);DI`lq!Jn>KHeVxyE~37gX!|yQ6*5-<2hSf7J@2_{!6R}?CaWH +z37X9l3&%ET4ZF*d`(<64}Y@7V7S$p>_XraD-S +z6hI%m2TyG$ISokkzPZ!|EAQ^XJ4weQ1`vnn^_>W~fYl#d?JzC2aN~=#8%X*uMkVPL +z>39Q1fB=d^_Fw;WWC=&@kKS5|DM(Hs8dd*{dcqD#wMvvLs4}5i8m*&S8jYw7R*ghz +z-i3botA@9Vxw&fTaM6G?0iSx>t2VE>TkTrmU3**xr3{gzP2^KhlqFI$fNd6y_cpD} +zZGy(d6+%U}(zca9v8@agVvqfw-2kVX`;DLJ%dY#pRS%Vu3jXAi`p`c1FT#HXgg_(% +z*n036?(xg;D_Ts`X9NA8&wva3=)elE?)oafAXyW+0|68D1PF5lQ*0OGQ4b1+_5D@z +zSVaDwuhjk=NmuX0KR5Zm^nc87qW>ZKxc>i^>c7YTiko*oKZ<#KoB*T#nMP!U1ExtI +zO8=_*zVSo-1;1fGi~qED<^OeiKI#0a0MTZGB+)^Nry;Y +z=i)nu(*F_q2WpZutfONl))`_W8}B0qBP1(X=JPvDw%ky#^TwcY+}T +zq%&X`e%864vxX0f1MjezRWJz?dKXVong@Fu=pf$l3cMylK?Dl(FgWiOw7s!m*;TD! +z25;>0(m$e79~N(#{Qd3Mh!hS6#`eyz5I-4AQX1h7(Ov#=%_KoU0FelwN8IaDP*iN1 +z5K6ThVN%cPevkVNWv~43JBT5O2&HB0FXs=rQ}+a-KZCLM5vor3=P{mRt8eL__JBC- +za7gd-e;Nwi^8YbjQE?Ikk>;Qc$nh>190*IEj{RtaA_Gu8?UJvR>mj@aBhtd6WGap1 +zGCZS2%v6$q*q2NhA*)}u!P$}jY!;jy*-+X+p(~V~B|tJAYXr{>Fq3&WsB5K?Z3`4Z +z%eE?W-|XwQr0$n*j%-Qk3yJh3DaL#3yY?{ECn7HB{&!yYq|CII?1kf^uYbjy*Ai5)sF9f=F{D` +z8-d@m8D&*dQ~vuPL?n_$5Q#vkCPI%Zm)7^#Fo)y!(dCrH;)V`{Ik620?cC!WiU=U9 +zD0Kb!|1jULs7J&vq}&hp_V0{8qtiDQ?o2c&t9qYZQRWja_S);Gi-wrx)n4&L(@0(g +znLWoJhL!AF{tE}?< +z+>TOlqy-GkC+;8^C}f35l@7W84%;{bvCI)-{OhIHjvWVNMJ`=2hxm23$dFAF{&W@g +z`Lq1JcF@(fb8DClXZ7*mH+%qWM;5&vu3@Z-makfzqJ>Dr4u13bexV}`kVkG6Ser?V +zZL?`}u^gdUmjnH>ja7n2%_F^95uO5tG}4IyP$PXjW|!y#l7uAqd|lKB>}EN6jU0$V +zF@v)bj1c$s0h5S0Vb~P>ezI<#WSfHraiFvZ#b**mLC=){Ag;=@A>cJiko5K}*))LY +z?)qW@-G#RlmdF5xgpI^8ggJ*gYS0*yQ3_|Kj1W|=&(W3K8Ms4OTw|>u;HAGUJzc3F +zR=^@Ah3c?tNQ*Sd`ac2#kQ>8#Rrv$c-M68`{k(%>V3wpBWTAm7EDDwuQQ(uR9gq6H +zX*t8^{G#w){gQZn$l)TiP7iaR`5lsUeO||NydZ;^Qo^gP4@g|V-okqd^+A+7QW)+5 +zgajE4C-waPG5;8Tz@ro4ET^Ev#6GBV`~P@P;lg~0f2`@e3Xl2yK5x-NcwG6J14khdE9l(7h?EQbOoLKa2V2VHo1<~s$2WD@zsDr9E +z)i4-4L)3ugt{)&PF-4zuyYBj|KHuz1;wU|V58OV`;Cq6qVZ>lA`VM35*T}d4r%F%> +zkUafNB8i#+^dVq?H2Pc~-2g`X{czAB%^2?0p8M~}J>Y^q9_?cWIl=b#NyMrUL=xwu~O3kzK=U!dLxqAv+sxQ!7Uq~NG +z-BTQMZ!Ya7&p;2zkHi7FMnhn#8<=#sdNisPNGEoh+CUYwQK^p{$eXdwiEsWfw8){Z +zHz9>KVhr`3a{Pt%sHXz#r9Rj_9#(W-JdFQWNQP^%)Qovva=EEE) +z‎i_9wWo#28gD;Zg1J+t!d+f=euV6AxWoc7K4q5PoEBOHmb0|sD{HMkK49oljX +zV0!lo+5%)_T19v6oJT^8ot-XC6IpsNo)U;p`OyRvj(EPu(iRUA41Ki2bM6m<(Y#_d +zegh!6UCzd@64(P16IJ$@cGr{QmwCqd=DTsza3L)tlzaury355!A?d?t{Eu}Jp<0De +z7SlYQ5;MOTTKVl#dBilJE*eBnC7M0fkrA(j&5VSEdU2y2FT~zOC?n861xe3oNr|Ngg +zLhd>@j9CceHXy+cA#u97iEn1j=HOa;UU91pnR(J%=0Okzqjx~6XwKHyn&2EC1$%j8+PaA;mMV9uadTeAgWk*J0Ytys2w|(B6n|^qn +z#3p%$4^MqUR*Fd3+^J`w3GwGzEZMo01{N?G-f^p-TKPdQJRcC_x2eyTZ8Mas5M-se +zR2=CXtgV*(27qHq)omIJ(7a?AHu~`|ob5isd7^8(bsZ0nk$LBDK|sErAgdZ%IQs&Y +z(7V1WzJ0sPzlIYxd|!R><$x2wTU$Dbdr{L#w9j^TN +z)P%Y`mozy?j=ooCrRQtQmM!DL=k1N{9I|@CtZe$fdeG^HEo{iEHH=+Bu$%$P(cP%5 +zg~6!x5HVDbQ*PCUp#+JltplJFoA^hG}V;j#R!Gq +z7l?R=&hcbT=o?bmVjVJ)4K|NHTk)WyKMO<+dtrE+A?GLFGWl$soDV5KQ6uF^0udrS +z{D=A@x#XR-nKEQjiprKXK7()c{_Oq^?kcDaN%Z&YU0|xBs;P)NwS@f0N`Nepa%9V_ +zqK;?lSLWMXZL1!TAKl-#;2V9*2QQk2{{pK=eI$}i^z|?!5v4Dk4W&KDejmNQe@vd& +z&(GY(KR@kt$d_DKh_IEP7Y$;B2+Da5e<`VDSDV`~YEC8K*3R +zB*}pTVsEsYIuc$QLHe^B!Whtb1jNvOlj%w0Pbby)u4-mL6wHN+hkog|#f>l#VIZfx +zGw&jtNR8#T+kBW0I`M>pFhB$lK@djg5j33rInwd%{nqjIT!mODbdsELg{6HP(D%_+ +zd5WFuK&HPRY~|$sj-CJ(CjW2kW6`j_QzmL +zf??3n4tUCwqTDGydyMNmDm)U%@X&v!!(;A(jkn0W>dPtJoO&)`$t3?zC+qE*Hz86^ +zLo1wvgD^=1fQ%jRXo5z-{tf=<+4ptMA0Q`znEw+FV+Y@S^`-Z<@@w+*8-#~u +zSlbB9u1%-X--*vnY99)!9;e;$?rRlQSR!DMf*OF6@4PQiL-JlYS?~M+`bX0uUPMvH +zyp`Bazh`KXCMaW1js)P~go;S|Sf7wWo%p}(Y}nDJeRd-rh@OU5@fdgxCRv +zfe0{^VJ8JYXgX=I(tdQC$s&rYBu~lidyixlhtmJ0w2y^G?Vrr=9v9q=ZVw#d)e1>7kk^<~+g+$Xh3>-6IZ>uOBlW)FL_>&l$T__W~ +zgnm(s#11T3J2cVhn?OZ2;2Akp`ArY{ia@p8E8p>z*#D9eb!XyWjY-vP2 +zGyD`X%a60)&oo=0tcu~{%o2+XkVg8y-8U-|9`^+#Q$f;CKm#_oWD +zxq$t)0ty{&XfqdRwbOZA9swvSqu!?Fhxf&hp=J1Z>;eLjYzh3>!AdR7zC$o6=fm>--yA;I60otQ +zil@hKmi;YGp4R^(*(ZN_%ZFWlMQT>qil3|XhR5j(*W5eZUdrO-!7-0*uo>(In}z`* +zf(+U8jNo8`ya%UP`y?J4`15E!%r_BtL*K~m&5nJjucM%vl0M8bN&+R4s3NE$k~1OQbHiz{BJ1{Jp?c@W~IWIOpW@=p!=y@Ca@eeaL*g +zm&I}Et?C|0FtItm+l9x-URc?w!bfHwu?Y=^7YK_0tw~Db2TKn?*DW)x8|Kgp)WHVA +zFxn4sjag-hBPoNlJ3|6{YdC>FESXyenxqg? +zC~qK)!^dE3#BxF+q3TG0!J0#%3F8PW#?`!z;u*M)6Shj_`-LQr&{@nIsQtA=f9M +zE(s%VnGJvvkefHgR7M2ZiX?eJBlva?e-4di0OzcC7vLYMz+__akXi_*oaqtRBPhYo +zD*Yi6eiwK>FZ;sE&v>MwIfMZ25z>&5OYHv*krs_6GWLQTMfzBUDw>Y+R7lFg3tSK)C@Fkat1LfQjzLKF+M4PloSkq$D~N +z^AY}@{4XQ!GN~o|9fB!9r`vp*vce61=tA{fh}3%hezDgPA6Yeba(Xt1i2XS|ySfE7 +zen`~`u*D41jdz^uMvwvJxez-b*OQ$Dlo+p32wmzZ1VB&$T)j%R^5HSgM3Lu2nB7dJ +zgJ$BK1<~CJaiz=BGb^_q+DjZL_~mjt +z;}y4RbQ#=yX2L7G;L-vhWUX-Vzt^lZ>-J;_hKw-8EI4W)G9GdCK?P*MBvKrSqD1d2%nFltSZq(~39se(ZJfzC9` +zPXB54%0gLUDz(iIL$bUuj;{p=_ +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 +zN#?MX6UG(UP9xC(#pTz7 +zbVa0DC_w=xxv-4N< +z0_X{P1zf}L5_kCe*3<9met#$VL-P|WlT2SDuyPM?UtgLC*#Xtn)33|`O+d205+!!K +zP{U>}<`8D%NS-pk3vRELh8?)XZar6aq$3P7dc*oVJNw#WrKb1Eq+#jYHb?2>r1c-a +zYah8&>FgcE_x8*%*~@l)Dnv;EkJ9+~1{ZlG{C{Vw_G#6O>2O&wONpv;=!AnUT<)2w&(}?rZM$))xS@dxAbzu(NDKOyH8lPYgc!A!VrWgake-a +z3$W>%=K0lz9y&8#dYR+7h{e(~j_@nBcGcXgh4OKDb1>9u4n4oi@7_Hl^BtCsRrdJ> +zN6Z2LVUB_I9WDa=EFzAh+3pYPN0LZH568GPRL04ExNo1_;gX1NQJzE59=QM@kJ_!{ +z(awVEO$^xHJEb8J@#*2?sQjdJsvgg%KhaNvP01QNEen1@?FlzHTAW-o>YrFRcq-N$ +zm^w1VV(m!H3jbqE@`7ZZndu0&)Q<%t=buS~+gCRjCzD+x-*+eD2@7N^nNyG%wfjJxF;YhwFK9 +z&2;YQI5A7dre6*n8IBYdR$NBkgt=cKm=cap2ZPs-t&5l$b=BMq#CrIM4vDhZ75cOPoG8yw`1ZPsQ(kTc{i4I1(&*ux3v2fJr;dZkg10Xwhz|5`IX=fpCMB5G>mbU@qm>*4| +zva(^=DO{`H9(^Na{4Qu$9C&3+c1I%{y9L{HY%Lo@Y$<$?bJ1tUOr?W~szIA{a`eZv +zb~WPaFFfCbGQu}t-FC!hcAO|9ePkW&zoW@>c=p-jsJy!PXXk*eH@?_tpOmj#pVSXr27eD2mgb8`&? +zHY~1-!Gf0mBl4%J_{TlaHV6a;*w?Nqbld66W;U|0sNoqwMs~|=vXGnZxwgU=2DX%d +zzPi%r-SL?n+XhG&+;{ATtH}w@S?y4JrZJso$GPiRHH4IZKB5MqmIHWtj9t#v1R~p? +zVcL-)ppRsytYR5K?xYY=v$-Db>Gt+Z)iJ)?`ego{F43QtTlDa*4d1`lZdlMzQR|)i +z;Rnum>B%*+?Y`?m;_C_Wx&hVWZV`CR-Bv?(SI+4*T6cu~Yh-1t;eHYph@>c;m}dqV +zA*@4Sr=8Ds>CWvpdnT~o9;*FEhGY)HNc7APn1T82Sj2C{0qL$KDR;3>D(nLysGmhT +z(zB{cPJQndbvhnz^@r{l#88Bl2@+PRBvgbyrUwFmex23Sl-LBA+7Qz~*)v*dS&a>& +zMA|k@6qGiKGANd6DKf<=Gc!vHXvh_$+7yFWvJsS}iTzr-yGYd3+9WCX-L8ujn|`mj +zzd_}&7(?MJ;T1p|^cMj|Ig;v8!DdUmuxc!kWi$a`$8w8&u@Okr*8A|BvaMwKr>;>R253JXq-&}bh1L8W}!P!O$0z8jJ%DN9j+ +zov<@1f}bb?+ic=6^VaWNJ+Ke*vdlZpFF2tZN +z|6Av{_WxVawnIv`FoY*dnbg5W9Sb-mn{vjxU&o^iIy0kljZ6%HyWaM`EeJHyWgMsq#=w@Nj{#)TO|CeU&!)N@$ +zNe9jtfD%3=p!+%JEXK+gn*SU+r{AtVv0y3weHJ3!2MuSTClq4R?g^_VO)d; +z_Iv$&dbn1usO+vxCx+IAeP@@hkkmt}Kb{#^07m-+0=mbCeITX)_X=bK#B@kJJ|SHT +z?SZy~Zs7v|%Z;;+ +zH(iG_IGs$ +z?dE>ukMoRpd7jWu%r2siEaF>$30Zm|4(OdizY;^B<0b9XJxpZZ@C|# +zFdh3Yj|Typ&;fB}U5!14@<*CN=%q1t4ZaB-u2`77V*&&_hsly0EXlX;`$6e}`rXxh;J1ipp>zraD2WZ??bneuz!{ +zL+Wh&z4f~Ak6lk((;eINu^o(zAPf?N#=sctkDq9|gkm-!bv18&0gr$kbs%Lk84`B0 +z2~IZaLPkQaFYeAdFw{B>d%LL-gkAj1aYP&WL`WuKA4ZVaGHnG$gQNx(>=zNm#Sj}r +zA#0*2B$yOK0U>lB7u!jjH-`_1Qak(_my)>bf>s^hVn*A{z-CCgI?FC2UMjeZ0 +zc<^a<(66%w9k6u|MnaS*Qm=?50relJ<_T~|_JRlK0EGTOZ{(lTI*>k^KanOY$ca6AWv8%S{K#sOat=KNp}2p +zmjYm{7ILE75^rS#xe&7f90x5ntX0EF%LAU2;t_QOY{3SWn`-G)2|*zuKVgUP +zBal)hDP6c--s~Mfoek5d9fF=H90GM9=z|!{7{F#T)P`Vk)MbKb$|WP5)*>pjhK-3U +z-vcR!4&3zyLrXA!4X>nh6L+~7H$dgBG*pE_PP(Qh=Nm4^9eCi~2w&1b?snlYf^!oH +zVhM+SmgC4Dgr8nx%>!|I$)~+GQ0NiW?oSJsXPO<*6t0DIo*^8AnC%2>v{pgRT|(6~ +zMw?422-+GEXFU+sjRu(6K@)>oO`$s`k4Lt5S`I^;#})H~z3k$yEQu`ZE=WQ`LPkwE +zRPZ>;8`4fu%teO-M2xi!D->W*qawrsOhzZy8hRIMg4XDc +zz~JlwrdLGJytWf%4}h2Mcb>0ECEsARNast1ojF4{zJ%L&qhohgwWcmgH;jp()Ecr) +zM5!v6NSHkH#^`S1WE?E_^mLdOi=Fh^1!z2hc$Ei+r5x;FpSQwL(0B-D!)Uq?yoDvt +zNK;E_3!s{_*c=QS|+P=$?RP=;MzZk6%cU)lyXn +z3XuM#Zy&$?r!b%GlM-N6u&yaMturQnUQ4M^){+?us7#YAAmpPi +zvKK(w3xvp8P}=K5iBLoy6gp0r%#=8x1}Kj}@g8A6*?1=t^CX~0<>Vh)1NGeBG$gz( +z1QED6A0*&Uka6ZAs7GNap2&f3qd)>QZKKxD;t7bqz77l99^#(@z#DN3-PYs+e~(NX +zBM2y=?-D?KK8#vMebCMXABqB0r{`KBb260W337}@?7uJ5cC~clq_oCB>7e@rkLTb&VUR%qFbEcsI}%N7?$17oZr5I2 +zJh|m!?Q$1lTY?gYw1R@6~J%WGG_DKiXdyAJ|O)aw94ivRD`f>E{ +zzYn3kNHLcioVYh#SBA#zj? +zgE$!D2;&R#r3n90qI4BxtgM8Oj}%fIwyIB%{;%rzzWMkU_WtkrKdQ?F +z9fP_A3ju~tf%7&0(_gL2db1b0asvJU{uwlssYsv~%0h&|nas%i{AtvzQ7J$~gb=in +zBt#Z0I2O_rq>SS>3 +zhfhj{acC5W`+lDQ{!eegE{vm`AMFduBZOwDUj6wh;0fm{k@1!=w4!GpRUjE3b +zjUw_SHrgk{z@Pd*pnSwrf7HB|0$@Y4x+*@^E({&V!e$4C_8Umpr@wzL&u_P;aum56 +zJJuSACT)WxHXuDi-^epxCOmc$C(_Nu5LpX23OE|qr71@C5#7}=<(d%E`(O8e#Z&f+ +zv9Yutsryr`6?t|JUHm=&KP}#JQ%Tbe>M@C-wZdvPB;9+@)@uN~h0JK^Ex+}P5hw%b +zW{=g({#!$5jnyk>Xf3rJSc@0{IbC5nZWy*;SVIm`fSM#kCO0H(i#Bb#+p9y0ET_0Pjjw`?h=x0OG!dQOdiPFy5I1~}uU`G^7K9w-f<_VAIeeLVvcZ_j#edLP0e{51g! +zK}|H0vSlpFApxQ$sG#UxttWhQ*)(FLnNV2>%uJIBgM$F}{S3i59mMDWrrWxQfRo~C +zZ8*F@f?i!vcQ7+=%VJbY6ce>#eYAd&zuqY?nZ8WE=) +zUzXK3r*ClI7`zEV3|j1Xe*8~wgRFDjNt(HmxI9@KSsZ#m;E>=%(6#v>@$-C)$-W>$ +zbpQE%;>}vh)pbxyvPQ6oP;5mN$S*3Gxvx6Jd)-&x@Ap+zQO31HXop?dRA<|(Jp9dy +zKdwKaAU3^L8?Q9ur${P-^uyA4xk24`0lBV2MG}<%3fwJ0yD>J4CfUl`)*}aKO{Vpa +zYwE8ZT{&$<8CsfGbbJH1tn=tHI$%*U6@#U5d5BG>t{4BPfYVROU9z2 +z?Y@ms9{v6TpJ;YddaKJGbVj2B3Ty2;8fWGXG762O6bf(q$d(}VvV>?XMoJ6anS +zjLyTgG&LJi2IG3By-eR{V4@U?5oL;p=@qtU^6uuJTnX#K;vl!`P%;Gf7drZD=GD2ta8dcb +zK3!LiXKc!^A3t9@=VrzcoVdoz?vz($&b57pn3KC~p9W!=%5waqzF#2**keF9v}qvA +zL=X?tN`tmzMT3Nu*RWWIC{I*$yiZ`EI#TswZn}?s?12uhg6sk;^{v2aI)Ehs6FuFX +ztNDJR`rtCgVJ3%MQ+e@g2-MlC-NG?{@+w+J_kdSlyCxI=m{C*2MA5K|y;-KFLTJiA +z?-G<*z0tI8duN?||CS=K7qEZw>w5N2XIB9{h}UN42^*Dew-#n#;xYcJKP9G&2kM6* +z{GmFCMMe;c;1$i!?tjPkh3C^|%`(41qvj5A*OU3xrO{g|xKq#7#;cXzU2|XN`h5#y +z&W1p1=G^8F{q7wR??KRXBg4oxMx$>gy?ITrL5Q!1L7n0Ri2n$Gpt5m=PG_YWeLklK +z#3T3eK|jy<|Bje{CH>O%?-$=Fro}+OWNvvzMlebt4l=%!ac+-%1oV*q8&&dcFfhfV +z7lW{5HZ&95B!uLwqbr!TQ)SfL1OU;& +z{m6>PtLNy6J%EF^;0?pfqtByl`nQpw`bHvjT)?X^Kz%_#@w$!jh{U^Ix∨*TwGe +z#ptNorq@{HfZ|9CIie|z$B4=w#kKS5(6h?($Z01Ef$3`ph<}p?3+G`eDMgc%%~E`}tQa +zTNSIdP6#mIiy}Y-=e>%PW2Cqta;>SiQw!99d90n%9iDcmn2+GQ(0^^+^BV@uf0rE$$UttLsGpj%lvUl;I@!{I#kl)_t<;^urU6mdm>=_CMa*XY`J-JcAphpEM|1B{rFBpm=6;gn7ruX&BTSZ`ZbE3*4M +z9vIGdbza5N48gq}A>WV%7^g{X+pkuQkc_s(WzK_`jUCe=1XS~z3gtbT#0w+kLP{xI +z!rA#8caEX6r)1P6x(v1`y(hQpj_)IHprhK&xklRuCjc@4RFHu?5o7_$Xn;(>deJ*0 +z^wI+rVJsYEq=2Ue1ORUH+0a4J0%*GC)r##|1nHMgcQ`_BCFJWIka#u&sR2k-V*#bZ +zUNPNyhz(~0YdM6bP5I{U6A?0{DtcvS#^t +zJ!61p08tZ?EUCqT7%qee?@o|J4%AQA06O=|2>xFGvYccIjy5m7ht8k&`yaHx^E|U& +z9=!%a2~a8aZ69vv_}{i~6q2K88oAs}JFXlj5q-}aKc3+3M*E=n2-7cCcU7s8%RfcW +z#zJ?!uxpR^na5h=++8*}qrbe2Em$*;G3-B$BxPWCi?7A;C0w?w|n +z@_UumOtjwOIYO$}$SbC6aGblN7|?*iFwQiBXs2;U^X4018Vr>w&sbpw-#E`OuV_{b +zIqDr*isS+eGRT3O)jPJC)wW(VTvoRUZB=_*DG`o)5Khs)>2^Qb_^XEAUYqZfwzEL8 +z;Ij8XXQW?9X*iWxj(NRjJFUiAv?~e8gHmt4wWDWs1Ytd!#78!WeD_9huODD|EHl`( +zQRdj=4xk3~2R3&C8!*&L8LR76Oq&Hfgubenun~mdMXXHrjO`-to3-1YTdxCEwwNo_$drd+!}hQaMI_ +zJPy4xeYY#-ILrK4uu!u+_C|#(krKca +zlTx^ElW6aha~W{1cm~USDID;FjDo=fv(BH-bb)j+YIl465y=_G>B1Df#8eQ`zLZP^ +z`|GB$!uZDt$TXFlGQM}l_hS}*ZYm%l7&!FoqLgiE)~(+L^r`GxxViGaTb=yZj%R1r +zj&J;dna#RhDR#}^b%lRY=~8ERBm|>=yIf-i@uc@C4z$}C21+c>pD14erp&W?Of;C* +z>>&Xe`&@~{cSo`(4@j1H!>Ea`!H^pZ=(+6-rXJ08^nH3xdF?rZZBx_|Ki +zr744}bEf_mzI&TY1E`JIdSLPC6lc0Q2W^|o5=F3n_-wZ~s@FdJFufh+VT?K_5Mwdp +zSYeMLDX&C_U)Qj0K*}TrOo#XH_E`vB%-`*-XU^^3NZyP#CVF;!9bD8t>2iN-yO8PRR%fJ-`3mp3@nFvrRZS*7@L%WT0&6l +z5xOwBY3&U@5($9)`VNrd&*Lts`HB0I{MX4(=z# +ziMLl|S6pj;Hsryg0NH?d41y8h;+xtFlsD0!ueV24Jqlo9TdNL9kdLQljb +z9LX4{B;Qt$qcBwGbp%J9n8g7E=olh=Py~BXlsLI3r=g7pLliY>Ex9zeE=A#zTlHL& +z;SA^HfDK|ID-vPL$|~bObNnG$20*A?*v_{};|3lu8Td!OVldmesyy+p%hA_=S1(^* +zzphw$^VH=7w!3G;I``n?x9Ov>_S;N9Tp{5JjO@r1M?4gfY$=KI;$#LgobK1zP)9Lt +zw%V$aJMey%k|7hOZ{P0i7v|~0_s0FOdFXYk>D +z{b&nrg;4x=ZQrr~vHku(5CzB}z+4QWltHC5M6Cu1rCkgBfe&9^q9l5pmLBBA?_ykb +zpcsa4gOd~}A^j~r_B_s8N%@nIANO(pD*xcXQcEz9AxNLJfpC~Z_=r#ZC-{`eK&+XM +z_}VK1RuV)0|M4tM5{3eyw-_NyLK+QdH>5?T5wQzohE`;&ag`CO8W{+%s1*q-1Gfee +z%3C3S!Mj?DmYZaXiod<r&Fv{n>Wyzb{Kl|canMhp;zV@e2jY8u*=3{bvo +zkm1dzgzFmV0YFovv4qK!3>cEK7O+?;EK!WD{gyx|=Ey9xgsC{lPSD6qiV};G?OL!G +zgoh>y8Zopt1osR3<_kKsar(LLCeZ87lOr9AP7H +zu_K+0SPd3i72L$tZ$UXMf4u$Y&-1I+{+I4g)Ac+M{ywmX*A9=pCnl3eKDo+0zCWH3 +zq>NI{GA>K-BpoP#2`m03{*L4P-_-Zt>bFnVe!Kc%VpuA+jqQpO?evo#`)>U$SpMP} +ziX!obVaM1}C=ZK^KVR_?K?bp{r{NzR?q*)yByJ?W=6Ryo-@9ilQsLy?N& +zfJ(3NW6|dVY#;lMicEI_BMR@vL|A6%I13S^v!IbawD6LDFMYFb55-?6my~~A$Mus! +zPb2!_^pV=gj>m!Pf21b~)*iaRs2vifN^}sLS^o5>_7;Ckat9(;!3xB-BDti%`9>Qy +zK2v*XSz+8~%2aJ6&hR*8Jd=eyRqkE6rm7lZfHwo0^6xiOVDVlTx!HXesPhiA%69t{ +zP&5->FN~d}bq`4CHex}tx=HkYD~#G3LBvg+q3^7Y&q*?JlTghbiRGRa#!C&x^(b&V +z$tb8wLeicH9Oa6ju}LXNqL8AKndPTS%Jjx8fmKTvqnaC(r_sCDF&xgRscgZD(|DtS +z4IRCD5n-GFo=SMY50tMXxr!)N1G1oWLKmxq8K=P$kN&qRuXr803Xb#HT9Q(dv^3{7 +zL(Dp{lX*1|RN6}>7-~pUX<9at#x5s^LIfrAN6bFJ#N)T_K>0z;0zfwB58n=$A|hg{ +zFQewK=#8F<-w!??S-;+2Y@NfIWcp<3BmSWd2LlsQ#Ul&YkYAbjo2va8@;N-j`(l)) +zB9!|Bpsy#-+y@hgJ$(;shUv7U`(_h|A}xzy&G(e* +zpDDM=+HoY*k_RP%&78;_zJ(SleHW@=o%@=EJ21W=Cx;F6l{?(Sz_L|!5hf5H>yX-* +z4;18pqIC~8C654lpJJrK4fa9c*dvHMClgB+H+5i5LZR18kp9BNb2luWgC?YzA*mxk +zb+FKia^)8e?|%bIa&jz34G`o&6^vs~bZ(ub+>Athk3?vv5_3JXkmzyf;HDOYk7h*J +zm%07%{_n4iFU!L}GRyHqm(_#A$?%@}F9R27qgul-vP0%&aQx=OAZtUp9KwB8K|sDo +zH8G#4KQR5_pe)nZ<6o+;^X>W3;ihD4!%Z>HY>YNY*p+)Ig6uhYB5iR|FGeC9Z>osV +zYGydBK3#WFK=u_6F;9B!WS5xSo|O5WWI6q%f# +z==OF|GlK-naDLM=)0s5>JYNPG$L-4H-Cs2h^@e!y#&UIAIyMIT4)v10wZl91OG$1W +z&U7H{+Zsfpy;m8Jyve}d;P~6uO^oup1!ef`y6@(>v0D_^%wDx$mxfyXd-o +z^_>Xca4(^@FbyR}`Sg|}Lg>fE@qKT#alQ&MobhbVUawim%3Zm_tzP+M>&ERIP0`eV +z`p&I#%AR_<8-c(bK!BBnTj&__(!=B!(JS*1hNg~n!;p|-S;97X4)|_-ra~Q||H6A4 +z$k|em2&|E`IG$0o@Z~4Yp!T63dB6lA +z*%e1zflkT;=n4?Ly~!R9UIu0|DwTCusG6@hZyh10W(JBPMixY56PQ0F>THS~Ht2|S +zS55+^$5ASdW9FHy8rBX=mG(g47fJL5I`;>F3DJ9xa69KBWr2gR`41`2h@g3OR5@~@ +zE&>5QMnjn_k>)1GO($u1R}wWBRFzg)VOpD^ligwE%4BSApz>-?Q&MDCyzai0@fB5T +zD)%5=xkC-1k{KiqSGLSnNsNljTbvxEJPiyaoLI*vc{MewaucE*mK~YUohm&fST)VH +zwZb(lDpV;%h#-O_UP!Cg4tuWX>zu-fpCyoy9gr|oL=wzO9U&Vu*9B-=fyxR( +zK$>f+go<&-8eDT6hhgR{5&U@ +zN8%yllYll|1}bt8ARW(|I5=*ziUg;qi7o-jdZ>P$fwCvQPVR(O3E+mxZ46ie?l4D3 +zvuxJAN=~49#MpqXUqfaihYX%aR^Vo3;Ba{shm +z%Dxf=P0Oj+AP(fy+=QOzVNDRPA$x(}78Ak^&Q2h9L43~z0q7bb>O>9(fq>z0O#|6h +zNwR6YxnSE+WHj!B<>^rFSDs={V!9;5=wq#z#S(`Vg~Owza25_K07fJH1R6Q|jrrSrA(Z_w6wiCZUN~gCuOxsV0cxGsJXu +zW@cQgUnpZ9s6PfnbIxw-1HLLrusL*2gawJ`RqhV2@;fDknB05x>M&P#x{KW8-tyZ8Kj0uvH~DvK#-v&dZ9@;Bim%0(hoM52JGl>#JKkz#h=bI9tL0SFVAE(0LJgDD`!%y@*LV`q{U +zqtu3Z;Vx^FmA@>ZdO826qo?P@T&nZg@N`TiXUJCJa&ll^xc8YLAEnqqCth +ziDC&<4I+ani7ARggs>`MCWv%0?858@s9aESNECdH<`JZ!EJ}h|EQKsa)(j{kBt205 +z2h;8}ulBcq_=)HV@afsTj6DW4L8G^1<6^4aKOLRbC$t1aN~2klGROBij;YFYb4JjP +zPE3XN*Uj~><*VAFxbC!AqKYYH3uP^ow)_Ubx=d-Nw3Vz_3ltOU;z_s2lSHDv;os0lA^4 +z6(bZe@P5>uoQ4blggoCMdy({g>U&`KuVm;LkAxmaf_Fa-kr)VmY)($e;G2zzsQ2as +z_`&FS1FZ02H6~1W)HaU^yX0*R&I2MeiuTHrbrv+3EE_z{Lpj4~$y+qP50T*r{0H&D +zUo*1sbPRcu8Y;fFk!(qGK0bdnq3J%JHXjmFC(1=md}4c@$uac_H-IQcAYQ^gM33{2 +zU^Ekln*3E>Vfnoy3e3z8nr5mx=v|Ob$MkHcSHKn$Bt+mrJ(dTbGrc;S3A8lEzAm;8 +za&nPjYDwh{zMFg61dt??&jfvh-o-fswg^7-hzI0)0yW@l^Bayq#W+iZm>_tq0Z7hb +zhr&eX^6Y5<-JXkl6<*09(Q!vv!ZEhK8%Z`A{BEDC{@ae;xeQTg*SlT3{dWAjLb3R` +zTpV;sm=v302gv|P2`YHR1-hbZXMo_ew$yudB@$8~##+b2a8poQ{O=-@a&G +zZ!@-WH=3a^b-c% +zKNvmod+L%ZNiuq18aCKd**8C67%#mIq`>Tl$vxFUXPRR|MLrk!6#z8iCA<+9yMuQaaBs9OBLllH? +zKjMG5{K>(1xM``)P*C&S41W)xSk;Od9KN5+#9ZX{5BWi0#mdVNV`N274z@mN!+ +zq2hfJ4|J>5K;*mux*&2m{#-=DK>6O{uhnE_mRMP2(vQSKKEgT{q#^@o%9Wu&s&~q{ +zmQi1qcDnIz_c80=T0P`IM(*H?l$_epSarL8MiQE$w@W2*p>2YDlFr(&_wq(L8 +z&lc7r)LLvzmfkVcGho`rPc36@)e@9IM4V}ja-Az&=@#uvRCLkPUGBQ7@w}ySC(i5W +z-iEzGI9#r{ZDZ9_!dO1r5_pHiNIm4U*&~O%j$mx#}U=`5f6h +z(-izrOij~I=X3~Z8G+J6OSj9h`NB +zBE^8t<9&c7GM56$Ya>dTXE+}BV91zRKEdnu1Q8@e$kH3(l@u)@B?N%|be@Are~~zj +zHVq(X4tMhfG#&ILu5wesa4#S>O#qgZc2w~m@ZESG4ff=L;*3QQY&~IxMHa~3a7}it +ziO@TaZtC=HH(}d-M0{*8lm|XW99bmkwp$^XQAQ|c7^izE9$gx@*6%zHWTzlJ8jzq= +zfmINzB&sD*RyK)+4d=(rQ!Gm^EEuLLI7@_Re34(sWHE|J`7eSRA4VK%elV1INQZei +zM1GfiJGM#bB$H6OL@^hVIEPs}KH0H7QWgw71K9!}Hhn!r!0!kpL%nmu|u85sn{TmPl#0$|97&XJMO`P25 +z8zma(f%KW}>b~GTRe*wz95EnXD0%ooR +z_mDA7O(0Pb1u~SVb?f;!4uz2Pp}p)Wrdg>bM5xCj-4;Wl#Cgny3A7(j5O(=Eh%}7wIBW!}1>{DWF#WRL6u)}1UjGM5FG#@FFaT`e*ai-{# +zh;Ajq(Xx@sO)VRNX2R$}V)!q)e|fOjw4m2+4oo10iYbCX#Rw)c1tr)!rbBfb#?YTB +zz|^0O_j(d3@X0;)ewi41P@k{#{z4jk$L#x0b@!il>E+eOFDC+;b7(>~{tWnJzmDuS +z>hl_jV8}9^H9}@3Ani>+J#D><_-Oay+TP&NK}(jiD0wFa +zBxr{QI;ZgfLp^Yq?5#FxN~oV75YpphDs# +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 +znOF33JVSy&hz;L+!|nm`=z0awoKGQm5-YBt*( +zWVTmAE%`3!G_^^xscR*Xp$i3487ly+17gT2BuiwtTL={sUpqjVB$m<;;zL%7^1W^=Zg_x~mjzP2qk)hn_vGDRc4g52g%!zzKgkGZgSXi+r$UyJ%^-bqzHnmJt +z5zpaU9^i^3Iu6G^xl6fF)f5ok!Ge7`7}04ht@a=!e8t89*vR9xR67@7?uE7M+uVAm +z*{@&`(c;JuoH0x4-5t*FifF#P1O^#4xSB98IcpwG!PekM0ucXH7+D<9nw)} +zMo4>#Jk!}$o@aUR@yJ@aOfF<_N$;^w5c%6}UJ2_X?nBI*lk}^pqgu8*DXhA~ +zFujtFBWYlsA)9TZb5~|2xXdxjPmS`y2rpzx? +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 +z_NOZc8H8j{YrXZL{q*&Uh +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 +z#0w3?m|fIW1ET^*>gZAoCMm +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 +z3&F_%e +z`C7eJubfbp_3V%jFE-m=QnzWTvZ&L~5HRUeMGyqDFhGF=sF;|5z?jYogi@grLQXK0xDz=jL5q=+TC&KIixC)7BB)VB#Zo{ZVkO5E2_!IO +zSGkiyi%64QB*Cdsq_A5MZ>wuGScqXLM5CpE1{rW6q!I`+iCAIGzziY5l>liRB7+E_ +z7$r^BouCaUNUTDXLPp3&5}}YE#rG@qf^!lOfsn<-@j~QY_i;xL0#Mvsz*S}e1M`>! +zcL;&VJst8Jo4d)ATq(gTKyfPsv{OqBl*7*bDhYuI5D<1{M{z<>6Sq12^VI8GXYVUe;i7m!=q7gT +zIG639P_cJE)9#Kt?Tk&Nbi7f13-D${5v&|D^Cs^k1E{C)KVqLh1(7IP`rq-azguXe +zm?sRxlM^7ZWre_lDU(Hny`H@r1L4O!S%$FrZ$O=Oxb1(&RMJXCZ +zT0tmGgffuYY>u|98rYhCQi{e%ukkv(mQg&fde==DBMI8~_$Ob;fA{*{zuYSNfO)Cf +zN)JtA^FxKi*_H~PgdeWP@fwKbFTEor5fvZ-b+YmKKcAQ>+=mZuv=|^_BqamltM`Gy +z-lO>0!yF18BBr5mI0vf`rof+`rBW7xejP*L{L3frp0L$deuJ#UjU!FeaG^;a<7YVrW7PgBXNb1PDA>RajzIWe^?aAVGhc +z0YE5K5s8Uap$0T4dHVf-MSU8KxIxl!!MQ)+A^JPzX8)ZQe)^e>K*srzpStur;HWRP +zhxi+V7*`wF^~=xvTQBRK51W1Ghc4+{`DDIy9HOBK6jqfDcfQ70%!FV#MfsizV?fvd +z@UYa5;%+cG(OsUQ?g!q!&$tKU9;8Gj8geE+M&?J5I4V8?Cg}6SIetf*ssjzXfJxY*DnKGpflCs$o63y@cwVb`E<}i6;REU~sQOh_ +z2FDQN96^RmlBN}jrlf08`Gk4M1FJYu`2{) +z5pOc+zJYuJGz@5Oeo=%p6r_Y7oFPQ-oP$Jr0(r29%?=zlkqT+a0Wos~LZpBZk5l%0 +z`fIV`oGJT(ISBopQZ9~gf`T9;AXZUmg=ynpO;xm%v=I_WB&cc5PHiLzb1TVoB-c?1RFWY$iiSk8 +z9$3UlxiUoBCa=b13`7kqFf36?ty50nIB-sabpnnzb;J;0W`QG4MqRFm0pp=Y>FeHVOz#w6c +zC6tU)B}JJGP7`<20ypi|-jf6BPZ$dKQHB&{WMyV+-RrkdIg*lY9uJSQ9l{&|A-_>$ +zw`zl}TkfYcd=Y$u%3OEvVwVVz@8mWh!=S^z=!pyPK1JC9G(IAXX@)ZzriyoDsb;;f +z(L@l>9AS}Q<19@j5^uxMMIR3@LdQY^QmM&KRV@<|95Mw6P>IfQNd%CQ2xrs}@W>tD +z3DaQZL{PB}Cu7bKp}+_*#dQW|28tMd(S69gCvtcDO;=PvJPA=YUG5~H&usUtsVitt +zoF=4JkO&Dy_!n7NglSp76Atu7 +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 +zzxQ0SGY`Fp&9FF^;V%Y_ZV_Xbc1M!8CzxpjY< +zSEg7OMN~0d>AL6xoSx}B?R6ub8KY3dd*#qYCyy*LFqnjOyMdRj+Fb-{R|w{zZt>HW +z6x*l<#F2LQr53aSH^kWZUMKQ(To;rn&cxvA57U}1`#QX9cWVVA(tzh +zE#2vKs^lTk&v+f398VQjOK{o_G?5TQoks>|8KE*m&{_ve-6oMoj68+pf{GIXjkeyO +zKVH_aO}?G4nz>^0y`?W+2peN#=Uw4KjUlv#JsHDb)y=BL&{*<@@K)QoBEr-GSUf2= +zi8ig-6vZGy7~~KdQBOp8?)x`+i_u+&DRFu*KjC|$$fghr&k@Xr# +zgad%ER8C#@X^hT5=;pojpgk>5tD-8m4 +z^{HhKy>!#n(YC40l=AXY(QVD!7G>Vv6kYCN +ztRtZob4`w6u71vIlk1WaA-o45JkPtDE`$+XaR5n3RI?NaAdo%Ci&-tSM5mpYb4W}= +z(E7o^5;8IRZ>O=2S1zWqm{p5JYfe^uXzjWj2ppYAKJ6a{WS(HHy#~wy@z&~O^R6B0 +z%dMS14s&MhvG3T)5UNEiiuq-$R^^4M=eWnAhdjk)=NA*4AE4*=V~o +zDw4+?b`s*nfK8d8qay$)K7#wU-(jHYHj~?BHq_Si8k}nfjS(tJidwWNFss#?Nfy$o +zE@sq3o7-EmnTpDwt9>PIySZqksVyy$h?J0+$%RDA+o0LKs_l%K({fgeOG=|F-w7JY +zk(nneCh8lj#K%oWKxd)7+Yu*8nHOeQO=wgMl_H4A6T{KGwPW72#VVx`qf1WHTMHZ( +zEv!+9D@u!KafTV;@{W*32y}Hra+Q=q@E;=w6LQv678M4dQ3R|-Ow+p8UEP(rT`^V7 +zZ+|)_#Y*uJqF5mdMpe<_xSGKcsU(shfnc5BG)jp^z8X9w?d|H+K48;L)So;Nqd5gY +zYj)H&h7+qRmgqUY{_{~q6j5w-M1(nzPrpGao-R^pBGPH0xlojXU3j!(>zvy(oJ`Ey +zTPl`_iFvF{B)1NhPIpeY-E?H`S97b{w3;3gp^L<`0lOwblESiB3~B}=Fhd+*9oce6 +zLrDRreF#4pM0NyS_j5+DyvIsu5!MDA1}-t962}D$AY2T`2@>U6YgpkU6G}%ZQ`qMw +z!@u+Ml5!5jFCIb+(yEo|BcwpKfw(F2{BpoW;x#6r_S9)B!&IY{EUEFIt4V6@BQ!E# +zbBfD)gQ3c0e3VJkOLdH-4mXu9)xE7pEx5-kHKb#W+%hzR9*3Z!c#G;G@g)c2$>ct$ +zA?&=5uXEkiexP1|iv;=Zy@RJC5IZr7A=wc(Meclh$CtiG){q1k5aR+VAq3!CR9Usm +z0dy4n(SS7wG>8-+MS}&TAWf +zzPpzR(}Ys3EQB+el%dr7D-G@BmQW@)2yq2-1ej9@X-1Zckg;mQ(xoV$haJSRK+okK +z4ET|jLd0kAfr0xN;9?Q}6hLRl5cuaKd`fHXhdN?s!}f^=7k +z)E{o9MK&p;S~&uKZcE;Mw}~IUe$_xc-zOJ=H$69B3oK$1Q9EY6Y~1`oP#bq&}f +zrY#z@OmVLjRU8K_$PbQ2F|v5r&Y8LgtJr+-Eu$4A1vEPS&;uS!YYa*bX$7hKvq*L7 +zou78W$e`{v|AxlV!lUCVG|&ouh{zQRMMFs<5#PFhPeW!yS#RNK`LEaXS0zSSSp1Lq +zWDF3}7%2UYE+D!S_r!7dwQV+rb|j2M&U5fWM^@?kr2j%o5(*s$uv0NIu^R*RDgQAj +zT1ufC2^(2D$s|DQCy9REuKW-ur_?`U%wJZxOw7w7SlS4wF^Nz^W9%w%PC;TcQ4-RE +z6tz_fQnhWOS}9ML7CO}y@F!u~B#48*71xW-r(H##TxzwOxu>{#%iIVLy#N5hT07w> +zRuP1rIASLI8liRUPn5QRp7j`4Oex7he^CCiSL65!clsm$6nTn$U;rJL;_I7_v)e)x>C6{iPZ}3(>w|xL{CWmipP2nB~RZm9s9jB$psL +zB)ix=tBPg6YpxoK%Oqc+L4C%#-ka>{~4*@mZ%#qd+iNL{HGaWezqyB`NNnW&NJbNN<>T~PsWDa{4P +zw9&${mDF0@RyD@wEvqr`?(st1^3YRArmsWOcUG1?7I1zVrI6HK++{BFo0hiH+Sao@ +zF!%e*Yl$h+jVLG$)r3RG{r~5(MK#yXnq3qrehn)`u)(S@HhGNd{L#48(- +zV}Pm%)s#mSXF5uFmsLx<H=PPY4Tu9+#*lz5|f +zvSCF7PTNeBJzPcr*Gk6d&gQL^a%dz&hJ(05aD%Un(d(`*Cyi8ahG6CE&td0}7slrq +zG&8OQMoo?n)3KYt*;)#sxUT)6w9s)3;%^Sz%4cEYOIjcma>vt?L$i3UgR*C$@69Y3 +zOx?NJBN(GgrV3YDy*w`ZGr@tf#)jB7aByzTo89;DvdxLd!P=)JVkgwq9s2d-o;$_g +zj%I<_-JB0$cE02I%4u_-xhNdYO@;R@M*X!lrc`s9>YCEIh$97rHXlw5v +zh+fwO6icM2uN%L&)9Su)vbcdcIjp7YR?(k^s?_Unq4A#2lJ5^)%QQx(%XwrT>KC6n +z+2pr7{vi=QvWf$82$PTFb=GYNv!nx~|kO +zO^>;&>vM+cu5xyvTD=_ZsFKFYNawctSH<>)4~v|0%jc2ng+o+qIu#OTY;6f)# +zBBpMWo*r~_PD@OXWVRSIq6~s&5OQ96S+gU~qiSk4cG_rQ9^3$rMl`EcYSdMZZV8iU +zdJ3eiqBoM0Q5C3~HcT2fV9x1fmSx4ZjT>%tZW`hv3nc3_#Hv!sq;a*YZPei184QLs +zG;%k?g_dB%by(A*B$fq(6}04>qQW_yNZmNz5$7a0AoESo$b_Y{K@up4;U!8Gfpjn| +z=rIH^WDgPD3^pbmf+GfrrVeDh*JG*6h}4cm=b^dEH;geS5n(x0k^4|Y5B4;}=>@h= +z>_jj7pVrH2uyRpMOd-@U^wF*1Qv{Sq-wc4>FqY{?qeNR{YuesDH+GiYva-Z3eJL6q +zJV#fA;ADvZSw5sA!lZpkX{c=>DtuJHvw +zk>aND+&|JUQ_6Md4e3>2su)Vjj+ri{=8tjLI}J65382GECR?m1^9^i>yX=Vdq!_r` +z76!qPO{9@MKf?AQhZvzjG~!cyQH8|8K~jbFc;1MjjSR#_BRUx-V2)J|-F$@Y +zJ-oXqQUutaDX&Rf?x%?NkvcL!gq89u0&r +z5Sd&V98e^MI(Ho~93+JN+i<=`JCHU +z6su>6hx^5QwPmXZi;~#MRpLL7PB&g*_cC?c)olt_ku~XvZAlB^1ZwKyx#r4X^pa2P +z_E*DWn&W8t0{?v;1a89_#GMiw5(QNLe+C8rD8Ht1I%POT299UNLqf_(Z)brFA#zlX7YoX~rIeo|EuSelhV$zlsf7^W&U}_mAv%Z!VuRD9$gpjKl(LM(!qgro$*Cj)Mr9%) +zSe|Z;Ap7)DN!+JmqAYzL_m+|7=Vw9jpD*Pa9bftBVkVTRl&91nc^?V&k7ri>MXWX1 +z4>?m9Jr5l}h+6^I( +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 +zLEy$kVaUKZz^viSRe)gfM$ +zm{VZmzr1K8w$%Cuaol1d+#%!H@DEQ7Vx(l2lSq9D;q`Wyf~r&Cvk>y`ofeSUv;&$U +zrHO8V-z5<#Lb^~q(NO@LP+8ev6;$9*Gy)rvMu+Hd9wzMs_+5_jWyb18dYK06iAhf1 +zGOJ;>l(=bZ(IZG3j)AIG5Zx7scuF9M3R+~%mPeEqHs=M#?bN#p5(0vkvIKEL>3;lz +zI#HzJ3U8yFJ+?}QC_sr6>PoI5C^0caq8dd|Ays|7ynX*@xcPwcJd}ITJ4P&+K}9O} +z$WY*trs8oTe>(v{Lf?^U05ufhR!AP{Ptmc7-TNQXbPm#lM*0YXh#Sxs +z(CvuOR1sDf3d4bo2+R*~Lz5GrWtJ$E2*3#s@P@{eXfd`#5m|!F7pP(!lsSGvN_0c3 +z{QIcsVL{O<8u|XfFd6x$_lv^e(h(X%bc33pm`I`tDoVaWkHj1z9}@!%IBNqkaIr0| +z2w5gUOoEmxhFF`n?bgXnwL#KaS&~qIXjOtl+E9WPmViSAP+##ZqQM9PA9A3N{!8W| +zq+L3cdiv}O^j^o=06!X +z>-ak4Qqx*898b=pb8X1C&5KUzCrKZGvh@>Vk_QE0m=F#}{>F?ZT1Qy8Cv3!^8dfNs +z1)S7Dlah&kRs3pnvakqtG6x9_|2uiJhS1{3a`82(EB5SQ|32=!HVY%- +zBK~<+lsbwBn29I1)Tx5_CPwlRCQ48sL?$wZC$1>a3yMGkxX7vp<@b*x@YqOKnxNR~N-`{WOvvM;YOCWumn9iUNKP<)tCe1L%+ +zKnFqf{Y_lX{a@8x_K%F72BoYroQl&)iH~_u;q{L_wnM-l5iXFC1>EGzQHon#U8pea +z(=OeqyIpW%6G1;tp;T8?58nbDhjzFzRF5bC>)o?^gZ&Axw!4KdLZU9K)tOjw$C`=< +zZlfr6^}yOw{z3$HI&>XaM7-xH?vu2=+h*~Q4}sP69=Qiq&LR>a-zWR4u2j{W;d7~uS;jo9EN +zROn+VA+PKqqBJJv8~qXbmOLUM#gRnWK-hRm;CtUp(j2GRMDVU-Wi<1opKaPFat%lM +z#RH6*k=;=J7_O9n?hZpasUfj9-z0e_lOdFtRMd(H_OLt1b0oxw75T?_u81x)rVxb# +zbaNp2A6sz9+J-`75w8n%gj)V4nT +zJv>=Ol%XxMRE1<+WMf`k$jQCCs%bECK<(YQcl$Z64WSOAa*^;@QxMaj +z&?XSWcnJo;!n-oAhhJ33G(1aZZ?|$ +zkoF9(MvEw#I+uv5aeCFq%@+!6u2;b50?_GB~YP!O%2lTkNT62Pok!3Wc#@ +z*ft2x%?%nxox|hsy}mt^5B!aJ8Wrew0Guv`@KeNRUXhB8lS!st1xJl87=OhwE4dW(HA(q1dgoYgQ7O +zW`(hAwrw+GNu=8fvc*`bvqB3m>ly?TzIRLN8VqJbz@g$W=*3P}@EE0BNJ_mA{3JDWh0{^Iek+QJh*Lj86vJCL9M +Oi@744C`f+mo6dkSxre?0 + +literal 0 +HcmV?d00001 + +diff --git a/smartpqi-fromsrc.conf b/smartpqi-fromsrc.conf +new file mode 100644 +index 0000000..e786baf +--- /dev/null ++++ b/smartpqi-fromsrc.conf +@@ -0,0 +1 @@ ++add_drivers+=" smartpqi " +diff --git a/smartpqi-src.spec b/smartpqi-src.spec +new file mode 100644 +index 0000000..7c07385 +--- /dev/null ++++ b/smartpqi-src.spec +@@ -0,0 +1,214 @@ ++%define name smartpqi ++%define version 2.1.22 ++%define release 040 ++%define kernel `uname -r` ++Summary: Microchip smartpqi driver for SmartRAID/SmartHBA controllers ++Name: %{name} ++Version: %{version} ++Release: %{release} ++Vendor: Microchip Technology Inc. ++License: GPLv2 ++Group: System Environment/Kernel ++Source0: %{name}-%{version}-%{release}.tar.bz2 ++Source1: Module.supported ++Source2: %{name}-fromsrc.conf ++URL: http://www.microchip.com ++Distribution: Microchip Technology Inc. ++BuildRoot: /var/tmp/%{name}-buildroot ++ ++%define debug_package %{nil} ++ ++%description ++Driver for Microchip Technology SmartRAID and SmartHBA controllers ++ ++# prep ######################################################################### ++%prep ++echo prep %{version}-%{release} ++%setup -c -b 0 ++cp %_sourcedir/Module.supported src/Module.supported ++ ++ ++# build ######################################################################## ++%build ++echo build %{version}-%{release} ++make build KERNEL=%{kernel}; ++ ++# install ###################################################################### ++%install ++echo install %{version}-%{release} ++echo "%defattr(-,root,root)" > $RPM_BUILD_DIR/file.list.%{name} ++ ++SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi ++ ++if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then ++ driver_bin="smartpqi.ko.xz" ++elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then ++ driver_bin="smartpqi.ko.xz" ++else ++ driver_bin="smartpqi.ko" ++fi ++ ++mkdir -p $RPM_BUILD_ROOT/lib/modules/%{kernel}/weak-updates/smartpqi ++ ++# create the file list used in %files to indicate which files are in package ++echo "$SMARTPQI_IPATH/${driver_bin}.new" >> $RPM_BUILD_DIR/file.list.%{name} ++echo "/etc/dracut.conf.d/smartpqi-fromsrc.conf" >> $RPM_BUILD_DIR/file.list.%{name} ++ ++make install PREFIX=$RPM_BUILD_ROOT KERNEL=%{kernel} ++if [ ${driver_bin} == "smartpqi.ko.xz" ]; then ++ xz $RPM_BUILD_ROOT/$SMARTPQI_IPATH/smartpqi.ko ++fi ++mv -f $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin} \ ++ $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin}.new ++install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT/etc/dracut.conf.d/smartpqi-fromsrc.conf ++ ++# pre ######################################################################### ++%pre ++echo pre %{version}-%{release} ++system_arch=`uname -m` ++if [ %{_target_cpu} != ${system_arch} ]; then ++ echo "ERROR: Failed installing this rpm!!!!" ++ echo "This rpm is intended for %{_target_cpu} platform. It seems your system is ${system_arch}."; ++ exit 1; ++fi; ++ ++# post ######################################################################### ++%post ++echo post %{version}-%{release} ++ ++if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then ++ driver_bin="smartpqi.ko.xz" ++elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then ++ driver_bin="smartpqi.ko.xz" ++else ++ driver_bin="smartpqi.ko" ++fi ++ ++if [ ! -e /boot/vmlinuz-%{kernel} ] && [ ! -e /boot/vmlinux-%{kernel} ]; then ++ continue; ++fi; ++ ++SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi ++if [ ! -e $SMARTPQI_IPATH/${driver_bin}.new ]; then ++ continue; ++fi; ++ ++SMARTPQI_ORIG_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi ++echo "The smartpqi driver for kernel %{kernel} is now version %{version}-%{release}"; ++cp -f $SMARTPQI_IPATH/${driver_bin}.new $SMARTPQI_IPATH/${driver_bin} ++ ++# Remake the initrd image ++SMARTPQI_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi ++if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then ++ mv $SMARTPQI_IPATH/${driver_bin} \ ++ $SMARTPQI_IPATH/${driver_bin}.orig ++fi; ++ ++SMARTPQI_IPATH=/lib/modules/%{kernel}/updates ++if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then ++ mv $SMARTPQI_IPATH/${driver_bin} \ ++ $SMARTPQI_IPATH/${driver_bin}.orig ++fi; ++ ++SMARTPQI_IPATH=/lib/modules/%{kernel}/extra/smartpqi ++if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then ++ mv $SMARTPQI_IPATH/${driver_bin} \ ++ $SMARTPQI_IPATH/${driver_bin}.orig ++fi; ++ ++bootpart=/boot; ++depmod -v %{kernel} > /dev/null 2>&1; ++ ++ ++ ++if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then ++ if which mkinitrd |grep -c "no mkinitrd" >> /dev/null ; then ++ module_init_tool="unknown" ++ else ++ module_init_tool="mkinitrd" ++ #SuSE ++ if [ -h /boot/initrd ] ; then ++ mkinitrd -f /boot/initrd-%{kernel} %{kernel} ++ else ++ mkinitrd -f /boot/initramfs-%{kernel}.img %{kernel} ++ fi ++ echo -e "${module_init_tool} post Install Done." ++ exit 0; ++ fi ++fi ++ ++echo -e "post Install Done." ++ ++# postun ####################################################################### ++%postun ++echo postun %{version}-%{release} ++ ++if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then ++ driver_bin="smartpqi.ko.xz" ++elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then ++ driver_bin="smartpqi.ko.xz" ++else ++ driver_bin="smartpqi.ko" ++fi ++ ++SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi ++if [ ! -e $SMARTPQI_IPATH/${driver_bin}.new ] && \ ++ [ -e $SMARTPQI_IPATH/${driver_bin} ]; then ++ ++ rm -rf $SMARTPQI_IPATH; ++ ++ SMARTPQI_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi ++ if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then ++ mv $SMARTPQI_IPATH/${driver_bin}.orig \ ++ $SMARTPQI_IPATH/${driver_bin} ++ fi; ++ ++ SMARTPQI_IPATH=/lib/modules/%{kernel}/updates ++ if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then ++ mv $SMARTPQI_IPATH/${driver_bin}.orig \ ++ $SMARTPQI_IPATH/${driver_bin} ++ fi; ++ ++ SMARTPQI_IPATH=/lib/modules/%{kernel}/extra/smartpqi ++ if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then ++ mv $SMARTPQI_IPATH/${driver_bin}.orig \ ++ $SMARTPQI_IPATH/${driver_bin} ++ fi; ++fi; ++ ++bootpart=/boot; ++ ++if [ ! -f /lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi/${driver_bin} ] && \ ++ [ ! -f /lib/modules/%{kernel}/udpates/${driver_bin} ] && \ ++ [ ! -f /lib/modules/%{kernel}/weak-updates/smartpqi/${driver_bin} ] && \ ++ [ ! -f /lib/modules/%{kernel}/extra/smartpqi/${driver_bin} ]; then ++ sed -e '/smartpqi/d' /etc/modprobe.conf > modprobe.edit; ++ mv -f modprobe.edit /etc/modprobe.conf; ++fi; ++ ++depmod -v %{kernel} > /dev/null 2>&1; ++ ++ ++if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then ++ if which mkinitrd |grep -c "no mkinitrd" >> /dev/null ; then ++ module_init_tool="unknown" ++ else ++ module_init_tool="mkinitrd" ++ #SuSE ++ if [ -h /boot/initrd ] ; then ++ mkinitrd -f /boot/initrd-%{kernel} %{kernel} ++ else ++ mkinitrd -f /boot/initramfs-%{kernel}.img %{kernel} ++ fi ++ echo -e "${module_init_tool} Uninstall Done." ++ exit 0; ++ fi ++fi ++ ++echo -e "Uninstall Done." ++ ++# files ######################################################################## ++%files -f ../file.list.%{name} ++ ++# changelog ################################################################### ++%changelog +-- +2.34.1 + diff --git a/0002-Microchip-smartpqi-driver-2.1.22-040-update-patch.patch b/0002-Microchip-smartpqi-driver-2.1.22-040-update-patch.patch new file mode 100644 index 0000000000000000000000000000000000000000..dbaa6a8fa36740c7c3d61d9c2e12bdf3302124c6 --- /dev/null +++ b/0002-Microchip-smartpqi-driver-2.1.22-040-update-patch.patch @@ -0,0 +1,74 @@ +From 722585b376fee17fa9c27d22425221b7fefc47ed Mon Sep 17 00:00:00 2001 +From: Hao Zhang +Date: Thu, 27 Jul 2023 14:26:37 +0800 +Subject: [PATCH 2/3] Microchip smartpqi driver 2.1.22-040 update patch + +This patch is used to support OpenEuler-2203 version. + +Signed-off-by: Hao Zhang +--- + ...driver-build-for-OpenEuler-2203-vers.patch | 30 +++++++++++++++++++ + smartpqi-src.spec | 3 ++ + 2 files changed, 33 insertions(+) + create mode 100644 0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch + +diff --git a/0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch b/0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch +new file mode 100644 +index 0000000..91b94d7 +--- /dev/null ++++ b/0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch +@@ -0,0 +1,30 @@ ++From aecfa96b98be1bdc9562cf912c7497dd241cd9b8 Mon Sep 17 00:00:00 2001 ++From: Hao Zhang ++Date: Mon, 24 Jul 2023 15:58:03 +0800 ++Subject: [PATCH] Support PMC8222 driver build for OpenEuler-2203 version. ++ ++This patch is referred from src/Makefile.alt. ++ ++Signed-off-by: Hao Zhang ++--- ++ Makefile | 4 ++++ ++ 1 file changed, 4 insertions(+) ++ ++diff --git a/Makefile b/Makefile ++index 8e7196c..3c4cadb 100644 ++--- a/Makefile +++++ b/Makefile ++@@ -103,6 +103,10 @@ OSVENDOR := $(shell \ ++ $(KVER_SHORT) = "4.19" ]; \ ++ then \ ++ echo "OEULER2003"; \ +++ elif [ -n "`grep 'release 22.03' /etc/openEuler-release`" -a \ +++ $(KVER_SHORT) = "5.10" ]; \ +++ then \ +++ echo "OEULER2203"; \ ++ fi; \ ++ elif [ -f /etc/os-release ]; \ ++ then \ ++-- ++2.33.0 ++ +diff --git a/smartpqi-src.spec b/smartpqi-src.spec +index 7c07385..dc1bf86 100644 +--- a/smartpqi-src.spec ++++ b/smartpqi-src.spec +@@ -18,6 +18,8 @@ BuildRoot: /var/tmp/%{name}-buildroot + + %define debug_package %{nil} + ++Patch0: 0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch ++ + %description + Driver for Microchip Technology SmartRAID and SmartHBA controllers + +@@ -25,6 +27,7 @@ Driver for Microchip Technology SmartRAID and SmartHBA controllers + %prep + echo prep %{version}-%{release} + %setup -c -b 0 ++%patch0 -p1 -b 0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch + cp %_sourcedir/Module.supported src/Module.supported + + +-- +2.34.1 + diff --git a/0003-Modify-the-spec-file.patch b/0003-Modify-the-spec-file.patch new file mode 100644 index 0000000000000000000000000000000000000000..b9cd9f45d5853dea876815afdc7fac1535d84f83 --- /dev/null +++ b/0003-Modify-the-spec-file.patch @@ -0,0 +1,77 @@ +From 6e9536ef93a31cca37626d5bff62a522796e75fa Mon Sep 17 00:00:00 2001 +From: Siyu Zhang +Date: Thu, 27 Jul 2023 16:12:52 +0800 +Subject: [PATCH 3/3] Modify the spec file + +Rename the spec file since the ci_check request it is same with the git +repo. +Add changelog. +The mkdinitrd is not used in many new project. Add dracut to support +updating the initramfs. + +Signed-off-by: Siyu Zhang +--- + ...qi-src.spec => SmartHBA-2100-8i-driver.spec | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + rename smartpqi-src.spec => SmartHBA-2100-8i-driver.spec (92%) + +diff --git a/smartpqi-src.spec b/SmartHBA-2100-8i-driver.spec +similarity index 92% +rename from smartpqi-src.spec +rename to SmartHBA-2100-8i-driver.spec +index dc1bf86..72e988a 100644 +--- a/smartpqi-src.spec ++++ b/SmartHBA-2100-8i-driver.spec +@@ -15,6 +15,7 @@ Source2: %{name}-fromsrc.conf + URL: http://www.microchip.com + Distribution: Microchip Technology Inc. + BuildRoot: /var/tmp/%{name}-buildroot ++BuildRequires: gcc make kernel-devel kernel-headers + + %define debug_package %{nil} + +@@ -63,6 +64,7 @@ if [ ${driver_bin} == "smartpqi.ko.xz" ]; then + fi + mv -f $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin} \ + $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin}.new ++chmod 644 $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin}.new + install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT/etc/dracut.conf.d/smartpqi-fromsrc.conf + + # pre ######################################################################### +@@ -139,7 +141,12 @@ if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then + exit 0; + fi + fi +- ++ ++if which dracut |grep -c "dracut" >> /dev/null; then ++ dracut -f /boot/initramfs-%{kernel}.img %{kernel}; ++ echo -e "Install Driver InitramFS Updated."; ++fi; ++ + echo -e "post Install Done." + + # postun ####################################################################### +@@ -206,7 +213,12 @@ if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then + echo -e "${module_init_tool} Uninstall Done." + exit 0; + fi +-fi ++fi; ++ ++if which dracut |grep -c "dracut" >> /dev/null; then ++ dracut -f /boot/initramfs-%{kernel}.img %{kernel}; ++ echo -e "Uninstall Driver InitramFS Updated."; ++fi; + + echo -e "Uninstall Done." + +@@ -215,3 +227,5 @@ echo -e "Uninstall Done." + + # changelog ################################################################### + %changelog ++* Thu Jul 27 2023 Siyu Zhang - 2.1.22-040 ++- Port the PMC RAID driver to openeuler. +-- +2.34.1 +