summaryrefslogtreecommitdiff
path: root/scripts/decode_stacktrace.sh
diff options
context:
space:
mode:
authorJean-Nicolas Graux <jean-nicolas.graux@st.com>2017-02-07 12:12:41 +0100
committerUlf Hansson <ulf.hansson@linaro.org>2017-02-08 12:22:27 +0100
commit5cad24d835772f9f709971a8d6fcf12afe53b2a7 (patch)
tree0c1a8bc700c3c219c45ca05dbc5ce3df6be89813 /scripts/decode_stacktrace.sh
parentd5adbfcd5f7bcc6fa58a41c5c5ada0e5c826ce2c (diff)
downloadlinux-5cad24d835772f9f709971a8d6fcf12afe53b2a7.tar.gz
linux-5cad24d835772f9f709971a8d6fcf12afe53b2a7.tar.bz2
linux-5cad24d835772f9f709971a8d6fcf12afe53b2a7.zip
mmc: mmci: avoid clearing ST Micro busy end interrupt mistakenly
This fixes a race condition that may occur whenever ST micro busy end interrupt is raised just after being unmasked but before leaving mmci interrupt context. A dead-lock has been found if connecting mmci ST Micro variant whose amba id is 0x10480180 to some new eMMC that supports internal caches. Whenever mmci driver enables cache control by programming eMMC's EXT_CSD register, block driver may request to flush the eMMC internal caches causing mmci driver to send a MMC_SWITCH command to the card with FLUSH_CACHE operation. And because busy end interrupt may be mistakenly cleared while not yet processed, this mmc request may never complete. As a result, mmcqd task may be stuck forever. Here is an instance caught by lockup detector which shows that mmcqd task was hung while waiting for mmc_flush_cache command to complete: .. [ 240.251595] INFO: task mmcqd/1:52 blocked for more than 120 seconds. [ 240.257973] Not tainted 4.1.13-00510-g9d91424 #2 [ 240.263109] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 240.270955] mmcqd/1 D c047504c 0 52 2 0x00000000 [ 240.277359] [<c047504c>] (__schedule) from [<c04754a0>] (schedule+0x40/0x98) [ 240.284418] [<c04754a0>] (schedule) from [<c0477d40>] (schedule_timeout+0x148/0x188) [ 240.292191] [<c0477d40>] (schedule_timeout) from [<c0476040>] (wait_for_common+0xa4/0x170) [ 240.300491] [<c0476040>] (wait_for_common) from [<c02efc1c>] (mmc_wait_for_req_done+0x4c/0x13c) [ 240.309224] [<c02efc1c>] (mmc_wait_for_req_done) from [<c02efd90>] (mmc_wait_for_cmd+0x64/0x84) [ 240.317953] [<c02efd90>] (mmc_wait_for_cmd) from [<c02f5b14>] (__mmc_switch+0xa4/0x2a8) [ 240.325964] [<c02f5b14>] (__mmc_switch) from [<c02f5d40>] (mmc_switch+0x28/0x30) [ 240.333389] [<c02f5d40>] (mmc_switch) from [<c02f0984>] (mmc_flush_cache+0x54/0x80) [ 240.341073] [<c02f0984>] (mmc_flush_cache) from [<c02ff0c4>] (mmc_blk_issue_rq+0x114/0x4e8) [ 240.349459] [<c02ff0c4>] (mmc_blk_issue_rq) from [<c03008d4>] (mmc_queue_thread+0xc0/0x180) [ 240.357844] [<c03008d4>] (mmc_queue_thread) from [<c003cf90>] (kthread+0xdc/0xf4) [ 240.365339] [<c003cf90>] (kthread) from [<c0010068>] (ret_from_fork+0x14/0x2c) .. .. [ 240.664311] INFO: task partprobe:564 blocked for more than 120 seconds. [ 240.670943] Not tainted 4.1.13-00510-g9d91424 #2 [ 240.676078] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 240.683922] partprobe D c047504c 0 564 486 0x00000000 [ 240.690318] [<c047504c>] (__schedule) from [<c04754a0>] (schedule+0x40/0x98) [ 240.697396] [<c04754a0>] (schedule) from [<c0477d40>] (schedule_timeout+0x148/0x188) [ 240.705149] [<c0477d40>] (schedule_timeout) from [<c0476040>] (wait_for_common+0xa4/0x170) [ 240.713446] [<c0476040>] (wait_for_common) from [<c01f3300>] (submit_bio_wait+0x58/0x64) [ 240.721571] [<c01f3300>] (submit_bio_wait) from [<c01fbbd8>] (blkdev_issue_flush+0x60/0x88) [ 240.729957] [<c01fbbd8>] (blkdev_issue_flush) from [<c010ff84>] (blkdev_fsync+0x34/0x44) [ 240.738083] [<c010ff84>] (blkdev_fsync) from [<c0109594>] (do_fsync+0x3c/0x64) [ 240.745319] [<c0109594>] (do_fsync) from [<c000ffc0>] (ret_fast_syscall+0x0/0x3c) .. Here is the detailed sequence showing when this issue may happen: 1) At probe time, mmci device is initialized and card busy detection based on DAT[0] monitoring is enabled. 2) Later during run time, since card reported to support internal caches, a MMCI_SWITCH command is sent to eMMC device with FLUSH_CACHE operation. On receiving this command, eMMC may enter busy state (for a relatively short time in the case of the dead-lock). 3) Then mmci interrupt is raised and mmci_irq() is called: MMCISTATUS register is read and is equal to 0x01000440. So the following status bits are set: - MCI_CMDRESPEND (= 6) - MCI_DATABLOCKEND (= 10) - MCI_ST_CARDBUSY (= 24) Since MMCIMASK0 register is 0x3FF, status variable is set to 0x00000040 and BIT MCI_CMDRESPEND is cleared by writing MMCICLEAR register. Then mmci_cmd_irq() is called. Considering the following conditions: - host->busy_status is 0, - this is a "busy response", - reading again MMCISTATUS register gives 0x1000400, MMCIMASK0 is updated to unmask MCI_ST_BUSYEND bit. Thus, MMCIMASK0 is set to 0x010003FF and host->busy_status is set to wait for busy end completion. Back again in status loop of mmci_irq(), we quickly go through mmci_data_irq() as there are no data in that case. And we finally go through following test at the end of while(status) loop: /* * Don't poll for busy completion in irq context. */ if (host->variant->busy_detect && host->busy_status) status &= ~host->variant->busy_detect_flag; Because status variable is not yet null (is equal to 0x40), we do not leave interrupt context yet but we loop again into while(status) loop. So we run across following steps: a) MMCISTATUS register is read again and this time is equal to 0x01000400. So that following bits are set: - MCI_DATABLOCKEND (= 10) - MCI_ST_CARDBUSY (= 24) Since MMCIMASK0 register is equal to 0x010003FF: b) status variable is set to 0x01000000. c) MCI_ST_CARDBUSY bit is cleared by writing MMCICLEAR register. Then, mmci_cmd_irq() is called one more time. Since host->busy_status is set and that MCI_ST_CARDBUSY is set in status variable, we just return from this function. Back again in mmci_irq(), status variable is set to 0 and we finally leave the while(status) loop. As a result we leave interrupt context, waiting for busy end interrupt event. Now, consider that busy end completion is raised IN BETWEEN steps 3.a) and 3.c). In such a case, we may mistakenly clear busy end interrupt at step 3.c) while it has not yet been processed. This will result in mmc command to wait forever for a busy end completion that will never happen. To fix the problem, this patch implements the following changes: Considering that the mmci seems to be triggering the IRQ on both edges while monitoring DAT0 for busy completion and that same status bit is used to monitor start and end of busy detection, special care must be taken to make sure that both start and end interrupts are always cleared one after the other. 1) Clearing of card busy bit is moved in mmc_cmd_irq() function where unmasking of busy end bit is effectively handled. 2) Just before unmasking busy end event, busy start event is cleared by writing card busy bit in MMCICLEAR register. 3) Finally, once we are no more busy with a command, busy end event is cleared writing again card busy bit in MMCICLEAR register. This patch has been tested with the ST Accordo5 machine, not yet supported upstream but relies on the mmci driver. Signed-off-by: Sarang Mairal <sarang.mairal@garmin.com> Signed-off-by: Jean-Nicolas Graux <jean-nicolas.graux@st.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'scripts/decode_stacktrace.sh')
0 files changed, 0 insertions, 0 deletions
'x2*uE@?$;z7(\j$^ C<$?7vVM6ܵ@$<-8`cÒAylM<^  OswװÿiI<,K`J"^93: kݧs= xQC),y=o;2QHRWf?"m}5'9, `D>sA2 QHkss0LoVOKc5Ȱ9#\4`w{#zy lJϐF)/NFx[J/A-l⷗Q\SQW8꺝prlqƹ-M=lS2$渺]bS_}NLUx[qnm o8yI$Wu.2n_)m[.Xe|}s.],b3+)j|PQf RLnkl"\{c|!ޣqy..n_H(9*`Xqu S^k 4:r kިtY>Sdabi8ܵz}lw6ԭӣXQd]ܾvwj9R.,+I=Vuo䅖4ީ;D9Q/#XݟJv^rz'NB"늄ݮ|V$ ܅EnRb )wnohϱou/?uJKoOYaId};z|{V(30Pc?!TXgt|rN7k|-{Y y 1~Zޑs ztVsȁz9l0bOiG*y[:w3n^a06 ĄH*RSVvbdƧc!r^H wJq?>bZ?[lQ|9WT->,~F|H^p|? p'}; KL!|vkFѨrT397}G~?7l"߆=F}ܞ]={r_ú(st2 xiuÜuiNK5G\=^[?@o{ڞ!|gWܡPk,W+U,^QN698wx;,.BZ襏eP8e5f__+\W}'GIlOchIu;,< /B@rW]KpSv~ջ9F|mPֿ%}҅uWO|Oሿ \suC}u< ߞh#~p9: ^ŹgQYw݂}:JDdymvFZl $s+'A.#-OH,4"JX5[&;h*G~^Vz\S g-娾w맍Su>)]v JF0~XhGeͻ;]hgי#Ҁ;g&3Zn:ݽ=7ȩBبzE=حҖU~F:5ǎu?M&>oQEPþf]n9ͺ! m; j\ #G=tmu% FI4Tue% Y̛3D;$K&6679BA9I. s̆tyQ]"C|Q]hHƭ׫G/&,#c?w%`&uꔸ\h 2* =&-O jLhPapsrnPz>=}o`&0Z,–;}'{k쮬7(k\n]=A.ۆQ˪o[h=6뷺k)~w+rkf=0h;6jktpRqe/(z##峯 ﻇFKOҌC_OB Zq\\<9zn/¸Ӣ0\Çkwk]* sSCK'^ ^mx.xkN=N I9Gйy8GamgW xQx[+cBY8s]:b뛶=6dAwkn/jl:ݽ J aӞ/۫+xu$#b&Wtb-oKs0 ޿>RuիclaBgf52:7йNyjcH9;ȐS9b>8 RSm 3cہR2{\_s1՜FRLz[u;EVTɨ-*lLӲ̹ݶN5{o\ۜ+G>]O` n;a/v5m{GS7rV$Eޟ_#Y( ]V8_hRŜ.b ~ۥ<يok[-~Ϗ$=VZ/Oge`zy}{/w㫽XSځ,l?Sc +\.@6Z;s+i*+]UI*"ZMhT( h(%r X*Il!jgkݰ&nP .qҢ؈2J#c64z VK.yl_8$J_VdŧT PRD 7j'kD (gz Cc34DM4`"-&FH muD!n6Ŷ6Xh:`9_X[7M"͎Ylj7X{sI`nx˂?wB ҸՖ=4!mrFmly==b&?x7iuK^O1OQ5j}Pgb>GYF$08ew/,ͣ~$\@#Cszs ]6נY(ٳzѲGORrʝLT"D^@" 2|]\(W/SG~csvW:K׊rls(^_?p])٥bP,!> -5~k>ߎ cҞnۨz٧]DB+۵2HoP29[[a*R%߮B( t=P~Pj9dS}D/{EB wxA|R:r|_,;)l_M2A)g+>7 9fk ?278UAe[IӪ(?:$'J]}QB՟f!u(ihټaˣ^} J2spj5%nOFt>~-ޚE :&VO:/()%nt/熋tM.',!v:DI2{c[9%^;&Gtb}xQPvcaGYay3Z8k~;@y"JKyA O6([ܝ%äe|eN2i6+alW(eػ5[9r~N',l冭k,_g.mZNzcG^u#:Ǐc"{m~}_ .}U~Hh["H[O!9s ޓ|SStX![< ?eJ?LHknafc0nm#U!B T;cFEϒn8!$?#‘(7==+ y&wd?E<|xU@,'迲 Te¢ ExyGQen~xXa yxB¿͎ {EGކ @wg]EtlZ~.Mլ<_=ouX$K/Gr:3ǪUn[TO kzbusOj՜XxVd%]\ьiedѾwxn2䕵f!UDzt.<;"!ުj:ë/A. G;+=c=#k Z?%O˦|r"[o06F_8NM9NG=lB)䍟4PHgه!e@t:]o?/,#o_Sp֊k ޭ G{nЂy8ejiX8{#a$R~폽2A3*-/m]?S}eoQɾoGZ|~z솶ٿ9 mp9G"L؍mq\_)QDQJ(/4QTӕ?Lm 㩛Tb}Ek>cmsx??ˣma 5\2mKX8pTջa5ܮt~Gg#Fc(\1 M~]΄ 2.:xG3]9P8hF:_5xP]\;A" ;̽^ChtV62^17c-JL -yBD fĿqo=}5_5}ʦTv?Gg^ x2usgt٧+I[[l/$BcJis[q:hm,.С Z8oq..t,܏>q_,];q}(=_\x5uZ r]~0!)ɜad["7Yam3L[l>~I!?.KDG; ѐp Z z(!Tת GO|8\3Ls{PcX>ֿh Z@/LX+bw|-'12.U?%y#M΃*AB}dܞ;Oܖetkx~}9啵kkͿATG0_σAU0[ؤ (-ieQTTDU`#KљU@QUF^=(x @ mmJPj2e9A C{( h鹿Ds 4G/[,K@/*7-wA-Zm8=-ӹvO#iT#kޑ?#)fn183oŠCl,!CWߕмǬ 7?+`|2۷߫tk∈'Gj#Vcl\8iQx텞k_S:_ٝ9>! ̠E T LS򆪯p#ʬ/~5%—#IӀU;1f~u qkp?PT;_HY"$R8Y<5+Cz<0o>@ Scc1ڱϷ/70f|{]2/\k!y@,;~׍oqXk >ִY|ڪ ".sor?ބ ~H B0+(A@(=)[@Ձ]aW?X޼3ЉM xJkWE\95` vL,7Ӄ+x|aj%O(M^˩#ϩ}~9cHF%3#a-bZ : ,5F*ŦQäQIMjm9FV޴qn!̨PyO.  ~u-tN yy<6iu$ A~?&N6su ~(䳋Sl2/t_T5(4 W&*fl79~Є/UcD 9; is\!p2Z0^#7&R!xn 8O8ݞKFq M[Tڂu-geČHBvI>6|1/v+NAayJ|^78l$^pһ(p:268zy1_Ix㛾cm|4g2b6K#{yf ܼ wY)Uz^kdezu@Qt$ FdJa7F Ow7@ל#zx@0Q:W;~ü|6ltb}5go@GgvS##W.5~ھ(u FZ$Nh8VX(! ElePb8a}XaxĿՏf])J}Ӄ/nKj^! # r|/jF$*)9sXKC %iqusg/=8ϮR`{h+O]Zr}9b(4qPdžcAujC]-QsY끤J @$qTDp\34j} ])>yqpwUۗUʆg߫`Su]5q8P|yjqmI;~|y/!a>z\3ͽ_U0!ĊIAoqX_uP8 cL|f E5 Qᝡ|vxߒ@q;uP\STr#ƚDIMd|OxhF0UenG~_oI=7dyH4T;z M.Ɓ:yn۔YfA+t6najh}.# y<(< hbRT Uw}W Z7}v򾇎-]X8(UsN]e 6A{QLsx}NZ\\dzma:vh^?C8pwH\ק:8"oǜ9xzx(Ĭ'7Ȥ:SǼ(M`pG2*$$PckW;2㧰0˳,/=:!/&T6=9$bb9MRn MlY= IB@2YV(|X\ eHS֙e[Ƒۈ"UhP|Pp;{1>CSY\8;}9Iɨ{Rz.vxFƎ_$?0SwSv0lqsi+`ͪ&'޷>biPWH( y|U&:ڠ3`zz% MYVzu#h,QӰ'xP \53#nwi/HoqDnut$)LH @ib?kyG;b8Sޫt7\FȌch8)M΄ ?o0,gVg(ib6(A\S"DZIa+7+df$R Kʔ1I8D3Z XҰbΛKcX{&|HƝp9HS1 *anN!@#$ |Q HX@Ye"n:0$# -C{;tYG;g S99[8ID1kץ3Q֮jN K|.4h!㧀}Wr$ ١JG;B Q"rgb"8 fGCJ2s1"ۊV^3A]#ȼ] \Y>·=XηiFͥ+q4db]fk59؁UVfwYе߆6uLrEtrfd\_ mFVP:MG׉xz-1JCQGsڝ:!p#b SP'&}'%-p\-G2زTR0Q1#Bq醉Sc8g+m{ %?_N`ݑ0|J}TO46<^[f;?`; g-0d8 aDyqr}'{_0#SXAUȗF0}h+t_[>jg:Č8!^*B$仃j'i $d7XӦܻkG8rDS cđOx4~G~T)CÍ}:ٵ,G?G'@`eJ1df!]%(3cc¼BX!F 2.R*mUTm [Hpkv$۰U80?x9@~(ծ2+\@v*uW@( 2(o dHs?R}BR뙼U/\!D]i}ѻAZހOҎ$`uʝ K-**)L_;lid@=O?H}f8e9(M85WGWeC"%٭lpx+#_Ujo/>mh`u!?5@w*[_'ϯ׈?'<.ws<dZϯbãVm u6\>ᅧ’.r:cvXXe/z Ny#ƺ%@{]jMY}(稈S8}kVEmLm\,{8\#99AS 7Tbp6S)KϺDXx:x]PhQH6(c;~hiuσ{F3W1K9׹Op^"~ m#LH.+ub4ekߖ=R][:ia/J n6!{UdZnq]"F8lQD˷[upn:X^9uRH6UdWǍ [P|}V҈jQ 5[H7R*Y3sb xA Շ IpU@Qׄ(l`Gǟe6€GNm=OH/&hK?%x%.+P%IwHpM'xVY')*0Bo|'+|rSp y`=Wnώ^>{Fb䇷N }>ȩ8#,_MgxhDdk0ҋC0/U*UP{\_cFcI_;u:o+1 Z jQiaVV{S:_MddHU 8]_YwӒ| Kw=SgMk`.}vdx5P#?-ҷ?Lc7wKcqgoYMȏQѝIbd^㎌';sRQn&=rE2ns)ʎ:!'t&̸P+({vP arpG{OD-=p`gu7X8ݨp~z> . cmKWEhr{prnV#Zaq- GvP3x!7G!Wys|Gv[ r噸0xMF7f9nu3JR1! F#So|_nn?CgeʗaDϩ^/Ζ}źӯ/!9#Z|'my"^<\II|h$ |%`M)0vzzx0B1k!;Wݢis@* Uo\a:sLy旦=ݷy9L`Ftv15nc$%Ɠ]DdYV,sr`aG qc}VՇ*w("R*⑋t(1Ksk@(%Xݿ`pN>8fnT gΞU/%5lfv:&tAϒ\Fʳ;Wx,.-EFQ5tq<R.m6]L=܎}3v K-5LX=BA{^j⺸EA4$)E6 _[AC J-5m鄮FKt$k6; ƬךR 173oZ2sn(JS SbҦehVL5#]2Lјɚle,Բu"Za0f%L._H(R#0ӚP-$++|ªkpiu3nb8kuD4ʳ@xjoex4IǭjEd2њӑ䄶40#VhZycLLj"YsL߶>/m^tۘA𪿧2FP NM{ I4U tܭ#e~9\;Pp$YںNwD lښv?`poWn|(Zܧ5LkoƴtE"Ea8M+\\v0VX_߾ гz[~LKMIps3ϻg;IM,kY ้?Cw\E9\Zr׻[Eս DMKFJ @Ü r)!@XjpXl$;lW I5ރ {dNu7MoYU3#0?Zf w,hΉ)8$5Ү˅fnLYd\{ $()0[fãhYΔ&7JVAa8!ە#YWʨႸ=?Z% 23OFx LE}3>yk -颍X!$y"Sq!\C =}l8%U@ڛ>i%*55fuOzh^/eH@)qB_ϛ[cf)7޹f~}v.>cAGhJPc]GX6^աWƖ4v<. dew\|> Q~\zM%N%*?Zrg.+W3^K0Fʒ,؊c#1,Ycp 4v1pb>&PJ& fYߤjE$ANw.@mgt:ѤI F \%J@;z)A1q$`?*SR_1ױ+/O'ʇ7i!= H<Ri!UH#WttX垆 ?]tz C-ʕD#o95f"4R!ؠc#5ada0-5op jCFC+QlK;kHX5{(j ;7Ia9 N'xW/(coo썮;H&VvV$ԋ5$+֮A!B5~\b F\akԎs1kŮ5#Mؒ҂o^UۺpN6Lsꢍb ur䛨2_Q#mݜѰzx\"cb!Qitr-BPy!I| _~_X.>,'XoL350?Ud<ăgkkvz )f,\TX0"$D_/ j/ jOC y,':χN.Fp>-+Wqx3mO&#ƨkԪӓ@[W0Du j&~uP\=?j'Ə}>jqC" n##B8*i+Ubmg4]Iș^Y&33ez^Lէ mp|m{k+`6vi~H25uJHs-]ݲBm]*]c3kVN"!u7I*8ff I@/+`v놴lI0Aj3.?",f` `X.'nn .pDB2F"MXN.sMhGWkxc 6pAZKmWfMհCF 8&-\S/G^C_Et@v7b4 {8M,oD,u@\JTCzYIVjfs^־Y$!mlٔ!$h:U&tC`A7pF- c4] ŭAItZAghPoWbyn rn'HUoo;3PmU[Z`AҩD`K_ҧŷ =z[]H| s?wܾ]n^0*c 罆?}s6O>̾vsLJm^Gž2]ܡ+dQ|aGa;SF^NiX$\ E<\"@F5Z2x9Vn6Csܭs_5g7eΜ0KyX#JSA^ "d)1vcjߠ^CuEsV;ى:5{bsDF xSSUq!B/m#(>VPQ*V)A@y.HIijI(9>;ue g~f<.*$V psHN+>X,5iP]%\ь #hCPhF(:և"t!;4r1FG.l.kut'DŽ[:q;pX( D:vsZ(%&4v떰84rBeS m*7WV/d D ^o.:ڠ5-D{T kw=B=’x9{]C\FoRSH%/ஜC$6Zeg[w$J6FrmSYIf`X{F3&u+!]5|Q +$@pS~Iۜgi1 —h2xMC?WkypM"[6>`ŰEee44I̩L)U&"iۥ;0m>A RDˈm#~wc8e%]b֖PT&ZN+e"PNzlU*j ꀘ:5K\9~΃`[6}#׿2q@7!d -+Cphy GǝϩmZga|PWmx#0XsKlB&Dm>Er%}5>7wJ-dzX1Kþ2#ڢTSŃBv<ڭt꘵ @g٦ A,n5q@KZE",HuixJ& O%W@y^)WA" ]l2J6C,aL[ 'K li+Dd~*gYنCzeI^1T)!02 -lP2f]m$+UW޷V~)!0>y8!F6 4F<*Q;m=h v[s  0>(.1]&WyQ@x)׎.Y3^˴sos6b3a8P)cPCF?tcP ; `t#"oifEܵ9YSњ'}6&4j$+edM )WEa[ꭺA[~eX"^KLzCTWߤz G}NywMO`S? 8w6XqX=pA',KNtXu&-M+xPx[F,{ "jJD( \)]4S)ϊEBk[yXSHb+Op[6Jc^uFbL]ZbD eOÅ1ƒxWo v`(y,P{%;}tꘉ=cop'b>1{LHN!+ӿǺzp`I8FWMӐGUƟ 9df rWNJmy>C=uNU|]4k}!.'%CӥRB %zQ8Z~oM"S~mnr* p>d~U|jR]FZpkl'녴LQSVxpndg*7R1dcsi`H_C(4->W6C[ҏ=es8~AC7m~fZ&OW#n9~YBm5*.AC >#B$EQCFXjg˘ps @s}*(9ێCy|Cw7Fi =HlDǔ+ihU|T>LYck>C{Y2[oDZ"7"Gr!QZ Zca<Ʀ* C"]>\,*v edH8\Ѩ?-U);%>/Ş->t{kVw)\SN7׀w -u>zx|3WRQA7H21%_XW78H[&-TvV֫o7x̱Z!<km\+#@72]GZv,mCb kej?9ҷYo0d@C_֧X9!-%HhRS.!tΩ -,Tr/.H0+?YV#<G @ŕ|8E^byf^MGHS,]V "Db7qK%q^Sm`-YRp5D0qTalzcrng< m5Pu +.T\rRIii8]M%”*cMobCkرak%|^SUA {P' 0G(ѭ{LL/BqR=uH}tggXYoWdhWˈxOBlnzt+p .:ޯi <뛖0p21$/^ڿqQveٳǢC{ߤ p A2h~+>7SwXTK _g(u*pfx?,x@(ԞR.,)\D)5gNȲ= c'?ETm?!;"BJ["ۀ!տ8g|Jht)nz >5PE~]q=j< ,!9k`W9QM\B#(@C$9ͮ/4&{:X[9 ƿM/}VP[Ӥ$GQP`fJe{yj#LLT/1N[\YhQL0)W^~nk ]3͓R^,x""hVN+8}usTJZi@+vH]4l~b?=Uzſ7(O[8*c!E(C8J%xkXh;k&N"Q8Z*,ϲ@w]!,O:F#{LBkq>v,2X6TBͣb !|((m)LUAX˝ظlCsk~g24As!P-vįүN@[p@îi_0Fa8i&#Of0Q`\UY [db2^oπBShAh)6;}Awy\h\/ |S0W4Ȉ˶Pckۼ<#"8@<,QveH3v҈E#B$KOzt:?/D#H)$AF>a7냃 }Ht=%;\2ˡtBg,+Y08?։J8 95!#TA\zRr{=NveӺn7&8FO4e:fSI:޸[-qF8B9![ 0X:Y8CĨ9ȀT-y-X'F>h L4A_VC3S%U9v+ӜG/QW~?)GoBlCX-8^X-}Hr^&PH9rn Ă!3]G%Z7<14erp3#uGijO?-W0wAѮd&o-,-kfTjy\du|Ԥ%ꊠ?=sѝKC ߵKk4yqe =~PS~<צuCoY8zT ZS{r9p[]A:s<]C9rD^g$zqPBHUU_jH@z|ˎ,1g0$@_ڢ[_dgowV9<@A?A"08ޞ!"k_*"}hr<9ήY }+KE9{w8RyCڙ \ekϝȜXkոKzqpkt5fRP c8/̮#8.ZWQ9ҖeaسI2 f 8<]1$`'(*_)hQyLͶS7:'9mHdŃ|? |fƹÛmNXIZK_^/Xisn ypKs`/|DC{\s}@phLZ`b5$㴱/Y*q #ؠ (=O{&h4Èع8"Nif9…[X e[ѽ/X3Zfwx yѥ*Ȏڌ|ڰ"DBM= ^-t8$~pQ p(9r`B3oq$2<k qd>^9 <Q5js:&f_?M? \K?>"M$8< r"q()%! 1T8>OCYרbDZ@xg8#b]A Ȏ7i~UߧK0zwҰӚ ءbq fDrhvyG `Fr\E&LqUn9A}^ =7Gu_a9?n{m*ǎ5w!JkVgۈ!Db2n97ݮBńD7P(W(YGW',G'֯;*ZjH8?A(6F7amv _ɛN>,JckPI#&ϱq\ VAce)pݪ-`FNy84d( X`(ZW/_2-оX* 'q_=]sQ7[4h:)wBX-TWUߺt(!`mWEk;Q0uw=LF\Qyd3Y6k#gVnz=ʮz#^̠C91d#ri"PDͧ ldvd )^`rm_(,GjdK3r o Un]] >OU5`yy=51'5FumtJTf',7 ӎNf ""-߉DK&Jh" uad& Ŧzȗ:.\oZi(;H;aKyE?NUG  i65vW̞Mle4N#%D uDq2'( Pf '65OEFi}STi3.1e L'NЎr~FA6d:#yc pJEeVVC$!5ev rqXd\Kr~ PjWaː8nR ɹ35#aߝC,qD8GeE<.|\㛾DEHbXh&>q*9=BC)%;} Enc*\K$i&]"pOH&1J`: )Y#;U?{EbPqڢ:. "h0q*^%#jr^7qdF}=R1̗vqUECG.eP6Ll—C@@H`1dC@Rq!GhfBp |[XW˖U%qJŷH}' ֬hnt7$ <JG ?2t!J7 !1Y8Nֱ4x~4>syYpD2e֠]A>)Z_Jf ƽ.#.}O565ŝN6MCN g?Ƶc mq]mA `|1CEqϘZz t16FA:wE,*nbdBw#d_YKU݈.% +w3o':8pȎ" k,E'8RNuǦ>I?KQ׉ dÿ%CM=t$멈КfD%D9VV R 27,R 芸>ֽ`Lp&LC'wsnjɟ>^H5S_vUuTA{~9 R"]׍vmg镤!^R ] z'6|KL"'GZ+]NHH LtDQ']xz6y|~**+{lslj>_lz8Ϸ Tdd{?4t9spLXB:"yf-+=!sXnA}JLAKK'k_H!z; G2*1m Yt^1+_vS"O@4;`U6(I,d I<XML)x `猾7,nreg=# &-Uy|-u)4y%6 |$%BÇ> m 1 T!2 q wMT?@FexAIUwņt~?jߤ 2\gbI6o߿u-œ G4!cCTo #1AW6(G .e !9=H~u> gyH:2)ɹ>a^b͍Ci #{x7ƫ$'@М]{9J3Fpt+̫l,8o+>iێC`Ò#1OOjxaubʸYѶ 3@.pv:B<|k>^?0?{LB+uG"#/AGX_*/RT,ʺv脞xfF|`;WCYuD. R >Ȗhy~zHU.UZ*rsz]pPJь%øJ.eg#%]Z%0(Oet7\bp$\$kkG5^rfrфmjnz9W%6^֏t<,U Dc=_z~3$zF%ӷV$zۏ,VJ|?jܮ֒^,4`;AAuE l6.@,KSkI؜P$T a*cS>TxxMS菃8\b {:-rZt &:IeHDJZ4ٳwW>jB?Lkg.aese0bqWnrwP0vG5՗PcO }An !QVqƾ.Iӣ(ܨ"d.V8 纞yX: 3H`Bͷ59理ތ+Vdec*D+=^ixrpݛ1,##U?K"2x4]1؋]`J0l  yK˗kEEk.Vlq |?ux 0V1v`]dQ`z)IBHScwic9>d~͍ȫ3iwKyP 8|+e'ZѴ1Ҕn/JmCV30<*_R/`PMzj+:|ۮCC4:zp@||/9l ]kȯ$ vF8h)n.:jE8? :aH.oͶ_PYP= !)񒐂];I4hUQQ]y%`aE]M"A5LZAs9D l;cnkY; `#/;U%={ _ ܘ8k<^GXm)VKa.xpP^/Nf/LSO3x7J/(5K0R<1ooĻN >-i@tݱG=Jp#K Lbo"p:X!^PNc+ -ӧ8c'&?BB$v$ i_πB:Q]H !uE@6t$"5KTP&J,kEDDl(ۋC>Z "gCVB {ֽ"(yN `ׇ2\X]H@s}T3uUMi8$6n{pYJneNTH! x~:<Dڽԏɨwn5Bgߚ0UM~fijL(qjBg_Gv95׫o>Y66(,> K0yV+ǠjM,s>S>p+@/n)z܈*\SZ]u|98@ezLT %<8 ZJYá:9:H6@gBmkxc¢Sb~BH:Hi\] jזWȄJC1ӎQu-/cZfEgs디w"=AlD !yTUpC3ߴ0X6|uR>^zëؗyC\·@$X(}C7X#gt){.wJI*i6p02N B@ u ,Ii/ǭg|o0霏'U.VF2;7YDK! g66L:՝1:F[nwd%͓Lgf>gж8c`|:25! $p~' hҼ3.1  ]Hˇ?@:S~O'C۵Ș2 '5` nCGresk+ D (Ӓݏ˚ٷ9ŮQCbn?p~@BEU.a6DmU|iL.)Y 6 G6pr@eѧ-̦"0 2xqE"O`۩08{&pibL)c!hhS]r,Es^"zq¯0 xX`O s|DT<N%#=A[rJ^$?K'= ?XGjS3eGD~ A5TZpJdړ̾z6e_p|~+Ae< x-lS#?Շ-(sW%_xbE (#c~`k€L܊5๘3gд@";w~*>P0*r_ެTKc2jlĚ\ÙGSk-_/+Wku=/RFL T7lB !vxVUV`,(=ZY@NfXԔTh'=o"u)͍~UwOu]qEzGMQ:N⣖4 *oo@Pc%Ogu(`E Kի(ZVv<8][І7%.K3t]n5O;+oLsTg)aA+7۠D8?4>9=q~Td cUg7!-rS]]n;`#2BѲ^}aCچ7*}n^|?RHr5"~ P@eafdKHFh$j jòg^ P'ir``넳].0l2$ޣ^O˴`""21%Yٜ7W5jxdC,j]}༳,֘9<\fXL9Y&e2M4gLgC}W%;|$=qµd@MĊt]^ @&:Ng$t*M-f ..X^UdvDwh 4/')jd]:Jfs}R:k`Z WS.ࡲ [=$;7K~5H4©CP*ݛZ -Z]b8tJV/?*vGFƙ#΀O-+NY`F1τ yx]+"K0@||Cas`W#'ۡO{MJS.e[6.SnHX A6_x|!Aó/؊ݿ]N9꫼HEsfEcaa`b8#Q08/8gY#"p2-&hN0[2mG;,g w@j99WiUqA1ŻF1!:|ύkYhԪ_w_na9ކCxh@P N! PwπKœg݁r,ΊՇJa=m@T"#cYc Ouqyq-@qL;]-OʂO PDo#'ky:ߗmhn5p>,“i <9\YǔÎhԖ^98Ē0̂,@,dh`{sKjz!Bfܲ wk(ro5xo=piSsƹaZ\C7܄C@aX!YOe&ߙ~"U^/r7w! c"1l<'[!ORۼKz, ᐌsF ^VD!2ߋ W!7:~8>4; Q`uqSxr"ڤT\, ":U'+܀a^ Y84˿I X;1!~M aFY,שG>jX8sAz~]} cIwr 2v {xi8r0jAӠ!J:wX?T93M?^YnaX9zAjwp.8;fZx{ ]0"l6d(nsK+Iõ$i~b kaQ\䋽}NV'\r@zblr_DacjϸeglOpWC~#5M' ;1\GI̷8۱|NȑT h/SeEsQX`>87֫g~Q᤽;tN@hM L>TJl c7̑^܏]k,pf3,Zglh1p靜Ev=1[&Բy5O/x2;7􄥻d.b [6z]HX[ѕ,ivXfb0L*1%`F]V$7\jbqdVXY`Zh; wG %;+SrUN:FB4 /!ø`E+/*r8zwמ\Um4Ī6֞XF c~ߜq/u^t0DkW\@c GYo`Dii^bx+EΰMiWts)g8P@N9~rڶs|_ G.]壚sRĆѷ@yr$?d?3a'@;.r A.}@{۹ֺw>dvgKya+=/Hpn`o 'SU!Qd GA 0m+73z>`3Q1e#H 1-Wo!2@D-.:'Jckr?14%Q-(tsa#kC˼&/`:":0$ZSZlZC,R@>s_& #L?3B-7~6sGc{*kl꩏ฬ:yGc,rf i\٘G?3ɯppj1\SiN#CoZrn,Ir fҟsYfmH ;I_ X̘ס^)UI%N%ۉE-?q9QIC#w͍x r#L d8߷7luU"ł8 v=DPl>+wUft \heMW9}%8(cB)BPR2= k!}?ׇG~2HG8 1?}⏷V1 *(wM-Ax]\H! wG Uhǣ2|d0~?kOB#xmO}~Wo.8W"L$BIF|hh WL6\}-Mo_Bf.i9" [(A`DLB`̼i{!hBj7=uQJR,Y X:j_)Y}0]N-~nH&kzհ[X׷~b~-z݀cOp`A5F -Sy_կOOٞu[<8'ȵo~Sޣ&{|^c/=@x1n~MX+8Ix.- ǖJ߫kT W͡EY3@ic7ZBhJ9Bc?8.6RMĢ =/,FfB0+P*byArw]=*؈MzƽgD!:DV=A~Õz={ jh aǐ$,AtX)duI5~σ^t7@Jn.lG9n5u՚4£Fq-Kk3J-_\*Vz0l.wQ*e8\S@o!9KS2Zb&Sar5nN>jrwόruɞ&Pwm-ED3zgadN0/\[^l?_G^(DfH5jq=ٕΥn ͼ-BtBLv+E-'q fA A'ĥ(FJ-! e4vDPlc|9oO?󹣋WQg[xӆRsXx⾚bL]m=U[.L +ˍXxj?4|i7》~t>XԵ!|]r. >dcjPu~ wo(\hZJvwC1]GDSA XKزNY'xzwp!|DdW[턶C鏈X79wAkpIm9 Jho22&siBd co/ߟE'ء,/PƢz$FWbI"!"X&('5SMe|Y2 n$$ԎX{ tPw,}s{0gsvŹcPC'dHmᕈw&'͓$sYdKq\xFVK5IsX%ˉ+U~@^& !8@voUKzWlrf^ؙʣSOBRnhwqVp@n8LǢpCY_t$ElE#[Coύ賂3;Ramx^AuaiX)l9.E "vo8{6ڰAFjM^~u—@S_kwi%$w~'Ԯ.lZȻ)^:)r4>xdt9m &RpNc7_0&I' 3tr񮠘l-zpV&AxVms /L:G#NQS,d}C]=n>~ >e1Jo[W",ctep-Xo(͟f6?=8`hp;#7Bҡ-Tq_ q%hq )k%zS\V$ZȀN Q HS8ovVjvp,.Ś3˵"St>' ~|4@͐IRvy{NwY INExs(!c!vb??;`Wh۽]Uv ?Sw S~n|+_Nɝ`y6Q)w]b&xKEck/NʕHWެX\}ȯ?v*W_5\j=!b\~}Prr pj8#n ޞև{#DM^ƺ,3|e'\'|%'Xݏ| 0});'K qNH8lZoWȼ6p}9Z@+98AwzrX&&"9c#i32$( ʁ )`#b^X/$uG/%ʿ?8(e  f+_;c-U7r>2M>AgeD3u(~’pc%E8zNd o>ߛoЊ*.N#8i`[$(G ˹<fÔZ#@`Pj.N qșu^>wM5_LW\qkv2g_1{~cvB?m8U<|X,whX LtbMƵzK&Fmm_s}SOO>=TҒ?N~ArH A ,t@mۋ$ew`/q~` ,,KL0C sS@RM!bAM)M}3{ûc޺zZ* b4퉶 "=z:*2+jeVFhm1|i_!6>bˊcn?}jODH2v?1@b34Ϊ窰&eL9&O~^TUYsّ`A0`x7gvп; 5'|O*[[|:b KROGӫ_/|pV߳`,(s=E2or8o[pF/7i6&"?X'}ZOL:ǟ-:;DM_װF?]͎||k(;P, tRk*<@._?[?O}0SEmi^Kߑ,[8zC6K'9GC2+.571ϺjLJ9Q10beBҾ4Nk.uj"ljܢP AQJgKsc}EH2vJj~ZOi$XU"6[avt  ~;Yb/*X9>ZFpQßc@UT5E)R(V?lή|H*icRE C_K%KD\Dq.bssҊnέs#ߧW&_i%B?_~uCUx-A8TLwO;n^~«Gh~^¦CGr d9NI@D%&FT!C vut>L2mO7ޖגoKq'^Yi5 XGw8F9w4!寰M} :JE>/Y:?USbnIob@ ZԏtNOGH7 P'6 j+d AgVMx=(5R$`PܟƛqؼJ ?3_ >?n=?zo}?ϴrD_x$G+=(<5nϭ A߯ÜGcleS /*9w}k {xX2W[:!).Cݖ#lny,,KZ{ maq/a<.XY_Qn>3ɓk-rYuk72pԬr٩/x-eVB7ǥmɥO;8 Oʷ x7D|]bXjORPɞۆOnIၿH8aEeH'䪲#+Mg7vR2W^nNыYx;L=hu)e;slCV\Yӥct~ި<ܝv|rNFؿ̽n i3~{jNZzc/ĎL„=QOn5㭿ԢKGbp sps%>ї+Lh'],#p< A&nźo=Oup0`.Hal֮eٻmx_f^_gӷNqgVBK߲ѧDwYlפ_W?NH5n3@x50Gr9vk(Ag 0:5[F.uro~3473[CuQae=򀪊8Bz\e<<8?QхNvfC~SN">TcY s>k6p,at1xRi2]V˃|V,I5Ur7@)-O:_t2<4X4ʛ|^z?y->T~S O)c ~b}Q ǞNH4Ra /@eE[XiD{]ajE g J^|8Ȯj(`J|S(q fhƎg5p]28{Ka u>!L*\RxyxaAn4(:+^>n~]C(se_2 O2v4& =,άGM-- zEy=!㣨2֤q rŁD Ih(UH0DU~rxMqAIC64E,X5d2YτݏMH_dkgJףX=Ij %$n`? h^#*HD~~:/W=>7-?f&5(O1@5]vcj.V#0 *mV#0ؿuE.tE&:M#@BzcHI4m27;OgT_sz?~z>0a<$2;9AvOknM#w9P)wQúvyyv~Io@ݟor|/!?o`M&:xso:-@Z!j%'u%,v[M5@pz-. ݧV|$-C<OGO 1i6cT p !w]}=gLO{%#, UicD lKهǯ_T,/ .aԀsm@@u@{ "InqaP k c@@/'vZ[ćLQné1ctp :UuC7KOGbDj s9fGm0A+^d5m*s]ϲI G;{!s@7, kǼx%| ݐ/<>sѲ6T+u_W$#HMYvv%W|ֿD=!HN<`3ԕu2z`cᘨd-(gY#vbyJiBĹ SBʋYpڂx2>ٔ-aK-$28d$Y+e@pVLr6 Miu a޸ۜE$ P+ַgB%a`4/h^ [:_~n#;jԨefgaV%EME/kǘvfځ3 dH]Co^ cSxuz;v4.DQ9`H :65t(=3ZG7a2!LVJLDt@9;RdB42KNc?:阪^ !PuCCN.[zCw J~azq7z}B*.Pv&a w-;Ơ%0cFqLr/pI znĠ pAvP4&wYIR4g|Ό\3]^u8.=+YRcy(ֶ9¼:n:uWvosԊ{6RQ`$-u [QE A!￞brYmfe{;Y:Gt Vr~5);\1o,ya K9!tܲظmm~1u#VI@qǷXґ-K?x/Վ r;l=fB3wQ%Hz~<|o?ƌE4O Sl3@.Vx]BElnM.3%+.iݿSdBn+n.T Pou Qj)x|>L`ĒAynpt]TdsZimNWK2%lլ` 7+`hZi /<" ɡOO?}V0_y+JҖ *pƓ1;aj %̽)䟞!CoǙz_uTdQ0_@c6:S|2bIUl˟ET%"b:OP@#~ LWzt5s2Tu־c״Yf>0w3qVK7УU j| *gdojwkiK7AM%&{cy/yPI>(pD/ML\C<>9ld٬WXL∨!PI{c.tdk<66 [f٪^r#e=ЌzWHQUy^3_ÿ+" ̓NWEEw3mTB@0+c%š9Uaܩ2Ǝ?'sp^X{*G*qyKF9J7l"뢣WErJ/]vGDHwKDK'd=sc7-~O?ADś|NŸs!62BMe9b 6r8v9"jP&Xo9I1vR1R(sJœ6s%/hUs-j^S>Z*ض/EU0ğS"((Ϗ#::Vґ 3y^PCu3Q{ƿ; #++D7Mi2N& wF-˅c K{2) [3A JE.]|hsE-Q^Z t0|{M|"71ѹ>~:!F_GEwD^]Ot3Sgl=s~ !6_E72h `2{ rI6y^T}|쌾2lغKP* ar? pX\T<zzQ9M0K$]8 7tzsR}9gnp/ry3wu]+PګOpߗ'ڢ[>y"$87F+z>YQtwsRr=#&$祰PǘMl'۝'b(*T~nBӟE3 .QP%Zr{b\w{pYԠRskAC|>Vv9`a!{;`K1.Y6x /ZiOj'ZPHe7 ,kG"FNq fXHRWoVy$@lǹ $|򦑘DJUBb#Sܨ4ppݝ#4Jθs|~{ JutfXxxjbP@9L@f18-ʀ1q+\ᨛyIIsҡ ?.3DNE{(Hxkmw19 Ycv5t#M04pt#I>qE%Q~><_