virtio-fs.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO
@ 2022-12-05  9:51 Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 01/51] update seabios source from 1.16.0 to 1.16.1 Juan Quintela
                   ` (51 more replies)
  0 siblings, 52 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

Hi

On this v2:

- Remove the stop of the guest to calculate the size
- Rebase on latest upstream.

Please review.

[v1/RFC]
VFIO migration has several requirements:
- the size of the state is only known when the guest is stopped
- they need to send possible lots of data.

this series only address the 1st set of problems.

What they do:
- res_compatible parameter was not used anywhere, just add that information to res_postcopy.
- Remove QEMUFILE parameter from save_live_pending
- Split save_live_pending into
  * save_pending_estimate(): the pending state size without trying too hard
  * save_pending_exact(): the real pending state size, it is called with the guest stopped.
- Now save_pending_* don't need the threshold parameter
- HACK a way to stop the guest before moving there.

ToDo:
- autoconverge test is broken, no real clue why, but it is possible that the test is wrong.

- Make an artifact to be able to send massive amount of data in the save state stage (probably more multifd channels).

- Be able to not having to start the guest between cheking the state pending size and migration_completion().

Please review.

Thanks, Juan.

Alex Bennée (4):
  tests/qtests: override "force-legacy" for gpio virtio-mmio tests
  hw/virtio: add started_vu status field to vhost-user-gpio
  hw/virtio: generalise CHR_EVENT_CLOSED handling
  include/hw: VM state takes precedence in virtio_device_should_start

Evgeny Ermakov (2):
  target/arm: Set TCGCPUOps.restore_state_to_opc for v7m
  hw/display/next-fb: Fix comment typo

Gerd Hoffmann (2):
  update seabios source from 1.16.0 to 1.16.1
  update seabios binaries to 1.16.1

Juan Quintela (9):
  multifd: Create page_size fields into both MultiFD{Recv,Send}Params
  multifd: Create page_count fields into both MultiFD{Recv,Send}Params
  migration: Export ram_transferred_ram()
  migration: Export ram_release_page()
  migration: Remove res_compatible parameter
  migration: No save_live_pending() method uses the QEMUFile parameter
  migration: Split save_live_pending() into state_pending_*
  migration: Remove unused threshold_size parameter
  migration: simplify migration_iteration_run()

Klaus Jensen (5):
  hw/nvme: fix aio cancel in format
  hw/nvme: fix aio cancel in flush
  hw/nvme: fix aio cancel in zone reset
  hw/nvme: fix aio cancel in dsm
  hw/nvme: remove copy bh scheduling

Paolo Bonzini (1):
  target/i386: allow MMX instructions with CR4.OSFXSR=0

Peter Xu (15):
  migration: Take bitmap mutex when completing ram migration
  migration: Add postcopy_preempt_active()
  migration: Cleanup xbzrle zero page cache update logic
  migration: Trivial cleanup save_page_header() on same block check
  migration: Remove RAMState.f references in compression code
  migration: Yield bitmap_mutex properly when sending/sleeping
  migration: Use atomic ops properly for page accountings
  migration: Teach PSS about host page
  migration: Introduce pss_channel
  migration: Add pss_init()
  migration: Make PageSearchStatus part of RAMState
  migration: Move last_sent_block into PageSearchStatus
  migration: Send requested page directly in rp-return thread
  migration: Remove old preempt code around state maintainance
  migration: Drop rs->f

Philippe Mathieu-Daudé (5):
  hw/display/qxl: Have qxl_log_command Return early if no log_cmd
    handler
  hw/display/qxl: Document qxl_phys2virt()
  hw/display/qxl: Pass requested buffer size to qxl_phys2virt()
  hw/display/qxl: Avoid buffer overrun in qxl_phys2virt (CVE-2022-4144)
  hw/display/qxl: Assert memory slot fits in preallocated MemoryRegion

Richard Henderson (2):
  replay: Fix declaration of replay_read_next_clock
  target/i386: Always completely initialize TranslateFault

Stefan Hajnoczi (2):
  block-backend: avoid bdrv_unregister_buf() NULL pointer deref
  Update VERSION for v7.2.0-rc3

Stefano Garzarella (1):
  vhost: enable vrings in vhost_dev_start() for vhost-user devices

Thomas Huth (2):
  tests/qtest/migration-test: Fix unlink error and memory leaks
  target/s390x/tcg: Fix and improve the SACF instruction

Xiaojuan Yang (1):
  hw/loongarch/virt: Add cfi01 pflash device

-- 
2.38.1


^ permalink raw reply	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 01/51] update seabios source from 1.16.0 to 1.16.1
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 02/51] update seabios binaries " Juan Quintela
                   ` (50 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Gerd Hoffmann <kraxel@redhat.com>

git shortlog rel-1.16.0..rel-1.16.1
===================================

Gerd Hoffmann (3):
      malloc: use variable for ZoneHigh size
      malloc: use large ZoneHigh when there is enough memory
      virtio-blk: use larger default request size

Igor Mammedov (1):
      acpi: parse Alias object

Volker Rümelin (2):
      pci: refactor the pci_config_*() functions
      reset: force standard PCI configuration access

Xiaofei Lee (1):
      virtio-blk: Fix incorrect type conversion in virtio_blk_op()

Xuan Zhuo (2):
      virtio-mmio: read/write the hi 32 features for mmio
      virtio: finalize features before using device

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 roms/seabios | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/roms/seabios b/roms/seabios
index d239552ce7..3208b098f5 160000
--- a/roms/seabios
+++ b/roms/seabios
@@ -1 +1 @@
-Subproject commit d239552ce7220e448ae81f41515138f7b9e3c4db
+Subproject commit 3208b098f51a9ef96d0dfa71d5ec3a3eaec88f0a
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 02/51] update seabios binaries to 1.16.1
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 01/51] update seabios source from 1.16.0 to 1.16.1 Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 03/51] replay: Fix declaration of replay_read_next_clock Juan Quintela
                   ` (49 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Gerd Hoffmann <kraxel@redhat.com>

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 pc-bios/bios-256k.bin             | Bin 262144 -> 262144 bytes
 pc-bios/bios-microvm.bin          | Bin 131072 -> 131072 bytes
 pc-bios/bios.bin                  | Bin 131072 -> 131072 bytes
 pc-bios/vgabios-ati.bin           | Bin 39936 -> 39936 bytes
 pc-bios/vgabios-bochs-display.bin | Bin 28672 -> 28672 bytes
 pc-bios/vgabios-cirrus.bin        | Bin 39424 -> 39424 bytes
 pc-bios/vgabios-qxl.bin           | Bin 39424 -> 39936 bytes
 pc-bios/vgabios-ramfb.bin         | Bin 28672 -> 29184 bytes
 pc-bios/vgabios-stdvga.bin        | Bin 39424 -> 39936 bytes
 pc-bios/vgabios-virtio.bin        | Bin 39424 -> 39936 bytes
 pc-bios/vgabios-vmware.bin        | Bin 39424 -> 39936 bytes
 pc-bios/vgabios.bin               | Bin 38912 -> 39424 bytes
 12 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/pc-bios/bios-256k.bin b/pc-bios/bios-256k.bin
index 6163fb8149dca8c30f1c64736a63dba33716b9e2..211b2a4da224427c33aa0aafa2d8ef12b0292573 100644
GIT binary patch
literal 262144
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%0Dn>bwn$FIor9u{DYrhL6K6Y`7$!gKhWw=Gb58n
zf<qeqDc~@V&UHq7Bh?VPjXqm6GWko;`PH%Lpe@*`{=n(DiO$_n!6rJvvyz)4zKLr0
z@5%kLF?nL*Hh@RK#VBtx(0>GhXCF03TIe|Tq>Us@m485rF}~9lzLTgS`6}-~)OQ=o
zw~m@PVB!0W!XA0Sx58sf(a*DlicRO+n-Qs~iT5LxkzkN^#4R!+Q4X~v2gW8*S9S0{
z3KDs5Z!->UVkmY<`sB(Dl7N9)(n=lX42ytVMJXeGw#_Ji%b3+}RE#jHMj=|*>U^>8
z{#&Kx%D0;0uc=!Zq7`M%^|#+&BjHmw8`EfMHpa!ro8^e?P#ymnah>YJ-=WMQdcKjV
z9~jfzEfs~9mfSmWv^p>{>#fMtcB9H+Orxh$HMhKhx|puqs;O`6_+%C3>@lh)q(Ynh
zsZe_=B&nUxY~6q5Th?um)9$7{Zaf@>+5+b=qgjOpbAkc#Y^->Jtn1{Xi6TIui&jd=
zO?gZNH4S{|g~~om1vO4SU@*9aJu{2XASnHQgfm57_Z+=qJL`lxL~qwO&L6nhEcc0T
zq&rP-0h11~l7$Z(3Qn!Az0qyW#bLmCws69hOd=W?9seCUU?KZ{#eGwOPG)Q1E<&P5
zG53W#(>$#Ui5qLU7IEZ8v=no;@r`*#{CoO!&JhOM+~<*|qnHYFVMBqo2nX>7-dOLD
zo_JnB!R$Kg7g3}M;%^bk;eu<u0UGUSXQDZ0(rfED-!YR<Ao=k3YoV`GD>$xtuz7On
z`?bwaNkJU*OOE(JJENQBc^R38?_;QO8_j4U(Yb2sIKgP4bvbK;z41t@bGFGM6FfB?
zDgZ=SEm3E8m-;&J!&6JG!qa$TTD{zZgiZTav*n9756`~xQfsiUMj(^_Acqu5aZjQP
zdYj%d>rewU_8$-W=w~q9P6rYg92eg#wms{lc~T!!-Ycm@6)8;<wLh#vtaE3R8U$^c
zUtWsXoR-q1<qI^hy`9ob_#Q%N$Wq;qu(BR*aVsxn`5hv<&w{MkPO>zUv9dekZpzl;
zW2sCiryBc|lbUw9;3d;V<(oN9?9TBwa=_6P!({apz7>~}oCgsyMA$B#r|>+U=P!85
zorop859Qs>^9-H?yMZ5{X9C~MS&~_gIRKA8d6^kp%d&3<k0V$%e8;Mp#m6`9LD;xG
z>X12L$=}wryPz8HDUSSiCpuqBk-+xmC*e<WS4}DI+nC79--b6T+59=+L~I|OQm}u=
zZW0XyitfMCnuFHG6Bbw@0w!?u7eAY!BpMu`bfLI>$TOM~n<yyq52P@3?f@j5{mh0v
zm$Or(G5Kv=X)IW@mP72*N$9=OByzlK(l+G|V-}8$m=s?Ae34nD;ZLl*Il>361NMbm
zxNC;q@zQ@|hPJLcj=QzJqdRZzq$_MRpFPdq$JQ}PIdF48U&S8hy$T<+F`g_sPkl*C
zwTRkpVPG>s>gx}Mbn;N^B6eq`mfcMP=oOis-CP^OA#X8uIxc5;FEupY&g{3F;4@%d
zM(N)XDQh*_HjrASgq^L!&eCCL5_V>b?~Gm%pBFHN3rqMNu<(qH1webLh9ABME-di}
zJ`kKP1}DhN+X&w%$L;J}E=#gtqp(xF+pwb=nqC(kfIk%m9DC)V=46Nv5*tBE^=Ed(
z^mfuNv*!nTMLi4b<S82@0o%#WMqw20U`Nq@(l3X(r6+r{2*1;S;s?c0lVRzWKxei^
zQ(x*fea6cT(9NWLS!BSQM9!ROW6?&oi5uGJ99%oGclzEE9OST{j~Q@3emdM1$Qwj8
zga4u_#eJKdMVQ=okz3YAxsF?#7;q;v%`HR*dlSQYc~;Zzd=`a6)c_S~pfetmqm4RZ
z6A$q-x`m4;4!{jx5A|6y_G45eEWs%Z7l(O?7+UQd(b||yq61|w<VhqXZ&g;)C;1F5
zQL%iz2~7vj>;)d2T8k(~Yoe(j6e4J%($^DuZD4I#cCr6je+a4#uOBQHLaDT)*MPcu
zR@0|){Y4d6f@A-9u~<UL%Fb4&DbLfX_?n01%&0Cq1u{d#Kj2ykNT<+pNj3*=x#P%5
z{P^6Ru5$2H<)CNiB!$9PpXePH%XcZ{;zrRsH1U*oxR`@(l?xJ+t=+>{Q`dT@dCj@r
zD-M1tT>ii;`d~qCw3dHasitqIMcY*kOdb8B4cnQ}Y7Jv4d183%&2kR4qPMeNQPF+0
zpw;v|M(^JV$E%kfeLujOE2JfWAk8a>p;`-}CxNmLpp&p{p!K8LbEWBmS(qGt89XH#
z(N#!@R8DT5g4bY3IN*YyGO~;buUU+luR$aCXNuau@jb+9N1%?$krJ`0BDRoAR^8l{
zbz)n@UEG7^jrY2?;IFy->{nHIw|B1RzKrI|K(!3M{qN~9;1DFGyq}!f($$%(AZ9Z}
z?BUP4QcDh*%nEvOba)^pVAcU<gGKh;?a}(qLnzLy{3lD`Na@UsL!t}Cfsx!4RJ;O7
zMmA39mK9k-&S+H9>sc~eh#k{Y(T+@T>~(=J-apa*FSsI=8l!<a!`CvBX!zfJt;NW8
z4v1KYlOM0D$ZDt;5teiPr30<s8vC2RM(wqBj2@=Px7L3_6gfHSbQ$%E53E7zA0t56
zk~HqO?@FbbcDsxN;g_=``goRYILp`+cpO|}wIo)}QSL@fAb%24+N^OExr|m}U!3bF
z4~#uX+G<XaxV>~pC+GUsw#dCwUjCaAeaKs%0^~t|tVX~E0e9p~d5&}a#ktj-;w-d&
zo6;Dk@xMHxzoL^;)nOb6hr&GiTY{6jaoEnOTQ?5<V}kF0!a+`*GdSofb>7Y>uXDbr
zTaUXXa=PcFwI#8Vu1V9E(W|;}c`f&YHyIfB>Fab(gY>}U$z2@k1+^#ln_hZpqCbIY
z1HUS+@4EX0I&ugHphmOSdU{m8E9AS?c$><G%v<PbvTIDgIoS|<hFtXplkk>k;0r^A
zqpOH4bd-hPEp17Fl&)vQR%~9<IfS{3zz0VMah4$*ZvPoQRMXY~6H3|f?12}h<R2la
z!W@UG{I1|t)!}noq05kdySOpHtkN72Y0K*BHVZ$O!p-|ML+vuo7i7(vt!`%#67kZ`
zxF|)afl?T*G52&6`q0Z#*d4ks4>oFP^Cr1m?cIna62MMiDh8}J+>v)sS$*#$Z%x$C
z#G{QO^!9~1mYinPFw4|l;3e*sX24uvyBZLe6<6R8w4=k?i7`?k_r^G)3cra>AG@1&
zAD{n5k5R^`NDnA`h<ZO%%#vXd96MuCj(__Zj+z?_vqHUqH?HYpd;Ye3Kdy=+Q_CXm
zHzPCbT*m{I-6L`}p78DCSg#zovw=K9lPH<oo&PR?EA8W9HuL>9qw|OrSM3*V(k{Pz
zQZI)t*~6Zv9o3M>St14yDj}^TSu-DY5J^0g@Z1^v%$dP9G?N#<`VEcBGU)GiH<hGC
z)=pq8*1T{*VDw;GcoGHq1M}te<afw0ND{Cb&b<2OV!stG&-&4&mlz+8-XH8`bPnI{
zEUj&k(BxOTWbeNz_q(Uq7Q>oQzNfeW98Ck~H&YzF7W-#l?>?hRv4PY}na`mA8s1zO
z8S4UQV6_CTCJ3#FF(cgsEt(uDS}(KsycygNJ60SlSWx%CjmJjhKx5`j_0J3C@p<t}
zNGHaMYXyt`zL98x?=v6Y^QcJv#ni<<ElH!oCOhj^pG<|lQzDmo*$~Act9s%Ovaq4}
zI7qI<sa<ZX0sqCrYL*AHmYh<vJY)}fYL+jyga)o!DKRfip}=rUP)j_%ee97*eAaGm
zBSvr3KfH;%I#cP4eR8g|4!J6uc5w|4e<d9?m*$%(9GX{c{1dp~iuRI=kgE6EC?aNj
zsugITUmLAct0r&o5EPdmQ&qDQYRG6^JBjYnQ4Htv*E5a$ffuC}tKOoPoSRtLA--{z
zMtVv@wxxaJ23doXoa=8G7-KwTbBD@4=f>$p2yt6>d{wvo#@zionMN%*QWq#Lpj<ew
z`>G+=)h)uH#rH~FA$+!~cnslg-y1+m8btkizD&CKuR-4oIE4Tx4IAr0NxX1qCfI4F
zYwQj<JWr?VC*-3TaQ3?bH6pAq*Usmu{=%lH-d`cx9f~|ZNa^LvDCte{ff{t6ehRs4
zQ42FEv|{MVlA>kpqf8KW+IA-T`o_^Mi*n3>g-DcY$4Xp^oX*>JQLWaT8te^ZsKu!Z
zD~4Dfc>X3DBoFbL8GQw2g!(&#vW0|dy7YuNv2e#{%5v)=vufDEN^=KLGoEbz0-#ol
z-#69Y;>{I@bK@`YO~RK=rO!Vr>UC}G>p{ns^l-l4KGs@ZY_W74u7p{d<Il`!la;^s
z38C)cPw?c|2Rdnzs1fp<YlY=V=0RS~bA`-{8j_e^Pbr>up7WnCkJIOQJ9e)r1#E+@
zI9e`OWr>usdCW*@hDFn~0g9$4vOra|jyfBB)>XFR1|QZW=!d9Xmr>D8xQw``@y(9<
z?O0jmw>9|WT7XF$@$;CAEHm8fwjNGCg$D-U59Q|7tgBP6z542_#)sjt9yT~jusFKN
zo;l2ESNFakoQ~L5__Da=$pgob>+wv?BtVu+f|gwC&~{wygR=wf)&X~0(okV-t;jmB
zavWJI$P(p3JxCdg@{ysn!k%U6O#+yn#>3HxP=dw7qL;c%qH5_O(Y18zcJrk87fu~=
z*1b+<=lZ;AgA*~R%?Kt7;-|S@4o9^IOKMc8o`C3~c&PrZNM1^{nXr!dof%Qc;#ta0
zv6TEnx)@!2dq!`?3?7YIH{7yqM;9~u!ekE$0d<Xs?pht!QJqgnruOY>@$+DrosDn-
zdj^pyfKxX5W|BBMJtZBG(}G(KTBQ){gK#tVj@qJ24<&|DEj?YdW_ACibRBMyO<ii;
z%SAwrdFT-1fX2ux#b}X330^%KCTp+_lk>FAXCH2l?c3tZ<H|<69!kj<c}qINsjSdG
zeb|wFY+^X&3O$6C2Vit3`E0Ge96;jH$d@k_=z-ULxjnh31?JFcjaIsb?iu=R(+@I)
zhFP1djZ03dHfGsiSpM{^ICaU>7R1oTb;UKnQCB}lW0>!<@*7VV3rSN=knA&7(<O}h
zt>mpMUPVwQW7!6(uauV)l$eK!rrusmKyz%gyuU2(En?lgoTXSchQ&Nhaw&XZu=BR7
z_>A6DTm!%i?PO9$;jY2XdPoXO?LTy^IPr1TV?%F=)D{0hk~1e@!RF$ZYJFYteP+l^
zuv*QlpXcrRY3>A9K$f2mqL<DS9QG2!_C1%GKHn1R5n*o_D_&w2yW<VQj*nxytH&6#
ziLC<m9$j8Fu6v~v&1YvSf5|%C9@13K7w;*q=NaDPBK8j6)VXHty}V~K%wLZLb$Jhx
zbrps#*NOyjaT}D0f4Wkr*3cw5QjgwVe2-)`%clkn=sF335geh-MlyNYpV3H2;hCU$
zQp|A_6PO|0@F=_E9CJneiiMn}<B*6o)hlZ%v)Q6XNNsl^^w=QlE`$|H)GY9484Kbg
zH>myMI;7Ea4y~Y3Y{mYgSI{e9g<jiif}VE?ja<J{x{9qidQD-g_I-oFh7A<e#U#_V
z8bMFm^2b+r#PTP4%?Zz0nYnV<iW35{Bgx?n@F#cYI}z9MHj$EHKJ@R6hZ-u=9&yMn
z3m4fxYt9t=^XwZNWQU-+aD#-c(~mem&^~e&6>!cbk|6RwN`4xxPiFn-RA<rd;x{K_
zYC@tFW+Kxr$d<7SBBI)iz(mH4<y60TKNIK$-NF4h(ljlFNIj}MxIab~$Hk8`Q=ix!
ze4IA@Vf@-G!R+#6UQ0Rl<y*37mnnuC+CG{Qy~svq&BRWBZfZpFF<oVDc7p+Cw1{GZ
zv;H^IS2xpF^N#0I%i}FpxCiMgGv!m8GA%cV)^5gBYvS={hxstoiq1RnIja`GHgM#z
zQ}>pcZ((=7<10|o(tXvObhc(6$sBIZZJ3=yE-lWHE>~rlT#Iw8&E#vCExZh}m^3y;
zKa0<cUT07Dvsv(gCf!xN(n}nxQ{*qqjSJG&R=SwC%`~=_iG>1xKsWq<5RtJ8Gs_=9
z{J`$`)x=9(T-J868Jj(@1<-S>$$l*p2g=qCNtW%SNATT%+KKLw_Mu%z^$2s~XFVdj
zgNg!KG}Oc`;Cks1nLUf#>>W5vW+3Vw(J2cvI0mIhTIdm<+icVd>5)YPpR?+ng!$8L
zrl&K0)TmoV%=D~4)UB=~T8PNhx@DsF`9ZvHbshis&*Jllm#L-Ak=4qd#WOAP^^HSj
zf-AdA&c{G7ZC$28PwtK>Af|`bXE5^&?~ds~j6+|hV8$HR9plJ~PVQ-1A8BYmzNBlI
zgTDSXJ-f~Mbkrwi)UoD#I%aEkOdqCU+B{6h{Ixr#FO(9}iC}gGom)ZYwwRrZ%I{H~
zixUdXlZ_rEl;6UNpY^m}0@ngnwxZC<2*~H^OO1xKq~u17DaNLudq=~%Fn#%z_12es
zE;4csEXMFuwzh!jt8HWusk@uLcC#|W-sXtE`=+j5#+IKI=#rszCIy;P{eC`WV6|rB
zkq;X{n>nm>swQ|jkfMQ(GVjzePjtr|W!|Y{qTMmMxv)K!8gA)H4Yn-Fkt>Y~3|}5J
zNsq&rsa(^OH+aZ!b8o39Yu8NI5<4sX%-&>UAD=sX-{|j`Umh(_{oUdf@BOg;tn<-1
zsoGDadcL1kO){$4ARveKp&_z@iPu2n(BB_v&4b6bW<~OkKZDa(;5dP!x%UZ?e$v_;
zic<XCRtx@z`f_l!)YkM#!TCrXU@R;yNG`7n>A=6O3)$Ap1VoP<F<1&N`u7Ds_)ihZ
zgLvgp-uTl}8lg^Fv$(XiZ|itQj2GEpK@NWQEyj3z>v*&L@sz*m-<D72pA`v34zEU$
zx{i~7Qb%`Ri~FZ_>}~0bBT!i^TfA<n+Aq^>ZnN8D3zPAAR8>Pme^#zX%6<MHW>uZ_
zxLvX&;H9A}UP7{Ep~qkS&pnQ}p8|cuQj>BIZT=Z-U8mW=)^(aI-BsOcarcehXC<l{
zx259axPUv~jh#&&7er?kr0BoseWo3(-_h#rW#!r~?5AL=|MyB-KdMOhnW5&?@$|5G
zqCT5>bg^BX4&T_lrs)bVfrB+?QUTy0&KdSSGwtUv+fQWgGVFg^EviwdY5_p{!b|3G
zXzUW*kI=i}vBMZnmZig`qKuF!B1>wutgu;DPz8obxG{G;tHzY@fgH04S>L6LB2WQj
zatz(V?@U7*w##h^2=BM>aN*T@PS%n<)faL-iL_>mIz<!lQ~}FoAremnl5%dQ^JJ29
zg3OVCbNy@IKDuEr-$&SplO8|9MnJI({~&bf;H;Lq;@fz!MPRd_q=l&<?hYRFCQLn#
zSRr-iRl|2^Qhv3jxxp5Fcax+i$%7;*K8F7O*Q4F^w^r_prYY|&X86&R_b%)Rf#*>7
z{T8_~Q^d3#{DoAMVuUX^n>HlLT)rLQjukxIIGH;nP8B#zu&BE>QGbV-$kC+oqP8u3
zaGVzehL#GaQ-30%A4}>F*+r-_b88fkZP9=&hQM8}F0&2oq5uz}9;;#paX5eXpd>Co
zggUyj?ryq#Nnf##FA8^MIqP-;G7%zyT#Z%ticF)cOxTga$StFy6I1nF&U&hCSyf(E
zW)1e**oZ`+EGt-$_&tFeMa!k;7QB4d*YF8RbjH=7f$!a-od_7D_JsoOjyhtIKhzcQ
z#c4yzwJ1lEQLrC77YfD5m~h5FlQx-6(!`=Hav`B;kc`IO)E&~ZxUwC6s|3hVgBtQ1
zMpaLPt4wXhDT{WJZUVSM0IU`Ow_FdO@j`J80X!rp!e)>>eTEbnEg!|F^6&w5HA)zu
z$TSfdpB|ZGL#B9&^TqNY2c3*$YuCcU$XTOT3W$Zh@KjWmw<M28eH$7vTLtS{ViLcg
z(5P)RtW^!4oaVJKm&Et!&f)J{Z`XmnS8F^t33$hhOYEo7BbSVd+)@?^c}@Hf6EM$%
zgU~$Vkf1-(^BO66bTgd80qZvlZTRYO#-EmQg=bBOb%b?C)OI!}p(j4V*v(F?5vb+Y
z3-S?a!JLPyU9C~zA<$@t+N)@X=5#w0QmEJ>IP0p&E6nvYf#KD?2-yiM8d_?6!x(c}
z_d9PLPRQuL3n1sMLnL7zVhYE^bx4@?&l0Ul)f~)o-j-*+*Y9=K%RvQ8OraG|MohpO
zKH-BUOU(g$a8T6oJ+GEyJsydh_|1fd$BF|^OVCmKcNq*{{I(}b$?++|SxaTr<d<lP
z|B>wL?-nM#iuQF!>ojzA4v{EJExmB`rqE3>VSLmdZ%B{3-tpU|B{xZ6m~_bivVa=C
zBI&zWa*Zn6QHA!6kB~xzIZ^Ly6fQ2AR~-pUnW#-Un0hXw!oI3}X+uS?XoWLASLB&J
zCNNr^W=XKk2+heE{<0=9gNe%sR#h@_n9FJ^FUj8ebv&;kZenVuUJ_I2zh8$TBqy83
z;qb1`(H|}>WTof!=%Mc+Iltr*88kQc;9~ORXZl=KP;qGQ#nP*j1>b>e0P(wFOJN89
z@}l&<M3p<J>>`i2mK{K<$TH#V<_ah7NAW{DZRwl?sV5wG!+x-jnhj*~>ZS}-JiEL?
zqDw?cumS0<g~fadV<O{nZO-hfsL$>XtQOJ1)yRj#n+wA!%i?@2hh8HLhiZExxnmb!
zy)YPb6ShavjnnBIiCYEUG+T6>W|I2gH8s%lMB-1>@vh{Rk!$U-62#2m9|taRMQnfR
zK-Z2nB}WHhG9=zs&kN=8R!S<iGaDPEAMJy{2!XTnA0|FO$_=Tupd<XFJ=8n4Y&52y
zIk9`%dm^g7Hr;YYd!h+q6iSo3CY|y5TGK*$bQ>_Vv@)!0GVe&?LP)9L^tF`$?iuBd
zoG&NQ?94|dcs?D(t#h{IYm(N&#kZu51qIk4iZf6U^YRgsAN8Sx&|TaKgHN~63GsEZ
zgD#V(*C?5lZiG10(z;N|OE*X!P8bxsTdM_^HkIt<61G9W%Yb{G7@h|A#l3ILDbYTV
zT`{kqcs?lVbaC;8BZ;do)}xfc=wX0Z(sOr>a3j>kHa11zVj;V2@^%f+%LsSp#NhRK
zDN(}&dl9)0j6W)P!|GrY58e<F9=w-rm!(s-&$-eaiqzCJk7k*h8?-SHXKs9uhz*yM
zO@t{mOS3IYZ7t<D&spWQ)o}@YOT8=#bCOPW*oOMMcyFi|GGL8dqG^=>vbB6PbLj9I
zxjHGLFK*H&5oflP`>aO!RAbik$Vj=FDKb`WW`f>NUsYvHz0|nm@}VsQ-Zetk8MiD-
zQmBuH<y7NZ!SuSz#aO<+jiOrW1v`BkRqdu(5J@=b?Q%5KUnw~AYHO&!g4YIg@15bT
zH4XLu#aFa`fke|*t@Yw!X<p^{dGyC7bo6Y?hi~WyT;tu1b>Q^vV+I0so7#9j_X>{B
zWyZgt-|`wRvNv4h4sV+2OTH{EKa)x4=5CIz1zCYQaO5P|f%?`8LHACw7@JxxcAx(O
zq3)*jks*lJC@w8HU~4!(PvhnVesp0zB4Jm<cv03F{=UYiH-+APo^*}#-U$QqeaQs5
zZJ4;WWaA+RiT@tHONO=?Tt3ZRuQ-gCyA3O|(iQeuSpalZeKrmbO5={drcz%LFiZvx
zl{aNErc|9u4C4wrl;k#+Qu__RAX+MBx`&pA_#2o=NW(-q$*`%%_->e(1J<^Ni9H)8
z_Kz+ZsI~s$232Qydi)$cs+{pZ$Ox1TO!eQuyq7B|L%FTF<>!~q3)2(7fJD}}D0`gs
z3s`!i;U*g@Le{|Dz{%Wx^gC(J@f0~!VRKnoIbkLn>bWd{h7#1H*I8*d-aJO#KWe~T
z&z0ziEg$j@E=AXvvl(@v+XWlhxKs|<7+)n0Ns@1vyr&V`>MfRorB-i=G*Cnz{fvGm
zIJ9NLj$v4L?Ks`uFmuNl{NW&allp$5**lG#{umQ>l#WmCh~E6|uxjLQj+Tj8mez^X
zr13C|`UUpr5-uxY9P8tTC+4BBu_;)xLCYoOLaD$0Q3Ul99a#k}6LBFm(Zvjv0C=G2
zlKxr{bkt!)u=q&Mpw5|_Re%riifm&!rwJAIo`^OI^nt_6t+}?`6rd_>7Hf1`?$Dj_
zasKmsj4kXIQ_+ysSp9SjWv#JT+75H@9O-A{MV13CP7m1;PLyD0KOX{YY^vk?oF!ky
zMv-1^y*k~dz2h~~rlOp$o`o$;zLvgbT<!dC-J;e<R@R`lE(Jh{_)B$ke3HL>rn<Qb
z94f4`Xc?<t5Ik6xro^-ln(2%N8LoPv(*A1Bl@NV2y_@D?Bn@K~|A1F|es0s(a!fLX
z;~z4WMrUV>DnVnGTq4>=$S8H3AZ(sP1_j~Wg0KaI6aOtBxQvxSa7r3w!DP;802YpJ
zU4CARZ$DDvE|+<VbWnmLww4Cp0lgdR<DxI24O@IE=pG`~`{hTC4BrpJ1q!9`j9gD;
zi_Xm{joJ=_)C4)%E5R|Fo;ei%goeV%@ri42=mt&<u}Q(c&SELhpV+~bK+L$1Br%Ui
zNGhJ95-L>?amO$ewMw10PbWx+%-nh?GGVJQD%#lcyim_tUeOs#g|WTVWDwi1-P+mv
zAZhengqmNcT5LdU-o;egJ&8lTb9H;<h-8JgV(yeJa)xCtaVxbjLB#{QoVP{<6Jd(T
zIJ9$sz|`duX79m!u$;@12=vk@BYsx@`}Nt_xtyt{n*f%>SSGYp+CIm{b=5HNUPAOu
zfTvN^@f4LQW;`#t4hSctQGQxN`TwZ|8d=ce&kbQ!$oMKsJOCZSOKEgO7eZmmFZIIm
zjac!k7T;mKsin*tp!8tqfd55|40*6@ps_61SXN*x>t!tKBQODtQ3RtcUO8i&EMrSK
zE@A~}zEqQ>6I7fRy{wf)=UJ2eDQK8_T*5llLy~4L^RW>`O44f`31I%0_9+}1njb5p
z%IfrLQVWweFn)!M^f8QY)&B*djEvh?*N`N6)&@z*h#Lv2dUA>{YbIx_cLWhB9UY(Q
ztC*<Tg@1cNXY<jij@Tb$F`m!zKvRpM(sd@oq+Yx-U2O08Kcv{DQtU$<qb9e4qvKfi
zGTc?X_}SWXCa{#_wnY5qx}iuResWic{326e_y>1rl?iU8fb#=Rr@n}^;iYUP(_<r%
zA*#_*xXf;cnfmvnPF8NToD3Z!2~Zn&6n|Y5@Yr(bEtYv|PwS7o7b;B>#03?VgfEK@
zdqARz{Ok&VLIq+rs%!KhK#x*jX?~7W2^z8U9+nGladhej(HDwqB(Ic~h|iFX3N;&m
zrb`r3Up0}ONjsNl56}7jnKR^hrKmi}iTBl&9$1avXzxvG<K3{B6N<0MsPE)!5V1ds
zotF?o-MU|*hbnVT+#kY8+6`OrDzB>yIfS_3D6={1zJ*LG%QD)Wbx~={VWU{2QqH>F
z1h1Nx9sV@C=7(%&{aZ|%RkL&HGTSO|q4Kgs1J});BivQ6T<A`R>|525B{qFl0}0_k
zDMnmnHU4&o@^XP8AFfytiPWP1k|vZfDxOoWlrI(n=lT{Na=EZe=9lxC7InTvZDCQj
zTTq~YBfe*oy)9%zC3tYW3r{*RS?iSlSsIrX6$%+Ri6vBIgA}CaU4XX28q7E#d<FAm
z@vqUNd(qdssUr^`+I{ldm^LgYHe;DRQdS(9jVWJcVa>9>)&VJ0_brw~wXHD6;&;6e
zsX)^w{bcoP>JTzYOa$%WMsc?78U8XS6ZprY6xaDAkrme!Ea%hC+b|sQZ!-Ly#?tQy
zk&9Jq`Fr>+$=?&+cD3Q}BGhB}57i>|w^;0!aX=-g&`NOfZxIB0-Xh~Yv~y_-n4ZDh
zSJ=^s3*{c%B2iX6W@4eUenmd5Ft0GNgeS;4&eKcXj@?weEM|-`+zql~Sr6c89ud&;
zuM^Wq=zMVpz?JVT+L^^6h$1S*+SGIc5~q_ucUax~p*$76j5(O2*7MMF${BZwUx+$-
zATczjyTw)4owWD$N7_3VP_5;fxYYHaeaqP?sZn9XWy})0SCo!jb?C<a!w%{&M1jJ@
zv%IQ@Mw)~1BHHAr!6>`fQG@Y$St}WT{Ao|*G8pY3#9+LxdobGdU@X*wk%UEFeq832
zTA$CC%BM#o!5+0kLh$e}GE~_;U9x97pJ`HYiP$3J5MT3024i1_RpEt1wX5Dd63f9i
zt;0mj?mOrhvswQ_g=$Ypy+qP$WphMKQEXgVVq7W)8J_5b>`tS?22r5ba(DCsjOaVr
z*E@}CzB4ZFin@mym501^qucr;siZ$gcisGcL>dzpB691x!xC~u@FU_7tFh}Hi6>|W
zu(zM5XXTELh~rjcn!^}zE13(eUE!|5%lB&DK0Ojfj{r9r34Np9&NSBh2}^kL7!1&B
z7CjhhAXXU+Pw~*3iZlMOOvfi>FcdMoG8$Y-WRz(r&jQ876bSaH-xKkAlDSboH^Y@6
zv@y;Mx405=a>>;qkN?W-_{*5dM|J#PkL~!l$jhV=b;p~lkX=?G)Xs(fcV||jpLD)s
zLk)@IbNMm#0^1SX=n>#(>c}Nyk>=e|krTI$DlV}iU>6$0;e4i<6dv`A?7q!fv5R|#
z((BUu*d9)ihPVezRqSah)2R;2VyV=Ad9)|amZ>5|vp6BI`JL{bBH|m(R}X{eZ@ikV
zMv`}F3**{J#<dfSOQ#suimJZbwDC!;=vl*IgCHE8>ScGp0EBLJTmaAJ;dIQgd_?rZ
zM&oN4TcbCz0=;33;bI3+6Jo3gGLnZ4QgVE_NoXgxmCs~L#GIR6_Fi+raalOAW5MZQ
z!Re*X3G|54=b<}3HFidd{$QM7t}lg0tuL$tnf2w<;nYD!RbkY-E<GMnXL2(AvN3II
zLWJ!{b%|(s*NK;V-TGy7&8!G|u8@}fScVu}TBZ?ILp0M^>S;i>R%p7nwL+h8>ADoL
z&h*!nF<jvme_|Hp)xV7Tc$*pvV#D_(P!qGPx=?mIMCA2r7{IH>Wyzi<ZH0YwU$GT;
zTDLbU_KZf&J2)7{z2jvhFfSBt0?(vd`;9Y0HTKKdlk{rYJ3d1DhXJ&D_$kN`V}s;{
zPS|=o>*YET>U4Mcj#9moIgI*Jf?Mkg`Q^WbtvEEyxxQW)Q8iZ@rd~EcXp#OV_>Tqr
zIKUe!@g{SJwOo_Q>bo~d%rp^M<0C|5W(IpS`mWNQ#yDF<7e_L;mjeXni|2WEbToD3
zNUXI9*ZsseR!tNSCN9C`G<5k2k6MRMn}$rT5k)&$E(;ASBMQ$}g#b?Wb-vh)H&Gd!
z`CSCiy?Hn#aanH6#Z3tT=}IB4K(BkcP4)z<F&(62xQisfjT!Sg>KYk^uAbC_UbjT%
z;ZjSCIc>NDlk1G#+t4m=+H-vPV0Q32Z84?}wo!8}RDX)>2weDOSWfO%U~j8stKt0W
zf+9Rt=5re`1x6-0_^5fUl#N_0V7|v!geF*Qs+8R({DU><stgp<qk)kl@Wt?zAj1`I
zazT`Zv7|Q}bZph1FVgJ}#vHim5s*W)dhkgG@jx)yU@4YCKwfnxWlRdq;5Fj)Mq)Db
zj31hkq8o{nK(JB|tkT8cGbw6oC){SBD$gmXrc+Y*f_Y7DW|!j_<pY`=GA&6C4oJCy
zIpC>+YzNXUY60~7g%>B_d(dRp@i$2POyX<bu$0JH)MYx<!FvFNX%4XZrIX$(Nr#e@
z@Z@Zba2a^G+clC-Kqto;4`>UDQn?6nlEa9~m)WEl4A%%?p!Q5deHN(6CjntkJR{Ai
zhqh{xHC`!M>Lp4&%S+;XB=*kr3+zIwutGk1I+5ovA6H;zWv?E+CAio>D=<N7y;D$K
z{y3|>bUP5-D)GAXWtiIv8iUgq56lL}!v!8K<K<?r^;LEmgfp{kk!j{A7@<`UzPa1P
zw=Wk^2<V)VfIb<}v;sp!AKr9kESQWphi^|T`;J{~doXYK%ZclGO<xq?j$c8EBJ~jf
z&rZd_paJGNW4a`kOP6Br#u|^kMrHr}wy~wz?CRt7`6vb5B62HPOG~-1Y`nmD@G<(U
zU46{_qcu)g#bXmlk))?F#~!=k5rpR>5$vSxogRq0*fm6{?Lkt)9tGz{$~`=$L}nGE
zIPI9ukA3>^m(?v^^9X+Fne2Qr3+<NBFDe6<N})r|Lf08mn&`YpVGgsft!#C=5JM&Z
z`>2XJ>*CVb$5hTk<(&005Hl5A-7V3nCDdeEVoVc@DxebLfP#g$LG}VIK%4<0$&1pg
zl)C9Q+G36!C5~*INkpKgxaDi2hx@dwEyj{U?v%3zb7b3brE=<McD%=hq&gQps@w1Z
zx&y16gY`677PX)m%~ngm+NO@F%F92iibYq25n<XK&?TM=WT1A*-PU#N>F5sgqkKXM
z(1TQCgpkmOB`^X4T!17A*c6^$nW+Z%n=W<ZH2+?~@`be;%l%UXZ1x5V)K$Dua!+1D
zOI5kG;bisKrdjIkh^->i+!*jqw^e^_Y~yclZ259(Rx<18nw{~}nsF@glTLEU2wair
zpdSKeHw1qhE0n?)0WMvi4(S$dg5<_NP)$zJ{>`Y*r}dfoWSP}@UaIr?Bf2^zR3}p5
zZuPps#C&te8|Xd<funAmc{I8Z*qE)zH3wLu#YO*`q5Q)CFx9wO1~!Suh?-IM&@Wk%
z*#7uKx}GEB8a%#YM6(LGdQ2#Ggn9;c2p03eVotIwep^D!C$`saqfVWAgH)r(Gmr<r
zb#%BxYJ4K$co1FtH?Vu34Iy^(e5d85R$SJa%BC&fK3ctYDJgMpc@qyy=ej$zdt_U2
znRBsI+^(Svza7N?zL9%a+{HEA=GT)Dv)IQ8jL!zz5p;5;*r&#c{lqQ24QIlvtvPDh
zU^JZ-_>RU1bkh3z9xbZ-Pu8qJP(rVlP!4a+g^+?Dk>zZ&3umw_IQ^Ls@5MY~ywN6$
zsc9Jbc}vb>8^Y>%&tqDEhUbO}P%)>&(nH!3;Cl+Fu3h2IWuyL(_nH;`d3%dD)rV;-
zN0P04#APC*$hAH#j&jyLOQ?C7*>7n{Em?8LZQ96~rCBXn!&Vt3jWNo&9vMNNdCAz!
z5a&2P8d1EX*=Gm7m7cu!VGX;TGl2-it=GmnXQ>g(v+-O(ZO4a<&!Ho@JHSQd5v5`V
z2W+|JXGh1$K9{pj2CsQ9_Fve@^ssis8(HvU7ZQ^UWbVW69cFgHt5%d5mk!f6FPP4P
zr?rx+qEverH7Ua~9WvsmkW(dOlTk4$Qc=oqEeJ0kVZq*KJ2ZkWNsgt|O;ko3q;C+4
zg3f&CR!XcGp-D`2m;M-Ke$>l{4?nM^rZY4(IukHLYc<Q3tA-GE;hgX?hvh~rW9{i{
z-DL|^1!i)BWOVD)`)kEyh8b9K7K38Hs7N7OE5mI?{VRuQ-W9g+*S16!ubh?biJfp3
z&41ZYswMjgS8&E|+0EQ|iG04~N2qd?FkOa9qB2RO&%8ASr!C3j9;T0ZL+Yrb*4W@H
z)wRpqIrdPWnq~d1OB@W*nF94{pr(iD&hqf4g7A;|L7#K|codh;FMv(w(TfLmrK4Lz
zA8rtJw2Y<YS1icVr_TCb%!+tS?8Hx{&dTu+KPeG6wH%GX6fkgoH!xI&n}I&nW38@W
zZuQvluFx=}6SiO=OZ-^Wk2v&qRtDxt_4=@QUN|o)xW4cnxc-v@)3`pP9{T^mpQPd2
zj)woQr!w&G68O(OApN4@-*GlQbIDQgk4AhDcw1b3EFr<feI6-)btL77KTUa(%j3~0
zQ=>?k{~uD$kN8~GV@ouS7FX!J>d53ixW(#i3!YgWK5+ArA^gr;;*5@atolzsrh<d`
z?3e5pPRwVD74+SqaChAgMUC16eQmlhm!HB`L$#zE=zo5S)?fNH=INAYP9^2SBPoxm
zK&kW*_;{p`qW-6=_v7}FehPP$>deC?lX>Kk%&#0>%t<oD>{dO*vUKu4{flnPJ(7H9
z{3eFV7vYYNzKV0^ZCUr!S6>W&x$G(KfN#yQGc}iHx8yA4>6X(jOZ=v+?$o^L)bEpe
z0Czj0HD}Q|vRZ0%4$VSaUvaK)_6J&|dv|bhvPQffR}V>@+w^I#{Pya#^2zM!qHJ~7
z*)n@@w;$^QxC--W<#UJW1SWXoQ(~_)KLz-E0(@}>c+F?u;4mQrJ8b$$Xyz7)?K5VJ
z#j5hKBa2sujOmW1CY=rMLwDo4tW#Ci@&X~|tlLUZ^ctK{msZURjF3`XloD?4RT-GU
zm-zqqlc3CItkjct(%0HiPk1xh7h>mLX&f;3ynoT+mn3ckoaw9w4vAVfwC(D->%Dc2
zyWZjLE%oPRoT225n}vzHnQI49b4}VqPk$q&U&hY-h?fLu@6lQDl4CY6*%8#`G>qEX
zjNU+a>>pTqyuqpKM(pwpZ`|eG<$Z1yMP0w{lwCKhi)cUX9oF#HEWU1+uXRzqkCWoF
z8|oUJ##s71Ci|*-5Ms<|PMkylyXlnT5@hlYKSrz$F<TYCJ9f6+g6qUvrarA0NP-e=
z)2buQ3hlX8<~J6JCG164vFd(y83J&*m)5%LvUTe;lH=Feca3)r$0mNqXO}(c2_EFV
z#lX}MH`QAQym$4s|9<c+%SQRxzstH!+t!D-ThKu6f!m5zJ@2E&!`~miFM6Z(pA=vj
zy~X%`z}t)Zgd449GV7arj04YGlOMvS=Qil{IqOk%-4Npk>(_7At_B37U)oNXC!J(R
zhrY~M;{Aair7v<JK=H)5hE0Nn^6lSgNrhAO=5%G<DzgEX?pjx)8?<TNt@_!#u1-JG
z6w)=@3n1XFZPzrGHN0mMO%n8})B2tnxa~;b$4=`uYunX0?q*Er+JBNG)?a3&Tupmi
zKdHrUm{{wclj0sJgl>&LcK9fYi@qAeSxCJ9F~dhh1?ptNV>A6z&s2T?s_WD@Hq+-H
zr*h1%Qxc6}5MFAVym)uS?~QmTs1M*CpwQY={T$flvP1Syo*MC=67im@nsij~^F)M9
zseWZTKICf2xnd@bt2IN#qrF}!u4yifuCtILb%&eZhCv;E-m6><n;wzWjK{iiptR(O
z8y2f7zFM$z)(<BP8+<(SA4K8ww+zt42?Sw^W;H!_(oaG}{~1zM6xZ<tOd6u?W^{oV
zTmOzoZKHO93|lqo99^R+NO6W+LSr}$E-jc)d}e42**r(G0d*D`kA+2`mp}+G+N7X0
z=L+ap3bZUZfr&CKt|_n_Y3MU(8*Ov;l*A4s))f~)naSU{h@B_cB0v)r0SEDgk@3A$
z>IP=w_+H^nw$X2fz9OcCm{Ah*`7tpJTxq~-UM?k#%*L})ciL%Jxx)c<9Y0_}_1+uJ
zRtc3*3khcucw@95BpOlDCeFIcz$)A|)>$`)m)gy;cxiL?E*312Bd)ulhdf<1btlNv
zEl-@Blx+0;8lHi1h;q>}=s2X6)96sF*`gBw4o2A&E4Fx{`@qy{?mD6#s`kKgm>qZ{
z6I)IV9W`Qe*9-Xld7=$(y@_XkzH_vK;y}Jm;7gyG)bN6JqF%O87obsK9#!qabS3MH
z0SfbUs(SExS?b10dgpDu%+NDb1EJC#KQiCLKRBH$zmpgA!G6efu2kkC@We#K9djA0
z%z+|&f&Cga+?^bY4w_Gx+F2rlDj~jf;&X)q7%tn`4XhW5Ckdm$O0{LB+?5OBS|5k!
zFgJ(@+UkUp1VHdqR$b}yQb<{cx}N4*P*k~~2y-uCqs)c2f31u_M?9Yn&}{Qjy><_A
zM?RZVIc01pv8|UO>HGFd?o7fR4GRIzU!`DnwhomI|1AP|RnjbtfXwIpL<5m6$gHwJ
z(b3yX2{S6)f(t@WbQ?v*<b8gVUPNAFDsi;e65jzv)TW<0?kXMeLN^cyS^D2#9HoJn
z02Z16ZYNV2-krr4_6h1&kI1&GLIZ@&LqLUVTyVbF^mC+dJvH4dSc60K-Qz+P2L~cj
z`uixoZGXE)^0U{UdyZxlBl>!f`Y+kE_sFKLCqN0^dBo93?HAY6U!dnmJG&Bul!8-Z
z)X4E%fSTl^0U@6_Dqzz>Qh6;BJ%&xgE+Enb`PKpNqhA|N`lA)O)nqDYz#cF6EA_fa
zcABovk-g^*Mtjb=<6#=S{IKPGZ{4aIXz&OC2c-et3&4i<YQ{jpS6?8sE{IOcS~tts
z_Eq%S>~&8Wd%iNZebIm`)-TGQ!kbaefms;m+fjACgnVbuEiQ1@SMtWnmQUv2i18jr
z`%;yFbNwje$LfeT3tb|O;<{dDG3LV57ev+-q(f*CIF>OqW|z7eY6Y^Vnp^Osrk3Ej
zCO7~8C_5MUsEX_H-%U2jCTzG11PvM_=vqOeCKxo)AR#<O)F@8{jXV+-dBtQGu%K?-
zM02@rr7iT=_NOiU#MZX9rPe}-N)ti@N~=74ptg!&@h%Gz#6kci|L>W*8v<(EKYTWK
z=FH5QnKNh3yw04NDOGD(w@%8`Zrx?aDwdM1^Y>@y{3+qI&WDYfY_HHCHEZ4vSd8{v
zx0)oND#{M@z;;$KAr11!`VEKP>s)pbHm(6eXRcJuF_p<ZxO#*qr5ut0!y+*9x2`c(
z(WtUQ^Z&h7>yL`!MM#HYwIQ>$*h6RM^n983!O*AuUTuL@DncDe{-jr5#|i#QYdZ|5
zUTv4`dRe`5n9xls<-k3+6yvn=T6C#zr_Ew3elAf<eaG-x@2!yj=oNH4(M0>I*th2D
z>q}G2Vvlv=86s~z7Z{$KFwy$xX9TFZs+Ii}>=-GN#MtC1rcyRFo`G1b(Yi}ps#EdE
z!^GKmsB5i<Gyg=S{=Jh>-x~#9A;W8}TDBsCvWZ`XVL4?Je-RF`iNB1m*u=jOl(tR$
z0x7^subl5FoA^Rvq{P>3;^%ugsB><VIf|L@Ej+rBcw!OX`RZ*rs(UeGQx@^rWnh*5
z>S%z9#J)@+MXaE`tQW7u8__pKCZcERoO~XwPuR5f3YA(zTe4&1et_BPxx}<qJuPU@
z1u6<ZETp$7{N`{aPQ?EGl~hl0aiF;3^64K{3>jAJzy6$_y^_t;KdzHLZ{J#_mm60w
z!Ix%G&@<cgy0+7zv?79|Q)z|6*3u%(b6P)>-B`<djr{30{p@X-(d;~_U80K`cgVI(
zE#<IoqdJDAhTN}6w6PboVrcmcm0invxR7y+(;;jlk0TI+fz|^88lG>>P~QUU9==^R
zalT-i5SxNswrut(NY_oA9SVXmqFna)(?Uzt7EV)OkX@=(QmPG1c_p_mnJ`LjU#M?^
zb%?M1N=)Qq0nL@NvC(}O3x|W&GR9H6xPUsU?JXRuqAOHwt9F8J%`xY=Lfd+jDliqk
zk+>bzBgESNWrg&uhuLaj#l;I8ON+57JjNV9B9N+x)d4Y;<DVzvmH>;8xuTqx!EoD0
zZ5cA${+jm6Tutjb3C&>y%gtuWrgm8K;mJ&(1!{^K&i{uC+E<_<ny+s-&iGL=l*%$#
z)448elzDc;7euiBSIUG<(MD;hHtSX&ALb$;8(^(@S^BH4l*q|*fWes<yVgVzP0rTB
zmZ~0MCp*e2iAUBl(c4WV|4LMQjAM}{$fyc)#KW$~_hP`tINAKMbNAk#q%stzG9N$#
z)*09<j7o{*rF1#*b8$48(eW<lQK8+a$vRP9^!WRPbFK%i<1cw)0+&eq+|lPKwG_(w
zj^xHe(nX4Kl@-MTqeX3!TUQXq#y{7Jry;*b59UdO@xGzb7Dv&A3{Q5iOZY5=R`>Ck
zS}fCmrUgtFoZcEX_Q@xM*#w(Rj6C^}ez1n5$Zh;3`#8j$z+7ll=!`3{IkcsK%wq>j
z6GWEYBYB8{KeYyR*=o6Y4B=DDsO|-gKNbtfBKSgECa8w*#q61J{&VZgT&a!~?90bC
zPw&4f^fA_s0Onpo_mFm#2$!pPC4B7148$6JG}HLFQHDAq+{*!#?1)YBEs?@#6owtE
zTh*m=f{RI*cQ~)(0d$T1@+L8Q*0g$tbw@p!c*kL*QG5%L<!XiS5YM(d{xZ6zL)Hj^
z*U<gy8^glq|DY^Q6tBz=@y6U;iLyq@v1IwVM9CV`Nt8+<%K9!uIYV4UlxB`<f=jR0
z{CAL9c~&QB)FTd3?`z^DN{4RhiaQbSWv0xhA0K7g9y;+*u+Yi++)&h*uk62^rP)Bv
zyr3CRL%d8`qkH0Z;lbhoOILc)u<}qwhSl$huJjs;VEs4r5-cFA%0Gu*Gx2t%SIwax
zOB>1yvkXJA=`ER!ur8eke42NRx-$smZp#A%*1WqXfA012XIwULKfF6a!ud`>PH=<G
zD-Alr`s)TT$Yn~s?qN7(Bg$nmD_KV1Mb__FMJUH##IekK-A0)(hhx{j+O6*aW@_|H
z3H5u^)hd8cW=bMFDkZedGWaZ?;PuP>j(+r<GzOZ0QrXysuiKrWef{p5G?{F!<al_m
z@WiZoHNm^0et2eROBSP9T2kP~3V9ggyjM(AvP(&J@r`PB{PvH?Q8ae5AnLEa;7nR>
zzzG5^wjPx#Uo2IYc{L~J*OSotf{7fv>iOQtcZsfOshIz6Yx4s(H7}17vgg+c>9PqK
zf>VWxqWXa#y1>$BiohLy5oY4lyB!zbHPLscWLHOaNExnNArU(w$##OC)`v5sTzMU#
zR!8Vv%|JPFsi(M<RF#tI4pP|$Y#Ms1N!^v!XH5STbLr|z4<x)SR(LCwg3D^;vU^+<
z{c>&^Kws@*yBf>jgJs?kXL;dby9!Nzk}3p7>+2_YXL8yu3i7i!@aCrBdcU_kwbjo|
zah$h;Cj&1thr2`U?*=Z?*PqmX&uxJdCpal_R~Xfo@QOp0%)Tg3y4-}jLH<Z9Ew@|g
z+ErazDT6sUgJ3ifCNz<=TZGk>=(aZ;nSVkQ6LmC^^BLxCauC8xZyi1AnjXDWuX_gh
zXO8q(>C0^Lhw<C<ee+s09^RA}otm81<JZu`I@8`Mx+?XHh+01?(@Zv}xPnW2Jfc4#
z6K?zYs@q8n!{4|u1(1xi`g&qI>!xuSCu@tF=_5D7+`s;ax{MNZwNg?c^EfRD4S^md
z6^z!mt7~WSJ}h@7tU>dL%&-jWxy?zUBjG1`^d7a)wLYMT%ZK+Ut{>i`epDaASt?5w
z+jqyZ@aLHmUC5cSPRS*htjQ)qspzFjOqIh9CFITfoc;?UvnhI)D!U_(13&?In7)2z
zMGdQyj)X-iYL|BRzKReRQXd~o1S;+Ath7`?R_tD7GowTb(h{rfan|f)KZs%^@Vy?p
z+ER>h6l0Keiz<d*_g5n68xS|vf$K>dyR$t`PS?MJTGrLf79zhS67vG@?LyZAmI#7^
z{_Bh(d6aOIYwXMgZm%d@lAzbkw;`DDO)!hRj;(}-r=+qZ;jm7xy+blxpXk_AxK)3w
z1W$0O!|6{N%Tt7Vm*1KcJelh6%dOf#`tn;-f+tJ;p5VzD(bV9{#K7N!OOqXecTi6N
zt-gLTMvbI7Q|*?NbL)6Z`a~Im1;2FokJuEW1fnc?ABJD;GPMunC4!9Q!;^|q^*R|M
zL8`E=PHxl&Ql=#-iGid>?Mjgm@QK}$DMG@lR7)mH4ssw@_bB+!s-%yzuBo6$_`Ri4
zOb=-%NO!#&hfkGOE}lP<nHVTFFEGcVddR(PSBaU5(a-1?Qi4I*bkYgle8rj9tLFOY
z92w^PmqaooD|&@yyib=MXZ=$Ja6Or=u;C&Nt}bj@_Mtd(9ZlAiEFx93PZ-~sG|clo
zErRM7k8##E6}6Ok2;E<hGV&^aiZDO7Ocw6LQ;JIUx+X}%>JvrN(_&5idT!1SdZ4t_
z*DM%jfdK&-T$(b2`|~6=AuN&URw+fv^fVGj<j=++Wwj?bZPtQRD7KZIK!!0He(u9x
zrzVJcZGR$*wnrbn>e}w-AE*YjZ>qFe`)#j_Qad%h_De8GmzF6pWEQ%vIivWU?#3q3
zIPW0UNYhcdP_ykU#3l>~b>WIEH7#}9le}vg%VWwh1v1N)vC$e#1)~qf?_S+Ii(Ht)
zb7PYM@v@M`y}+-E9P27Gw0e2<#%YYs;o~w!=kjqIqw_hXZnFl3!Q9-~4#gOQ-#Ve%
zFvF+a1O+dxp`Pv5MYPbAsO%zosJO<R7P)zsRfxi${=I258ujH7YL8GlI;e9t?euvC
z$v=XWi}Mlk`s@3MPf^=wvzl?1Meb*^TSV)$LhQ)Bc!H;9_<7dCcZ;NamXtJLWDB8k
zVV(h3?ZeqQFmG2nAgmDNL`LZn>gzR8bG6CfDDwKVi*o%vi`aBvv8Jda-7Wf-ZyER_
zszWJ?B@`w4$1d)R1%^RINQT1_ncY0f>7ksYaYt8kpQ7%qvjHdGQvt5%6S0^F1ke%*
zK#v&YErD!}a4sBMV#Jmj?g-OzRij$I5D&}x53`zh2&YT)S8W^tSWO+qSx?M>*?EU2
z-kMdkCVWKCUBZlQnQF;eZ;%AWD_%jTn%Fkg0iA4vdW}CHttQ^%tm8+eef6g%(vZIA
zg~&HQ%B)2R=4&W!taUDvlFOCzi)@%Qo{lq8NIDU3dfm0S?2bcsl#VhuS!xRhdwkmj
z@joA71dh0fCY{w0cr-L*g&ZmAb<!V1i#uG}&WPb!#HP_dND+NF)=B!a39s5TE+>o2
zRjKP(ImSCu|1?e1BhSjxEaIpl-?xWdXvs;s9usoSmr?}s`->6+kA#LiDMbhb?CifH
z`=mvBsjojVtb7VwHYIv@*HVb7!gwhfXGtjng({c!cgaPNA@Q#8jgj<UJdDIbgj)yM
z>9z;v4~Rv#$%F`6bg+cIVTVO~Q}{OP<ybfz(h=>gTH$#>UB_G6Gt)6LyW_S@qpfC(
z%nsDb?s360($)}-?z7GO%Py?bz}~a)kM$*U58IS>kH#F48La|!P|4_Gqs1(dtpJx<
zRbYNM-+Um~EXgsP-WcaGZ0h&ZZYbDw<-0^GU<}VO=H?np^Nnh;jlx~UB0lJu7u$EO
z_Se%4&5dOc1T1yOqzwKvoNr%&oY=-Bji(7ZZC8WuZCk*}ObOy<G_Dn`jsKORPJ*7Q
zrx>lv@69(K&Nb)f#D!gD88d1v$SX%01EjGar~bZteZAXTfBRtLkzCHq!=n;P*(}Ll
zE<2i|2AA?DzqDgfj&C+4<KX%z0T?)6fBRrwE66uT<ye~xDY<IgH$KPNg5=AVLUWq^
z0aa+TdWvs5E3LD3sY8c4cLjP7YVQg>NOkjA2(v2?5XSg`bE5F%jCIAIQTwjD0>8db
z?FvwhZ`~ERbBx**xcM_7&qF=9hP01rZ9-J?4w@@)l&yl4z;ErXf_v4n_)gj}PSy6S
zV^m!sR9z=j)tKQ%ShX`9*4Lj;);>}oja`Z^WL=KI+fg=E+b55o==&d=fJ!&CD*?mz
zC5*SW(EMGAI!CdCBI-kk9!1pckmf8=UlrfEMD1FG>*F<;A~kqlYH%~;{5HOra<5dN
z_M8fQ6JKPha(3m5=j>{|Ck5_WE$bIgbn?aewpbNh=TzYoE3osb5IR(9Y_)fbP7<nb
zu((H3yGzI(g|B*DCL3}Hp`N9_KMIR9aE#SJDCYu4!V~iwWc_?3Jd(#xIM_qUb7Jlh
zf-w|z@QAWswdt=+(7tnQA?r4#5l)uPna2BvL(QC63_DYJl(+7i<a{9ENO=5+hA$x<
zFQ>=)4s)$cD|Z@n!U3gH$RbA;a`n@^<AB|!ano%~<D9W-$jG!>qKfr;p;N$}HM+sw
zFrV6?Ix;+TIwkOYXiI5lmyW&n{1;=l_0-J}tChV^y7hP1DCKjVQmndvB1*#JN<%IA
z<9+W*<zHSR<Gd$2hc^$#84)Z0acKjU#D4{m$B$!1aM_UfTaj$$O}36KAWpj_n!ECt
zWM*B*L){eir0D9<n;i|zu&{G+r4&Jlm0H;al1YHoA-Qeqh>kaJ%{9k!<KnPg9<`@B
zhWf2#2uC1LB1BhDeZ%dyqc%QHvG+ggm<e$fQ$k^g`3u!6mARzj98N}`?|hWX?utCO
zZ2ZOMg0&P>1|*9juy<`)p8g1kiN4#xWHoZYhzS9L)YK*eLT6C9E0KvxVkkk2GGl?1
z-z$}3N{_63TDHhBB+QG2R7&0SiVMg)?vaiVQXOG<hFGr7Z5^Jc8B24N5YOidI^&vp
zqQ^s}9?;P6nMYX=jql)xCo*Hfzo^CA3^TFC%p0{TOpZn}tpw@}=?M}$N@8`sjY`29
z#d_T>jA&hDea)dPCpDJ`x;%|i4_kfmt7nve>eIMPx_3M9nk^Dhjd2qp3+J$+R2ADr
zeCTc_9g>>7=HqTn#3*wDwv$sFZ0vY?aE(4gqHi6Z$qYM@RcMB>bO2B82+){{hUv(j
zTxp^V)<4uPAWc#y=9O-m#vQ=W#khixqOx8q(-wXGXgM5oAy09-aO#l7X}7}920#d#
zwdP6DWoBrtT|_I$>ObBJuT7Cwcq}H4D$J2RF=3R?&Xrz2>Uut|`cXGPN^T0~+Lw!@
zZuZrv{tPF^DCs;s8dVN^C5IAnh|ZS5O>T%#5f`j<M+jnbI>gUC(f6?3iXLe;?uHRh
zU7IJ~-yZ`cEtw7P9;91KE0cY;Rgi7BWQLc9)MYgM4iIAX<1;+8)f4%EPJgy(V*9Ud
zc_KtpW{s_DZlPPXJNxVk?Q0Kh&V+q6LD4Fk^lD?UR?htZUw8?n&G%0BJtM6DXTL1l
zNB4wRDu$qJ=nnr#hAH&>dIu82lQIuqj;{?Bv%{)usHuHni(V_!&zjSOt<!4<;a=QZ
z`R@1UsqYH^HR|v|d7AvC>f6Rbk`%sX$#@hQ->s&nugX$2^fyn1c}GvQ8Xxp$gd$UM
zWG?O@TR;w_+n8)v#^=$b@T6?RIue}`j~md%1P><Ej=U=0=q>T2*Pl&#RXj??iRQ05
z0`DAt_5OqMn1TPVwr2D|HkWVn|JnHbaP%PfRqW{R8zhqTojD+vc^W^f5)b@vjrGDp
zn`lC%PKrUjt`tLGp|HijHJV`TVO8=Mns2=C1F86J)oPQvhl#DW_E;B<+^sg4&rZ#1
z4vGGS^^zZ5x?7k~TTLS*Z-0`N@i(;2zq%Pj7_IG8&%0nKfXx>%C(cEiBCfP|jX+-z
zXpTTx#xbvN7%9*n2~^%eipQNM(4asE5ZC(MXy#1y@{|$Uk(%b_oNFT5lVUJGJmt$W
z^xE~>PlTcNSYLg4My8Ign4;+?jSqsVK`c^PFOF0c8`$_zC+O!k=z^_DuP}R;BDE&H
zh|3WXW9N;Jbw*rdN4&7Hz7sT4f%Mv`5;NQh9v9E$2c4k8Z^^|Kk+neMPdg)e;%R@?
z3HnNrIuI+Ntgc#<)=60-`*ABZ-DKX5f-1bwAe8{4)_DDONRDJS)~yzFbZDxZD>znL
zc>x4%AWmZfK@FFB2!EDv9-JgfFX_E2Np0<;7@@r>;nHNI_e(^NE^SQBk0Y!if!gW5
zLQoEiqvXAs#ubwIIXf}e1D{oChx*o08S9fuDWGJYq>3tGh+*x%=p_|H9uEdG&u;?i
z`3K@8viTxaqG`Xkl2NtX_pzW`1-f|qt0$m%V{&OmFflNMi1*0;h-}8^j`yV$6MHtX
z<ra;QPZ`U#mgq7M>!mcRkZk*Yz)*fqG|n}@i)GqynWX;f4`s=2?LT>@qh^S_JtZ9I
zN1M$HZ;D%4_W9^SqW<kda&D=Rv0a1<;;z(}BRKv^C)GFfE(U14t8Yjz5yu;^mbWo=
z*v37|)Xm&MPY2i*+T!8{??8RS*3vtDqb2RHq=OqnKDi$i3}f&CKCMZESi?E!uhENr
z4@;an73XRdXKRwg(b~!yzPF1c&q}7Ka7vb1TZPd#pS0oeiR%(S3y)7&=lIOpH-kQX
zh-h@2G^_YEd_SThRv843_sEN-dY{qSQn!|VBHj}MgRDWPRd*Y>CJ0@icy_2j3ta4b
zPRew20pj&7ajj&o#T#@_k_<xrqK}$G{)@i+j)cx;=D=yHv@!zWkbvsQ2uX+ajJgl7
zEB7ZPjIHiu-2y6_cqKR*w=gj#1v3oI8ZRkoy{kbIUg>?FPeYGkz|#ad^75X$nayTM
z4f_)=(HgQP{2-H**pSrJo6bcfhdS`EH3H<(DeKvO3P;xYaMOm%W&A9;)ghyEr6{v8
ze`oxs`q4#dBv%(Kv#f2UYDXq(t2U`*<e-h;Ay&B7yG|nimLRdT`d2*K9SHa=lwrkg
z>Pz^=+iWQ_sxRV=r<t3{)Rdr_f=MIC5A$E*yH+Z+bUqSY8K`i}St4_JSLBZwOl6q<
zu-y`&4>SyzOqRct(sPG{>(;8!{{!j>nlK%vlNTcEAgXLZ2Map<X-bbS@*|Q0K@;k1
z=n}`Cz{ibEBxOn=r*iN>T0?h1HJj)F&Gs`L<|@G!E^*ii)!9VwMs{z9+i_+Sht*(R
zHsvD86!F%1@uao{_v?CHs^qLn6fSib3Yos%WrRn7HFVOcKXnArJ@++UxGQY-&yMAG
zkHdIIvenmLWIUZTMGA0FLL5}(Fpe27B~26PcN2|Q?TB|J7%P+R7o=x~>Q7vAIaJ&4
zW=@DB)WkcPiI4oeLFNY$ll&TG{Yhzmm<}C9L%z-l@c{hf1T{Xtw3<;jMi93rLLc~6
zi(ny43x}VS64dSGuQ9^w{aUhI_V!%HgYGbfkYn|(bTCmrhGH~JG`GR~AWpWWJfSl@
z#Zg89g8RDbb(5qS|0LugeKzdJ-@?xy?lt#)H%`}0FZC6A_)|-w|I}+sy%2Ag+i}qR
zsnEl?+hhJfh+y2AF^9=<En`J^W$$(mkRBYmy6vY-=j`elaHliWoQ3rhuU=O`-r>?j
zySU58B!scutct$8G%-9S$!>wPF>Ig~)8&JwhU#@U;0V3?WAc<MWz0@OufBwb&DWjE
zvjY#NX|^cO(|9h$yuR`@;9>atweq}Wd!E4)UWJKocxE*qEIov4liG1vR~$bhK?qv2
z?v-<c+;$MGYu4>KH|XfU&M*MXSy?9uuO>$GscwetD-N|62mWaX5^w{Xm9ap4cA)W$
z3r@yl<exmk-hXndzZv{B>&B50eGS!Q?*5|}tL=a@%vHiE@bV5lEIc-MTb9_9O|O^8
z(TF;UjJg|=3Bq6|IU*Z}O4koECA@p8dhWv=aWILqr<9v6R^m%3!Ps5>Inr3p2VlbY
zPQxg+*bKD~e&iOj$Xih}wB)wHsKU_+fidRjG)KGK<u|bV$6;z^Ph+uMIyZ|ifL%R?
zgn5i5Zb15mC9)878%sQShod(skwGb8aw#Ppm{L9<rF`EfQ_e`4<oqY;<fh&4!KY^R
zV#Xj#-!R3~ydPr$*!LFmL77VaA;&AsMA-%@sVELy!4k(a$+uFF)`3)%OtL5W{v!SW
z{?L}J$mvt4h>4(O%~<Q*BlRx1)fTm1;Bnj`r-U4<)_U9UN=7lc`*+*xk|1e>c<SRl
z<u1u9UP*n2-{U(ixur;zB2ULK$TOgYt+sN2V8owMNbLfTh;Mmu9~O_pcrmD7cuZUH
zq-XK$28Y9;sfEQfi4k1VKPk{H$}T1GxYssXfMPnO)>}&!`ub_!VKKa77{;Ujek&B2
zV!gwdhy%+Hfh@b7w-VjTqHvL8C+Soz36WRn8+O_;p4f=+vh;>kB6=|-;^Bg}_+OQV
zDLjJ`06zWqAMpy2NSVUz4~r27PjiQp6NY-wV{{U$!g7SMwQeO0D($_sZXGWAwCrHi
z{S`M^iUBBUumUJPIe0Hp&3!)t>Hfl(6bileb?LPP5j=+9IDVxt|1|HcaGi7`{Mpob
zR-v6cPmq%!^s4kDEsz(klRiQmtaH#k*j2Zz@wb3+m2^Gx8P)YZQ-k7wh)DrW)%AFv
zz<5UbAd`((%&^3YrI6+D45m0nokCD2y_ONK``O+skV4gUk-Ad&RZ<pXm7psQ?LA?r
zFjEPCma5^qk&bhBXR)2~WN#_#@Mt7F_PFuUZcI>#wI;~A)+UkHtW_G1&j<C|Zj@CF
zlRWBpU5tmicqGwyQblZT7aqt+Ofgc7WOKC8H7C?6$BW*f;0c{deY6*w98!^=oT4I|
zZ7O_Ao;h9e{42@7Jx@D#V{7W0_8U*+;0@<L-cT%s=e&QQhz7AyCw)$dECtCZ9PJJy
ziQ&&IP7Vh!a~i<m>mMZ%Fz)eEelLaApE>}i#tOcdnRmS4kv9Y$R-#n3XX)hdlin8u
z0hYKxGQb*0J-fE}-DQ#Y{!OBMmFNrdI4=>?tB!Ed_ri;vM#`{(<0u#P()6d~f<mMh
zfrer$Llq<Zj0`y8x?=cF7_j3dC2f3~)2SKnaky$(D<~I(4_gCab$m~hPbhaRiuIr!
z>{7vWBZ5UH#e?s%gPA&z8b%@b%Pzs!NpM|pn#z4lXiIiDETa{1ohq(n$5mv?wUQ)u
zxR^1D0x^ORElEWau||%FjeQU#v_*u(uuQ!+nH<HL?e8rgZmj){1Ty++kt)gr4W+;O
z`3gUdakS&B6rV%R9fQOZ59ao934xa39l&=9-%7so_=-lEoFirMm8M+6S6T-Z0^xuA
zfdQIX;uff0oJ(H$2#{Q}Xak>oj928EFa1nKXE2z1V$dAkmwSvX!%ub(@}ch_zr4nW
z&1Vvr8jaxHy#t9jrm-_NqWR+_#~XNjpvnQ@GxOg7V|Lhm9j4Ssy*PEb?Tsd#*x7ut
zU%d+(?bBfP_hRAruL6BMc#I?Lz9ANrgtHT#&{~`*HoJ33O>Q4LzcHIjI^#S4Lq3B1
zY(6)4rb}*x-N<JI*4{-P<D3@G|DM!5miq`Z|HFTuIS*+4yE=|Nw~n28k4<PT>8vBU
zonJ>6YD3wMqw%7S{SQ?f`z=)*o7`HGB3cN!q0MMziMB;93yV*_V!VTUviXx!Y`)?R
zQhUcTZvnq~cvs>@Wg$nedqHB(^DYU(O3MiK^Q)|Z>0~GamO-=udfh~#MPyKc_heL3
zyiM>p#p#Og{|inR4j1kfj`s;?^A!b*f5+)QHKEHPFX8l@vz(su|HJ78aZVorV;96Z
zeHs{Z0ZjXkoIWPu-?PEDvARp;z#A!F=YUveI?Lrr{~-(Kw{UqPc@&)G@DVnL7r?c-
zX8y5%&)sAHL%qI@z0+d#D)@T6x-CaYIF8ldlN5E?Vq)xnsM*+WsoB^>7&|AlIhki+
zVC)<i`(IrcJGTpC`_5(TT)pnq^BB8QnEUIDT_KEp1>zkxEQKB8BE0k*5pE0YF7jLC
zw#aXpu?jbfoEGjDZWgZ2<~xn=2=T||w{$}6RtVHtPoP&hYwMM~rlxZ-m^o-plakl9
z2@<=x-9@|t_Q={3aQKXEp}lfEK95%QHSgzrIZ$Mq`Fr@}INHLcDK)1=QZMQzPocHz
zKifPuiYaJU%|5N2A>;(n3I=Wsk506$=y%I&5|buBYZ^nWy@{9aWpGa2OeC+PHT*~l
z_L|!hYvk6BwusGz&>0XmjX~vD#mTMDsIT|ei}kZ?bJ`v`jmQaSWU|e17Wt_&apbPc
zRSDjw9~TTf6)R;*^QnF(c1Z~nYxb$kcM$G%oDNsB%5OfESaT+p`L57uP;DNIX0x(m
znp;2Osf7AjPbHG8k6~3wcVt^Q>j_n!vlL0}N)hV%Efnce=#I`ppHGp*uTex1FHVvC
zZ=eWo?3E^UEyAhui|`=@E*RL#Io4Uao%t$Gw{wcHCtR5%TOMcW@<FH_ge|v*_V-JD
zA4K`}6Y3LamBeA8lXRCAc6S*e<3M&Xv=tGb%P&7RCLrCj^}5-1UzsL@z!K>v{Jvoj
z@DPn2ISXW^f^l3ff5sF??nko)`2FCN^$m%OB9{Z}x|XolFIL8p^H&prlm;eh+%I5F
zV9#sAvZxsH9za`XDf(dpb4!iYG~HBI)6CCUO{a4qGCGqwyLr2YwVTUdcGDD3U@SLP
z_R2YaMqsGCVvvY=U46qzHUi;N4v$zghi~uDf4|M~I<=MI&Ex-$@eziDn~$xf78yXZ
z9j6Cwj_$<_|Mg^IUBT%p+v5w*uB6vd0;~O|vzwL)_DVYV*J4>QHxV3;ZEbEzv{%fs
zp18xG?z>MgzC8tu(MuS5rZAy%u?0~p7{@wLkxKH#Zi$<yNd1P?RMBPqpY6!9equW^
ztra+!RvWh8Z3V?)zbtE&NLUMxQiDqKr?Ve=wK%O4w{~>!yut*%u7im-o6&uUh%U{)
ze3eqH=wb@-Qw@VhvY#EE(pHvtJaoFvUl2NTssB22ynEwqcFojI!v24p=_u7VJ-+t`
z-D!@;1;MXDFv^_j2}M1!JKtjU_(Yw*bn|^rf=z<&Ly+)to`ajHV=n(YvuNx1P(;&K
z+pxz;C@@5ho&%Sy5vv7B>$FU5VEab-h{1)LQ<F8$q#u6=NfrGocjdMjt<7g#Mn1>V
zJFI8-OKy7Yi-d+w`SrSA;js7MJ!CzV3J*xID{TF-<4nhDF(!bbV=DS^S4DmZd-<M|
za_;A3`R;fF-f%`$p|{V=<A2sRg6?VbLx#vWkP~UGwA{xW3$gL=L0(hv6|d}4iy3F5
z70*lJ2_%NzNMP5}UfpW`q|kO}G@Vdc`tbm2XuHcdT+q(}{S@OLp?^C3DZUCI(Ij7`
z1eB@(SX;&c7lBLdz<LS1E*>cBM>l~#mB1|DdI`Kh0*|*yns@9pX9V2AZRIJUGl~9g
zzH8YjwT|Gw+xM_IKf!sA=;%B};e0<5&`v<?&&#$@Hoqw}A=;S}eZP^wm+Zj31Y9eD
z!Tmh2<ZF?jpV&d40PZ6}FRLzG?Tbj@va^Bx&IT6v(nk_lb{6R+Dv<f8#(B?W5?Epf
zN^yGfyI0-Fqf8u3UFf?(Vq~irPfLtz_}w>Lwj7=ozV(fhaE<V(HqZ5j;X~~m{-dGx
z>_@Xh?L8iKjR|}b*$?}LOFs*p>c05h4)3ZbAMdWcm=GoW8h@V`dARple@1lEi;2<h
zFQ!J*UUWs1UvxwhUQ7x<saC#b9~9+&&TAfpdjiMC22Z*4Cw_zY#PS)qwt-9S5L*2?
zuT@7sk+&%t{OJ*ZR5h}NKPt$M*=sCEK0>|7Z{h(&{|em_b)*+r1vJjG<JGa0KV3a#
zi+)ceNFdB7VoM98`F;-tA{S5`8}-xnDVA8Sl5x~}9;7gHX3Pu(YGhKfMK?fbUR?60
zD74XQeSZ}+Z^}liN_IfXf>=RP6J2bRsn=7bL#`uI>0Q2yMnU<<IVwjuM4py}7B#X~
z(!*j6kl??LGXlN#ZZM9~Ys;id-YBU`N#z?Ou2JGrZCGSuif)86rDcQAEyko;mU8X|
z>bRm<pu&QP4spt6fR?JDhm=!6Ww$}<L4>t@*h&x^5l^ebwDGiR1Ay>K?_NGsZ$hpz
zZ)108ZqWY#aJO3TdOmtx9e+V{ewi*-(7gmYzEk|4%OnS4cA;8py`Pf`GbUdz$acEi
zJ$J_>OIjd3UWi&bE_k5hfh3#io+_K_zXM7wo(3D-@(dsAj$>y!mOrgPzF9)yPadSF
zst1wP9ddpB3o4><vVSD6Y3>g9jmsZne=p!RAFJgHr=&%%W3%5C*dM*Bbdv8!f@3u}
zXl0|lb`KKf=K=}~T3Z@FCeEFoq8^nRSnd0@gf0{ic6cuLy(ixL#T(7E8Kjy{5o%A?
zzc+yf3bkM2&$8iD<8Zlw4m@Ci;FItxYRh_Ke<~;UjD(JMQ{eazAoRZq=RO?8@C42S
z0)!`U9^_k$6PhdHL#&?xf>=N2V_o_=#IoJ>PVb+E-Sb{s=csjh{TJr#n)|u?#>a&?
zwsKnu8r^~D&b@a8J~Fmhcjl;FoMR-J+nfyE6N2|8)hl_xkLgFKsh@R~9ZNRdDa~p=
zF;2AEvJ_5yLDF?{;_FunC&~fbo3t%6fL{}AeR7p-)#`OG3m0_SRT&ALtlwT2w{!9{
z0<D|J3GEz@c*A25Pp{o#SlAle-Tu6TrxOTQeS7!byq3sEBERY$17<hks|yhbk$dUJ
z=8uBZxk9cAp;*u{_h|CtpH~<w^Vd<5*4q3R`6Slv!Ro|`_v=^Y{}C@A85sHeiO;ae
z9<YYEcocBkxTk|VdT)Fh!j$238!t$n5J7#ZUb_Q_zNua&9)&yosm1n;Bl^BvjChGK
z8%JMogm3jg`GarC2^MC+8)aStzydJETE|Icmni^hQhyUZ8X{(TXu&2tkS^mKBR`dc
zsPvS`TEb`^#a6acMj9>SY!4r$xopc-VzWwr-DuOdId=AFVc%LL5f3AZ6avM6A!{t!
z5>r~8vPLX##k+Z3Z##QI6SSSr<BUl<;S|SGEhENB*?1ptgkMmZPK1;80x;f3oYj$q
zk|L{tup;;~AF`0%Vp{`&Po>=UeN=lSIrdzf0$t>8-dPF^EdI|j4h*)46Gl;|N*Q$D
ze|6?$_YRfQYJjRMI3^nJon`;+SBi}wh@-*-sgzne0NPpQ@Ok6s2otqnu%5q>uKK|P
zPTv%C6drJHl#d!Z(Wm&lkfR91Rp_)U@Q;RQ3IgbVIq4E}+Dm%+#E+td6x8a+1ob|}
zmm$kzpbk*vg)`HgY#?whNJnDu+Qq2#s7{~qUyGWE|Ix@h0EX0%9Gj9jiK%ZWmD9as
zPK7W(e0m<kx=cR>#~5d0({u{0@yEIcU4Y;a@jC(+DSLULy_+zRW*f_EO?rxqQ=&Z<
z=`kyC!)(yv*iass6+^lN1ENU*B6Ikb$s{og#a;0>6iY5&&=GjhB%wmq+vaGlnli`K
zH!Qrw9Gxxh40E)bk7qG@fuohJ8uu9V?QUMw%Op@@xXs0$;Lz;Az0n@6qx(29UEcU9
zS}T#C!II`38Ejy1d7`P1x9G$Q83Kme<c`;Nx3is5Ke~@R(;}+7MaY~LkcoRowU^=N
zAs~+H8$T3GBKj-rY3IC(y2Jk2;>pnbWoQoR8&DEHu}|M1=G}Mezklz<$By^q%+Wa3
zXLr>QmCUoa2ag16&c$ge;n2ky(TihAUHb1g50SIGM|)EEgotz?99m=<!VHH4gQutE
z&2dlR9+?GbecJTLe#dtsD;LypWMQ(Y182?Yj?<55i*q&wW1gYf;(nWoZO_tdZE?>{
z*|z6p4-brQ^5D@oydmiu_ftu^Oz0k}Md#Wj4qQtCDRjq?MM(`EN7xS9>)fc5MrA0D
zXs;NF_K-T-E#}!NsD^0HMVD3Vw00h-2%UL!(UIr{U9(UoTveHkW)+q9;9v(iQr5X$
z>M7-o8h*{37G#y)C7=O#*+k$SOJBlhc&6uA+QV3!V6vZDVca3xKlv5L=;Y8AIo8T@
z=ud5?fV@m{i8(nd#z*kfknUvD{3+}xjM&n=p9jJE4WVL=tvvWvB5UPSsePJ4d)q@+
zLH+2F6~@9_KtBYn?a@Qg5_Z>*zO|z8a~=g$x7=J6HvwZUnT9`*R8jahe}9sUs-HYY
zsT7YM);hX)wNg8$n^z*`28<q8u|^6ZrPKmFPz`g!T0_tjlWXHq9Y7|I+W=g|m!5=p
z!vv9O_su6692$bsYc^r_OMs<LGy%skqKK#16WPzvetarDSVkTjgEbI$aEPSW{H4|b
zwX9q++J2g4syzko(byn2c>`o<&E(`ZI^bCgU6lAEBac)5R;{=~Ocf=ZYpRG-;=Yyl
zqE6R$F@LS4ePPVjHKML(939w<rOUCTt=O78@z-#$t_^JC1%iXAL$Io;ElO$>=B=NU
zpl|5gOPXgtmy~|;K*B~5xC41mc>JB#2?UYZw+Vb9?(KB2xJfoXGB1uE=g`%>!>zLT
z6j9u<*xj+%HK}8;WbGRwoMMeeSy5hZ4sFR``H*b1m|FBW7zT=o;;HU|Ej9ajj}1CK
z;K<{mkkXkN@0%rQUmz{XtTmzuGq{$j`9cC;3H;^Nc<;G8@AyqB;NjcMM4oNtLc!aK
zOI^L@x{V^QdZ*}CPk2tppZ`Ut2z}*ToMIOJ_7Ll@$#=r+Zu#BCob`VN=}?f43bkZ}
zwq!?tvo&eJ3|l9*kug**q!8oUfiO@KlMf6}u`H_DBAUTUKmWInAWTyrV`RZUm^7t{
zYZfm1Hd>{1@;fx?vP`99*t^2)y^>}<R21>2!fxUgMq?Zvz#2i{&=wv=KWP7I@d8^<
zm}Q}Y?`h1Dh)tFQFL!EWWsC3FMKo<q2iALUrZ4vh6ok^{1z$%+&FLF@`n&UK8W_m%
zy+a+@PIyJCI$;#kn5aH}lJBs1N8+Vj!wd|i+@Hys#6_Acx#A+?uGqSn?C9TF2zoi7
z%;sCf*UPuKmF;Y;@d9*qNL^r!W0^md*=XQiUp6o+IugvPIL^CkL|X%Vi-xI;&Sruf
zEVkaG7BokuFIUq2k#v$(Xp1LqyEKs2c!vbN;$qgCccGf!);>W2&B2*qP^Q2eClRAT
z!)slJ`DSI-D#bSoV6=z6zIS&5f~Wc|PV+4jOg`kd9eL6f>iLrt-}fcz0pIfyd@W_T
z=cc|{B+^5JkOFhJXE=_U4)acD$Ag}Z2i+YHx~vb;j*_WE^d0N{JXtrhX$ey(Q-_VR
z=Yf9h4~MJDWLmdp<45qpv(&V@q_LO?5F^(bOB7`(r142qO%*9;yskE$5=TXMncOZn
z-l=GA73KF_D@D*WGvDTZ>B~~mx)H3FB0b2r(UT-uRvg*HT$HIUL&b5G<Kdg;p^Fn5
zFL5MDn!tLiL=`MY<|+f^mG-)=1U-;IJLJfZ+y;<$j@6E=qmpW9e8BOw;P(gynBVp1
zJ0K;CO4a?a%Q9~<{fbwZg>k?+VDU|6x;&<c<dR`qwE1`n*U{W#x8e5Ub(&e;!oKRc
zMZzuyP<^$d?O6dtz3RQjR^#0}3X@6!teL={KJD1|7%X06i1<fFQW?M3y=2cgcC7o8
zIIzLdyf-s-bNDeT>Ih_GX;w{0cC7n@9h}DGq<L>oJBCM7`5~8f-Brqq$GfZ}ES5V4
zOCfx{Z=rtOs2>7KENS{Mizag7OC*_f?5H9b3vhua37jV^cUd0*k426N6@aY(*NAW%
zLsP->@JHSUYObT#uce%GAy9@{Bl6Dt{#yPjA-C~)T)lqvg7|Gw_o_%Hbl3{NdX-e#
z#q*%q?9j$_#Bc;Ag3zfgz8z(ZlW6)Bg{A9s@VZ*z)~d9y%$Xg9R&`dmMrt77=BmuX
z9aS0J18vzPRg0z?Ek-j=Y!b`UMOK@%Iz@|Mhp>aeB2{bDD(O*5Yj`(-$oT$f4`7&E
z#J|-9NM=jeU+$PZ$y&=&8lHM}HN>nryn1Z9W*ltD2EBF6C)?MuvEaKJB1guv#++E{
zlPJD%LiJU{G;Nbg@sSb1s^<GO2gQf5Xeb_-t_@i^C|#@WX1W~jIeK8LB>LG#2_E=f
zg9HrOF-(Q#IzDuCSD_688S-}lr<3UWf<pohH5|ILyEa79R;4;N50R2qB{d2#uc>2~
zE!$o4fEt5ssqbG>v{S{hKxEFvT=qUX8!l$EA`;k$tKb=}I<fI@R%2ste44SNBD5DJ
zJ9ZD;e-;|4`%clcKMQ>o9qWz<ZVBy6WLA{m@4??hf1ir6{#2f^9t9e?wBl0Z&%W2r
zbXfo34{e0$0&#3M_7v{cLzhUr9TBnGXU<J-KH#i7{z#M3<vzX{qbB+*Z>Zf<dEY8@
z+EbmRg5p_rS6SXwG1mAzU`D6YQ=O>awp&lZv8sjctzZQt53f0GE6y0wSG=(x7D2BS
z=CE5FPG8ri+C2Il>EoYUV`8yPw>QvBA-=vd9qN1?A*`#*Rl9ZDlqgK+7SCOwCD>O;
zG<+Gxp6E#P)`ZYWtWX?+6VdZ^u38J>Oi@zPZz^^L{&mxs0f9E&%7|XfUQANp!$=De
z&EW~w!wMr4M_G&5G;FC@v0}^gbS-5@x^@M>(fsD|dv9jCwvXSN|Kay5!q@X_;n)8C
zbS?1*>DmSSF6Nib@6BfWw~cSt-`#(<{ejrGnebt_-{IRDgGu~7xYL@_wP~^60=}7*
z-L=;je)G@s4PkCz8T?L>W)$Ch_|4^4%kQWBKAms>dOp})yNqA{SY0dNH;msXeq;G9
zSTw)9tg>q1jPkMt)mp_0<)1!l{+tD6b7qw<@Xx7u$d0pk`W%1R%xZsiS=FqEG&|m$
z1;DBwBv}{#%(MQP3m5pS7S5YjUR73I?hjNFQ6*V4r^-KPVOjOe>N%3Oi??k0tXXCA
z0t>YB<CV>yKWE{2>1WKFdrmz3@n{t*?Efo}K-zffIho&7elz)X{Wlx`yz^jP!xzTF
zs`)<jZ{j^l*rLj^ia85rl`VQuTTwZ^sv5%1on1Doe9@el<x)=@<}a_Bzi`F_0M7d7
z&8hZlE2<XGub4BhylmdW>9Zi&;;K1*P%NCYfFzRsyl^4aOkerTxz&OB+Bby7Q+_So
zym<>}PWP9epQe0C`OE;|71i@+%vo4nHYl$Q2B><-E<&sYXP5iS%9l`}1=HtAnPPG0
zmCv3&^PyOr`IY|ZGpI+r&1VGW%$rp<e`dw(vInmltgW#9)m77}v+ed(mUp`6PoIUm
za=L$}udH(B9ABjti(f5p+g+jJOrKdfCzi>I#Z~jG;j;NQkNL~zmCczwD;5Zrva0gg
za~3Wrn^{#(&Fy+=0#`Lv%r+wcYnRWIb^#tQ`-A2417&gILUF0Hf(aqw@VVs=b;6~V
zcFRdyYASB!yy^amg;n!oSYtG^tD;C%t(~R0%DF4$wV4YmA1aFxRq|2(it6&&Wh${&
zJ!|IlDtJNu#LFFro!<ik)icU`ff>}4m>^r?qq5V5Bg*D1nCV|4_!VsCe2@iZ%%9`e
zZ2!Uq6?0}wTH9}@shm?;Zu=pu!lEECyx-9Ol^B@;(s({+3q!pmi$GO*ndAr$ED{OP
zDH7s-)ml|^7R(lTHC@VIxv<J_S3*1Mj}_>gI5u^<#t|wg|2LFX_@I1&V&(be^Jh$#
zPS^!DXQ2&JFk6J$eO=1Mc-P^toIfbHOc<qdX4Q=83+7g9D`NO&EL`ZXhApan#1)U-
z(`*Kl{$D~599_O}emNbGC@U0<cz0AG8UQFFEUZL~E`SR)n<vCY+*#$7^A<i7=S~S*
zP<@tJ?L58)qxq##;w&xsDFy}~urk#)RiLjbSF+4*>;>hEk#GL#bCfKYv!J@1hA1x>
zl&it6O1^it9(d*>B&w%ZcY@;n>Y39Qz{*unN-M9f{93wsFu^&TAZ409f7YDpxt;v3
z=rP?teOA?+MN+`Zg^SCp0+nUc6~ir{>(8hbLaKOY+gc+@XJ1fZ74sHWVtZZXS5;mq
zgHbiPPhX&|2y`jC^rQLJGbOmQ4CP(>lE11f))iJL_<8+9(Npodgu)k+_H4O2aV`}2
zd1)1_OTVdxcK$Mfs<w{xA=|Iwegocs;EnhDE@f5l^YS}eRtbd;lJ*;L3a8sWz-E`(
z&|BzKz92Ba9BD7@GN&Lne^6P)ya1eESv{x>(K%z`S-}+xSB*v~W~n$x<wY|dQps0n
ziO!_t6j$oZS;Cc-w2<^3ZG{Ym@wSf%`56lX3ucy=%?MPG?{^neA~O8q?D~Jj<3Ua9
z#qp%{*Z8<EuuL|Gy29dNUB80p{PevirfcV?pAPJs{>9VZ(DQ6wbH>~0o4VwGWc|NS
zFYB~;S^vc)7s=n#rA~2J*E+dZ#^RBd8#^lfjj_CYkhUvKaLd0qY)yH(mf>N0O)BNG
z)1HpO6cxL`&Zo~?^>)6wUFtWDeCL9XT_BLz`1A@JcIkOA!6#)=*9Q339{Oh5q@{K1
z)~B1UJ;uE3aeh>hGXah+`LQe7$p#7+{;uHy`)~h!58OZC_doppm)~lB|3ClUqELq@
z)QkMYaKHEq`PEaPZGy;=l-ymvI4i-KlJ2>v@0E!zcaJ`o47@6}ThGjX19AqZ^|~<o
zimUUl&$yufcdohahN9k=UViPMf}4h1=FQD3yz%Ctd4sOYAAJ1{1%=aR%$!wTG21ui
zfw}YMFIZUlU{!Ts(c&c!eYb0O__{kzhj`l`-;k~)&{p3c9%~1Rn11^=w*hP*?4cF&
z6XLU4Q+=#!E)t|Uf-2(U!E5LV=lyft-~QqB_77*Ye>k&UPB1;49s(dzrX6C(B9m;Q
zbtZwJ13Enf(DJ!m(<f=;$B&pW8MKZoN~V-jr;;fGDV2vwv|DbUFfP;8JKHm8+BIe4
zOUg=z-;z7^vCGE~8&>8j8$a>(v|qc*hK;z(t!cm3GP;+I9GmMX9X@ib1jVbkLa;3n
z{4aOKkG~84siBf2Ug8<{YtK4NA-QfDQC23X$J{a^ec15QTXJ)AZ_qOIvfGAD(AEww
zy=|C8z(0P%F!7I{5c5m^!%Ihw6|e8p@1-jq*H)8J{GVjXzo7c7?Um1l7t*zl`N_X>
zzHN7=Yj^%JUF+aG;w~E=ugo`nwS>gfw2a=Db@%k?cf~b>3X@XYJumEkdG5u12j=A8
zaMR8DMVAb?`nrM}9ZpxbUKd>I&ARfc!PgfJ8Je8lBQyIu*K)#)0uaC1{3`gB^E>yS
zTazs)d6!xaEMz}I_Ex^>AFZFDx$H_xACLb_UC3H}fnAqNZcEo*9G9*Y1Z{r{?&k;_
zI^Xs`i@$3<<2e4CucZ5L;(cqJt{L0z6~^XIeo)`MBNF=95!&Y{*on4bTf%`K)NgB9
zBgX<et<YXa3yO+E<n=I~f<wDvh@5peP+4r@G%Gyz%ffB`Uf6l}9cRO9qLFR(zqf^5
zrj{0c)2@zeWdPpIn<hJ3M|iu*`z~pJmh%p^*?c0jIk&!7=w#}mq+5;VXjBXsyj<)=
zBW6>tTAmMJH+%zqdU*5*TYrLcywMUa$>q>*QChfUGNx4%!zDN9n|APQKqO2|awDtV
z>>qn>37t${oYLV9e}cqpKFAriwTT$U`^^V4L;G}IZfLW98v|s-0Z+#Oo;bja0o-xG
zcVhro955#aaK-^s0C3|Rn}lRRp(CRK#CQMRF}9oYyxGeqa6WQWDNHp-oc_eo(e{C-
z^-Zs{(N*`sBfZ4J3<i^|MkLy;Y=JwY5e}!Q0?)O_w(w9m5TkpWgEz9jRT6DCb`0Fs
zGCuFM<yo#9v(o%-{TbP;3Xjk_qAA081p3pwrl~DZXSX@HfR@B4cHMD*H^+y~``nIq
zjPB8FV+WR|YxaLh+obLhUJW+3BYBQAe#u{B+mWgF*~xp`$(yiu<aWH@yw~m6Tw$a|
zFDErStNT>?9bM9g_9ujYXyd5(CM4ZrNb1v~-fzc|Xyd5g_8H|c)8l1$&7bDjDP?Fj
z9XzGZ)rGI+ugZV8#n@?fDS0=?>vqY_1W9JR{tXF3A18#rF9okSKXqCx_40q0IMGgg
zsAc&Wm(t7(o@7%tZ&&bSb|5WpS4C(Es>!Q18#`Lo<kKK#u^Sx`?mfg_#74*K4LBv^
z>ANZ1=L|dAUC%sy&z;ZYy{<Rz>s{3YuE^xhuE&_D85bBAMs@xFxYc@zfsJiBEBDAg
zZ_L<~$9P9iHFk&ge`%YPGTv8=1&6u9!=1utTo^@t{5iM{pIdJEeI8zx@3LknCL7X$
zWiO5-xYOs^q!qih!lP9KTSufg@}if@r$;gBcK!>E*5(6x_;*^62$AXoHJm-Wwdn5F
z5g9HITfT6IWb)8gY^n0_ABQ?l{A|KYNh31=kJmTwE>Ze2-Wm(N=Fm61)>urQZ0L?8
zaAOd6;|LqjAOJ_x&NGc|3NSTtDUeAZXtR&SiUizd$&H2zv#(%ezq$*~HtQ&-1j?dK
zW6+K}i@5rR?KRCZbP`ut=mCd3<!B?_r6OXRrI4snSZvb>>a$6*CB`0WRVVIZ1(+I1
zAqBGO<)*u6=^@YaH}81i8NbKuW)64q60e@iQL;OFNMxLnm>y2tcqUQ(i9M5O>&@;3
z)0BH^hO7mLOm-GuB9x@_TA9rU`>M_P`sUsHQ?phDi4pD3Il^&l{%89y+{n4CrVlb&
zf^RyFJ$mlO1m;fqAiD)xCK~^gj6Z1)9r7STw=XY7&)t8UDBBpMJG0H-4W(!~zj+Ay
zBwi3a>GWT=xJU4$!+$B99oScKI3kl8vF!cMVWXKNsm;#A(cHrkQ6oGQ5v5BzRo-G<
zQe7jdUeGrrM6ZxE|7WJ<ePEV2jW<JY%CjD>)IGwB>X_0@h$iam6C$T6h<UT)UF>A?
z2>hfJa^Puur}ZmzC~QAEBcq&1`d$jMJ$Tx=C`lcz+QB@pMfBs?IUq!@tr7ZpgQq!s
z3F8c&=1B8GSl*6|ZVQpOfGIjZc$)h$=#QQg6d;Jh7-dY?8NLH86)BP`g7pLP=!)hR
z;&Rp&s~g%u&eRq;#f)NnRZ`iRT_%}f1EDF}t1I{szzB2b;ZkM*+;njl&F&7Df6>{`
zrO_DoGVF#c#4hu6c}VCW6%)EAh|zT(Vmh;3uX_iW(f(QF4fQ<|X;t5fBM~_W>=L<$
zME;cutWSun7RQZ|pYW;R`+dHN7Z`7!-xyh)HMbihVm*#M1%3T?yGC{sR0D$C{sP*;
z-}lV+z$l|#U%#zOrIl3Jp;C6z$2h5=*9&yRo99Qq53r)fnq2LzGnl3bwd;Wk)@0ym
zwlEQtBKBkw*Ew3&C2(38{eq7=y>+(+UBq$ZH8Ia=sW8WQ!go3<E-S@`P$|u_i}$fT
zN|KI8CcC|6?>5X9GWy+xjZQ>ucv^}(oO97tS6hJTZG~5Vf}`q&@EtDW-D7K&G)@Um
zb{g-RyljQu?ixw|>=*oT?0Ht)9Z84yo7WUgB>7njxisk8W^Z}da*dNe=*zBZsW~-4
z^o3V7*KYTxGk~Wm<|d!#hK#WTP$^ioxppVlSq}TVDI;DS|MK9IqKv*RHY5zdp5$(^
zw6sdIJ{2L4gEKEr;IMHp{3nrsN;aA$`PY?XUsvL~E@5|*QBo{#N4^u_O-@+RgXH3q
zfm#lqOx~m5lZBBrKH2=d9OP%gkeN^*!$8@IB!GEt9!r)^IbQCyxR-G%?{m}X?Y}t>
zyQ_q{qN63`ip64NFOR^jz$lFty;k5iE$(BSO0`oM?fu(QH%mCvax}5JBw$r$>z<OQ
zdv}vVE-5+_C)CN%=t|6}tGoj#ObH#EH(o+i3b4D0%Un(wmuO+bugn)XOa1A_8K_4`
zi;ROv1bZAijc)Y342g<;iSd#q)6s0)D!LX~Tm$7Pb?WbEQ%|W6P*j&m>APm{5yF-G
zxT>RO1JNO&p-GFrFj~yP`7$UZ8;KRz&#o{S4>)nW3t1CtPg=Cw)C;#&Cot2~LoLan
zNOGtZRVog#cYs=k3N#qk_ufm}2T$o3i@-eVJ;odG_1s;#;YRf+>JKu7dzu3K%{#IM
z^$A80IqvP)3Gj`M$?^o%RtlZbF*yh4D^w5r?H!Z7czzGu6Dmku^ox$knAMj&?V0Qt
z<1cbKHO&1FL5G7ogu*`2a9tBLHE8hR1?st)-P^<@ZGn1x3^#OE?_0n=_*ys0id?y&
zq%-eL^VWjqNE+X6iMM(kC-bm_>*RT>yjI6i<JRI(i?cAx8(3?~#U@@g6%NcYON0Zn
z%@W~2uUR5&Hoz>Ao3%M+i72pQq+8UH^7+Y)J-K(AgWJP*0AEo@^zx0XD@hYdd}-56
z0||c|hf|pkrpR)O*1548#a6W`+9-NE0#n{%bKIY_ME9Ro-==u1C{Lmn=e0Pt^Y!Gl
zOD+3v%WGGcaWfn;$k{sMCR_;ejWTt%-K5)iK^LFgMwcSFQ=5s<Ur1RL2la0zpeR*T
zFh$v_0C<LD8#YT-=KLL@3X-9+EpoJs0wm-rV5rRqohkNTA!{apLQ#*L+~XFqx=p8$
z#${xABUpV>25~5L0>N1bG#I@^qGpTkt$3t>()Hcq5kd~27$t%^2dGn^8F+H>c*G;(
zA)kIzk`>xAMs*i^eW?X{u6yc0C67-(Xe-x=6lf{zT|{T8>N|N7(s8FbqyXQswOf<M
zi2x@;UK1RuCQ9^;x!ZC>8%1<#flI>Qm%gw`gyf%5QPq@WL{q%PDZaT)xuFJ$fIYrV
zB4PhrEOBIwPn@8H2mst`rjgULlI@x);*#R5@rg@%@tRq<?0MS52n>dk)+8BQMDK1M
z0J~)CdK}0;u$tGZ`>(4!ux6c;ZvtP(f&TnGjj!Xt8r8L15F3xV2Qc1t6ek3i-k|v}
zG9SylQqz8NSE;QsR!RwtJ<4FKyvM~Q3;^bfS;WzQUp;8~@Lo*f`Y{(6D06|IN}xg@
z>LiZO8SzD}#|9-<r&Soq(TDW)xAv6xbJXN&cz0{u=N%n{8Aoj(gF3)JVv^kUGoBCc
zt}Z=TKNH}Fr=);(7^CO#?zCy7g^=*@0p@ZEGqyLM?l=BU`=W%0{H-C}!k8ihUyEaN
z-fM+B{7DI};^+zXAdqj(`i9^I(13pT2M=F#)c)Y)YfgB_Y5u__A*@_stmDOQhd&uT
z`R>sp73Lo@2&phCyH^<B7w7N_<0pcK<zsLOlyut!yr2A|{enw)%gh~WvfrxD+Z9a@
zH4U&=2fc_8`RI#|j^=$S;gxAJG&**uDYvKP9FW#h-(2KboZj#U;_S9g@Y<Fm#)|Ay
zB;Qh>;ffxQH!B+b-AgE{v;Ssj<iUt#iSY)u*Aj;(Z!9K9lwY>OFIe#Qpo3<d<dLV;
zQ-+7Jv(#ghW*C)XV|q-MbRwfN8>P4@-Y5^kot4j}X!g8oyv_=87Lj~LM6|`>=Wt1y
zbsTcjrIXRjiQ3LI6ovwc%^#y&G|t;Se#<4Di>~TPU1!h{O|cO)Z*_X5fU#1tK=D|8
zrKIayCZPiAybE2>OdM|Oex_sc3UomF{sl2p=aKJ{A%j%Rs|J&rL!zy3AZBDC^EYO(
zlr)?_VBm+L(?b`@1JoHx%gESz>^TN`>qbElE#@`2gUtt%=WcFtSO(iyP0jmKjU%B?
zhgKlc(!yDrmAH8$jC_+>SL+C8M)1Vj5_4$a67UFK>$Br5?qsnTGm|aDZnRf;gp*e$
ztdV#`w?6HL#c$>{>D%<}A`h9h%K$TuZ)qIOFF_*;MPAdn!ulUPO!W=t|0pe@NX-_h
zpAv0qX_sMaH$L4og<URnKZdtB5Ad>}yeRV-87def{Bxl#8S&<%E#F>V>?%rJoLuBs
zlpIYh%J$zVLwzv}VOh^G0tc7663|a#zh^-GNXApQ<)IkHNEFA0r#-&6!WfytKnllQ
z6zyhKdt_z`<Jo45Lx*x<4o{GI6yFRjTYWPf{kf8Zl-Jk-;hU{4L5{$xQz{(`0NTuK
z>0QZ#L;q6zbQQj9HTWY9dUA1yRxE`Zx{GEo@~>2yZA(E*oV&bmSH4)}E4G%#L}Rh_
zpt#7d*qV(ini0EHS}iTqWc8<_Q|__fao40P)f`$Wtka50eSZoerRot(;4ddVj>l-F
zi*ffOaVp=-itX<evN=v!uaeD3?0>nq&%g87+HlFm*5B#pr0Nx~gy_AhO6XLg4<#@m
zsxWl}rRxZEN1H7T^U1ukc4AMTrkX8M8fmo2lR}3^7_ITD%1U~^w3lB>c&XORUoWM)
zlrJJl%P^Cz>2}sR@M|t*im?U-kr}Fbeq0sAO+l`tAPLgCo2T3jRup@)D99y&3n)mM
z6eP+!L7^=p5WMQ9oVa2=%`fC?F$XlroF(+th58dF4r52ST5iR&s7W<mH;!5pAT$MW
zZk$G_JS(nL<JElM6`sdK)=84;2;)C|igh`#YJsb}Lc_OacT{J^b%$NnD~uvs2ewt{
z98J*+<3UbKE+V3W*W7?gH%jtSMAcd9cf>T`QC;>sK4aHU?)Ve)`tglF`Puc_iGAqS
zQ;S_1F9Lg-4|<X|z)dd;OEE?q3y*L(UXED;IL36j#jqDY*lyTvuE-!4E^99;Xx`^^
zY&Os_HNNXKzUwj@G6~6hjmN51H5-4c`CCFJHGKf{u*UN$%?XF0qSz?dTFEH(>&Dy7
z|8zS3VjPiI+oRo$oxH8eq96}zL=QUc9PZ)exR6RI%eQV!&y2C|j-cRFwH<H%I2*Sw
zn>tz(;4X7TE`GB<NB#~k2xA1sGi7RvRcR@5U9&Z5i(K?l4fL$M#J<KOwu-U&+FKk5
z-frtm(NYd=D?acbEXf4pk4&dt{N#_dO@UJl+L=UclXfP}ev3$iYl9X{L@76zrkQDm
z%e>2JlsX%Jw@=8auic!9CbZF9^V*Z!4#F_ZQrk2mT_Qj0<d2@J*dDBDf;I6RtZ9N3
z`&R!w)<nUYC=)JOZkU5-F#|&zw*Da1<^A0F6Ju8#gid|$C$M5juLlFO8mADBApIah
z@7St0?(L&Lwm~KNVB=W6ja3r9$67+Tbvs0^c@sba*W2O=A#TMQ+0+Y{4mix!xg(b7
zfNm6#rV>Z*j|Ka3jf01ct<Pr%?$$TNus>sCzeup7y2>*fp>6$nc%*T)1hlDaL)(}Y
zZHq(ZlAkrbGY1=i@I&NnLKI`z>#c0Y0OTmcb5>lcxRENC(*Gm(zyx6ypqwcn0Wz&0
zG4d*FrjcSo)=a}}1-<6&@EB)e(*1alaL({}v3M*??hF+H3Hs3y%zfb3L;s|>`uYbG
zjJEKyyhMgm7lu!q`eT0sE{~%(@C`nc$aM2}xGKz4<IRfZtxO)4d6|UFZF9?8fe95i
zZIX+=flKxEkB4xCM<mFq%^eO^3QMy@C~T|tL~f)R*g$p#wnlihLtaG7*SMR-0){79
zIOUNv9)(HFkAgKhaFsdAC02ylKb7apV)gELH_F8I_C$3*iKrf{79kmGb=RDc^>LtS
zBr)B}Xp3xPB0M@U!i#C$2Ivp{RL%%M%X*vFN!TEn>yks2(3Wh~4#6QGvr9vrpQO%e
z?2&5FEN>W}o|ThXY8LZ=!+g^Fq||by5{@#ASl0<hv@m!q8O~_G*Ls&`q7Et6LH7Kk
z*FK<qLz)f*F~$q!F>mfW$fJNR>%qfn2Y8EQPsv(jlFXTxvBNs_PYfrFFE!p%HWy&H
zF+xx|Ipg?4f6ds;&0<>!)*O0)T0q%c<88KGWj!_lqfE{{)^3u>64`KmWK8(T$wM_B
z?xVNYY~|=v_GPopDV1iWpXDIiBu?Xm@uB|08Qx_7s26@05!{RlAVBk5UwbA|U;8eH
z3G8>e^4>Sj0C(q|G1)|$2H{_LFS$9IocB76?aBL)<Qb;RoZ?IzGp5&+af!5SuW3lh
z*!7M|m$}3Z&KJ(O^cUWBnPZ6RHeLsbLw{j62B5%mChtQV4m71Xnxar=D%4rAOhKCo
z+AO0!C<OR%Eq}3u2j6p#xxdt%+0#TPlqsNCMdnDCIZ@Wh#rQ_>&Z#+3wiU+U8)uHp
zG$+b7K`Fio=E!Vwq8Hy3eACR41I&rC#c)5qS?0)GbE0fM`0&j$M;4e9i||$A^YdN8
zcNuNqgFoltAAmmx|NZ!9;m^kJ#V^)>rWy7;8E+}x3D^%(6|tWL208}lI1*)&NW?)g
z{t@`)rAk?N7vPu7UHCc7#g!i;jj;`~b=O~L>CRm}rm`{{Z((TdslV`k&%9>ibl&bb
zc&om4$A$XZQx^h$(pwJ=^LBGdU3vyt*oG!2v^z~_d!qBJ>|42blJS+7Pon+2UN74S
zE}L4r%?$4ewjsR(`m0U46JpXUr++)udR~wTzp>S^Rk4oHz=^xvIFa`*wqNBeoUJ80
zYTi~LD+RL6c%OVEkbDG^2#I?^V(My>TDDQxdsh|CqQY5J7>ZD1H#J_n;}U)C`<KLO
z9EVGl`%vXRs>(kGt*Y|VI7laJoXk9_g6uD4vCV_f?0-sf>A#1+9>iT{|6_<N72f|O
zy}`DupSO*=t`#h{H6|p6;G_nt`A`ED_M|t6&wSb|{0a{*frppH>xD=YYloSVv+<IO
z2`wZh&;dYm=vzzZn#)AQmHNj6&IT+!cmUv>c#j2)*BkG0EG~(aL99%`ve=aO;NAE=
z_@y5xCW^d*kfJOF(74DLsTmVxLrC!*P!~|QG16sBl+7T;oj^T6GmMd(UJ6etP6nC@
zG|L#7X-v$bj#H@PG~>2x<6dca)fp0<UZOaSkpqm0(nC~_Az?O9uQ4*$n3xZ=k_Pds
zJ6|IUjEO}xTSV4%j-@q+@<p1`jpQ|Nm#hyr1!XbjA{L7=Ve-z^=fz0e{La-UbMFl6
zOXeK0<!5MLlVLSm$(R}bICXB5EJUNB{VYJId6UCg&5+gc4*2t9>(Bi7`jbnO89di6
z@0I6UFM#jt5;Wg>lVMmbK?k!0-Hb<;pvgBZM#lj_KBp@X-c9e7Rp>mvl`%v!LBx71
z-%PMFm^>H>vRl71(55Oz!?}(<SF=UxZj&N@-pAwSBH3-6V(`_YR^Zaqo^XDFtim5%
zBy`B!m<@&0Dx4;@{>1PVY6(Vn8z-A1DRY~Hj`q-}L8HjaZp0hLNBY_mY0U@Hq;Ft~
zSzf$Nj=96`x4~m?138ZNIIXfo(z6=NR6K@dk29>v>_vNKaO0!I9=NmawMQ=ogPZBw
zjbyFPgIWIWv3|yAEd)#C-ktS*Jc?io7mHZ&kOE>bz|zZ<ys$+=4AD^n)bPh~v_1U2
z1%yJl4d;i(gb!u-a|J$%AG0y)hYl61<@;*k7}>n)vV8xQ%;VfrHMM*%mchA8lD*%M
zWRWBhG+mOg>iIEueC5Jsrk<y-PyZ1<{kJ=IA3WZi?dPaBZx?H!4CeS;w<`AcKAgAh
zat1CfZyP5CIkGZyL@!^r>%j0&iZOHcNiq5jJRrWI>BOGAZG2R;B%(RAX9bDq)L8W(
z(0||eX>xMxQF<aRmLC`!$b$t~b2@uXinb^t9QrhoHI^7+k~J3A@|bh|{#f|&bHI*m
z%s2#X9w-LxVcGX{QAU|6FdA$hP?jgoV=JOZr?yy6;f)APHv67W3FJ`V%hAEq(xGKs
z3FQp#L$ysy^iZ?wWzkF7B$^q~0mGt4F&7a}K;47J`$vq=D-MgviLVxA9&b(wq?5+j
zR?%#^{JW!x!=lGRuXPww#JEz<Zpb29AX|-hY7Tq}lGN53IU5bWDmfW#GKH7y4vW-y
zFZA)3p=M{z$138<n%7jO+s?*ekP7Wj3}<j&(mEo+A;yl91OL+37iEP$^|U&(a?fIY
zS+F8+q|AZ=j&+K=ofTSdbvbb(3W?gl=1s)|zhXs$(Vy7uv++#mHtfM<;Wz5M7_ZBf
zyqe8lx(^wzKkqU21Y8@R#<<Vaj*q8Ccx^VOj^vU0ylZUNH(gkZHJ(S21Hn_5>vi|z
z2v2sfN75}@y^g}sc0#yvhjEn0yBCYa2B#Kq@<6aYmkD$lEA1V~4`;NSq{vk!c%3ED
z?Z!Jr^8#thOB_Y>{Jp|ebkCw$fxhNV9O9@K_rg^P%S#eobO22es4Kd#Xx5{ni>}dY
ze}b5L^r9ll@+Pjv%b_u3vVQ#@tg-`0(G<P5yL@Nrb-(2sUg|_;Orks?QGO#q)q3qx
zzK^CBRr<$9o)A#L?=4!Q*S-b1$RYr|eW*8H9YcN_DNlT4oQitP#M)h)rL{OYk!^9=
z$}#zZcOq%X%Dg!Eh@&)c-zc`Z9S>+~CtI4%dYDL!Hwr%SeYuAR<$E<9M0a7=*;p=X
zvc$T^j^(o6A(q)Iv@b;&dv#fTB%@V?Hs;0(_7X7~m&823!~-%JtWc<tY+NL`J0fc`
zsIpQzn(-HPLhIHy(H`j0<%gHLFm}K;%GJz3oS}$oVkt>oRs~5X+T#O@OF(X`5&SF}
zqI0Pyu{h=w5vpPr5F5*ucT)N4z-@{S=PB%UlNLw<!|>>5qoM;;6kC-qOG2XWs*uj+
zlt+GzGd#3*I{b(uvWRI!$W{kxVH}g`n6sgtrMPuFA*a5GekI~#?-0>OUzFy{P9o$j
zczI(cRmW_GyoqLgpOKG?#3`*w;&rqpJtCi}v93M<1aF%`b!fm0Hza2(1~k++gzV!2
zHqh|9!%kW1N{~mfwmR+=IpdTuz0DlNc2Rs*#I_N$RDDBbcR*fDi)Q#Q!{&zDA+s-g
zPL^vdapK7~DqZM@{6F^IJud1hjUWFE3^0r%Gb$P?)<=Va;xZtb7_`7}Rl$(~MXdl~
z#v!>(%#7l;6*y1~6T5EhrQO<HE!%Z#x7ykiu?)mO-FDNiZta%UZu^<WlrCFjCcpP{
z&SzjoZ7;9iAHUb{`(2CqoclS?bDr~@=RD^*=K!a1zNdgu9W+L)OiXxVlm#jhydlb;
zCiY+vVpO?az<x_{6h<5_o>W6!NM<yG?=Ynf!S;rSnoa$NYs(BVaC6dwo;L*i`DxlG
zp;faQlR37Q^VcX{hxnc}u|BLCflcriU^Abvc^9ovU)e#J>xJ3J$Jl?!Zife&+IhHz
zCGlL}GpJx++iFY!`VE5c!Bd}Z|4ebtclExXy`&`*p&9$S;gAhPonb84J=(t-X~*AH
zoMVE=zEK=IXV+J>q4T5{Z%_#B*}2eP;oi$nw-4=WzMDsT*CN{FKDqxe)Lguo5%F~M
z2b)8-y$0pYR}|$8U+>+Iq?k!65r~N;%=-fTX#)?Ff=t$mjdQJ7vGaXdDR%Pt4{r6n
zZjz>bDVMkc4rGpCbD{4vp9I~<u!myDwzwnm76lvUz6e}(LY;u+^{+seRjwgD&LW?X
zmj4Zshv!GM$K<(-HmWS1oDfUqL8pej=pcO`ZSuX1TnSjE!(R1fuLBM~1!Z9=1Zwx#
zl=wumRauNDSL0blGF~jgL~zy_ArQhy>W(9|F$oQxMCfIcES}YKw0m>abh7-Y_K88H
z&?Dsxd^3=82{qPJ7^i)r5Ig<2;DfZhAdZjS$~a%R1sdiY!GcZoRtp9lU-gYjbOZu#
z7t9bGH<CJD@ZrhbLe%mG+M>Y)NGO{&hxJr{KsFpC=h>WeaWzam6lnf5G#@^d;ss0M
zR}PH_ujXWaWq-o`j_)xT6CcWARMC<BB07uyoRNNV2=jgo1n+x%uS^id@R0-tdq(#k
zAnPSSIA#qYsSq!2{*`%Q+a^Vm6LZ^1Nex$j45Xbi9x$MDe*udbQ*4gFQ-0`;Q;gjV
z0U`5U**VaR;iWp($=)9V{x#T@8R?&fyq`95Ez1zd;ZOdQGw>3f>#!O<hu%kTlC31W
zPs4HsI&=!zg^*RG@yB%P%Fbuy&*0mhD3taVLZn|J&6C}vraeF4nDyj4{C<gn91AoO
zA@(r3Eel&X_*pkZ_lrT{#~bR5#9QIiHXq-}#1a2@f&5b?&T~VsTN1$_76_wwMUTcW
z(?=&B-uK>}TEQCv<HUaRD477i+;J4`7|ooSgO4K{s0D-c-&;(rGrSL)1^`zHAt1mj
zqPlO4yBv<`5&aFvSOF59LnNLu1ljHt415~L4($c1`}VKYPBpu@S=xs5+5<!Dy<6c3
z=JHl-5Di%cY@=JNi5tC*6xJQ!|5hh?Ut%@shHx`zJNchyehtZ#T}PZ(_`5|-`=!TS
zM`C<w{hyWLdY2Z^zc0&u%-=VMrKf=?a8z7LdyPNWbS8vj#!-QK?kC#N_WzA?7a_Og
zMpZ<?>#6cXRC%6UIs9LcKVA0!t$ufiBh9p5hfSuwbYNAQhkdE#4mCwMp>Xw0@6UiT
zvTqT^9iUu?!MR{40DjzC74Cl10;O_aH+G$+dfE{hrVtArHi`p<{~95nf$9BmR0J)H
zFm}9*jlP0)q3;!W#o@8Vcn-89nin*e3L45}At>hr+iPOw2vknDT#g>Ckvvq+t5go=
zhoQcD#7S@Ac5dvk8St)>ayJY~X{_;<T+x35rc`~8AeHY1N+9gcah}A6gU1x(4)JNE
zEGq5=X%RmD{LWb9e+NaP1t0MIPq7wwpFqDL)kuy~WC3i_1_s`6|FKWF9Std`h79#q
zMx1hgG9MR{EIA6w*fW6pAx=oWyu|4K-%yLLMFCPZ^)q(eBG_8hH^LYVl<$xg+7a*l
z82~0Ir5<cfxd$7<Xr;3q9Uk^A-0OTG2S4DGpDPYa`6yhw7pEG$&mj+13(_Hcp~;=O
z8<$YxQVuW`x`ynlp+1bR@ri}S>pfL^Pfn6{?-J~_6X|0q)J=1!`|F<7VXpU9!uFK%
zjk+Xb<gxC--ZkN;x`$xoo_1ol&RN-07T#N+U_7Ar_K@D2LVF8n7Kiq}fN_R!_u=@{
zD9tq%=UmiN7{MMcKivc6_*wi$y5Gbvt-zJ|PNB%~)4r)_Nd#-j)*Zg&o^XF21<Mn{
z@`TEHlspd*PE7)@RxuRvIZKCmI64j_0RSx?-0DUm22FWrAgnO#YR|Qd*SU}V<clv6
z20>;79}UDG6}Ar1D$A!$9%US+1&pn5Jlb~(UyZaLy@pH1!!3z+wQqjB8}OAmbl4zp
zVE(YH`#?(LzDN*HSRZEW35k&!MP_zYNgm@8k1fMv1?IEd$~enN$kpvAImW%M9c5v1
z-Nsa7n3;;*+wLLsjk8V|2+P5m7_WUq4!Vwn!H^zF3zY6kvbinLz|4{J2v{H}-)7XS
z^W3H))s+$`efzHv1&{_(!V(loq0&)=al-uxi7hWs{6rZ8h-7;hS0i){OaD_U<BJi@
z76R;8_7pDgrMdn=CM|mk^FZU0^lKCYz@z(Xh{nkfSGo<R!QQ#Vq>f{=!}qh@?arUX
zzl#`p(jiCN8Hy;XmSkiPnqGoBJa(1q<ayrmQ7H}~YXg&9g#c`wY3&ix?NsLb6v@^i
z$RCMFEQk!Ma@OR3U_zy6CXEoxUIa|UtE3S*UZm>5U8N%kxM|()ZbuPiOOjjlH01(^
zQQ>^cQ3Wsh9)xjIs`Z%Xr9u24!D^m|irRz(H&;_Je&8Ar;#sf4wjBrVgj9r(wRp1E
zeQeUMmIMgM2Cwl4w3MEzC7?o&P2*|P$yP03CnZ!A-Mm?>w$NiiTdv0ahLC4Qr=4|!
zmPrii1NCVMsLW%1fJ2xI>b0kIZ<-2)!CC0dVUHiv4UopV4Uye->W&YPUP!|&HS&-j
zSmc``d(OM0#lwbBMYkcOd%4Eqwkzc_Xj{A65FSt>*)<=|={7__<+uuDtsK|G6zD^^
zG}72Pm?@22;X0{t9f}DUs<E`?|HTU+1>D2zIuuJ$UR<3+d;Hwez&-rwBRfxl{SjsW
zA5Hqx70k>d9LwaF9X2*dE!P{=b{kW@L5w4_VrI(<Nk%2@WaHLZ(eVQ96uBU(DqL7p
z!gdX#+c&@rY*f;1JXH!SL$)BeWR8jYT3;Z}!`jRzgb_$#f9!$6P^!dE7|14KzO>|o
zBLUM&Hv%v~X7#^FbN4F1i#t(eGV(=AkAsc-jxjT-n})3Ih~BpyKmB?q-RuTCJ?R1T
z5#3rIiWzw)nUT|@Zd%t_tz+IY48;DEQTD%&gi!<?1@yaA!p<55VfApB*#dfIHo}{R
zBT{ro&cuzlJ#(Oq!)dFYZB!HXjjtRI6LMZXFXE%;ACZ4_{DV~DFiRZL(?fZ13h!Of
z5!<^h2A*N|n{!JJqgfp3ISI_JBT>SAkZQS?a<soEI<?S0g*iWj&4?Yq0WP-m8*;xc
z9fu#Mps=XI=4^Ky()aGBqSIc!ewJO^qv%%7$kXn*U4YsOhP|_b@J7h%fAZETGT!P?
zId(QV-URKd=RGqS_KxH6J=d37=agb-<Fr2_<-|~l<4qi4nreR)+FO=t5{<qSo|zet
z_&m|upyMEV?IX)hNlCDwLnz9q8Udr`=AQmU<d^8i>2*UU3D32S%P22bPQZ6RLs~oi
zP9W`sM7Qh%Y0_{&9+f{&vNV3Jf|Ch>E8Rhf{WdI2zxh3ujZ92E(LeQP>kX(%yhX=&
zBREP<U~a!cg6SNkVie;Z+DT@nI0h!&0YyFrAr>+dMee5FVeP>H<(6gw^qI7Sh6l8r
zdSV1p5AreUf0n2}4(O9^g!IW5aB;Xz3&p<a8_N9DG1JhKf5kWq#oUJzPgoSkoW9IY
zo$p^b!$%V{c!kT5Z;(aBFsw$kd-K%LgM{XVqp5?E4pxpm<v1OwSaQrUUs^$RVEM>f
za;$#`wd6iR-ph~}eOJO54W^Hf(Uqaba8J2Ly9b-PU*ha3_#BmS)NvU$N0ba_Y#$$m
z9e5o%v!Gy6yZ?y`$wF=6y`?yxQLMD!nAsH9Ckod;&PSf@HiB=0S$kIFmRD1h1A>w%
z3TMc0dPBubJ;AVGKS(Fe$gXbkY}}ChCDO>iQj&I*5+V=p4s}fH{|z<#cZ9-wh-s{K
zzs_t<uC2iCrXk5Skc!I-6QmS0&12HTPR4CZaJNCw`>3~aoUN+b-9|a3^y@!TDm+b<
z3P!1veu3VuvV4&r7j<5N$2|UscUk;uFOo*Pjj8;;`g+>L8SXKpb`Cg5W`2xRTLX^M
z{joIr{}xDvJbD{i2Te9*bieLduGIFwdzt+zq`sY}j_!{o8GjE!vJz=Y9==j~gtknM
zrwx2D2vwTkn7+!I8;(^>Bjn(!bz}}fWfGt0I7JF4$lw*&DTLq##S$|Lhe#3u64hz<
z+#ELeegwSXkvL7$9EBMr%k_^@`6X`%Mgnv)?RSJ@&WnHa)Hsg1(9*_@GbhL%?Y?7d
z@O`??k)8#|dMvBA2y1FQA?ZFbHCZ?*xN%)9&9+4v#OtUGKz$CY-u75Lvda#;VWLvf
z;eNW@7`7=tBo;Gxl9V4xb}M26a={bps*j6p!>knBAQy!|v7<gtq!K&erb0cx!CNz!
z@9>(*PK5Uw6i5|^!@Rh8Sn(C+dR!wXZ3lk91-dAuJBjutHJLBm5sJYAXB_5dvPK?b
z06C{JCWeff%-8O~=?o=CEGbEg2T#rf)x{zvCh|Cbm669I597{xPiLHw%H_vMa2TWm
z!-3#KCIyd6d;uHEao#oPC62W<7c}q;I1M%MX@D?70wCR9On7je><)VuUREoaa7p8+
z5^UIX5q_1Z8o87(Rx6D1+&uRA5MG;Zr@ZJkNrWr|QY`Do)z3oT&ryZ+2}Zu>4o&Zx
z5X(ncW4X^-K3au^l93)*8XdPOO}&Mm8Lc-GnS~+gNZ}YY3~K@@<YSWJV|)vwC=iJ6
zUTY5}Ith7iB2l46`U^5uvBA=Dh-h+R40oK$hZp2ei}#nnJ>py+jP4T=2Eaz8_LtEv
z18kE(tzF}eD@P#D2%os`Q1%w;+=Z&%H4*OB8Ysaavk1@OFBBJJkHQb63uzx=H@*rb
zdG3k35g#1>A@w;(RWbWW$GZX!>*DMu6sVD2whc6jXxPJJ3-yaX)2=3ZSebd$Ue^0v
zYEI_iR!#pXjonl5`Hb$@I{pq-sIX5EvA^jB15zfwmg&7c94_7bKO(cntpaOt4d~oC
zV~P)ZmyNrN&-oq&6ve$iVkI7Hy^NRmHA<AKfikiOJAkJ1M!t-v+(0`WAEK!mZa%K;
zB@1#GBf5(<?qeR)nCrce$WPoRoLu^>qi%Hkc|sQ{>D+Cq_S-HPx5uFmA~_v5v7fu%
z@R_3w2#$u{6SR=kFA-=1)Q}IrUdHX`#_eO{_Rq%cqt>0&qfrR$SUxJ`0H3f=uAtT)
ziuNu;S}7V6hVNH$Y#J<SsZRsC_$0ini`mf>td`N8F|b6fas7P&V{l(P;?dob^!;OK
zKh`%yx{lo5f*cqmj1(vljgP853Ihp)t+!O;e#14Q$~<eI;hxrU5M3w$RUk3!?D@PS
z;5o?94&x+t<P}u#8A|Xx8%IQ|cmqpa4XioAlE{`5X7lLmXk5+CdY$YfG?}0DK1XfR
zx?CtIbF5X{f0)pd2Qu?^A;|p(o-k&eZ$#&R3H`h#@r}$c(fP2nnE#S%Ajh3EFp_hK
z8jcP2cXdQ=<9DL$=*W-ptBU-%<4C&(k;R95i(gc{0Z^jRc=xJvf#CQg_gU{I&M62X
zXvt-~B^79ilni;9C}teBj0jX0lrQul*c7vgeBkT&u>I5VJ83s!AZH|Jfa2Yo1}-9w
z-@gmucmaIMV^e)G+>TU^M)b&M2nKzu^W65VXVYQN@&Ot{{e6UuFlxg-4EoiWP1)(Y
zRh9HGd6M-g5zJqGU;zeJ--v->qNDCGif#9VN;gx>@n-oAL_M!#I`Q50#c&SQdG%^*
zNCa~K;+t~gJ#`gf1d8v>tT=5K5g?J=NdU%34wLCCFku*Uz5BJr_2sS3S-tljLdj_Z
zXJA%+7&j3Nz~`ISTb_eG=9%tMM+BCL)09pX&Z%MTNyj)t&-B$`&`CQ^0w<UlSBJEp
z9d}-d+2ijB0XnAj-%l7|qS0Qo)OUrXBPd>NKb!1`!Jb`o`D*I|g5wPg4Hq7pz{Jf?
zcnn!OmQ+6K%tI@OwR@_t&x2=dt{Z$G>K^I27oppw{(;C4hl$XLE4%Gf$i1u(oF8#z
z>q$kc{lP&Wt#RlWA)Dw|VUB;r{Ti1%K70qQhUUa`gQe?hM;Ms2FB|<TCGxgkgM9$p
z^8XeJpRPjTi%@vKhQRqbs+J^P7d1FSx*juyZx3I5!;p7g6&a(xrS1G7Qg+;?G**<0
z+OE6EbA7ofUv%C9<-u|sEsb&AhWqvx15@c8OR8|kjq@7pjwps*197k#z1$PyYQrA%
zG;H-v&79$kG?iO%h+gn5f-Rr#?X<UW;%0G2CQ7Vurg&~uD*n`)8;5=wP$KhOPYkks
zifm_)t&t$GL%Icyf#A1DbB{&Dct3TM^9IknHb~`NZ*84w?V^+=NLl5BGT<$4gM31I
z_&Gqo77$pnaesOkzcv8Zk+dJ6Jt?j$Q(;_G<$GMw=o^v~TruQ;h=T1zh_s5gJ%t*g
zH*AqJ&V?hqna8zVyHV<(q^33Kw>)Jk*V*}7;-P>o^vrS}(+~9a(cqL1sU;r7<MMg#
z?K%YcvRr2uI7Lr5?gW6Kq4ZShaRhdH$9q#Dxwwvsp)i!v`7Rsu#;hv0W})A#i*x|3
z84@D|QFL?;juU8|)3F|45&+(&V-3dAl0g7lMiOyO;P4*!<FZ)ql{B1W<sj`Vj)0U7
zOS}F`lLbUTJO(h%Vb63?`<#*5JuZ5s9ZIcH=~W~{H%IpyiGrrVvPAkNwS<w+IZQad
zXE7=nA}cWk@Iy^xC=}b1qr}O!q%5W52AD!exzD;!RMP<V=3&)?&DdD%PQ_5@%`EgK
z>@Ng{u4kbSLWzjoa%EiC5pCyBf$;XNiZEvc_EX-1rx%JcH1BigTx$-d1h!Q!?Rkk7
zyW`H~{UX5emB2Y4(IIm5j}dJZh&6xg{!ntmchfrGt4IK&c$!wE%{+mEC$PeIb2W+*
zgz~f_*w$Ku0FO!MS+0Ss1??&~{a@?T^2V@I|AaJ*0YeNSvAScB<m%r0sI@dw$*u@G
zX>Df)y2fZtqE4=&PIhBFa&E%MBz4y?<bc(2pC42>r@^)fWEkrDGSnIU`N0r}w%mH0
zvXvtnw*D7+X1KAwau-JR7V7&I?EvO^C?KH-PmdSi!*$c1o74MA#6r)eV7*~+-<(ce
zIo&c+s8<NCVI3n_GI#R#s_RrVEncwE3Pm#JA0Y%QEKGw*7IzyoU+sT8pS=_sK8KF&
zOo1em6n93a9q|SFb?|GR14#*ez@y+(l5u+^W*ZcetNGlZr{it!MKXOCD2$(JfgpgI
zun7fQWr=QTcMp@;+==+-Mf`Mq<P3YBiX+XnG7guQC$Y7kp4u?($R~a30MyX{e-$Fo
zTz%RA7J4{&ukn<N5a1Hr(H%ZDIXs#U_cAdjyB)<j-@<w$fwW}4#~2rpzRgR)WgvtB
zeTV>?h+#Uz!<VWi$+m~8akc`L(ra&`r9-H6Ei?b&rcx-@Zz{zsl`PqJwL3F#p9z-e
z;7h19f-xzdCYx^lbI#^`3Y%eXVFGnyJHyR5ollF4vLCd*Jq?|H6C^vFIN>ZT2|7fp
za^DrGh^g|XN>`1@=58>HjK$1WeuUb%Roi1wxeg_<!S&%VAyvEgHnsMNF-TQYD@}O@
ze5d^bod79nCbIn%dQ_%V89W(*_l9PB3NrASgKfsS8W>LBas@hQ+A20O#z1TANZ~CQ
za+iAwl5Uxbx|J9<{e)NP1mdf20yDYFSL~Uh-Geh*Fro`XDZWsoUV~Dk-^*n<27GZn
zSeId{O>D<?>6hU)1sZTz4t?>tCDEYfYLltfi0MTC;6qikU(Dc=Q4$A~*p#5DkbMgn
zTEOe30b(>gL_r!<<!`~*a{$d0rqDoJrvu<?4hP^Vj^XJb3>Gj&6zXpg*Dy$<{H>g6
z6{-H0-vi5e9y~?xj^T&Z$Mqv)($A6EQ<!nf0%YZQI0kZZk5sM0N+H5}9rF7Q&<i>t
zS-7PqE5eaQm%98C#Tc!d5$XLNoSwoZIBbe;daZnXp}(ANl(Tj{@Ts?!QbH$~iKh^%
zn8}3TR~wLuJ@u%z)>5jKNCia)M+$4C^cCpKb2FM~l#2!$u9XYdcCAGQ-o8-Bbffh?
z6e7I~sS$!&B%)x4pc1rQcmanF)Er_M<93zbcuCHF43~9l>8^Q41deD;4ROw~{*#LB
zL9ruYJIeXNsVeV_0DaQ$SwvQmo@^z4`&y1+@;ynb<H7bLAG(ieMseH;5f4-B&Qamy
z`SuqT57T!f%ouv|yl^)aRYNXt5IoE)S27YNP*{NmVdT;kY6K|;L@%9uhxQUrTtAQ6
z<G8{dUym=(h-L|&ZXbnl8Wkh7e(L+PG>R<=H*2ArwQzh9-2r5>UOoeW{SKlT@pWcD
zHAI&a0n;@o1(**1JtUNR?mqi81}*sHlm19A0@$k)!jo2aG^UAO{74&6+(;PRvW0(7
zQmK<BS)CAwr2R16g4SuLh$MK8(>c}p4&_7W_*&o0ePketZ9k*+GYTC<Xw^E;JW7oA
zEW`kC54*k^cgzcTws-V`XM16!@ehawzBjB3W}=MSQHC_|7Q04?>=a&izceT*$>!yt
z5nHoHYsNgJdK4&~G+>C5wjJaK4Cw;)CBGAQ4UNjndC&s>(Fvn{1K9W=1;KO+<bxD4
z-_}b%KqLETLXqzJGs+~>3C8!Lq`^1QlI>`T>re*GVPuj*hGnmFbq5%((fS58X5Iyj
z`6uu|4M1a1MG79N!eLMfxTf+^sOK-gpq{m;hgC6I!z5@S(y!#wV4Kl>W85spZwA;Y
z?aLKptuaT@-*}80Y50Ig41=ranc$?$!49Iq?B-fJvd?2zz4B3q&RT^~X%0qMmA3;h
z%V(V&oBGcHkoK?Ionif2B<WKULhktkP;(pQxb1fkbqGsV;X7a_`zWv<qeM=4<R}u}
zNeRo5@Rnk0AL=viqmX_arNRP`ihCHTp#RbCd8Lm^k$!__kVy$MA@&sG!EP0{>c(gA
znW*E`XUK%<7_(7Nfsl18u5m&Gw!~%CXgf(^yE!te){*C}hcnCQuw<>$cG4MF?}w-?
zYrD3SvTvD5)}gmj5|_5~7nq5?W#sw3w(~hqu9se#h8RU>t|0?~U3O{I*zZ6R%*;&v
z-f@V^Vaz)d{S=(|oyc!Yya{tEPmIo2x}?zEUu!#GK;a(elHS!h%zPa2QWyxACV6f5
zJt)k-FF7jx?s=l2!jK&>3%EH9DWQ=C*B&B!PHY7-bt4wtr!jtMCe*rnAaZ)wQ3ZZ@
za2<rUD+{H{xv_{1nf<c<<&J|(X9K>O7Y9Rp@MOi|;V$F&btt^(bJ7oY4S4SY;<9Yo
zuJ3^?kShQuhaqccwc}bXAX0lby&ag<ikEILO7}E&=RCI;dv3~y;;wSvLg18X?T#M6
zm?O~(bEXwVOaB~TQbP9~00+cfsjzq|S9Djzt+sed%iKpTgCD9~M{^LcrW+?mJR0Do
z0eF$H4*AZLpeJUZF%SaLY!SQqBXJNzJsV>$m+I`rF+F_T6)z&_#oR`?JvhZS%Uy9O
z+ue95*LM{&W%#$5jA(8yINW!k^v3;<W76Vh!4EB-`<PXr>k?Lhw}E5AD)59f{W)YA
zlWOq6i?O5^P<O^*6HoA-A!58e!*d;$fSy8j?8X!Bxmo8vnE2)^A7XDd+GMoqufr(&
z4dWOZ?<OFLDaT)VfBAg8nimmTjRT(v455U~-5?@2=!M8DIRXeZ<Ow|m`fh`v*O1B9
zD45oZs3iqy-G-%D_ZdXDA;xWp9X2e{4IA>2BUhx7#3%f?g$>Mr%58{4D3K(oKFJo*
zpc@>!!fl8~Fm_^~Y(`m{@o-3E=;!S*IRNdZBpBkNuXl&~O(iYZR`Go}!a_+}_pH`2
zR@{Rfh*wS)&&PcqVWCATSer!WxmWA31E%eK2w3vA0vKw*o*Wg1m&%1_B(Vs(`vVMI
zY@R}n2&ISCp$TSsJq>HC5%222YFDG}tws^o=EIg2DU_blEDR~wIu3&LLn9#S!S|EU
zBF&67WRw{Vb#siTAfFzSRAwIImU>F<UgSiq$jvZuu8eE>6l2+>V$|OC8lb_^@~%G<
zRJ1}pj1~XDxa(!=4>~%U0J2PSj}p@8ARXPBQxO+8{}_B3a8XDCd<UoCjW7O=bjNu?
z1lKd})I%CTvRJ+)uUrVXh}V0rh6p^{H6FEv4oiuNpP+<Tck~$0j}v-D9jB>bxbfsQ
z=-qS#jj9~3IN$6JC?Y9ta~#D`Sg(uxMiaG&Ep8-fFW4ER1K(zUnp*_lJM57(W??!^
zW{gTZ89ytrBa8;}PS`sP9l#TZv6z4R(_NI+c#A+*AO2!%c(E+8V-At&{WJ(lvyjQN
zhyjW_uzV_txdSmUGu3!gFmLpr*S$5wZst4Ud@)(u@I)vmD63Q3nM|P_+RopAX&oR=
z?#;(K)dRY;sd@{)CO({vq8JCpFs?+5bSH){X7*8Nth&|2yb6-Y)X8HDVaXs6@B@v~
zoPMxnoPea622ay|7oQ!yh0GR8`6M^N>XmtnB)yG^9*em$?cOusrjK)94!d58xS;#&
zRhCa%fDPp-M6Y1cZSx^8eE?e^9LqR`>H96G=1FECf7(m%?^aFvo6$~w)n*0QfqPI+
z*LB1z0u$OjH)Zq`ETYK=3ztg965MAA*8BD&H7$U<=OCS@Nl$?}k5LhD@o8o_?PaJ*
zeh34Dn8;&TJt<vB+q)~`t_MfXQsF0));>$e2jACq`~fJ)0Y-?gg4Xzn&k=qI3)l|_
zimylL4-k#e`|$y7h2Y%cgFIvhK7z3AZba^a0}232w;LbyUj%YzBlmB3=#%*19~Kul
zjrx1Ikg^XSN{Lj@!inQw1NZ<Eu%XVlLvSO}VSLb-P%Kw65z1BropHx_Xaqu+BJ@?B
z_5?oIOt~K_!UyC20%tEj`HCCQDwALz2UC7Y)mxd&9J=1h6y}KOtxP?Q!}h1#!@Z`w
zQ!w!}8BVEi7ZaIzxjs<(S)Lun7``_^zDw0;%jYL%fA0D~<9&$rm@}j2rbT=<<TOM*
z^S6D}Gt^z10D<Rrz58oyo-)>jWBY4#r+dL5-53ttCwkYYPGe4Sqs^|9R}8)%7CF@Y
zAoHeu-qV>uJp^h~oyG&}8Yl8G2B>*5uXl~+G$X@q*jz@R+6_(Zb7*z@`#NoB4;+jv
zs??x}uBq@oISq;B9J`g;&MHcRasl+IPNaDa{<P1%f5PWNU@jwIn6yJ0WY6swWzGy{
zNC(mxlb*$LZa5-zxF`fO(&FwS2!7Xf7lq*oSm@taD~i=P3jV|&+$*Dpi^6qj13eEa
z39RlLBSe_L=$vQB>RpSZ==~zSdu7IOQG~*MCk}V(@pdgP3{^qp$kjh7K&Lkmjl@{Y
z=Hr7d9F*)#PqCH6BglmTvQ8LU=LQ4n@sBJO1`k*N@1&Iu4K>`6g66OxPS>db{p6>&
z=I_B*Hyun_89zRbT^2q<2$R~qbYU(Zcqc$}MCBmKN+cl~#}+w$kHbf#j+BhBiPnh;
zc6Y{+iX9d2z(-aR0}0wLx@ezhHb>@N?9iE1#@1vYr>;cA_nPz{?N;$4R=uWtT<7}H
z_4mYWM@c*kUGDw_zP@v~65-4N4V>Q3@pAz5DtJ%f$3jZ}55L9&_lZACXMYJa40hwf
zrqfVaVU(;<GKa2r&63ls<-Kc)&-AXzcb~v-j_XUdSKS`wLP4jW+#WzyI!C(q2Pl=V
z9B%j%j34iTmo{5@(6tCcdL_(gF-7UThKa<}5aZi-;8B$6D@CPJJz53bh7O%TJO}?m
zyzgTUne;0d7kdr3Clq_hNQfJCzW|F4?;&`ZO|^S;k{Ym9qcy2bjU@}ZZVpaJW)qLO
zW2$Au04cl=a<|}{4S_Ee+EG*w8x@lpmuli92F1(UF>FQ2EpKij9U6>&K4QqFhChT5
zYPhwAgucDl@vQP5L9t-yvlzj$L31}2_Ta{|AgifFh+U!X+b}TP2E5iQtpTZ_ui0&J
zAgORUmt^93!b6c!J)JVTuZIYSmMMhkv~<6mXY3+P5N78EOP$lpR$JSs9jRyslyjdu
zaw$To?OMgtTnWR0Ldy1$w(ACbt&dS^1yc8s-JNth>ApbzRZM;Bor@&Ua<T=WY^Bq2
zDpm!W9R}x(jROL%&*-8jl^wcqCB3MwbNaAfk8I=nqJah3(6IX{6zho7AOT+dtHyZ7
z{V|<u@Rc4w#{ocH2*m&BX_SR_d1Gh=4Vy<`F&3%<74V{xNT%3NL`@^Zh|K#jyOIzS
z3yo9`{Qa*08YG=3wLgTUn2TA`ctl}L*8#9-lC&mEr&3Q4$r8Kk`V$5ll?EIg<<5C1
zc$hnvR%*Kra_9ArYP<GwXI3{XJIKlJBXL~U|1p}tSLUB!4)4<}0e;`zNt+Nr+Zy9O
z3J6$lFGM2OAv}IsjMKjmsk60v8{@Fk2W|Ir0}!As?&K;uTs#uC8Xx$fi_f#Tv)91~
znDQSsl4EtW`}O0e-J=h!gb$`$7Wd2wxU_q}a1DnJo~QdE^BMF5_>IB!NVpscSjC%`
zj$G~D^R996jxeTW$9gS-bTiW#!k;_GD6@-Z+r;zkv7ab#J|8EDVg~;)B^3G5-U#2G
z&Ld7;4?15GA1Xto-aSa|%BIJ!!JtT7X#X;F3tqRUNSu<Msza~k(jCY;L^z-;3A+(7
z3au~N@0{+Vx0P9F+;G^<h+XN6=LNK%52FRF#nUwev|ApgL_J+(P5Tg~>z-PQU*BT3
z;PR#J2L^F2c|TB(+qd_#;XY?SMm8*z_D`XYW<T*uU)X-)-|iC~hlsjKlfadl37KKm
z3g~UVn~WMf(J!>aLoa#O+!^OOt8id%54Tj$LYy^?I@*lgA13klwNt679cSsQ?Ia<l
z<LoH8yCnR2-^P!1Hf2di7SGIfsPUk6+JTMq_3Q>{PwWewsLQ&7(vT?*#{2E)4zlZn
zTDG2ozwj}&?2l1a&pg7ecJCr07WWr^a?A=K$2v^wefLwo@?Q`+Vo<n0f$bk|ucXib
zP0=qfxe`r|Vq>x6AGlfyufFTzM`4!`iF=`6k?u!xd~yC3{*sDpL{l)dPDtNDoHrB0
zp9KY~$T}bA3OA_8`i*C}F6<qqZK6Yv9NpO0uzr$_@>-zPs_OXaJj2+%z;9n69!HUi
z-et^omM13;c+hq%L8uAmm2DdA3hJz(Hy~>UW%b^SJd*euw4?YL{7eNukSeiVywgTI
z$OCOKo*R&=FfMmG0s<l^pfMoeVG6JY1f+flUMmmwb^gnr!l9Uo_7&oOybyk(>?de9
zju#~&gdbGw&qsUE!KZ$U4z9*}V>VtARxkxoKV8%=y@CkZO>u-tR#K5<Cy~0>aplf9
zd=WfHy7wIh`!uMMi3hR>={so7&Kt3m>#h3O_0`9YSkH1mW`ZfFAqv)BQX>%TS+8~Z
zv{k-$q^F>Wn(UHr>0{t$wRH|*?L792u*Y>$OJZuu;AvQFI^y(P=Q{mRu+Fs<lf=!{
z*2R=>82O~?2LKguP+D>AOxVC0n#E6^hB_Bmjg<01q}*A56PCpX*Fs6)i0BhUjNmhL
zmRR}~)|mWeS%S^CRQeGD_?dfp-z4D7eP0s%`_92!r^8E82a-@79mdBIQ}XwJi2?m&
z$mu7;PrulnU5YWJa<+ID8R76`SKwE>C#)DB<C@iQtss~6E^6O72wgkKkBvT@@12G|
zy$mP+7w(|c-Qm7#n8W?aX`hH|ASh6~_jUK!;K@*2gQOcgql+9RntJp>%sj+lq}u^7
zmr#Cr0OtzNe^AeT_rtf`d6G5sl<VY|-9xU!A*bEZaXfk}qPtJH4u@k$^E3~#Am~Nw
zE^4LiAc*5s!aiZU3X^Le9lw^Yc}(tBFzpa27CxFiX`H#de4K5;?jR=dAt=X1=_&xa
z9}Ubw@(W%y0L4uG87Kx3AcML1l6vI|d`Z)FCFbd?g?=aAN=DYX(p+>q+X2j#Ui%eQ
z8ukM)eXk%LLUktVHhNR}mvACG&h00@xppmh<`xYUWWT1UM+VVx^J+l6zJ!h;TKaW-
z1?enD+f@ht;mW2M0ecy5QR16XPL)rMJsnUG(TL=D50qEc4pw##ZKy}!VHs%&Qdy^y
zD+R8dV-SdQ9;RQgGcWCNS=%SlY9`W#zy<1&)4|w4fs}lsRdnMH`kXk|$@91i9I7l+
zY<u=ex_Qi@!(L_Vh#_`9+Twi!%(VS%g!XP)NRC6;$Ms4`Xax418YH@s5<P`DlKGHJ
zSAiFx$c-t_5EG)<N!QgwA-9t*qKC03Q|4;-UXOF$xENHW7{PA{xG{#dQh}Qob+~LK
z2B(KzXJef=dTh}iYm6`4W7B!8(H^5FbC$EnQx@wQ6xl2GnO<i$-Na>7-l8BIOmG@p
zRtZJa)guwHXxL7=@E#Vty+taQeAgx2E93Q`M_2(P5hQ1MZ-ZaEcOgt<SevkuYzo2r
z0S_*1)b3ToJZswKCJ*kkT>!2L1!U%+^JeYdZ!0aX@zBi`7TgSe*U6r#^%yzy<OJTG
z2ysSR!p84}&RgMAS&|1K9gKx+xyE%y>CTGlEmPur{w;LQT4@C9{MkcXi|(A}!JR-x
zCHU(!c5|jLtS<)b>!(Iq+>j><foSg%w01a*`bvR2Fzm73h5xGg7T3~P=Q7W?qdj?=
z%m`-=?k&$OQaYD-ieh_<MOIDbvKVKwXBl0^cncnEkd}aXf?+#nkA#zW;hD+MxLV09
zK3R^Da5O~lK8~ND{$ohBxR&T}cb*MzdOPAgZ7OUJ&%-M;O6O(Ty;E>wCByL`3}!|p
z)34d&YKrx>YWIe6GEj{uNsbagT#RE@dF(KH4CoL@&iphHyD>C_j;Sk2)WJ8FGU8Ue
z<uQa?sRayU9RP`xK`=#wMtu=5o+Fxf$v5u#ZKq(FmMj95Zme-}vaneN;nQ_TjDSbL
zz33Qe5NH`Gj6n+QUO?7XN_Ro?<th9uvv8Ewf_Tyj7AVoUQs{N|{yWQb4>AQDc<|qb
z<T_RCKKQq%a5frrhP$BdJqLlH1LHn~v5HW^xw+#kX_hd^!p6=MBGiKKnvS#ea+okK
zht29gL1zfoAccH?kT-XT>ipp8e!3tNOG>rietlm%5)kqC2_ZrLk+4^>$RVJ-^iEXP
zGkgWWYu9$k3qDov)5jnsF{M3@H@N-+58=u6DjeAv*tvnKOx5e5L}YmBEP@snAc40k
z;R3bD4ImZmr;jiX<b5R+vyZSsd-t=fud}lgZWoDU?A?%Tx&=bp6^Ewr5__KxDD9%m
zuKfa$02x+E?)%U?I9kFBdk?`Jef(h(qN3iX2T%`Nl@d@Vsqq99)jk1~v-&>=rFZ{C
zfo?x2Z72)^<bB`4mrEU^_mUw3tlX%rz7-5aXTc@GyP&{8@E%1e3_Ml=N}~$=S4c^h
z-%kcvb7;c&8hcvO2S3Kl!z>c2)(u_aeYS+M$`vaT1(VHOCzj-k1)K4ZuO53=iYp5?
zx*z-Fne%_?zkhQ@x^DE{mxqAKi~eo=Ao7;3$2ab8{j@o2=|5LKa%Xwes(Y+q4?Ol~
z*A=t>cyj%TpN9?J^t1hch<NQgi?2!i>4wYxYSXV%to?rG+Ndv1oJyUUHf3OZ<5dec
zPMcX}y?fd3zx%82eOW&>Mf29Km1hskD}JU(b>!JksgCP^b+nV}xpwRa=c%rb7tgDv
z`i^h=;I~xg6^%DsOZ9GgF83>{d+Yo=W>Ecgcq2A#adpdPb89Oegcr9oIILnr^XA&d
zhI$bX&(>{H3p~vwqfF-7ypokBF#-AQc&k{9w<oHFyvmXl`Agwe3u|)A%Sy_M#AFo8
zUlkWoQ%kFeXNApm4s*R&>p;S#@%8i7LT+QD=&;heuy(PorODQaG%0~)RI=BaMMsOs
zp0>r4vmze4ZgIBOnFGuDRzS5C4Nc}2rz0@hV5}5Nt>4a$cZvzDy_I&nHZ9tk97x-m
zBsR3rgVUnEExt`Hu%~Jr^>V9|2`3JxJ)5HZMFVV>irxbj<85MsqdprSN+j0dCpEqe
zNMWz)+Rb=BeuJ}dlW4)C%I12tKo9teKtn^brG+xkW6Sil0t@tQ#%t{Oss(yMSfnbb
z>^f&_cD#NGlDBN)4mq7D*FD)v_VVz*fTEzhd}aAku@EmVn;FbWGK?|;<Q|+a7UI3#
zdeMo8;TtwKqs4eGQ^X^^=zBC&pV79IegG&>$KS4I2^dXnsI3?4<k#$%ig=Hlz-Tl#
zXUBuioJ|ZwP*ZE2mHL97ZBO1PzmF~AZFNpf0SWLba0|VaJsDY?yP`rc)HaLFEe^4%
z)+XXn@0QlBB3|(piN3{*qK1uXy!=eh5fehTpir9#920sgn>RJLY-vVnyII65*ta^(
z&2?L;bP<NpldmDG1@<U=0{WC7NZ8y^E4Jb3dH{ZLL@SS&BwN6}Nd%@b9yVaSZ8WpS
zS_rdh0SH|xt|}<4oFr;`#=Uj3S*!y%{OM)lLiH_Xd-K%<q@&J?0rGD$0?QjQs)6VR
zyMJu|+f0PSz;?yk#SKoom@QKUtCGU%Ex}=UhPkPhus)GkOuiv7)5Qtow%E<Ua{a%|
zd#NOHZq&yf`X+3FdpR)@{~LIh$_<Wp`dj1N0QzcZCLZ&Ru-Gq|NG;GS^7h6S2YVd8
zq4ieuUn534XQ57+(ptfmK<jdSM6hxX1E(M@qsS;XzCKCB<JYYshI?aU8wO{?w*edT
zi0k9+Hz9vXN!7ws`prQ1HaM1w=EgeW59uIn{D86InOQL(=J+UAEi^SXv<Ubgt*o<b
zqz~1Mv0xN8H?-o(c}8yF%ftai$5!HM_2PO;hxB4?U7guZ_5Oz$Y5XBSFORpo#bOb!
zMd@G|G7N!bIT<@{YQgAk78BA^^ojm<QCM)jJZ&Rhp2uKK(5GakEV>}|s)dWh6-L81
zV8-mIO9h8*txZM?l3T%5>@ovGlZnIeKCz1lO|@+-fQSL(h!Bf0pPijO5qgz>Oj9R_
zh?$I*d)C(4vVqtei_7=VfOx$=nX0mHwL8pBlbM>$Tm17JO|7<CyIs68jb~=#kMUD~
z3uQW*m=6P4hq1h%aACSw3;s>c#TmrVER79y4msC1a-F3?^u}oc(>kj@cr*fEfuuQ+
z)Q_P{LX#c<P032|;|$O^m?Qhj)htX$xIS&M9K&659L?-47O^CCB^xB5OVMtttpky;
z7Ru2J(>I_)XcPq`pq`g;RG-YJie${rJmcbwZ?2Q|u78X+1k8PMrCgez(L|GnpWUr4
z%9Z2GT10sK-4?`T3rM~p0{Q0LCbNUM1}nnM#Uap!JeeSyTBs@pEj71XSb;pxV_pMq
zWIY8c)~kh!!_kvBV8mV!Roh5{*;WjHN5f_ym{r5sO{;mMUCcqFlW3rm@MLE$Vu9SX
zVJp}uO`;fUARm@j6oDMf;&m;JVtgI{4^wdpjjYLn!~`%4yBR`aePR+|vas3OUjT}u
zsgW@%YJgmHeJh#>858p)n_%ru8x!elwU}`k>~-KI48}ajC6>k(n{BI~)2Ri>qmXmB
zJYXh?Kgl1LB-YijY?P$ULgELL<HQ6OPSOwj&Q`OCPO&;SFk}!?>Kp6;zZoL$Hz#5I
z;2WcfR*~6W&*T>yxHL`CyiZ7gF|^pWGSaa_e1TX7;RJFrp~P5H&SwA|$TAAm`K2Y*
zf~l0`cA?r-y3p?t7pCY1)20TSjfyEXR^;ZbC_twHGxZ=D6xLYV>c?LKV4_YXao=CF
zKZ{&F#9n_3N}BCXi>0Bi0l4G?6q2{U07`_hDe@+9OzR;BZ)h|Jq*4p=T0_uhr0UaB
z)AeZ?5ZYKO6yR+Bm!cI8K8RrQ&Gx1SJ6ost#cyXVIudJ*CgP1GowE)VSTGm$f#SN&
z0ipG^j#`HH3&XawHh{>fV4mGiL2@z91`$iD_<9~`Zo`U_mOrQy0;jVfN!*C;oJd3r
zS)Pa(Z?<fy#@wqG0z6`VX)b0ptg0;Fco3o)jnkR}9H!RRPzOHR(%cBTwwfU-HZ+TM
zHYZJ8HX@~F2Lwkhs-q_mlVDFos<z2;h-`VdS`ay_sZSCFkn|RFs~Jv+e{57;8DGDY
zh9K4>N%3|HZN&Ttxy5cX140zT<rEsULJ^>}+0(`5+D&4@#9|6ml#dYt$((49;u)Hm
z2s4q2&$tas^cm?uTcbq;`9VmP2Oy!3)=T*4+ZHWCi9F>d^VSV5DEMEb*6Wd)<^xom
z>`$L;$2f4>1i$~^Rask$LX4(#aUugT#|EsHzD<2{>%v7ewV1(Kn0Ny;H8s&J+yIG+
ziCUQ7AgNX4GCtYb0)f#lH?buo4W|T>C4o;Su95hGp56eNg^dC(W1v?r5h#k~W=AXI
z51<2-z~^o|QkR>l1fU)63TJCGbpV*x=8d($SQ{1@#3|8GdrKp@erYW&(9B|GCDtL-
zJ%NA8e$T&f_>=g*)PP%^4XsoyjVo#l;|Mg(knl~^TVX6k>tq@fz)K0>dZE-w{ol}v
z-&U;kAo*hjXKp1xjHP1JWb6jBOu&c&FLFQ{uZ5i3OtJ&Z0u=<JQo%QK;_bpxeB;}M
zR50)yeC<uN98I+}m>cWk>yt5r<q(E<ga}iSX{xcz2!XarXrVPFn?vf&W*e~&C)16n
zh3evxe6ZY#T%p=fZemH8;>FnvX`?=srd*m=Y_+Xm2~16bF$9JzGjyJUWO;uY66u*{
z0}D~C@=yq90)p&P2m(yZ$C`Wz+LGQTK<PmrG(Nwiv=k{B!P~7ZTapRokbs(<EC?i~
zPxkABSO~a6G8loKd77O~wd702f@LzG8AM_iYU^wbsWMV7#F1Q~c}conD6efYVN|Td
z9Gy|bSqB&I*4H()(8_|wA}c4kv85Kv0HL&HGh+-*)ogtZhEG#IPly#V$TOK(kpQYi
z-`P{`8*8c0QXp-!!Wf9eDUxa7FOZjM51312&ZR&;_!udzg0v6JC;D{}lnPyx5buPD
z!u~kMleq*Yqyqan4f;CE5~LH7h>GIvL_|*e1|jvD91>&^W=HjqMG%27J^ityNR*5;
zZNfD|DwAO-0myw5g~=)7!DQQnT<}s5%u-p(3y=j892SNgv}+;}m<<>UC|4{7Crk#b
z1@ndaE55EFk4@r}Ng-eInUaJXHuiz+N=!A#9Z=#Wla)Ff9SzC<Sz2Ss%KxB5$a}RY
zR7C23Svj8sFoY*S#w=}P>)Hm)jSWm)QY+TggE}zPtj<q0<csSk5_9|*O9(?e@+N^P
zKjejH@`lDu$+T?dgH0{S>$&=ddeXztir5BDWQJ-Gb1R4lQWrIe7@4I3LdE7=*<ye%
zuO~~RbQgz-8<;G^S5r)h;e`A&F}q(f!zN12bZHPPT3VrdbTUD=8iSX)%^PJWkhGew
z@`<o82{p8UT?naivE=7entIJeIN;zLp+dlT$KqT@11b1usl|(^PV-{|YCI?-*rMd$
zA`FF20!DfM4Ho`2dU>URaMF5^xFYdWCg8GV9Qc1N#!fTifov8nTV2X^$+VPWo-z|g
zI>2abbc&@7c^Ek4igzZnMGfmKyLjzHK$F=~OTtT{P{@}R>)A-gSi4EU#3iI!>g#~u
zjJ8z1?4Y4tT51qkDuHy37@}Yv;6&iks8E*DxZuxwfU~I}y(A>y2^tYMw_wab+=aAG
zib}}Nj#?;oFvZHHfMGgh5rZocAcAl$6PRkbvzbc)Ha16M$go=dDqc3j5CBQ^lY(f$
z*lZNJ!j}>+h_^2g6G$@%geQ_RiG~HKxE*PkNth6c`=K!tN>^b8*WXO)j0IC26uGp1
zo(uzH-e_({1@=@SkBcnw#5mb9e|Vl@wVyckdaIbgyCQKSUqJj4iZ9O3=aI5FNoxXU
zWBmkMWl{*u8nlqxq{bEpxjENa%2L$^2x2@*X<oU2Khc<5UQtp}va+n2t*F?1)UdHW
zxdn3gMhGDj0UPS=P02KlA)`3VjbcerzPQp>&Jy_raOw$J)RxsP^~>{UUCi`%B;ELP
z=H;78zd2W9V|{60K6$YsBta)nx-<cLep-NmflX|+R6)Y9LL1mh+Du3(8zB$oHiB0{
zOsf|!j%8FsLhXd6i_&b4cc#QUX_{>_L+)YgOSXr^CVYEJ3K-O;%}sU01DDF+Lh^00
zxB92G$yi8otdaIQrZ6Zi{`O>EhF0XNmf3Q(O!I<1B@L<v{*NV+r8)jdu5GTfwzOU%
zg0~MC=9^>ka@CH_5XSbYsU){tsx-BL6)Rt~rU@&`%2(?3`bBI_zSKX%u-QfCk{J0D
zO9E_1k<5?&nqZKOWm8Za@Uwx$-i)G4MmE)M#3~R=Ubazi$t3<o>csxtrK^z}MhjT<
z1ugQxR2Z~OXPHb3IS7Dk4Yk=;+uTsc<*~Ag!nF`R^?ISYV3{5Zpt1_Vq}Nw-QBg2K
ze%*jAY{i{<RYrp#<W*6KiQf4TO3Er$#HeP9y1cL(1(i{6s@Alv&X^8Yf!~$3x>}8Z
zG*k7oDQYswVE+(MaAClTpa5MWN~|_5tezgORG==nGpeVnl<E*QcI4q(L@`vDE=O}?
zYG}17uNw1*zQmMUy?$G%+E}o<LPf&-R9cRsFVoP#0#n5l7{#?43s#mZ$fsD}F-7(m
zD^$@jOz^i+OwEq)`)Y(;!cOHbwKh7cJl|L$Ai`Ktv#Tarv!>iwp|DxWucCFrw5e(}
z-GdG^DYgn83Q~uZtSl|#P9>aGD7~btgbFc%)0CF^9aXeKSOg<$g~yL!3V|QRO<=f0
zd84qtJwLCgS}`R=N$qBC{N$;klk)Q_ixl@;YkpKy<G8y<0kMC>L%JVssI|GeYc>d!
z$hpC$R+B@wfKau5+g!pH!;mKTm^xHdots|{ykgC$(3Q<h@#9lvC@(Ng%ZpGqcTW{U
z$W{fmRP>`LQjBTFGzt~M6?m5e|Gq%<m}bI1mEN8eKE3-gLE!OZ&M`ht7QXZ^L|`!t
zYw*Gf@_Di>#lL~ew+g6tamKWTYJJbOli7K6J3g=oV5Rer$?&a0bgr7M+<K_t>Kl!w
zg?QtgoHfP*ztd`5u`u06^h(ii6jW2Bt<}Mt2nX^h%?{0dMo_S@i%R$&HAx+1G%e2H
z&RNC+zw;{Nip3c=B6Es{gGywM71b2gNd-`TkdLku<V#&ppei;Na4JO~D9{JMK6<&>
zSW!y1;~YCbMNqEq(2;+}>VmR-><r{ri_wcYnNmoNje=^wU8C03?9hB4Bzs>CNPL&D
zBkKG2)e1kT)d=tYGi;XtBIblTO&xU?SzM!V0mEl2hEMoJXRqI82!r0cnh^sU5Q4^l
zObj7{8ts@u&QR8lXh4vbkKsX%bmo|i!J3b1@1q2o#d8J4E_LY6&|QKqKA`;B#;UZ1
zy!cSy7{#Y8q~gbQg<%27N|ZE?{mo$MGW3QJbq%%Ss+&`&6v`<G#i>HX3S$AzrY{jf
z4Y}k9HRR!=D$K{PZpGXSc|&q}g#kr_H2~>TK=L$xW7IQ?6gC)c>OvL}X}1ckLP+>l
zVg0u2mgnV9Bo7UZj%3K6z$eRCBh+Bv7b)t6dVCjz0Iln{U0u4eaw4O4#)TPG>aYcZ
zjuI|Y7Uml!hGK-^XF~))5F6r6ovV&1QhXBnNvNPKQhX8m1@O2aN4Q4GD!pNav0|c9
z<wQ}0p-U8{Q%@~Yw1u{Xs#FWwS^fg0VP$EWA3I?R&Jg@9BK&?+F=L@)p@M3Gjulf#
z#iU<Qj5=hZ9CXk(mJ>1-f^t+SM^~bnqzMor`1KUwakUCVf;<M$W2J~6EEC&J1<Sx0
zRgW`5C66IbU$9J!)*1~3%M`Y)3adZ?(Tg#^6{4SO9!mOQjrs~_&5mieQ8`-`H3FOa
zY7{%BQ%L?~h&oiaYzGZlU6BJZ=qh7*#q{O&_UTiU7;KOhmgfuHt$;gMn69C4bqG9p
zeorVo24VVCrDl8_JP$t8gpYC|VHA&J`H<A_rJN|A<;2{_)5<=|=}(GbL^UEQ%Ly;#
zL~B@DaA=-Z_EAoM(omigNm)*KDJNRQ(t=I!w6afzktJ2~oc_kc8we-P`XHyj1z|!U
zoMAktzwz(}!ijUo0WAn;IsHk)gW-fX5KbH}K~AJ)t&Lzg{cuJE!wGL7oRCfe;8d}k
zew3(!;e<C3PB7E}I3t7Lj0}bo-at5ElO6!4ItWg6Fr4rP!ii}#0M02va83z^6W%~L
z!Po=f)C9q)35FBiKsa$6Cjd^&`@HRp5~c>j32z{rFwW*_S+BtS7e0S~Mg_wOZy=m7
zH|J?tPMCYb=kHH#Fr4rP!l?^_Qx^oME*MUD1L1@)hFbh|J1q##X~A&98we+?Ns-e(
za;68tIXxIocmv^_5d`OqAUJ0P!wGL7oH)|Qal$YZ9Rz1|Fr4rP!Z|Yt&Y3}Q&J2bV
z-at5K1;IHh2+mo-aKal1C!|5N);~Tk3xe~qU^w9ogcJ7U0dU3y!5I?_C%l1h;?fr6
z^!MlNAUJ0S!wGL7oO6QUoD&4+oM1TN4TN)U5S$Q)c-z@nnHvlzyn%4S{67HB*dRD#
zgW-fX5YBl)aLx;Yb6zl<@CL$pc@UhJ2f=xHFr4rP!g)myoL2<Fc||as@NziUcf_TJ
z(o9NHo)MCr!dSjaufk6n{iM^+LRIvPl2w@UcSPQ%Znr{$johW461})&m7zQm3Ci`;
zqSRB|;X))^L2MOzC`=uO-;y0uerQ#<V|@nqE(%`1ZAAo8fL|ifKpG}ln`Uy;v{~vI
z?kFKLl#Zs-At73!U?HL9k{&gJnioB-I={pu+)i$FI}6dWmBub=67yeHZ7Me@daS$^
z5Y5X=C|s^R?}FMPT>Zzjrv=oW#%fPP`)G&CUwc~grE5>aYM5X*Tu{3@<iDssJ)rt@
zR(<*f)u(?$_33i;`4?7?)y{tm{lb9i7qaRXUQqqQZ>WCZ`fV$ffZlXr^-5m7pM+>h
zgf90B_fw+7S!YL2;W(zIB8YldR}@8}VDut`u{2kK1-8Msvdk*f*qDAp)^OC?tlhOx
zRIpE|V5@;oDeS6^o?|eAq$hLj2&=(Tf|g0qYJ;(0S;+bY>cdzSl`~oQ3AMPsL&H4y
zsm{?wFAImm03`yvW~}l_kSz@RVa?st3c1)Cp>~J*wi<PW@a+wX4LdamHe-PZ0dRxu
zHmGvyb}YE}KI{Y5v8LAuJJk2pDM$-cqu8lpUv;RnMpqVDU1Tg^c$-Qan$V#v7J!5m
z&=f__tS*2?B|z^&Vs*3*q3ObnTxdr-S?Yy6QwIMm;vc!B>$q<T|77w{F8}25kAZ*k
z`KN$?3fT@Hw1wE3Crcje0xzAgGVq)E&?ca4ennPJ{seq?&~ItRwPyafNgE-`3_UW_
zU2+|AaNK0wFi5erKyQBOGO)FbR*H3wMzn<|6m6SeVFMj9wg~FU^47npe2KId7fSj&
z+JhuRcxa+G);b(mw_v-O*;_#;N&7MhOjQ|gqYXy37wwOf!(lf@7HE8bh3ygXY-A+{
z`%`4AykvX>*}o%p<t1Y$bMs1J;AS+X23T9jRxNxBFwlmAH=E4*+1@c(sWFu*G@VR?
z$qcFlz8TZdv@sPn4t$4*2hlzZX~CHdt_`~*wM}f}jBHx|?QT-QmKJXY47mQy29%t|
zUT1G$3Uu0sny}Mp#5N<duL}sn{x_^l{J{j0e1?Md{N;lV@(vKT6WEqc`N~p}c35z3
z7H<f(cU~^!Obr$2J_y@ps(7i$>@h6P#zr{Jw;Eep>PzaekqC>RCYu4qAlwI=cQV0o
zlD#XpMC0U4D*w&2@!D!;trbfP@=Gd9#j=$ZWPoZaD61eNPuS$NHkj?$a<IU%Z4Gwj
zX^V<>ePn$z@XpVPz?Q$h!P$h(0Z}mIL*c3@SRq!dEH9~8DVmH0hLXY(LoV&HOziM5
zBQ$LC5~#d1A#WwBN3z@%D~p2D@$DhD_2Az@V)<#eT+GLI&c#uDn|LC8VlT)Lyl*5o
zgIbZmZ4R+n1tOnpeu;5KaAS~`6$`qf<0<lPwT#h;y=&|+GFued3Z%__zIjbFNn0xy
z#{NfJ|Fj(i3uNm0rEC)qo7n8khuLnENs&eoS$bkqCuo11h$d)*oao>icE2anvTbr!
z!=;G+-xR^OcmX^NH0xVhv#*Y~Urh$3_0Bp6_q3Wfa|hWX6YVl1A>z95Oj-e;h<vga
zB}B6SF{}YjbpstJAdA;lGxjg(#EYMo25z+m?bQ?e$G-I?Hse`La5dOTny?QO$w0BV
zk~WuR16r7gnaP@`GGJS`)MQ`@<<XIV;|Fz(unOm<{>+$`IVl^;L-GI%$;nAYj^jJd
z*lnA%qP#>JHjY`M$?fIJT$6u<{;M{aoY*VmHh_~kf(&wj(}b;NIy-a8Hc&OxGpHUm
zZJ3xuD|VnT9k$}<TO7y<Yr8F_wQWY6S2H_I+!W$^+8krM-WQ|{vdbf6G_?TP;=e6`
zC%Y&&U=td_tZ8n9MGg#|_|QPuqJ?!!G8ffeJa}kCO{Q-GSD*Cp+z3l1GEAUN_QZ=z
z_;02W&<iU7w%D)(*vO2jvC-=!gE3gW$%BukZ@=XSvq|EXMgc=p28_=U7c>boqZ~d7
zNh!9H%X6VZHK8XHAV?6DiQ)=a4hG;UDAnX-EwdTfJl(PdT@EHo#z1Vdal$&C$FMNQ
zmr9yNZto8}17{Pqs6jg12~I(_F|d7f;IQE`XA`rK4vypI61ff>#K2U^Y!a<B32?*2
zKsu%1WZ7P^Nw$hi22v(++O1AUJ**2sy(F@Tayh7-fltR7cx{1G2H6-0Y9ktD7qO`$
z(qzc&4#++)1%?N$$>ut%U0|lz0xVa|LgR*7!P;U6xxhxKvB6v~RF*9-Te+re(uji2
z8%!EfaJh&3$($nDe=d*9Lkj^FVJ;cQbjd{Rd|MaCV<xgBo7>EFJat{G+1!jx^ZMj^
z^9JWeVfo6kigL`unM)S0Fytqf3PlAKxdy?QaUJabR_5ml<;#~WSzJ&htU-Skko7W7
zNZ8G=lvu3KxDG-9vp`+S&Ns*h_(+^(XID5cfdw<6l4es-FM5}tV}l0Pk`rblFdKy!
z(O|bV)^3GN8R+GSW%|XgxNI{ha6>}Bfo{+#P=A!4K@w%4{V2V`!Hnb*Pzsq1iZopP
zCm}DDtCsAq`4PFv){&Jqx{~*_%-#J~+M<apKm%w1Y6KGUD1=#U;>T`>F~$X<V2l@p
zOqf0rQtZ~0TWlKzDn<5gXtFVE<`txK41sWOvB7Sv9?J~a0Lv>CcAAq<iIB3{DGDa8
zAp3uqa+23`+c>km7FH1T<`!;mSdYa=Ga2cV{Sz~am237J)5)nB-dStn>)SAG#@BDK
z!46iRUE91h5p4&bt7d6<c0V*^^7@~^@}H!`SiYbNlerO0Ca@!yV$jCdr9iZRlHHL)
zw#*_VXtuayM#!*Mw!*}@73RvA4~?))#-MK!OCib72?(T5B&+>eM)g~2u_Bcz1O(`?
zB1YyuDe4jjjICg!V{Wv8*R?iSxa~hCO!Gz@P5_Nr<U?kny~X07vWTTni%<+%&TnaH
z-9)rq*V2jwqoZ*vu%@Qw!G^h&9o`^A4=M)(ih<H#he@o6kxX(`JzNl%WhWh}@Shf9
z<G0?-ykss!c~+9Kw%rQqwqjIl03X5hw8`9jaU3-*I6jx;qgDnk<>6M`tgOklQ8^X0
z3?63WeL?hOtr&=`$$+)2#et=B1xS%fC9weIk-3w_*$j*H7CQax*ot{n2A>(3Pneej
z-U*lqbGe%#22;^8_eC$Znh9U^DSkZpOG4mg1WsTmAl#NBVnU#ENZ>h`=mLz_(c26(
z<hG}XWQ;}g<Ts|NMVbrj>XFl&B6nXvogi34BaUNFA{OA3SU@B=#mx*0K{2rTZXm-x
z%ux+Q5k!larf?eGjtLWUBH}h|B?Bbtqa=3lgimXZ7Pa5hABdbFU`C1)r?#xM5X$`!
z0-cOra6W~dKc%(lR<VxSXs%CDuWdoK4d|z4I&uO|!Id+qeuDFZCf07OZNQX_(jbAs
zemb{VKHA?>$7q}%Wx@I;&5r>L54DgEABUS$G`5DzaXz<s6OHPMmW><H#}~#B?8L>{
zc@NmlZver9E2D0aRUK~^#02?JL!zL@bWe+IT5Avh$ho-zf~kyB*~FG3AC=~cBCNms
zor&Wx7_J~soW=ru&=7`okC>Ke6_^AK!D}g+Tx^0ZFjy-7=SJTA7(_N!Eh|_g#ZV;K
z4?|}_M=8bH2_hz8q_Q**OU|}r2#5Sb2RJ6yNBm3}jhS_r&x#v1S}|F{<R4wkM>)#I
zDXAvTGzk9}o$SPMawH;dIbny|%umH9G-PDxEwp;RC<do%E*0#zZfk}HFK}XBzPgnE
zA6ODXnDyXNFa{7FF2Qh+T_N2C0OMY96B!rsKmm4)#j8vG2h!*WAz3!k6%Nq7$@YM-
z5e*FIhwv{5^b1~rwvdD_Hlf~XZgQrQ4|+Ow`U|GypfZ~K8A^#MGO-7TizbsYJr!Aq
z@)H$wDrC~PzC5=S$1CLX7yd(AqW{<hWGQxf7RAyEiz#)Oc_#=9<FDMzJxumNq<qeg
zh?Q<aU}73OfdXW#E-mH1g1V5c@CiZ8cyx1v9i>m8iHTttZb3%`DKXBNV6lhsz1a-b
zW+pTCHcHHuc*ud)UQj5*1{!K>YQoF_W`M;`8oxY)1WgbXo2%$b7qx)VT;FJ}wl`s9
z&}q499OdPQN`NGRlvL%b3-X!h4m)rYgz8EYorn~g%{V~PxJiI4NN1vi*5-{&VIXAM
zgpD>QXvF5kNfbNmR|Sh*fDkKSEL-RcrI%0$#wDz1*&@*B5ZD@7Fcs&f(NFrK#q?RY
zB!fPS($aBGb78VSbkZRwSeQ&nwtxQPDB<t;dli2}_<IU}JMp(2e~ss(gx}&XcN{kb
z;}4exVJ|`}4C3!C{4IDq;f?!Kd-DEhK6B;w^RK%#_4?9NFMT!e%(HK~J05xK8Sj#3
zia%X{aCPSFV_|zfp7!zD2UgC0V%N5B-5b-<^yX_f$3B)968iA{k4Bt0&|)i4tanYn
z=c&Jy9q3And++z-uMOR<scdoI_KD-B1FgUN(X8vw|L*PfMbk&(e--|h2Yzr>!%L2j
z9~gXj*~dR0Y<S>r@5irPa#zuTGtazsk7xL2gIe>0zuEHQPEDLM<l40@N#11F-+tNr
zXs2V@t6$|l_m^KkdE+ytX|6ZBzuf%TJC@Vst8Tbom;U?Yrs1^R-<to`{fDm(ee!Qn
zXAX?qx%T;k-`k!2>6DYh@xM~vSM>c~z1FfV^yI3#qv5vZDD}p~#OQOWFBf*H_g;O~
zk*jW8GJkH$N7o!$cdjX^^qr@F__G;PmzdtJd%{y;SDSY~wIyr6`j*WfJpNHp%8`Q|
z*Du-@-IdgOZ++;;D|SlHKcvv-J-gg8XZQDiJa)|HS$<G|pd$R?RgEJt<!4@>E!}%u
z_iJ-yT=-93zec=uP1mBR&-#w<Pq*#3MR)kv%YCy3cg;3Emb*&Tc-`ec@qPE56<dn0
z-d+5_yU#rPWJcY(BQHFyiOu{&PwxB69z9WJf4^?a%A*gif4J|d*FSAZv7USC%uT1a
zea}&odYPf6?vb|E$3}NXw;k?0m03SW6*6*9!sT^Wo*h51-TU0Ow|$MqT{E{1KlR1K
zUmm#D)cXD>ZMP0TSbNonf4br7qY(!O=8yE<b^LPQ$v?h+`<oxO9dAB;=gQmv+23+m
z>!TY-!+&}I;fG$hy-xl3)GrSx@Bh}cxka%v7EQTzZs+aFEC0FWt%UpHMsjX@>}dM4
z2ae2CANYCJimAE>4{e-h*pqj|9}c|w!isC|FrRxc@y@lU&c43%v6eqnUshGL?4H^A
zjYNAycSLhUZ$xWEXGCK}Uqo9(S42}pPee;ZM?^zJKSVo3H$*c;FGMRuCqyGeA4D5O
z7eo_84@3(@2SfwZ|J3)?@6_ki-_+OC&(z1%ztp$Xuhgg1pVXJskJN|Mf7Ex>Z`5bh
zU({FBPt-@$Kh!tWFVrX0AJiAr57Y;Q|K`n2W_B5kVA;;x4K3Alt{mR&4rn0hNHU!!
zAwR9(ppx9U1fB`*)gWvq?oX$KtJw+U3;orQ8(X(he);G)6|*J44+#Yv4e@QbVTe^&
zP1g(w+z+iHUH4JV<WIZ6(l9q~buHzQ&reesKiRr%-A>=1oB#6c-0!_UxZ$YW&a_NK
z`rXw2Ca8w&wf1V9-ZWR&H9=>#eS0kf5DP(g0&gv%IOZp0$Zea5cQg>2<+#E6gRWBw
zgn{{~+`x1UJUNd82eK(oKpJ*#m<7lfMg6o#A|$6NguCwx_3xR`m;NrkHf%Bkua!mr
za+y|``e+ok{zJsa;O^ZU1q)oI{wcU$+!rNG6;wI<;2wv2x}XyW;HH09Lry#_yAy;Q
z{c+iyD75FiDZ90kRb9%pofU+i#XF*e<9~`0?7xT-#vh3iLg2Q&6eYwQixTdI`w_VR
zj6eTBO8=8TMhQPf`j?RYXZS8hd>P!K4`EJ$KNWsvEBy^W!jqQmWIy3O6eTSEEv~fQ
ze(`@B>*{ctvdCaa6w}gE(r`2*U7wz=U!=cIOei<gc}0h4Xl;Quj7KM@CE`?BGj7gl
z#3ri$)Ixg7!X?QWDVDm0*IiIctGO{5r7liMOV%fET$rw3vO%A@#Ih(27rtNx;%sPi
zq|o?DX=&YvtP}Y1<Ke&gUJRY(zbfzlZT|nJt^Z5=Ut-{2(S{uNe`fz(3abBw{SO2G
z!@&PA@IMUv4+H<h!2it{xKN6UGnSSrbQgx=n)XY`{uFj`%KwG@4+H;SU?4<D5Xe$n
zp$HL-(2UX<X>w6mNC>%b{stlBiX&I30y)SgTM<Goe_nr>W&0B$@gdXajyHa;Rjm}1
zmI+!9Q3~60Fd`ns;kW9A>D4HLD)axFNJjy2xLQLu-ybE=(>$cYW&hyD!`Z=W)(giO
zPx=4j-vIbt#D)CyNB^!9PQo>bQ+8ncftR3<K;(V=t9^jZa+9BbwGVtx_J0q7mv2Bx
z+u3sgaybll?oo@|YmvrqAjsk#w)8!Nq?UbjlfPyEy8}_e2Ty&v{WFXEOAB7=`0jB_
z;<@ks+2Vea<vB!o`qhJY5$jQRa7PU1%o8lGnz-{r63P>*l7F;85Qe%3rH`OHF<U&_
ze^7(GcqB0tPgxH27VBMOk(<@M#cL?2xA;2kfk7`G&>N@c?c9HIomDz2?$qEZD#s>z
zn`({E?m8RpxYBht!l8AY4Ra(6O0n*v5+0t%D^i0}3|{$he<D31d!xDcN3vJPy?4uA
z4fnRmUKRH?$X+G)u47*2UVpQ91$=AJv_bbPyCa-QgC|w-gy^X_4A|a3hTk*&=ka^0
zbD&M@8dM#ipy$uw$Cr@n`xq~G`ZEAE?e0&`xX)TXD#ptoUvIwb^T7zG26?o5UdTM*
zc-0r0>-)@gWZZq&|Ma`YJvf{nH$~{ZF;0De4%pC}zF&OqI;iiS;rcRibJ%kCpwFj0
z5ZXE5P)R-K$Hxu6kMTIn#7lqCp2oNY<W7=m5$PT=_vB{_odep=CY*=Oig#*zOBJX=
zBjT}w=s4fy+5-dLZy~Dvtln|eCS{yjy9bY4^ycf1;f;h`b5C?8o@7;aAM3RpbB|_4
zZhpfz9gpA%&R3}rJ)VG3#`#X*(K%(KV~YDvX-CLe@4L45Rt0L#RCFKAYIM%-y*0$#
zQ;`|+J4O51dgmO^wXPwRcNd^bJCarJRFhxn{Q;rtZ2g@D?PpW8o%9aroiXia<F#E6
zz}Xj%Sm~#D>dyNhyzOVJw4Fru?Pu$>UEfAX?<OU%BDGP9HkJZ!vKPW}r@s9xUKL->
z(|G3g>8T_m()G2Gs}L?cNkyE`eZu=YR;JT&dHdNmN19heuC9-^YWk8X>0BiJ;;(MW
z7v%}Xqj6zqwJ#K)NO?fDSBbP~1JpA1DzwrQ>c+c4+5^B79GcD}j@sT$D$jal*ISNt
zcvIZvRk=^F$JPcVr6V-YH<oz3>&P8*@aBllt%>s>kMwK2n1-Y!cz8tTdk=3=D)GY6
zFa^TN+Kgl>>GufnZbK7+1te9m*W(61M5zYfm`53xc*1?K>*YJ9qsLjX<y1m++%n&X
ztjITg`_Nf8D6;I%JSt(XpT4d^I?z|4FOh;n6=Uupb5E!Nv=;-qk)|Npcba$2_*bB|
z)4mWq2HLFf-UUqI87lS;9X-6V%01MR6Pu;hc4ET88}40bD;|#TEC9~_AKu;tKFZ>1
z{GZJ|A+P}g1PHKTvZ8Vak?4YfAR-qH1OWv~5SR^u5XmlqSH+E+Xf`1!wOW1O-T-^C
z7u#rC2=SJHauHF$R#B_QOXDt!8ZV6ymHfYFp4||v{rCO-KL5`@%0BbVGnX@G&YU@O
z&Y79gD_k~v`EwG(U3CAD?|bqxnwq&kx*$DS$k4uLZBp=lDyXSnw~V{_Ug|Kng1Wd<
z^ll1pCEF|hKsH@HTW+06WBdhPD0}Z~N=!Z`*WyJ+t^eJanjgqG)gN&&Oh#xud0gG?
z<#PF6>6NZ-(fsy``-u5>rBvl*_}`7S3i>#7sg%*fUjAEhn0sEi4=F7zCinq2Fs-ik
z3AmMc83*&y#a;AZUfj{+Trl-d5`T+LMEHt8_fbw<mS=e2GcKFoBuM32-Yv&hS10Bi
zu-Dv2Yi7v3c5?mO%)n>izjFtD=G^dc`<^?Js@G-&*HLf0)C$_bQ}{|9n4K0Xzpz4R
zJ<7;Tg<PVV^StL`Q)O(l%9o*=)zvEJz+HVVsPQc>`uXh*;S&e)2HhLFih`qP`*#TI
z#MWsr5jsl?BAukG3*x?`n;HyE(m_W_`|nEC)zS~q4*evw^FNkL22=DW;myHo&VpEJ
z-}WMK#jJF@eNRbTZC;F1S5J|K>*{SW3F^}hf5_p~fgU>N<&p$i90<>`5^a@~o8t7g
zk7~I`>M&Vq{+#9@gMCkj-gdI~E%)cYs6A<wRL)gApK_shURvPf%`zlHPo3e;(7Zuq
z+CMwXw%CjkX2PocOu2)ryoIKe&hWJ}KK>-ZOMLANkU^l@*B&Fcd3m-#WtlNHp|!dB
zasyW^#Am+8+bg~x&sSfxe;o=F@U{1l9QJbIPNfcCJ3~;ei}$s6<3?Q*U=%eG2z_MU
z>{g||_B4CNo5UQ*OXKp+JY<2;L0%hfK2DDZ3ep4u)yi*DD;KBnUBYp#9i}7n!CXEb
z%uV~Tq&}F-*Mqqvl%%=ok~Ej3;knwsInCys0fZTHbC#zkzp<VSJ<~g`XyIBW)cB&c
zJc2{%uEpWO!P+m)s9GiTz3<z1@Iet-VJA?ebqHoMI(+=5%e8KK5PUclg!{tXcms3X
zhX&`iE{IyPe<~h>_;jsbg@+UFF<v$S;gKYfUVL<Mf$NOafu;}cuiSU+l;)CBuAzRg
zY0?Xx1nqB)X}Q1hnBMOe$;d5|k=|eDXxY)?(EIg5U7-D^xj%b9SMn9u9gUB2^}3c@
zq)PNNK6<0}fKxwGd2U;?^O1YbZ3{XdDL?1db{m)Bxnb8a&PTTKPAHCKwdb_CUPuRv
z5mU&yYwNjf$MjxPPLuNy-?<NpEB7IqBvFH}rTBx}Ynz;veeXKwtQ>sjIX$*f`=3kF
zOZ4~jezL(u^w<-6vgG!1bz-x5+uX(&eQ2K!&?3Faz#nMR^||zaZKJb#uunOwr`*HO
z!~y*D%~Wn(Gc6|P%*I$9IH||JnR9?Xe9|P}PZcMe?m$ZIe&-{Z>QA=Hlcw_J=Sx1I
z1Fz`73$*agthCNrcJ@=wsvbW=ifrSaxG!JPLr>~2Pw1h?xmtDX8J&DmCm+`hrjC8i
zNBXJSea=crE-jP7qtNcmSK7Y&xkxuiGo-D^!n9;Z|2Dog>PrqecM${;Imfp41E=n)
zpQL1h1gE?5f8?pBg+H)xMpts9UbJvs-FF@0be+ne#6$X$lbXxzDCWyg1<_^gi!hAZ
zf7D3U{iCY;K2Qjwv3(3E1vGYM+$eYT4}`~nqBn@hO*L6R2OWF~#8_VrN6KS9)XCCe
zN2c;~T#D3zeWUcwV4=?0=e^cy7mcdwyR6N*<9luNN$P|2m@0c$#Y!`Ym}9d!cPzCU
zoeK$Ht()FWqqs($e2B*h3$&VPT%Osan?iB5O&X!t>8?&PJuFRc3dhy%kHoSD*q0!^
z7m0jNlJ@#`nF47PVLNsxh<`NLaqiloI$_p3(*)l94tQ<fv^K_nYF)L^E)_l7ay#Qn
zvxtB>ByX}yaFMJn;w5y2mbJvra~6?;l9#wsFwV37ZdeId+m>$wMwS#CLk~$H!84NI
zL{D#i<2{#a))i2m4*ry(B&5sQLYk%npXp$rGcLU|PA;mp(xr9At>}zP?Tnk-8OJD$
zlqYw}T6wuoFcK%1v`bv%9oh}0cNlJws-H9?dcSkWo#)(@)3ag?&ddmwLGDJ*j*amw
zaqif9j!Qln6OB6fJ?3u4*-qF+fP1)|dS@++gCN~!w=Kv@kdODAt8I4fEI(Hp<a^~g
zErN9+q~x)~nY2Lka|q2otdYb!?xOI`anciR?tzbmcccpCRW`ZON_*-0$64p=SAzP>
zV>H1g{md+*cvc+tB<btimFY?0&xNRjastQPRR!SVR1EW3={%w9;44(;_T7;bV}EcT
z-MOIGaCc=IW1%2b+u;a-d^li1%Dtbt1Nn(W=YhJ$0RXEJZfo}m-k>-J_@2fvpAL1H
zVX-$CAl$yq>1uPbVSZCpIMD<=ic2rMxhwMrx&1S<05~+aUEdgCaTbuT3fBwnM6%U^
zzgab<>6vbX1#r0gj&vP314;@;RrP3G5gC20-aeg_yko94x{f!8`{@~)<u}58ZKL+L
z0BKc%VK=kfhyw0|oaNQ3>+dWCR&LA;k956L+Pib0RQ2#eu%}|eeRYG4yPJhdZlZO<
z+?H{zdDjXN#|JofTn_^~<MR2AlU6`X<a)|YF^|W%xe`0peIO4mU0Kk-=~N8k9(ew7
zwN5@oOop4Quice-eRPA$wdx5ru$*yoH+HPMa(2329Icj)l&MU*@>NoAA$9QkCTT81
zq|x_;&9%IAytFyE0!q|@<8+L$ti#&=$KxOZL=rkC80LjmXSf3e=}%Bi!5~wKnLqE1
z^bN>&`!}b@ZtCf-o|Z-L+S~!25PBy+p-c8mONRvF<ci^we6aGw{BQDbqy?E?BU5zp
ztm>iKgqDXM5?0&5v0>_C=Pu&*3$fNCo2$_Aj>vqT3L@NQtq$SN$x6{?xi0-A6F?iR
zag4hXF7#FMrbK-miNo&$?lU%eD@6xCLZZ=A!yiRP6tl6AKR24!ulXw@C^)A~DY;nK
ziiPx<{dI66u>ezm=;KY(MYSgB>%v49hwr3{$c&yZc*%>=<{2xGj*@iw$&eq$S4T;v
zF8Yzl{bR|^9hoLemX(ElT2>Lm<XMyFw2DZTjB)alq>GN5+{+@l&A7|g^L0_`-vs<?
ztoT%bHFLBz8oSl*d%}h=!gx%M1U*VbCR?=2Bf`ePsPy186NYzAoz2V_P4CHUb(pCi
z=7d=OurkjnKj|`+R5O79^fVj75>pA+#HL5*l0&&Iw<A9IU+4(KPEQCOM#KeX=ZBe{
zy#wuI8QDK7)b_`Y=~qs*H93&fNJioanfTjtJ(uc_U?)ue>5RE!hG!}X<QywW(D6`-
zO+G)uSNf{%L`&WWxeWYcALN=`gNbKVW6kD``b!ArB&|XaJE?O{S|!+2v;>(w&6o==
z2B)K_^d~^~$2YW11gYpZm*6|l1Vb`k_v`o%AzuAtP=19TKi9THUD9)~T8D@$6^-_v
zHyWm7l@;V3Qwm}noz%f&5{A;^KHnbxSTcXG>d_d_WWaec?PAI`cRTCg^O9_~r<;8B
zo??6o&zdPhR{iDRLI>YR8PLg`&G3zMvtcB`UzsWoN=-v6PqwVmO<$$z+3?ihwg>=;
zaL$%O`Ydn|-WKh%PR8v&oyk-&M`k%h$T5UnSvv5%Zu$rwGd-&>$URy6JY3=`ci_&f
zbZe6Gcl5X4n?#YvAeQ-qg;_-e9wWtEDM=YFHTg&g-~L3b<J+;lNLvg~_%vFKFnnFz
zLw+_fXt<3$GI<@)+)iG5AUb&ohy!Y$*YyKH7LszTTl>+Wb$Ew!A906wn0)eBpIDw!
z(Cj$#n`C}dL*<J0F?mu9ljfd-CX{A41_SoXRmjw9+B>eMBc3t8U$$slyUsaeT0RiA
zQevkH1Ty$>49q*6E;XXo5Mc6RgfC3b%8<(P;%c8a<))c8K{s`paH`-}R1GH10GO99
zi<bdXNQRphr4O>-`=HG<E=k$Tt8BU+A4JpQNU^3xc>_%1srGw|Y;GT#M*9Q%?Bz>I
z{nj%b9a7q0lVBEFHc%e-ycjQ#)AJns6by|tWSGoqMyz_~5*U&z#+#v^8AZs->q&9z
zvQ=3Vpf4qr*W8h%_hP<)WL0ZN$F?_WPqKV}BLde1)5I~RXs|FLQg*9;#wBG7i+E-{
zA*-a}+T3(|VM$a`Fv+T05IQHTuXm2YI{3OXYm!uOhxwgm;V#!yIbDzKVDut5OizJA
z4`|z$dK#kZW!}?dW+Z%hQd)jpcuE9PQ$*gR2&9Pd-<|)W3-eDUJySqtWMD0WtC#`0
z?G-?MQ<r^ZR)<q`;C;ffHrzB$S5GW%<9ona4707?`gQGV?rMFe_8r}Ey!Or7S9CQW
zbbv&iqt)WH9q)E7+N%5ZM)F~NMdk=raPaPE)O=7v7Zz<3MpASQ=+(hbP@5P6LyF`+
z^tLnB%st9oC9`S|X4gg?{NZPCo2lVbx?a@hp?g0&FW$-6NQX7Nq=OHA!6o&~xoANJ
zksXMA2jGMIb#N{OATrGNIw6k=h{AndfyMrH1-!~L-x?%3m}xS+tpoqi%)i`jt!>X;
zXlQx%4!dP&3AA>+7C2yxFni_3<0oIgLq$z6r^D9@WRb=F!B2n!j+i5ySP=aW-Sj>s
z|6SHvy1{-YYQ*&7j@KFn-bo|xDS-L}?Sa$Mj^N(Utu{pDMKJ6?&Com;mvxoR&T1WA
zAuLJcjj@a(VI2|C0q~*KbXe74WK7qGxVZ+uLdFB(X%rJhh5vMhED-~*nL>p=+_m)9
zlj`B_N`LvLP;5q=D0utExZ>>P?J=l!%lA=p&Gi0XQ(;^d1YQkDHPd?wBrH)RA_AHO
z=L|^F_J-zuC5bY1gkBfcSM3=9oJiA6p+0)5E_=5l5wfto4G^@zK%p^zq>BDc)Nftl
zYb{Py9X9~3&`MDg1cE@q1@IFsVwS9k;xvk5AMh|d4PQzGQ=tL_#q|D643Q>y`kyh4
z`oc5<QB+qCm!IkV5x4}+IuPU)D!T;QI1_2B&ei`7Z-&j2XaRg15yN0!655VMa{61o
z);X>A@^8*DcTMjPKK4jwS-6|tAM8;<njnN4JXvu2YWl$b$5vhTv2=uh0r$5ZAds5X
z1sNI}fgtIP??4iKOQp5agurw(SyF=VdBC#&kx2$@P~aKsGr;q17}lMGNL4dE1_mt|
z0R>u%l7%S+bVL(R3O&KH6iTp=W_o_OL|jH8G)bnEYW1kkUJ?6UEnm=I>aU*D|7&n-
zp*4Yb3q-^mQ$}0_Er!r*CP1yn4Fb|4RDwO_0t8s`P>IZK)ifP4X(klyeTlT1YPF6R
zt9hmZ!MiAEpq!4ob$1`MWAdhk_J4EXz+#3y#8}FR^4id<ue-iRSubl0Ru_g_1#diU
zSOEp5XQ5XUHO=1l?uPK;3`?wXWEm?G+n;VAdU2F-!CW2NUf_4wwiA*qw9C>h4A)P3
z7_qR;ZWyJ6Z8quPQcSlxFUmGqfbd><sD-uMgfL(BI%ReodqTP?D@F$g!1UaVI;V=!
z4J(iFP2jSWCjRG!14373F+xPj3yMh4!PkVv*>}I`d-(=hx-@H;ly|8uhH3STDUS&R
zJ<LQVX?L4^v6t5%9AU8<*11gH@gopjGY`GCt+bc#Y%{_FGi35H=dK^A&~l`^Bf9K;
zpMV~CtMUa_zIQ(w>lx;2ALLDV)Ml@k9IKzr<!kLh5iR{6LQ!9#C;buX@hd%diQ;{t
zy?mD{wUfhM{ut4hdOV@8v0`3fFV{RK*~=SL=mSCp_VQX=X-{AKHTLosNI1h@{+bHC
zz?TK~iWhAE()!mwrdcc>FRIWLAGz%hPLH%7d<H%XU1`&|=IXJBWl@gqy4Ryv#<s`k
zTj>JgL^u=L5AHn$3U3N+ijnWdo!><X6Mh?6y{F``1e*pCZ^DP8MTj{d{A6bmv3_b}
zPYnMmnk0#8!Ve3Y`cksPg2q8yIoXz={0^M6bx!6xeaiXB0JN}l$IKXKphqTQVOV5C
zXiKWySLbu?x*ce`5)xE!96B={FNEX^QT$c<)-<cKG^Vz`9n`jh+A6pID-s{*npt;J
zVJr)d&<b1UBC>jLKgRR>ss680y%$SS*C0-c4}|j(b|wWMVhWYm(KZo;o}Ba!K&+LB
z!8W)+jD9ksnV6f(4{sR}>SmJ<@yM|?vpRfd7j5bf37?RKZ@v*x=7=z`Sl=9aj}fsO
z6;@5=QQuoQzQlMiW@mc3``Rz}_Rvo*CN7+ypDg65jlzlrU-iU(Le8`H`p%}>f5i0q
zGKTvHoAl7L`pW~-MV@pt!+8meS~uyY<;yxUT*yc1Tu-8Wj0;cKfq(k{5o>?2k@w#2
zzyikWmj~!LQs_W?ISXQUl|=eat?;$?FYShMD%TTV@evX=VpNut5<?Ynb<N>81RYvP
zH~OC&5#cM#LZ?0?O>Fqhu91v)qZ~Sbj5N7JZMu2#HSc<JeDC)3peJmmavcndQpkT~
zMtG{Of7iskP7DSC|Di!33)$_kmExN4kjYmxd%OAGoi2uwBMZXzXc@nj6v>~He7}Gb
z`tPqS@vagTjcDH5%ir`|X}+=&d*uwu=Hb9vKJj4@BQ0_S2Re9zEG_F1Y>@Rx*r<o@
z*E7QVqO21^2Z_sCrusiPgZNZrF=TupU_rU)?sav2Ix2demM-CdE)&BYEbSNj(#&iS
zXkxJ1ckk25d^;?zJG$&8^+OTBs`FAwlFU>pt8;iy*@qY8g&~@Wm(G)Eov_Gh;+m1F
zlV8)_O<|}(5na1mCCZvnvC0vVO!A6e8!0w$mh2vx!&xBD<kyomhu;NR`6k(d3&&$G
z9h?eFk?}au79;Fw^nKfo$qJR}8^%A$ELNe96rntMxl}hqxV1GkP(lT&Em`_aB+U?H
zo*@h(8d0<Qizop>D`F8FZcu99jrOqN30%@#?`#?X51^-N_aQ<07XOoR*$DkKJf0i_
z!-G&{W(f^Cbs^MDN7W&Vn+}=pu43Vdz8oFI1%Q$0v@9Rcn-5Wpzy>uiM#;S56k}Y&
z;~7>B!DlGRss|{8uYbTBW5BNWuD_4|qq7hL-}&sT?VoRN|C$trL?Aw6Rl@pGJ#j)?
z=j>$6Lo!giMQlW5$225eRI@PtG<Yd=6?&5x0fEmxMr%TE27mkyQ=>OY2k(M9!+-50
z$@+n2%ow{w{Sp(F6j3$I?It{n_)wA2QBp~<@Tr?&c2?HwO%f~XGzmi>_T3Ok>*FbH
zz;%GsGsY0bP#k7`uWUxM8;P=;>{pqZV<pVwO|MvakydK*A_-d<SCtH!XvSA%0Z~6w
zGRl}ee6F*XtNM;<o3zhf-mDDwnCILzhFKroNJ~=XexuWWANjvIQF=5s+Kl^5aaJ?#
zFyS!<rVWIRT_n*nR@Yl_E-~N7o9{QscYvlSWFKF?uwK*FiF|->jEZJ*noJW+rU4R$
z+gz9<PGSSCP-jLo)2E{4svm1I{lkQBlkm-^$*+C`twa}340o}3vI<@JK8V_<pEflA
zymQAWkb&VO_|0Nwhkl)Ogbfq@N>$&{eD=O;mj2FNBSDk^aD8X8>c06{DxEuLsY&}b
z4#w&4Jp(#ZFp^o*QVaXWez3=*gKt=0kqqhX$U-sn)1`<%Bch9T(F6ql2k|fT;_6Q5
z{ill!rBoNe1gm~J0UpS+;&PtC$o4X6%OoaiOR)r~7J#T|+|t`!HA9x|#hrES{f98o
znlX|Q!P2)CD-hya(|fG0?0eRyu;O@LCmSAzC0i&UPB>D0lKjRP;VIUl!KU}qblDN=
z&4sBg&B}-_YEcWq$;5{%;Q}dqX`HOPmS$ONqTxV{nyUs;pWn<$=F<q16}r0TJ`<Xd
zVVXs8lMss%Nw_qQRR@K*%=cVA=j*Z17kb0#CTgaYkR)@6H5|9PuL&(M-xmWH@@&n5
zIBMtnQWIN9tQ5Z>j&H=SGO<P6<Mgl|`w>y=vexn069=n5LSP=Ub?e81YP@*lePrZ?
z<zdadQIQu=S~G9-$NUzgp0);h!L-wrO%joJI_Z%25{6tHY_UF`hUj2C^c_BKY<}((
zu-$f2_eTb3PDN%hc95<;*@d)?UI125y;+FkJ|Pb2xEOh{DCEF}6vCqAZ3aPvLh^({
z&aaIgdLK2e5XrMbB%+a}-)gQ!tBc7Bd!+Q*qBLpMwPrFxbZ(WXq>tq*ihh}YTH<wb
zs{nzGw2k-)Np6<EF&|@{^Pfxgg3_96Q)MbksGBC4Qz@@HJ<A|R)_la}r=Nb*VXru*
zeD9{&%YO!W+xN^)L2mbKz|grCLOoh}h+GH<;QLUdCl*Ctq$d_ll47O17tPe4$OAF$
zkQK@mdNoGS2O9NEp!Vr_Ki%+g-F5*rAp+2&X`b<Q*uuKR#Cb-W#sKVT91<te!Z57Q
z>cgqnFhk?uN!IH)an}1w^es!?_UdPTE8Pw8bU{0wD^+6gEpOa1g?YLjzhWq&^h0_n
zaQ+js6@B-Z#G<C^u7fW#yM~)-N*7CPS7kqf;cL?5;7F^a4^~y~Lp)mq|2gzQVdJTI
zajDTcpLs{>iVm-_l!iCB+C8gX=ez^-JYBTa2-snnkrA*F-hc}iqIrga<?Et{%=aVm
z-H(}C!0Taw2a|4?Bm!XlZqt_eGRKPlja>&b06Vl1EVaugiw{PfUJ7Wi@M#2q!S2ch
zS!T4#JoHysh7MjHX}l}kTiO<U%VKq2M&y~6LXj(tcc+1*O(u+r#?5JZvQ&g{ZotO)
zV<rf=GBq6+^Uk(Hac<ChatPavXa3z|^yJUrB%UdEXX?o!C2q}ue6|}4j##|??Y2!9
zlY4T9q{;|WLlE%rahUwMJQ43nwcmZv_FLo^jHiSYoOEi;s<04Zq$C#5#<F9kqWw%Z
zscm}l7gXm>p<~{`XciM@biVfuAqQ5sN=bkOYUwMNU{;I1gl;W>Yy@|dF6)eXfebyV
zhzy`I4P*46IJdaI8I$&Y5f)=m?57E)Ku4(l4YJRt0F<rUK}Vw}Swzy9-}%E1%A7-)
z4T2MCPOyDG0qQ1<0Wbc1VWJ0#^dy-UC*aqP-{(PHU)fv0`IQg~q6V=!2fdfcAPBx4
z5%(~L4>$C3cPCMVhP=-T=AY2`(M~FfPUvN)r^B@kvHT4VJ;zKeahCo|SHr7BP_Av%
z&syrycSN0cRaBjatS;)(tBi~zeA;tW0ug;pWW1r0rshPRC(vt9y2X;FU)95eN03b1
zyCd|})ZE)d3(J|FH6308LxfxEy?APXF9d<Yw?zs9otDDXQjAt5xNO4Vvwthfrufqa
zL*+1LQ(7i#fD3a-FI;tok8_OC35~4ijZvy<o6#L2cM9(`s{{cV-<@xy0#h7o3ID3B
z^vyh2Sga9|Eu-@z7${qnC9^Gh;<D)y@-dHB|2|9ROIhTxP%U3h1vNAHp=<|JmmNMY
z0MJsS?wk>4DUU}QI5KrG&YEOAEHxY!Cy>&DGvB2{H|k(7%mLwp`Zw4%SY&Is$+L!=
z+|>*^Zq_%2uQvrT!3zF$PH?MC{_C>hwjH-dfLrIR%SyVd&?EyQ9DKScbeS&>;}#Vs
zMp*x$xNwdxdc%}INXlOfawF6tN^~=#C<l$MlS&{4s6|YBjUkt`n3@f4XHr8S!gIvr
z$*ho$S=<D06g!SX7fELTFln<Sm}-KcH!uTCm3gvY4oOU9)Wf^YlZA@<pXSvO`XBVO
zT|lCv(EAG0;`^K|Xs*)chHx%5MH+SO7*q^kRM{&YlQO4gf%EMkm%(c<{{gzCbc6Mu
z8LXdp$B^LpHq*p)R{>znjWHk5&_g<KilO=$>_(`mdO^Q9Ve@Dq#KmBt_J>np5JjIF
z6utpH%k*^t#GOc7Y9SE^xING7;KxS4aI^z%6&!+{C^QKc5Y%PQneiJDf?*nHGN_gg
zh<ahk*e(ly{ZMyIja37EU&VTG01L<X-v0(_ku}X{Ux8T3ATJGoXnc`y>*yjkV`+jV
zRu{+Vy~BjBoY$tl_y!0Osn#ZZF7C0nN0IK{+=%qV>XE(zt#H#`W;Xd9>A|cB)kb8>
zim;?*p;heNd4Ah*lix_z5y~U;ov=;YS)<8=4P*#6UM{?~pDudzRT&K1-y-TJ{jBkG
zS%kLDK-qxaLh1%O9lVH&Bc+RM2UZPTcPV`sYddLNaF5J*Hw(k14je|FrH=6bAUd)B
zig6`)`nVE3GsHynzLN2Fj?bYZD5YumBxyKh7swjmZyHlzb+>4-g;MM?Df22_^f$?L
z4eJjwxxOotFuYNcV~ONQ)<q%7(HnjCzqajK9BH;4ld^smX<LM?)p(4gnVO()jkZpN
zi&tflcN68>D;xr@X;-YLkF;jsYl4ES|4s@~2L9Ig>tXh;*l|u)`TplRd+Y)VL2?iZ
zDS|?V2ofU{f^_xUlN7aAdd83eP6<Hp3yJJP2In<&%TOsC5ER}aC_H1hcX!SP&oiN(
z;v53K-kH^>Q|@Gr5h1z1w7()Mw+|4a9GGhLc*VEqX+c(ZZ9A@S9b%@HLkN^~w_xL8
zoOV0B<1Ji1J;I`sC@xdu^sU_^ohkZ`?UGNh=(!?XNZs88lMAx?%Vgfo03+3glTFZ+
zwMYk-L@V?BPxvxXW~SoTHxBQ3&mi#^X7+;vVcQf(EcYd7tIV1O(Wofbbj+`0{45R!
z>4;98b?JzCW-5PG*Bkel;GJ|M*n%|&-qB4RNI@UkS&Qk0FF>R00=t;{_!|5<38f`=
z-Ei_G-B)ji-La)e2cJMu9e(N2Ts{Tspfg?XpesYKgQ<_a*}CDMlvH{0V}uyGw+J!#
z;8sUx`CE28n(IA?j4-OhO35N47=D!*?)|ilnNcWTeUoAtZQ?!Se_sGZEDc^g2RH!f
z_3(Nf903%arEVT&^i5&OMgr{e7R($91;C>PL&10hst-`ZqnXokb<SINc0<~zfNvt`
z50rgnBf$-O$}GrEyDQ@;_h|TG5#%gyMG#v6`!?1ET`!ty>_kGjk??<u9jHM_+sJe4
z<x}v!*#>U!Q2nIjFhq|endFe%1u~+=F$p)Jf0&BSvsvWMgZL-XU#ZxmBhu^+)%Iwd
zXO4b4m$GV~uj_E`%Efg|*9%{j-H)#{>tu%Iq0}y3e{?D~MG*_dfvNWSC$bTGa}74_
z;ZZv1jL5UU2@e(3Z!4lQlaS=Gz&!7+`O9xEz(!PTv_M5-tVU<SZ<?NK48gcY8fud%
z3x9HPmDKDBvR9l2)|YhI*_O>VCgUcMl3Fu^7StuQq=37Y)XHNm$Xut;yhuP|pcEFs
zfgs9(mU!%W-P~1iSuJICF)g^jR9|cK*uHc#L{S3;*!=mK4*t=?uf3v7Sde}umpa^4
zslCNBzH-(yEj}oTvU0ZX?(J*8deagK%|^`#6|1(U81F2J$V)I@guC<NBhR?V(|9EE
z9S23|0@KM&W>EHgjb6nQ(Ha|~XplX~--)@X?il?@sxSuA0+1$yzSGrw3RGj?ZRx%d
zOi^=*PivB~3V1JJIHB)>;|&FkbFzl&hD4i<9A+T@L0CJ3Vp3=?ItHSc^?lochBf#B
z{bVkoT4B`IhX;6dPeP!!SI{Q(!{yj8O_~GF9aE5fL@)w>S^AatjBRoXJ3dH90WM0e
zyiW>1L*lo|6b49xrA^h5UOA)JcBJt2=a&?M4f}4oop#2FTkjCvz?HVbIOMIfA+v5b
z4G}>#_<?Xrh6*Mh%9X+giM&1ZYWuxm8C83RQ!3B<9Og;M5L?ZC!=i7Z_rEVI`j(-e
z9w%XD1$;Ka=3w`vIa!!S{R01u@{@pyauX((YnXJ971Idz%-Oebr9`z8wKPj?SiOnL
zmnejMQe{L^O{Rclu##x2fO*ITeblvS$&scdSq<8h={^To+W&ltL=0k6;8J)@qk_+V
z4lm9nU_2$j3*Bk<nS)MtG&CnPo=QOP7=yNvAzrQi6lY4XdF<wib2^<}vveSuBmzQH
zgY?=qI;HwYf+(KfmuDpgibG>^Uf7smLTORsC{0Ahrlao_5)uh-=pRLOwE(KCkCk<7
zune0C-DEG{`AzuRE~E(pQUw9SNN$MK&gOi|li4O&gju?_pCLt;(TE|7TjUhl#6sQJ
z;f=>QJUC*^It@!etGneWnGL73wtA$|ELIONO-jej-kO&w-DBQ`Ah!!a0!Q4_v_i>Z
z6u?+Ih;Iqx2bVb`F|4zVx-C(tB#Cy497ne4eGP4!m3#^g>`m__ODsg1ulEW^Ga}79
z?Z9<2pc_frs6{RWyz#~V0QhSWwEX`A`14V~o&O4W=e{pIvXTwh=y+u7f*>1nSv9NF
z;P42z_(1U9$;|Nff*kj|E0<>3%*wzZa$$<4hLT0XI=qPA6Ed2P9t9N6^$H4^t$rf3
zv;-7Jwt00~fjE!~yDTQsaMWiTzQs@=rA{TiBRY47(q96u^#-n=iu47oThbw%B1L-4
z+TMU*Btp^NNkSQ88$bW;`PG;Zt0+K{P=M513Xqde#6qX(u>e0OgC>X;;R#%aDtj{i
zADk#;#zL6)1sS47e((xn%v-$0OK~VzkO7~v?*Spktq39aHCBp5r$2!Q4;d4T@El+^
ze%2vCm3?AdqFA-cniyVeW3GF_1Yu;Uk}35{eA@w5v%x*h`&YMrD;I)YN)mK2QuLV4
z8X3;i_^K5>0iSlM5v_ffHM4wMnvo<OYD^rWmqL@){Eh$2?cTw({0GljxYC~p8vTa^
z8$W0yE_@N8dAXB&#__?EBwnK_ebB-+1=)Xd$Y#{5vE-^RJSD8-?c*{a4#;}kTJ6IF
zs+6n4JH}8$w-bD3D#Nn+dn1$nP^t~yaExe6DjunWz0r<@pT?Lp*fo-rViC%h6?V0m
zm^Z&nT1I5}CAyYCCv|iYnMIL?diN+@e3z6z(?A8cthq7qv<MYLG31<`^g=|ji;T$n
zWrHLFHq^5(8rUu~u>Hx@hk6!E*cPl*=&8?(lA;|zCaL$4G<3JM8H37$S4xAT9`I`#
z<)ls>fAusD)p#;jeq}B2IpAa>98vWbl3YYc<J)fEb3m#H?T{61Bf3FLwA(!JQJa@7
z960Oy&lvrfzxgW~UC+#eO0~<tqR>|jkF>@})x)xAVXUBDH>>1tjI4dNRjj@8J;Z^9
zqVT@K_f@1^RPe!kn5wbK+?a5>az96BuqEKpH19fh)%6L0ehnL7SUVHCOMaFK#at67
zad6?9YvLsY_dTSuKNdXt&t!S0Vs%Tj>>bAb7HI#NC%W1<<SBzkY!(E&S#|}MNU|vV
zl_dafxi_4{jNX~whU<hR#?E5$13)x?oRuFqZcH?Q3!zvHhz&~@;0nVPbb;swxys0=
z5X+y!7hy1Uf;2bU6cHYLvJX;P)=Ng;S^=4AWihswnN#LMrbzwY`pdJ@b$pQ-h5j@l
zq?c+^!lMYVDF7a2bXiHt)6d8PoT8uuD7$C|9N_Z};hxcGE6)A-Z3NKkpdp)(C1V&c
zYVu=F6N~Or2iIAW;ucO{UYio0qUS=)*#QgvNgkiXVp^cz!^5IAC+TeTjN<)cC1d~~
z>%z2+8mkMbN7o7d)9gB9>X4N}v7iepf>8w+76<=loKzixk5|u5L6A_T6F@+dP`s^G
z_eAIdTl~<|sNy?1K!Ge$a*i=p4F=67fT`}vby@U&tGLJ5e}624c`8HZ^PZ7;y_dUk
zRaS3SIuyZh0$8KbWpqHgjT5k?ToA$Lr|DTeL@-E}u4Jx=mW*@EsWkbDPV@KYsOOUm
z?MH)40{@|0`OqB*XPY^vEJ6}MYQ|HYP=od#h^eE%&pxIvjGY;)(gsT!^z^7>EPnQ}
zg&<a~?1*5g77-QS*L&ss3Dk>*3Am;60!@(|6^FftW%T%;Gb%k~j|=G*oy&fARW7_B
z82jiq_Hq_H=M^%-tKp*ur9jbmb*kn%z3M}Up~>pCrdbt{W>s30jzI%Tx7v0=$1*`b
zet?ceQ`1|dfWA9u@eFJwaanaT64J9Q6wq%$XwecSJU#1VBH){T#;EchWt7<WtV4e%
zsRl#@jyJZULD+*3A&PS&huPraVn&YaSJZnGggh7;cs+l<!4wHAr-)LKbt)P+KP2LW
zzs1IO3Q47>oer0a>L(=%KzP)noG!2doSYSM6cl|f)eFueAXXgqB!_P7(9g))(a^vJ
z8xf*o0F?~rv+vm~&0Z`J=Y97+Q0C=>da@iqwbkxEI3tBZ%{nqPDpu-`h$~FEvUQYs
za*Vw^KBlz0E6vl(<*=9kPK9R0xN<peAtp36240usiuK%5n!?=JkKOxo!bz?;&-YyM
zo>EK296Eq4Di_dkS=z<Aj^FL(_Xp<p0rUHy`DLGK@XtaZ!PEGDh8}^NBCV~$@(_B+
z3irgk6soquC!0tqTPE2!W)R2W2_2#J*2kTa@D^5J2D~YyJpgYO7zV;CLigBQoZWDz
zP39wigwR-c$hg_ZT<mXd#O0)(nF%k|+|Uq~Tg;V~=op}LLMdHyR#h9VU*M<^Xk-u?
zmdu!k4w;VXdRX&A)Uv!APdA8D2;$@D7Ktl~!!az6YV3QA1~fSS3{lX~-Hc`?tspI!
z8x<b9N%Fw+b#-PW%Y@V?k{UAj?6j-SGu+VOXh{eAWH)M~ksmfnLxLqBIec;54#_==
zWwn6qa<HKcDl~m%Ee3UP3dc!6hz8W~K!eQ~Z+}Cn^voI2M~FTX1vQKMk2$c$d$EPA
z@Y|9YBFz8B_a3a^N!el4&GaV+UZ^nq==FU7(RiNZP{~1Wu`ZwIy3&5GV$Wr+jh^wY
zq2A>t*MlHFe81}+&m>p5C)ZWxooS+f@izVOU*H08{uYw{x5B^1@*KLw3a|V-;e}SX
zrx4RDD}3cF1f(e)mg_f51&mLh>Aj|_>*tt#9T%|%3}qq)%FvU+wJ=5Jyyi`a44bYB
zyy!6WpLWPp6!mt~J7>0;i8f6P5yHCD*%mo5pGZ6$`Qe-p=8_mVK8lf!&iM$lo|%v^
z?3p?JU>@TXWAEw0$Ydq{k^W|pca^=o(X5&KMi#!NKFWq=rRw0D7B{n3++m}-5*D}2
zBF(W+#OX`+A(Uq&GJf`ny^dKSC;%d*i>5wNU&02#W|pAPFf6?#7DmXMSsA><^D3bh
zYe%59r_W3cOjAaNKxdH@-6ck1BYNAAOGI^@=(fp%7u#kAF!>i`Wg?4x6T9_Rq1mQ0
zX4Ld0lZY|2A=;9jw8YJR13uNHn<ciCV+io)jLsliw&7s=v~^;RwS2bqZVbjyX(Kd?
zgksRzlL|$v91qckwP+i@8*@7?ChpC%8hgfKjl3Wmu)AJr#4`h{rC<g9ncr%Abk~IS
zJ?OR}_B{BlML~4ME|MP00@^9U9-=@h^Jk{?f<aY5e|OdFjLJiF*wqpVKg;VQ0r)OS
z&K=rpR691s@dgdH3ds3+$h2lc4dklOxW?+_SFPTR6;9N{h^`+#CA{OH70;O@_8&G`
zVO!2V`~8i$Ix$YAv1vI6HYQOntP$O~{aL(+Il9OG$1fvUHPfN&X|VtCGl`i4c+gxA
zYqgAndZXz+Buul_+8BG$bg(<-nE4Q$RD(H4cEVzig$go#FaAvWP$t3~p9N6tmJxxk
z>uSQn+pD_hEDhB~OT~0r^gFW_J1x_KAMJ>lOXWp)!)H%Qpvj1c_T2@UAhLf1krqY`
zzQq8Dd?QUiSc0E`eK%)FaIjGl#*?_5zm>2IvvCTf6n!49WuZSjLxV((iU5+zp&Q1~
zMXP03zrigB1&CqWzUQbFLtk{k4}IU`KO!kz_<MKNLu$9sGw~VI&?tID6ce9ek%SFB
z8DGF8j!|G)4SG1aCipV!oI+NeFXYpwO(7!Bb;YkGPQNTr6(_lCvFYmS>&-T#^$bUA
zO%gEDu+eDAIz@zM|31+E8uDr!`$hb+O;}f7DL?b^2so?z{|)>-rc_CRyB7V1u3pF>
zGU|JA1)whEaiI-_ars^?a-8S{8q{Anf~wJjd`TlxXawJdVp7m^ER6BJ_;eH}!_GG+
zs?`%Wo9O-lXwtc>mZfFhAXmB^epgy7N2F!iN+*h)^_(glV4bvPEuCabUaRTtC81Q8
zY|}fXT$~^EN2uf^UO2aXBZs4XqDuR4z*_m+=&{ueHswmSmsiAus$vi_%HNboPU>^@
zw3iphguF2>cE1d?aiZHadwGhD`uf_-4=UGGIdsa^$6iqoDf=%^Tia4xdG?B@k)ve>
z3jNvUnrScJZ7WUJdlQLp&A?uYz$3sMJ?^^BUjDSrb-lg(m@U*T2E!%idnB=IVh6_w
zB*>Gq1S<0eabQRm!UX#UUNE|n_c#otAS?84q!z2VC0|+fhgp<J@n@f;Av0~9bcr~m
zI4dx;Gg5KoH$-eCg6$^_wjVGFNyYZcGF}rNAbvA8`@FOpf6H%1qTu7F)({GM7?k4b
zG$yo~x@EB%Iw8~S?mV1OR4Z6}$A0gXFg@5pyUoLaUooD$%1_uU9-<UuxDqe;?cxRR
zYwz&(kTX1}^v_LH8f(MR*Ij8oM&cFz7aaNZ?W}C~Fgf{9cbpW5m7W#NS$=|zM|qh*
z^BQ0N*fnp&`9AvnUA}*xGYRTAhe3{P$de-*aNr76MF?mIihTQ?ZgTdI8SETyfDm-x
z5{71X#UXi+aQFr)8jsUG2z+PLG?QOSN(j$@WCe;@>;Z`L3@^oZUrixwV@x!t>4aiE
zy}~k5@(Cx1zrJmu<*&aaWN)y#@WH2Ll$W2_JlWT7FTDe9fs$2Z;LHcr3c%ph#ij15
znS*?1`<CM0b+xUKqiat2-m`fUQD^8S>^oW#%75C|{>~<vP&3QHc+d5nwQoubQ%cP&
zAK_A_!BfT2g3}`fpYU`KdA|mx*MVsX>v|IkZQ84Y|NUne5MvwF=pXg~1dAX<$)E3&
z^VzzvB$*~(WxEfCQPF)x%#>`0=6tQ4nJVWP!fQpF7hT}&tlZH5Ami?26(0UOD2GO>
zk!=pix@!nK;Mh1&-wdsVhnJo0-t6gLb~dHi)4S~K=w{DFzO$`ftdp(sIhj^8`CiNn
z^NsB~-6>*BqZr*rUyd*spg*WE(d}QE^=$Z39W|;|_h6q__27GC9-bDHb5c(HI@GxU
zdSpP<gVJKxvR;myX?H@EPBACi{Zy4^L+<wSM7G9px(}z>A*9HeY%+}I=F2eRG`qfh
zg%`a?Q+K0`!cxvjc9Pm&{!dlPRw~Z1J3<_%*uBjIHn&HGJ|x8Xb+S*770~NKr|c)E
zKqES6b9NofK+fLbcshPLlFodVu$*1DgVb_z9hzM0>^fdKyG~xs>2<tvdL6%Vdfm00
zPQ&SSxj>a6hu5Xa*>wYFdPnP`dgf|yS#;FQ*^?UR)5YO_2)L`3F%Y1KM3y=Z4w5xT
zyvVtA7Xtz3)(JEnK7P~T9l%F1-DQmU!l}H<k$-Y>9aE7UhLa~wB#{$9ii(VoVC|DX
zxK}E~i~?^9zQl`godRY(VRe81+A;;vHR+at-0j;uXtsB<j9VnGTBY~m{>O0<bJ~<b
z$bD0eLLf~huAtb=Igg;SFQ*(es6Pw2i;X{2y&I3vsvdLO$`5-c61ct%P45u#W(^if
z>3ugPM^b(g(dCAwpJk+#;*)*cch={7LoAyoB5AJtI!bS1sIO&WsEb&yg4aE6ji)|(
z@0o_^c#34Z?%8NI=guB-P~DE<QtBamSuZigJF5m?DuFjS_-dHaH-4q_=glv;Rk=Hs
z$`atYRL0~ot1!?i)|=?czIq}B9-ttn97=bwVk_Vn*~8&~KM`J<H(cjw|GSA8b#so~
zl?-RDBw@IRnU9?YN1@4Lk`Z?>GhqiG7|$S+c^WeIsZu8k_qnBHI4sT;74V6};ms%+
z=E>2fdxVZN$H1Rmy*%F1o~SAoS_?T>PtVPvhm~uCz5HI~y5C;0&9G*loCy-V`Ut3s
zj$2OC1J2CwI>VeZbTGS)Eia93`vXKSvIwK<uaV`U(Fa6M$PtQJ^py^N`a+k|s{3*{
zA6svcYd9J?)z|X5SOei1P^s^Z%p|;Uq1hN(+<9VDy;*n$pZWtU?w&1<mL0S{tz{^`
zJzI9x#kCB@BVlKqtz{^`U-8z_vQt1Ufgbb3gSdmun#fKwCgD``<4D-WxQxwU95FP8
zjWH8Z@D3_)a@JWAKTFf(L^Fm8hnbz4^7JHCKU~$GthEmP=_(JxKSi@Q$aSy1{Nb3=
zF)lXq9#N&eT{qavf05vtZ!fP_t}M^eP)effZhQHwHkaRCo)P0(j<mvQt_dy-x8Ycp
z^_8dsV(s_tVsB+*F|yXZ;e^nu39fzi@^@lgL0DD1tI1yR99%Y+5eA7usNgLo^l*Yq
zfl$HarO6!U))UeR_d?$=fu^O!a(JbsZPLLz9-|)^$6b``p}=Dw+<%PqVYAKjar3vo
z|K`u%j=7~BUi4I<ST)2y{0x%d5f$1kB$?^T@D!GgWA2?O$MNoh)5Ca{1FnF=><x#q
z#qpa?470;IU6h3GB|OyC-(FrCAKrLA{ee7;dsdS73?m%<7l2<DdNm%-(4)Q(82(%+
z;+o8S$p^P|6RNq_$Zgr3r5M>c`H=5LRvvO}8qj1E0u2JVCD>JBc)k!Hd;etGk?To!
z<$H#@F896-xHMtZjwcGkDbeubg<vZqG&tUh2=xIf3n#H&e9BC3^m3(phsgK4t+^!B
zDlO-2)Q&pIo)&t?D1N*4##N?vB+%|In|Bf$p#I48RnKyeJtKh68WH0SYep2`&E~xX
z$6eNNN{}Ni0Ndh1m$JG66_$_uOzG9oPP5>NSKC<V;|hRdxGcc-@b(>L{W&6bux85}
z<PSB+iXTI~vR913;;dO=aGq0SL|*zkriaLid=EMtiYq}#=NKbAh*$!nwXy%=OLX=v
zY1;qNXsiRimwt$}O>Y#-k|~g%N^edaev4*tLbt$`zpwQ5o>(S|T2`dT+4?FYmeYqK
zW4PEM*=A;)*FRrSN%B8+veY4oiiVpSM##>c>e(!dzjV6ow)~_~cH7{LTe^(y%qEAz
znXC3>eFnqoOGISvz~dqP`7f;@-)NFHpA$wfyGgZv{>yNSl;OCAV<Jw{X4w-M+VQo_
zSiWV<&0;SoYlqC@N<~3)4>uKvHa10=Tqqm^5tzgK{>hGCqS8WZzcv)Z8tSjAG+kC!
z_n7mocZqL)MIRf3Il(jEm1r;DVq=X}{)!6UOpcziP&s$V(<3}bM8kSSeHEI9BULT|
zi#^CZ#)Q+z%uHX#htg4`k@5>kiGGPPWKGvDXJ?mpNNweN%_Lw8okC&3Vxy-kp)?CM
zsBdO7z|zwUB&;U!x?Z-2g#IdnzNag8lPN!jMc4&tWGhLiPQ*Qv#q7EW&KKtq(Tx6r
z%u--wUe8d`SMdIxu^6m@Gd8sDTdlC<1}7N`u(2^iUThe4*O7DRXtWyH`oeAt@tMFz
zdv&xDw2afU5@gs)0DslI^w6j61|PEZ8kts5BYR|Y@DEmIR*UTdP+aIu8X<!Z&6zdq
z&Yv|~J&Ng_?Uw@5L6l0~%<{%9Ltv<P%X_qAbns@%3@0+9_=t~e!@O8>>cGTdDx}*D
z5wM`(OsMJN%&d1pO&BATZ4-*38dOc}4;TNBdgT()PLJfU6{gW3?t3R7By%33(3nW6
zA)Kn9$MR)(>)(-{KXq<_SClq;O48URwUv?TzayhJ<Vou+P7&U^4GiM*8)qiXwQcFT
z?7)s?U}G=LTAe=?M>vtjUeKs>j(bpuR<rdcm*Hly*G#F(@L9=a7<d>KeIbv%@ekjQ
z$@@dsNr{<1sxy|2JZ5%<LY1vFNk+sybe8BOify5X%|biagNYj(k1)V$(X?%4Wzmkc
z;*bxEGYGL*6lcr3hLon%^%LEGU0fJKK>O4ff|?c9Dt!Co1I~_^_{hhorWc18v$ffB
z4ap3m@P!GXK3264nfdgfRGZ#Ov4X@r&hn|sy;Dy4TPH$eBiW`Se_MzBLKCu)8;fks
zqIisAn8D0mZrm$bIbkIa)j&&_%3l1nMZ>p4k!b61p#YJ=q33J;nTn3~|BG7LKZhN(
z9j{wtFY2YjC02!^|9HtK9u!wdwMS7CO53fD4DS5BAe)2bJq}thFJ1}|yv$25MOl3w
zZ%sdoBNDMJ=`6)AtJUbS)jKD&3F?l<qRC}tZ7*fha*s0Uh@imc+%c|Ay8E$M-&vMu
z=WM0JIF;01K2gZvu)SiSEquA}EOaoz<~y5UFJE8_-9u8=a8qMBOXVzjr`Pzx`TFHC
zp(4H@kWGyZeb1;f@5n?XHx+m}t>G*ZIK%Y}9r0h*UM7DtB-@zJ_{bciBa%FaQ#%8L
z*-kB|MPJ85de-^KEJAe|&RyjaQ!lzF=OcyUr1|B+&Af0hhI1D?k3_#Vy3M(36#v+#
z9@$lYMijaAD@liC&x8k>aI*<7G2y?O@YN=K$b_#j;ipV^oe9@TSdMPBSKb95#`21c
z5M6;hQm8_15gb^@$!}htP&>+?TyoNuorN+DA=bzLQfBkKJ`$HNB7b^lEZa678^AzD
zGFM(VkNyhGivlf!KrgFMPOvp)G25_s$Q88cnH(%_ulUqVBdi{y33kph<010-L}ZrH
z!HXM#-&zmOXDQYl(6G;l8rM3B?Q=6P;TD+J(-Hcy&0Q_Wk<yY(|2dnNS(c{Bxi6u~
zHjH(%JKF|4&gvf2X#r*5ZS>BJ(3d#G(0h>%_WXq`WxV~ZHWR|f{;B>nSPD-It;X{B
zSm&z_`arX_M?mV<!Ez^XULQW)**>$4KKSG#04{4%!GzVS-=GMWJhEuJSCw{S1Iqwc
zk|&#+H(cGlTX9;q@`yDij1(bs6v_JP(|Gy;#Q91f!tyum<v%2fRX&({T$H=Bb#R&#
z!n9-G&GCEG9ZVcVA7h$7V+gNu@aVR1<ZQao#}V&>P|JkK+6~5J0lS?pi1z4pLJ65p
zI!?xU*wHy|l0=$Swr~$2ju@|;ab^hJ6cJgx&41$ixRuKZ(87WNsa0MXNSxJqJFDcP
zi6;g8g5Lo4O?ol0-CN$MYixOy&|gLFj7?!}+s}mJJ(EjET5NfyE4Fk#+c_mcH_w&k
znd;4r0DaQ_gww5#gvUq))`_@(f0PP>zuv*G)v%K|Sjj3o@@8_pEVFf>wf2O5iis6z
z^v7qpzUUPP+7M||bU8{t?twoaz{{;@t^xl6DP2@1^~ie4f3DEmk4e->?W{i=a1Ceu
z84$BZq@d{RX680S5{{VCyJSvVU@ILVGTDA}pUE)cReSD0+W*jq9Vma3#X7~6CUEGE
z&^JnS^uM;rO1}+#*lep#1a7>}IKw4k?n^#~9u-BfHW!89{m0!GFl=+3$wxBwL%)j=
zb$wh+X`Tybu4pm#if3*Ap(v)T42lEJ=%prwF><BJ$F|UFk#xDv1VLuqGH8bZ8@b9v
z0@h_F<5?|WR03LaOVYQ%G&gQ=-%8Fw&jhAsNg8}$96f`z3NM-GOvzfVHsK848Dh+m
zlEevbCdtDmWRra#JvWTeN3J+QR#^+MTx@c!TP`-)%`ARF<&35CIEq#-@&Ff{jEe%$
z`#b=RQ2_25^c~gz6|Ji0NBV~F^G3=F-3-@?V)j2^wJSztQq91xLfU|+MGIN=#{Ju_
zjesozSqAd?f2hbz6J4l5u0r|WRV0ERGmKofqCW|*0~1ANV_mUir<rooiMx6%o*&!I
zH3j}ttlR=Ub6zbGCN6iOM3QWgbl1ggJIaF3EJ<tX9Qa%ihLasfg(#;nzCk&@6r!Ql
zG?9WVCbKN`!cU~MGE3TsM9Nvi%;ZB|L)mCqwA>8QPvP^ZQ3roe*lFXCUFyE~Vi1B1
zr<{43rS^S4`C!$f4#`$#vNc%QM*d4So1APV47Na&iX!Fz!7$?QAwh9>hXZcW$wAr0
zfg~y(KGv7L4wBZsUfWcAy!PGNkUsUq%Nc6#n16{JuIvu(P<WS>XVa;smsP8^>KuDm
za*_LW?p*754^f$ot+j9TD9SkI?kLW}4Y?S>j6*c|!9vN7K<3Bl#W0ZSeDP_Vnc=R@
zW&C#(XS!=M^x~I)(*E^ecGuLR$mBD2TDSf_miF&M2>~gEwK_jiN<c~pNGSnI*+wbf
z&&}F)oNM21hW{bt9gR71H2%oZv?E7*A3-77aOW|O8vV_{&$qYQ8%7q*=QN0opI2wE
zA`rZ5d`HK@coRp<Ijx-ZmTQP;*`C_W2@Ro!vw8u9@PP(IS}FT|3TW>_y(nR@HucKB
z==$VxG+`_<Q%7j@)$~WO;<t!07)Ue4U@d|4A&L0peb1<9*^&*kKh;Z*=mjX+|7{IY
z0mV+w8i9fZhX+&Ocb4-Lo&T=@igrMby%qSyIQxpo3W2|Wy8!=laX&rs6Z@k*{Bc=n
z_TRLBEqdh}7cSBXnl@5KpgEZNFpV0b6PJH)*^--YT5SJ~$uaofq(1b(zoh=p&=uin
z@Ey>-{GW3!<j}A0%K4MYS=?LY?foP&u-Yq5bqz;xaKca&Q|F@rqjbl_4+;(KMLS;b
zRP@*h@U&m&G<!3BQ^vL_PpV!#gcCdtKoCFWgvufQGl^S2d07XZBMf}dZfE|ToEhv7
z4*%a1u)YaeE_ArJ<!8ZanEs#R5Msb^*XA>ls`>JNGLpUvm@)sSzzheN5t7MaM%TBX
z;!AbmaDDU5|94}Z(~uj$BR-QwA4=d^RIt-fdW3cpIQ0^N#|Y&52>gP;nfD3&n82(v
z1nxhFT27>+VtS~-b`I(2Fa5ek{p}l~cJ;e){hHf~*R8&7^?J|hRgRJ(uV>YU()Dsn
zlE+(er6YUHxXmfb;kf?BIdkOcSTQ+!%%sf@$1RcP%E)t-^;}iLbHZlF>d3RidP>%k
zHIXEd=Pkw7dr9QEGLmJDyi<fjn`eqzG<E*<*Ij?DW29rjn%h=y@Om68JdW&=E3;P(
zO;OhsOm!%^b4^WMFctV54pop>aGeQAn>I?y6t#SL@x~1+SC^D5U%PsX!@GX%deh34
zE7q^vuxd5;KCM`FrDM!yX)c9cyTRiqE*a-ozhbRpxP^+z*_$s(QPbCytX#2i)tdEg
z^L^C{&kBR0^QkC+bfqiSc$RxsIaY7nxM3rJcb1W&yhSV5EHB}*spYqL*R6Hv6>HY5
zUX`MvP1~^EVKNu5DPHZ!E_Mv}fZ1XPxY_Ig*PBNhIL@Qw#`P<1S-0BZ+2B~QZrz5J
zD?HMek`3OCD_3_#(`ssUNSRXDO7BJs^_~rDt-$)#n>|uPq%za_yr(G1xBUODH7g*J
zl^brmjZ3v0(kjy+<&|iw(SWmZQ<qqSGr{+_<4QNK0eHcOmA$i*3^We!8poPdj_g&|
z$JLvQSFbb_yLx@eYCeu|xaqXcL~Ma~cs8zBUvk@;l9DwbHHv4wZbNbL7OP_{^0qoq
zdj7jYDe9W}^KY1crDMj%6}PPx64^W=+A?`bQ6(PlEfzUKXaD;f#ulyExE?yX(y{Q`
zsgB|m>sPOHc(%~zYf2nNkeHAqWN|^N1q(;#&0pYP1Qas}z9aQ@>!tI(z}ZQ)tDwf>
z_4GO9;aIWJJ=S!q5ch2xykKt4#@ijYP}=$pkqGIZQRE>7L*<qYz|xsWZ}8H?Rz^v8
zHDg6@ziqX9Mahbi<$BG=)yr4jwo2~y<>PWdS?%Fvg`uA{t5y@X(7(KR%?1?>TVFTc
zegUmX8HV=END;zS+dIbvA0s4bjV5{VtXa91c)+IKm78wa;*sjMubDJv!Z?e74Sh-6
zsx>8RmyaDk=5k(&pxbq;mrodTK72)&_%Y+o$D8zn)TL^YTGBkId7_%sytJ7Xedm9O
zN#<{`8ly&Gx$LEes$uFP)sH)vvz1egQ)9VHtUqhl-fD<SSAErJ)l-dBebfjQqheK@
zidP9Lk%L>3Rf_7SSiGwq%*{DmG}c`WPy>~0p}JTNSC^>qYJ$34U8$}@*F0HGQCF*6
zHC0Vhd1|^^q!z0ynrEnM-kslkZS!@_1<f}!&ugCBJi9r+d1mu9>hk6*)GT$q%51)Y
z`=RHl*=mlOtFBcu)pcsVDxme>{hv}-I<IoBc53HJXQ6YL<7D=c?ANoWIdh%2I@dZ~
z&W7ygvL77ka_m;WR=>}Fbm$L;{&491L$?ndGVFn&Ph>xp?TFyR!iLq3OKH;xa4-s7
zi~&F6A}yP!t^nsb|E7i4s2LG>XGNgDURiAs_!p=f)k1@Xo7Bx}iCU_bsqd-fst{M9
zThvOmN<k*dt%}qdb*oyd)~VandbNRB^LDjSl_-z$a#B#K+N`#y|5A6TJK6QNRmEI%
zP<^dJ>OJ*=YF7VHAF5L-tb*zj^|3mwo>R}O!>UCcP+zDv^_lugomCy`RrPnZOFg1~
zsebLa-}bKhNPVu_)u-yX`mJhE&#JVGey^TZPpO^icj`&?gY5gWf0!MUot3>J`<Cp5
z**9jd%$}FMD0^A<((EPKY1!%76S7BSXJ)HxSN8X^muKIcy&!u{w$3ih&d*+#?anUB
zUX{H%`=;#0+4Hjtve#zcnw^oInq8S)p1m!5d$uq8@z{6N4`Ul+ABo)``xo_G?5|=U
zj{QySpJN9PI}rPq*h_}381}eYJ#5u5$3;Ug`clmtR;T(8+oJ{yyW8=E+L66O-H<PL
zimR(`m}j1@8|Itm<QodibIOvjmv7}fhpU&2y+WS3OU6!;=hP)*bL2T~$+$7{%v&;U
ztURYL88=>@i<XR=AkW21#%*O3G|yi$-aHGITyCD%EtzPZ^Oj7NdYWf0nP#5(OY+Qf
z?vm-|IeW=W^SpM+4D-AJE--QI<>Rjy-8{NkJ*a-sy}5gHO0)XacT@NI`?&|&<iA$i
z*qEU-S8W~_n;Q#YTgJy-1eof-Cd6ZIRqBq*6S5O{-Z?Sxdx?V+)m>L4Inhw4t&@^3
zmBS70&Pf@L_p0)Z>2^sso@FCbm!}R%RrgHpewnCy{7F5MdfeTkwMVj@LH<DNFK<tq
zm)0{)rIq$v)U#ht)pK>PYkI}^QoT0zp5MDyZ`IqAz92n4U8Qg7b5o!GeN-QB-y8e(
z>8tv#>33bf<bJB(hKw6B>=`PfxPN~CwEn99k^y%N7&xGHz_NjN4IDJEbzt|*?wKi>
zt(nwq{#Fd0I@mT?4K5i{Fr@boHDr}zx+Bh^9D3-Cp$S9PQ1`HFhb0bE!-_7Nc~R0u
z>Y`h-W@V*hsjRixv$MNFh3lMioT)g?Ty^o47h^-c_~PNihVvX=c*#~=16%oL{Vl!h
z&dV|{YrX8hM%+ANzz8*B^T@>`Ge)YBD@WyxiXEj!Z5q9Bbl=fx^etnijfokf#;hNE
z{n#F3)!5s{%^lZ$oEkS`ybF(-*72hzOqsxQ!syGd#*M9&f7ainS6q69`cbPW-OZmP
z$NDe&4wGB}11N%3-Uu651H)VhGq@GDxd@i97UsDa#;{K1s+(XBx4}qnhDof4oi2e@
zY=EgQg<%xKT9?5#ZtpBN8o2g~Yhf2k&73q-)$qJ7=Q>rc)W}&Qu|2fHq9)9Sttd6;
z@;TVgm6|(oE=)#UcKv17tL?3@uCX`3ayVmjT)z4N&w1nL!GM&SKW4tVpJ&0S0=XCd
z+kZ<J-nr1kRjB(^Kvk=IRi&y@+fvepyYg2Z>PqILw13L*Td)Y^w02z&C|M8O->uV{
z=RYk<1U6L~*Jjx&Mj*PGYG`SaYl!{czuUt3tl<jLg5GybjCs@WJ-gsSNzG=cTa6MB
zzbSDVMHBOdPX5&Fah6j%Q356(VpVwSFu92&^dqw;smj{TRCSN+Nit??bV_*EniFWt
zL`PN0Ila|o%4nG|6^r|4S*rCtkSMWiLSRpJRh1;s&lG|i-&u!ughch1sIhHrO<&=5
z`iz`@?>lSb2>oZ07{XYoFsVHwgBSH<nvNXV>t-WJ0;k;<vSvLP;|xr>rA;*1@oefn
zjM|62D4{egO{>}-Kf+^m8>j2)w#T^xt%n<P(qW!O#PwLy<_t`{)x-pPtZRF`CvofB
zfDaEmF<H5*dffXuJJu_YprkB2w}EKyDGbnGzD~jo9EsPsg<YL;uMn<9Hed{oH#W%@
zaEsrDefNvs#%&XrVb=<X&d|wCk$qZC|456}DH{WmISo$Ex`;<vGY|Dw8r=~H;fh4Z
zS^tkcY)WApPO<1K@SrpQI(2xuVb6OgkJcqWrO^BZ|1p@&r@xJABN7H1?TV$k362x>
z$Wjz5MziyB#L_rl8$%<0AL4yCcqA8_j%eegW{0J?`wP}CLL6ryXO@XoV|1I&6&oFw
z)&wGcEuBidYO(u~W>lLT)<SnuQ1@_#WSX?!`&p>0>(`QtDEJjYfEYc3zekB!d%##O
z&Rb#TNme{KxV2H3HOI?gx}gR!(bOI^6<ta0k^z<h3|CC~ZaxT<quRo+8%VqlSOs~v
z)gGuzbnfE(WwFC>z;o30y5G_|hGJW(=Yqd3<5E<5GA>_}LxN;<o)Mj&Y=>renh@`7
zm*{ft<Brre8AiQG@iiOnwErk>jb@t^o(6b)(6YibY1yp%!8CSXjJ*|a*>v!|U10aZ
z!pP{{MR{_1f^iG!EjH-pcf?z@`4g$;TV=NW;Cz`kp~pXSu90nTd(D|!kwfRIX-{wi
zia=BGSgh|m&_9Z=gf^dch|vj{D*NKKk|3wK$6>fgwQ;d>S%>(l*ek@H^$;lIU?+Yf
z`7)zLva4b57Yvy5Mb3>DxgTR$0$A97qo^b0l-0p_%3bEc22wL~FL$%`FC8I+EjPw8
zb`SY>NwHQ*o9}Q}&aj0yyARB;sqpP$qLwY42B-))HC9URJWdx&)i-zt3f=X+Ajz$f
zB*M`+s9J6U%Q@${=-YLEU(8q)T>c5{+-Jb?>=;hEoJt`S+{@}Fy0=%fd)IC^*>Ktt
zPjt-Y7i@tRPuL4I;mvo8COmqO>ay>XS$qO=1<m5#@Q}oabAfL7Ky>gCmz+0ihz>r!
zjbC$oLs$&>Reh&$DJ!>C2Wv6yg`dT*?{2(<C|=me{_UabKT1NVws}nH=Wpu7vEZ<`
zpWZ9cm>rDO$Q+UCd?X*;Be56!v4840)L)L%b>?2-%6)a)#HQ(cuh3rpvZ8?;DOI^2
zy8-%VCpis4pf|>NJ~{xcGj7aPH~He@CR=%eKZ9fW-p}PGJMr^*&fEz$PS?M<LXaS*
zymVerE0f)1iRUT<ZiEm^!y99IFsgR_P*9Oeb>ii<1Me-*6nvAhgiSsc%XRHeUN}t8
zlm-{y(};=NU4<Xs3qIVA(>MU|UQpIek33FlE}SHzbwh&Re>C$5lY3DUn%mH2;Z80w
zUkE}xU9nF-WqiiYMm*F^$30yIK!Jne(vkEX-Y}d0lQ&Gn`Gpa(D8}-NIb{17*29*<
z$SKqh3k_i9!;KwEw)U?tvPoLbxPxD`%?vw?AIlHRNeB&bW=h*krd*r&vaJ1C#Fr&(
z`L=gA@E#!9&D6P2>SSkD^H&$vnPuuc!xSd=6syjKxa658zd-Mje*pROfy3V_?v`8+
zjAv{3Up-)s4m@(S{}B+I{W6HXCdAZOz`qDmasQiYE1fH@cz-bNe=Q)_TOz!VIphyN
zr9};<xA#R5X>OLpxG~!}elZq`VLGyXj||RT#VQmZBR+%8w$fzTndP^IhTB|E+AIEP
z>$<J?4WX*~%h2UAW*9Z0IX@6#0NY-~!xZO@WbU(#R{h92adVL=hUzfAsnE}0>4{<|
z6aN0Nt<KyV4<7o|-D6q)^D^qnB~;0#+PwbO7y{AaaGW0EsL<eHrZ(v=ZuEJzHz(3j
z0(Rv-Ew@VvVqqpk355E$-2QkqC((&VK^2hsIrSUoDLLt%Gp4zx+knI&16GOliX>ZI
zpc9J9NT^TUeUT83DQ2@2BPfH}Og28^qxmAk>+%Rp9QHa5m_pAgDJTLA1w{a)AVTRa
zfRoq1)3mrNqb&+1;N4xhPe86b7G4u+JjW4;?}U2P;Vsg^7nlzt&3~;I%`fXL-QQVb
zg$dDoDZv^8%b`gJchU}tRu!#=DwhM0bdDj2e<jEL$Wh4D^|DwHOnh*EYD~-hSi>#f
zSbqDSTp`9sZprKD7=jdy8+?;KHS@F`?U6Z9_PqTP6J$|uu_dSvJ6T29>0>f6%7nl@
z*ld=B8zR*=HySY`B3bP9S(7IRTrpmaM35xCVNN5`&sfJjy^VEv!FYs^>hi1)B)#p7
zC60(U1*bW4cD1nY!1JVF!WZuP<r}2na6e+?fRCKl?EZr?dBaG`_L(|!j%~!EG>ti4
z7sXMdE*kPGzriE0M3F*6pCeMVV`J|SiD55VETu28&PPttmv8~<@w-y31EAQJtcSk9
zLC)t7vz?QaOZ_4)<;DRpSl|j+7Aa-#nhV~NLpU}25IIRSlT<Y`Q_Y>Kua)%I{w6WE
zZuwf59W)*&T<pWa4dM5+zcCltEHpx}l-nq!Mo!f}k1$GFH@;CAJqQtA#gR4EWqa4)
zeNr`j{J);kO_n?As8D2r;4Ak@A0YAx-oRwMV2TJi{sn1YN@Sw_@}Q5(<){l2i}d~>
z`DEyqi@msuwBRJcobgXlLMo?madzMML-Oz<OnqVI^>{&lFji2$2x~N(goPnWuB<dY
z&%|)ibiV1BaTTUxGWjYCkKjA>%LTPXrR44cO>i-w<Ng!e%rqOix&x?lf!dSB%Alyy
z6!@;p5V-6_3#^rnmQ(%vBZJb~Tt1i^BXV4vo%!`Sp|-N;3{iKkP>yCCIoenF`TCck
ze((E+pR?+ax)4s-Hp77-5WP7YH<l&HL#px(SXSbsW1g{0``Zh_oA+XRK{i1*d}M^>
zqAvi9XeR3S&$v^TX2nueC0Qf#{Qm8f9{tlrR|Kj0K8(z}8(F-Ts~vBk_&Kw+lq(Rp
z*8X|}Qeb}*W^QxZ%GF#V<s<jxbBU!)jz^%E-TT7>nu0984mC?DI=K2FAP_mO`RY_3
z*UXsLR%>o}X#2~|S(cm^{75<lQ0WgliMalcJv;LKUv^rv@#FkX>(%UN^S#I_W1pEr
zt9+DV$&CBY>&T)l{Qv6N$(j78*#(qKu}DogCMlh(C;t((`KIp99mTxKye6G};e_Yh
zkt+gLe?8N=OG3B_iX_%bIXZZ@OzzgEJI!b@W8uF=ae<5s70D{ZRxK!%qkZfZTloYw
z&ffsZbUrGs4PcU3|FCl$o*<)8POE=XMmk3nXC|}Degj~+uUrt9?j6K#`nYrkfSh7q
zxnM$yW((O@iE{48f$&UP<Uf<Z5p;Ct9K>`v!y<C5_Ec05q)cElDEsk~J2<z*cV}jb
zl(fXg*&QZQW*5q-G~&Lw(OwR703$xr+QViw$3~E2?qRa}lTY9x_&D(<i%2X<?y9A(
zbk@j2&qJ}_Bzp$OMh+&NkYXxJLnU#o_ID(BU*bZQ_^n*M3|!zBR$-u*$MgxtH$Uhn
zD^A-7rcX#=M{b+<m2fv#2fHB=y2$h`tXcybxi${0!ZcC|Cbfm!=VZglHb!2XXT8-&
z(%#^5BsrmFHdZWUtqBzAT#)Rpg!>VeHEtp!B&qWC#<O^Z!_7G&zbZAW@hrQw-gSt&
z$=n|t%Sl>5j8ft3L1Cx%-O~LZ5f0yPi5idrlvh0p-)F8Om@0I#j7>;yoIVE&9fvS9
z<r9ja?}_62#B!FPfm5eh_*eDq-zJ-rTPXAeB>1w-Hab(b3-)hgwe~XnB@+=QGwa+T
zv%B@Hfu2J8>@5=Qo!Knx(!M*By&TnY=0`B+EqnRna`@;p>oqJ_Rmv-84e*s$oJ;-t
zm_3hsk3_fov~9Lj5dBeHc)u?j1^4dwJLQjk6BXE04mL1APC8aHkwO{`8FP^EM{c>^
zAkJQUKNVCh=q?v#Uc-!3VH#k6#`2QQ+2?sp$hZm5#;^K%*&)FFRQ7ULM|iNCo4g0w
zE5^cMWS%J&-!S;p&r4zME5CKSXfND%?*Q|Ru!#!a%S+&oB!@mPV+<Nii2u1s!py8A
zx@dCTTfdS<m@;QmCP2o$^$QaPY3GI#I=V2AG~uIM<jl!-0^aK}u551~`tW+2e%c}9
zL(~f_S;9^sh|nW3zV<Pm@ov2~E{kJb<b)R{(wgaM$4CWfOr@Zna@0&*B{4OdkFmmc
zC2x8GGB>Ia@ALZUF{W5SXIxhJsAve|)^YJF+ul&2$=j;%Sn_T`%ULzmR=Ll$&dWSm
zvqkPrniumpd!bjsG2|3{|Nf-VF97kdYn8WKBqlC&KRcdR-JR=eA7wB9iS6#bzV>W;
z#Rsh5vZdmnPtY8ql*RV)ACq*Yz2cxyt#M_1hNa1JN$@-gO5_&PyRY!I7qhuXl9Y(h
zFi`(LU7c@i6h#!kr=?P2Hf<CCZEUTYR7qom6-1ACmOsUSNMfRVFo1DGakvi~Q=u)3
z9@lHY#8zth(I$S>gai{YF$OTj!_y0f1x&<>v}rDev^_3hO_OqxbI;$KZ3{Zhb$4cG
z-h1<B-@JJ{@6Ab5gX!nVr%(C@=u>jf!XxtQ-G2pZr1b6XuE*22eVkD3t<oR-bdX~k
zpEjAp9x~s;<L0@dFw`Zi-C68qYeYGeW%4<egn-Reuty<MPIiZX3Tk$xa))pT13MEX
zTNoL42x%fw?yM2Res%zf<DSC>GG5Um!gAR)R?}6ZUn<V&)&jJo8ptC&d3vAF@^Z0A
z+_?XXe8GK7b>>q{jf$HVYA*t);o`EU2V{Fu*bzP7%HA+`vEBvxq5pwKiUlY2ds7;#
zf42BGKwp(!-dq*m-;K;P-@uHkGfSAA?nQ{}CTn|<^Dkx@AVmhA>8FnxDJ5ARjo8!|
zQMT&~ef+7!`)^^kYmNmwP*r$DJODS`c~34pU{nIx_YgPivBF#Xbz)TRt+B#unRL0o
z{>ZPt>%=P~B>jE$uJ<J&%Uh16X{n1`$I33+=~nm%%y!YuU19-G;g186B;SswyMdwT
zB!TUsiXRwSV>Ix1ND?j9kWu1`l)nr$)O8uB_Z^Zx;2i;7vc=J->ZBu?$!CuX3tuXe
zgd=?6*@pRP`3crGy=I8Sc>7sEn1i{DUmAwZ8%KX5;S!=dLuqiE)lAN9ExXJXWtIZu
za3LfbVtWLG5%XSzx!uYk*(x4F9iIRe&fiFKgy!sLILS0;>KZDy?8VBEP0GvJLcgq9
z>=>YL6NRgbC}ijFd6W9KwYa3#z<G}TY&ew>@dr26IO1qRP6CrLHNBHJ!3?WR_eK!B
z?&urGmUXqt?I!k7!@6L`FLbrUx>}h44`NDI#%hoa;l^=bk=5`j(CF!QRC>kZ`cztC
z?2$hF!(tcdY`o*ZW5VBIokvuL)e|fCdJ-_L5Q_&+nt5gb-5W(sNcDZ*H!|FpN>#=x
z*{Mp(3&SuO<1=I|X|AzkOcIg}Q9@EFJ07=LDpjVk<gci>-ndc6RV6z-GBTX4)YsM@
z3WC6oYpvsU%3im6o#S-Q<a;}MJ397GW`=jfr>5dNhST{{SjwkWbzNK7R#y$wlx?Tt
zHpR5&b6fA&*!zu*jjF99=6SI|_>xMcQYIhSDki_p=S~7~$g)C<i*nr16^^DdnGBm$
zRg13Z7OoT!D^&<L*|{^p@qLGnj>_}IQb%zO`SX;M%=lIbK)JwnbWX**SkHLSqg*#*
z^4X5-x{j^*+1%3+@k(6t$Z^U5jDjN%&~PpU9xS!Uok^=??&8GUWKubu4xz04z>2v+
zbhW5%Q``$et67yZB}?KlH&dcnRXG3vaC{;X=U>vYI|c9EKUc5_eFi-ga4(nzk1h30
z<|Za4GQM&EP!0lB);g(mneL?B=+BZzKX@e-?oRlL-C=ZfXUy}9x=qo?6blrsNAOj%
z1)0z@sXgD*lWK<M*{wsByBUU~xtz*P&P`n88uN0woEJ0rT;PE|7{~vF;FofKkne1g
zdVU?j<uRcw_yF%HN{@y&fd>#^NjfC>D$E_VSAow5uj~3sDsL^VR=x}n+h;tJ`A(=f
zrfnp_x03X0-gT+}xWt1D_?s+}Ntbw;c8Yl}Rhl8*BQ0LayIzlmUPpDB`dcb$0JL2+
zz@$kPx|9l}0l1c=1_qwAlTzc<SO6M$&BS}Ofo}$$YH*T{V@{@&VnPQO>d$~24MQ2L
zG=QlR>Ci(zf8y*Zt0u?EJ5H0l7v?7sl2ngWO@cH;E>!9AS6Djzq7y>}CWUL4<y^oM
zPeux?YwsdZqq#d*P2A|xPYjA43bvsWWk@b8zsx#vUSY3KN2;K!(M-zHpnq2b9(Uz(
z|Ho(HZrdAdqDZzPvY_79{gMBOAw$r@KTaTe2mZKzacwv7;1SsL;MS_xxqT0Rh?3Lj
z0>4L!T`|Xkt5$DCx?X{|lJ$T<eQu1q=FPeaUrt@vdj1lJ0?9OZ&*cU4#<TF~W3}CD
zv}mQ~japFlq!(>(PKQM0;1?DZ2)k!WMD=%KM}fv-1Ge@5wMhYUS|-guQApj;TMn20
z>1mofTgw7eO4on$qh5QZ>pY^+hT>oHwOfiu(rxzo&b*p&o?E$U^~$wtVG{oWGL|`T

literal 262144
zcmeFZd3+RA+P__$bdnBfs0JDd7$j(eiAE%fN+f7Q0z^O!B(f^t=wyO8qe3^Jpd?nJ
zsg&(7?m9Y;j>|YMqcdtq;+7Cd0Ji|L2rdB?D>O&|g%Fm0ue&+{W}bQ9_w)PvSMa&g
zRi{p!I_G<~`z%$8V*j%huobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs
zuobWsuobWsuobWsuobWsuobWsuobWsuobWsuobWs_&-zN!x%+5D^^j?fk{vZw?l$c
zQQn0Qp$(2gPMo6T!z`$P591YOGjvZ-l#wtVu7g?d2Ur64!vj#`Qj~hQ%fmT54R655
zuo3n^2VC1*Q64`_QQk{dlz9WWHb_yj1}n;Mp#*+}{zDXHIvj^9&sUTu;i@!6$%R5#
z1fRl%7b?nFD1?{{Me#!g{0%;Y&tW@+;rACQ%ERz4I0n;)DoQC-z-I7VtSB>JHWb0@
zFlU&eJPK!JD$4m#0Z&6KWM9IwFIAK>I1En?SClpI*ky|1yj)RUgDb93ln```P!v~|
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%0DL}9wEff^F
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

diff --git a/pc-bios/bios-microvm.bin b/pc-bios/bios-microvm.bin
index 97fbd3192a6f8408f670525da231d2e58d943d83..6204a714cd8312b363a61134930ba0ab2fdf53c5 100644
GIT binary patch
delta 56597
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

delta 56620
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%0Au(+iZ64qbi2
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
AtpET3

diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin
index 68f65ff2fde1afe8ad23e5eaa42030c37d2883ce..12d6a037be66d7246c906bbfb1b05e99f0a83fba 100644
GIT binary patch
delta 73563
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

delta 73435
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

diff --git a/pc-bios/vgabios-ati.bin b/pc-bios/vgabios-ati.bin
index 4533d0d063c22890a9973e1260264813f1179406..39b24051481955de4dde9f36c30afa6d9f237bef 100644
GIT binary patch
delta 13917
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
A$^ZZW

delta 13834
zcmb7q3sh9s)&IRS0}L>7M?nPy#1~>j0%)S>L{S_yDmoGISrhX*LrvN|m<gtd9qi0B
zTrjlhNxsIcxN2hB+QfgQF;&1UoxudrqzR~LeAN(Q%}j<WN}~u0|KC0{JWRX3wZ0hc
zoO{kb`|Pt{XYYM(S&gQwMw3wV?lOOS(dW_+|NGHj626n=7_QSip0t{+Vueg?VCv^q
zR#~98R+tUUd&$U@184a!HPfTjPNwW{N>fL;C7wNUBmtkaGPR(c<u;d$!JI8drgpu_
zob|mstW4QkWMDD?<f3*fyRpGwWzH=|$u_0R6GYD{?d?qcYTMbW(;e?rowc&w0;82_
z39!<Rhiq>Te8SdXsd)aNcG4JS|BK^wEV2v3)5f!{pY`@i5|+1(k7rwtOI(ropS8)O
zx<TVf7TGiyAe9Xf;{mNttF^cDGrF;n(PmJk>@~OXsIYMcw4==zLmhL%k{#nqnEQm{
zdQZ!WnEFo^<c+g!BU6uJeJRsgkr!?)H~$W+VLPgM4|94Vn730)FVz59t_QXQ3u6RM
zbg1Ut=q=Sz??d3}-V03rgvm#UMHLGTCavNcrZMRhSFOgRQSNuWC2wnD>Sb`V;RA59
zvY?uIzt&>1hk09cOa|-DT71^qR(90<4v7^o;lX9fw){@9O=Q^~D_VR`c&?)vXuKp8
zwO|jclL1}sWhYzNV)PX4#LS{StQm||i(X}__f00Bp(V|`*-4+3jWh3glRe?l?qG5g
z+YV7~*+c8RE+ER!gkW|CVF=ew;Od9n$<!kb0Xhg1#B6>wgp0X7%4=TcKBv4^?`pPX
zkea+M*~T+xw}u9so%pHOAGd>{7}40Gf;;$&J`m2bPq6G`EVoH{&BG!att_|bb(-V-
zTEil}EcYb!H@7^37b4*uYx&ZMVNf)*nAQ%dIJdl`SKP1k_<tcY)lXddU<b>-PK<)M
zl>IBG1H96_$KreW78=y4%4`8<Lmti^z5R=AP1Ik_6@Bttrk=L=D!Tp2GR<AxH+AN%
z0o-+ZAu1IRgkrJ1gYZ|w?B0Z}@lE<f$5nwQvzs(!c_N;B0XPZ0?GViA9YXHLZgz;o
zNH7bNSZ;&zG8Zp>6M%K04pSR2Ma;O+#TEoWE8tUt{a}|CB9`leNJyp-tn$FXqPZuZ
zQ`n*)G!(U--MBz3+auZ1LmX0zKsq+P70S~K-I8fL=##GzS9S-QnDe8J{ISTjVN5=&
zHgRv{ALXh1$5H9g+6`^MW%i{8j_}__O^%MiZg$J|a8?(^zlh3>Ew5)aA7~}1tW~y!
zvzk+A@-fkihScQ&u&O?7*G4?~&!Wra2(C3u9e%QhsrA*dm)X2F*kvzM8!f)`e2HPg
zEcK+t_kIs{aYX30(;KnF;&TDKfgL1i0F-TKH@ab0dgg45W$LvnFdnv^J;)z6443cc
zrG`v-I{$;gWcbHzsI$P`etX|#!($rxC0?j3i}ZHsncC#+n#2FBr0YFBYz@ozKg%yD
zca5rEpUEmme6SvRZo8X3aUzCot@o_QvNaw)&X{iWSkYDvoPZOx>seSmUvHe`Fp@NU
zcocz4@UY<KmNuq-vRhVM`!r0cYtbvt9NFR<(M9{H`v~l5vsRe_UAdt>&04O-E<^{~
z`7*2ftPg<RHLUI|y|X$G{ZN;d)gA9^>zD&Zr8dGGJo1hp^2_Yt#~6nywN;S^ETTo`
zM}@Ju%z0C1ZzhHbDlQWU37-JwMv{4|9l&%%-cjBNqQv-M6j1_2g8gfjeNO1opSr6Y
zw1mJgKVclphbxG)UnEoqX&;2=>}6K>IT1V<)pUU>(taV$sy>?sl0d?|dGyGq$9#I2
zq2hIq`yv(RLo#6$L<=NlP+T!z9|kr%f&>eVh&+8Iw8^s|N&w|WlG~@zE1|B+HF>ON
zs8FV}P@ZF8%1~SUV6;&|WJG!pUxNKCtNWC;u(kV?R(Z9aIa_+@;Hs<F7D&?NkTin}
zjtVK~P%%CG`T*vYS>r&=33vyKuMRd2uM}r*89aFruO2qsafmoKFm1kmdOtx>camZx
zriC^rg=E?Ho(J!E_HzH5hUD1)ro$NcRUf`1*ar(C_AL-ch!4BcK!vB9FDkA~@{3@;
zzNC~0WWttNZ4&YA(EWmYUu`>Gbr#{kX#t>q#ovq_=YWQ)`C}o^Do+}0=|zbK(}1;b
zJoUU~ko!9F;h2t^FJ=H&zntHY*x@{MR2>a1rCwl%X*KMisI70kei-!vsBcKx!D_<+
z!w$P7#}7b*i&cW65Z<(1brPG<3x{m+@$RalX}dn`BeAk@e28v!fbPn|bfQ}w0m2dR
zT(n*{`*8B_6CT_S>j^SxEvq|9`r!yJ2%D~Jr1#J(nRUb9cZfv@0w;B`1Y(5kK`rE)
zY#q%B8iZ4eIU(kh%nIVFAeTV6$T~@ucc4fEj`cU$nm$;pOLSajTaW1Q3!}BN$>w(c
z^_V!GHBlEuA!HMrUd)^P^WjN%?_M7~uqoh(JP9{wA4Y@ktY<ZJgt3z?Eb>Suduxwy
zl-2x7{BVBvi2vbxN9C@X4<VbYx1A6U(%TAE^MO1M4rw|t<-hL$rrC(q5bHF|5Bor3
zd59PC?AL<61Q4Cj!dV-tOJZ4V9xbL`gYV~QBd5xheBH=Q`A1wGxmDi4qvK~fI<5^4
z_6kE(3nDGPNw+E32)!hUmu!#4H|#b$7(s~Z-olfjp)TfZg;>?1c2H&UU8T4I?a<8D
z&?^o7{T6cu<dTmpz5?L8o)yBB-5Xk&VD{a*lZ;)r?%-6Sypu;IB+C!+^n}sNJh!$r
zR(Y7(2}k$K)Mr7}0=BiM41_7}b-f~30?LG2gLY!L13z0!ryhHVZSZ$=^Vbq4%dc^7
z!f?k=9V3{tOQX2TCH!h_PqW2}t4azC!&|s51J4Ls9G+pe9B2dc`jP~re~Dw5-s0f|
z6wzY~^#C~3^GK-2*xzFb^%(kla%YFSa6X5oWrTWk{XL1ICpa#4vB4kF%g>HVNe>Gv
z9b&@4snM9UwnTqJm?>Owd*J6!zs&yKzv08*@zkX0@*KV<DMj;mH{YD}fFTJ-#C73X
z_1*l7q$P15!*Y(A+rUvYD$Q*c-=Dhp)Z`iYN$jw+v$vNVta6~>B2#a4yi4J=*6s^@
zMG+^g+PS4oXMZiQoIpw_2)oMU1_p7fofcna7ynE0U79y8@qZ*wlt1BNDU)L<Jz?tc
z=I==TF>7y;kKdn?EJt%|$~rlY*Qd;o&++b*BH7I!7=5o}3r;XK!oN^sttdqBiS=YV
z!kMNw5d-f4qco(NEV8~FVOfh7FNhNUPI0FO_SB518R^wk=4}mUk<B8Ut}ILnEnZoY
z=)Fwo2V!GoFZrm-Er?3gEf<j|*;29lnqCFlXX;fNx=6d{BT^@gLi7q?l^%#p;4-9C
z=q2S=Tlj|5wAn!B0~;`!pVaKb0v=`ozwAD1WqzX9Co&#d5}dFEk&`h=HRNkO-|&x8
zXX!*17e3|-&AYAqA7kRl2gNA+ak}O~Ob8V#NANciQ~9C96^o8qd|p4oK(L%0)?k<-
zKM3F`n;;>bMEDm2hF_uKU^J*)VKo8`j{8e`5VC(u2aD|CYevnCefT?UEFV4z{_&h>
z>k;6N<hRE}I4FrOH-FwY88mz-fl;MFNvcInAy0M+vFOi2n%ikr&8=3j)Y@Qf!HFwe
z9RWPk$(-LrU>%poT2b)%^NHYAQ4?~|dEusrQUln+oL@VvIZKl-A;ZC=A<hh84<N_}
zf{)U9_3+`mdTfT~L=V3(cC_Z$4c<F;UP6!L>^3Sd-GFnfA2erG4_`NKys_iCWrI3r
z-r!Z^3O2s?Pwb-|mM!Ac53SpZ_J@EzLYCMGwwP=BJCK!`Yitv7dhADlrN{4w_#H8$
z*){~B-PUe8s_eT1L*cs@1dz{p%1`r|<I^0|;Nz|31x@Ur5WtbNw-zH%-rtpbRB>ie
zB(dMDxA=OIwX5b&;avui39sz^Rtr|PR$-c(;%g#mOC!zN(4_1=ZB=pX!jzk!0}}FN
zgY^7JFmwSiG{#!?xWR#>6~p3$%I*cju|{aW9_(mKqf)hp4tcyN2h5*hM@chq;F8rf
zNp=IPD+6Mzb}q2`hvIzsdjhPOKLpY;A7zIGB=Q$3Tp)~g|J|lT?PaCGnqxkSAbZFq
z5uWMoe+!Hm^a_Wo{+*rd5oH?p1&WV7a5Ye!!IB^QJzHq)HDB~E>4geRqq+@$f5Kwp
zeUzfC3*=%pPQ*WUaYNcKHQ!(1ucob+U+3*<KhiAj;>#wk3Xkf*yi}pr-igE0D$GU@
zP1&724s+x20&~p6UJ=n$ra;NhDX!P~zb8(TwLB#~ac#R~Bh4jqBIe_0j%={1c3{8@
z!VS2-Wu4HxOxSxA3;;1CM0Az8uiFy9UO=2->X+6^^R<rm*fKcOB43~tBpE{5tmC`W
z<1|g3{80MZ@Rwl-g4p4X)z*p)dTaTH4*VMMD@Zo>>r&-xklJf2f$(}E_tCC%wz%?U
zB%QGQ2m8;2F}>ImY2ATyOg?AvrQQfqx-beJsRMS02%~uihDi&sH|Ut1Ok#rpr5J3Z
zgL@~%>g;Dk6)SNLMv%`{tO3_RPsN&qAbplN0^U447@|~p(<)+IFvic&c?_agJ90lS
zfv4`~Id_>B6m+mjpTKUw=c>=)NUtkZjgpv;GC;ROi}M6;dyy^nxxb2-M<kT1hC)<r
z%-w5`VVh+B>0ODA@`9_@iXt$GRA6NfF_qqtsRIJN<Z(BpQtb;~=W1ZC7zBSN)uT`D
zM*VLU>=QU>ew>(p$3%eMI1L<P`oKy*LD=(A+{=tVK6#CNk{_BJuSMaJpP4*Qew!y{
zBsmtdMU=E!E0$=;dy@b*$yA)gYB&0#nC}RSfo;MV{!b-{LXZgoA^1a-Q_vk;r85`{
z)N7<*aOZ5(mwT<{Mcw^cyYmsUQ%q_1LqO(RlYkM_c8C1QEjZw?UPQkY1+cZE+t}_c
zi!blrOl{-O7-RXhj0vlk7~R)#<|YB}7285<RlWxPz=&f7!Rk?Y2jcrH8e0td7QwBH
zPMo;lad`ob8sX;KvC7kAlkm2kSn5jP|CP1!C#Q_kywZWdI>`ZS0bn~~5NVYjIxD$6
zitB>LG{GKE?g<45gv8DUEZ2at3VDMuOgZH7zo{wf%Ccplgck+PI8;Doq(%hMO*_~E
zposw$?d8XDU@_;FET-NpyBYc1-vSB+>Yos*EJEct1;r}sdeV-x1zPX)$~!Q3l}ud-
z-5NA_8^I2fy9_{AKP&5cOmY2><j5=Q%2ZqjWk+0D*965Ktzk720D~y>lz$iqTcfyY
zq_VC@6?Z#WbA~YMutVjL*5bQ<(%*&!N{|`J4#(`WuBR3ECxH42P)7->auln{64*XH
z$!a!>Ry}+uvie|Q2bHPh04&G98+h!tX=PoTZA<(w;qa)82A^FX)SH|~bOA(>NA%2n
z?D-+AW{N=b!bx@mj;Ap&9I)7s<EHD_U|@?c_m;nqDhRZPSG~|2QKgBd24WrX*@t4d
z>x6Anh+sVkR=4<oZoLlHYugyogigd>r$a%$*Qc}T*u21XHt9>4>d&#bT7+P-(c<vo
zXhh^#S#&XQ2|p;hQ{8PY!VYSS{RS2d;!SX=4R8bE2=fN|F*i{O%YAMTa^J5`uqA_W
zqfN2xH!z6G4Zgrnm}(pl`U2ThVqeeaX2m<qCs=*}DhyZnS>T>Q@~a#LebBl*wq#O4
zi!X@)+xlc5a{_qndQy~6a5g}ks54=!X1zc5Hq6%8=YadIwve<jh82%kO}c}`X-(io
zrt;>j%!m}x^#%{m&W%_r+Uxj&>@>%#qCMpnxe3}2im+|SYqEL=Cwa~`_+Hfvfl<C@
zVa0EWStte~6AE$R?F%6uqEPLsN7_KiD(ZP#yX#TLQ+{zsLXGqZPYh~zRMyKqqP+B;
zl*#{@oiVwUJwUN6A`JwzI3`Z86|C5^4p7DKi-oM@rQ+dITDd7_^|<Qw$h|GFH+F^4
zqcW)cLYC27wF%9au1o$nzCUM*T+J`$<jAdj<kWOWWl<{=WvGiF!`lKsaSgL;#v{75
ziZMbL?8_MFgKwrjC~Do~?aH&Uv{&dRLg|ZmcrCt%zoD|FAZVo^$bVU8#SKs<R@@?X
z&>(hTICqmc%$&!2{eR_6Q)kPUxH2s<!nBbj^)b(ymXI~`Tqf|pfC|oas72g#xZ7aC
z>d7;qf|XCCq;bOZR-f7T{Imr5?z|Ghu>2IEM|AK4%AN<1Ua97b6f5W`SVm7HDH@Kp
zuX+7FlgAv&1BxojCd};<q#nA}X`|{)RYRJJ;H0X7$K0Fh_*$|jQ_t+h1PkV~MQLxl
z&}KCeDEb7Z0q6P%ydr!fR2M~kIBk~zN9P8ZcBp3DHxaeQT^q$YZ2lTkiY{7wLqF|5
z(047xPJVt0NBgcvr7C{lUMA=9l<DygW+L?T8EyAq`_$6g@89+b^L}H*%vUIUJaCLf
zo)NX87=s+h*mev_nh__v6I2@d-@quLT#?87%1Xpel-qG|EQu#`FK*dRf|J$|OMTyq
z9KX0s^o<sMr@p6nkQM)$RJeGG=<|FJD|k@&nPZ*Mc?)l!o-=Xd_S|~=SYm)ss=6M7
zB>gM1a>OIlA4LTS91$ri`Ta9SJ3bJKGDBdS{Jjt)&}@h2gFP$mOf40HR&IyqRa|4>
z4H`w(g;cB;tW*(M4l&{eKv*cN>%>CP?7Ca@`!CuR3Qf*S$U@<)`iGs3D4z(BD^|xH
zBYhK{E$xU)2q`(^K~u>Mhi0N5i$fpF`VkLIhbK8gGXW9*-yz7A6e3oIP4RWPsg94y
zwagK0i2gU&kQ!psz2i#=kuQzy$|xbW(PaVo7U53lmVn4S&khBfv+U;;=kF033YV!7
zF0&1~x<CU1_$RF5K^-0o!eJV8Mvx2t$$4mo<0Nbv^<~^p){27>N$*V<`+=fMG(c;#
zgy0R$Te~~wD8H?@ZryUJS5bcJWs%3Bn*R)^d$q{svTq{jHm=z|L^umf%QgE-45ID?
z)}#J_6SX16ze1!;;1KMwjBlBl=!laAP)!1Qu-`XP{u>r-qChBW=jf%PU}Ug&Cz{2<
z=AQMe_yxhe+G}jR|8*&diR$f`L(`!q)THUOK{PSFc(0h_zQ)#WYjmJ6R<kiUwr9P?
zSNM<2iV>;LvYJk~G1m$EaJ-Irwx=Gcn}}jqO$P=@Zf^@LdDn!2Abu`j#b-p<lxyt4
zASI6t;O#ztCtf9lHyzQ#4^UpdN~a7N7H(BZ+sP)r;?=VjpsIIcR<dIw=!KN%Y7>Dl
z_GG1;)R#xy2We0!4-^3R$?&LDRB<6B@jwa6L)S{U96fG-OoSR+kJ5o6q7W!eWz9#y
zi>Dg|-GH`LEr2>4I0k&bCP=HJyr_j<j?+td(Rrvri)5c9wk&FlTExSb*y1#6d7&Jb
z2mQ)m_jz!}DDEx2{%*P?FFS_0+m2V&gFu`(?V{WQcwCdCl5#%eMtk9ZMZ~|Y;1Y7a
zOK{2O(V^ty<^WlK3p|a*_tTGg!hNaQ%A!mBzWZLw+zG^r8(B+VRo2R$C}_{HI%{d?
zv86+>XT;I%?BuujX5croha2+Xcj{5yGP0UXK4$h5*~gd99vPQg)c%};&^!qz=T{81
z@_B*p_?Fq}vD&p@bFqZ|u;M7RExy0;n%RrTEfVb)FOxn9ULdx@>9S@3Jp=kUo;xST
z*x3_Q5Q@PdKnq_z$LSElMn;Bo!Q6&gq-#`o=|uVf;Q6r9SSnN=m+=XJYit<er}_Tf
zdhoqXr?^|g{Aw7rqZHSUh|=NIj8I&E3a5r%ajlN<zbIghifda0bq-ft?Gb(}5^p#w
zYvmeZ=K+gDS9OHdiVFfH)=2X@-bF{vDs$o7G?1pD7fB0xt?E48Hgd^0jy4f9#Bt;$
zpvB?jxzkHTJ4#d$oeg6V$$o{x3w<&28H>Cr24e^?ql9_=Mj%`~jMYy3`44c7V70IO
zpevEp{+{2?8|`Sr^w}Y=NPP3Lx<?5Xc8IHDD>V^PHHmX(58f=kX>B4NL2^%t3;dJ4
z?Kw~aH}%|T_C!+*)crT)PMux7wkVW`tSV~T4H}jgpz2EyegbY0j5dHfnlc1DRO&zB
zPk~b*pXYCaMhhnAY2bYk@X-tSutrDEr{j^n7Jn${do3UwiP~Ov5%;%qJ`3&&;cYCz
zd?{d_3D61cSHtP*hYCA=^7^Xd-OS3E)Dq`S`Tg*+v%NG-=7)R}cevQg5?wH_MKeD<
z<Q^*XqUco*JoFp2?Rd}%4iyQR!o4(+sPaXa?8AOHBb%#yT4(Vc48zHB;7eXNFV&Gx
z@_S(z9wmsGacIH3^CD>75&f@vdL7yKx+ol}<+tcsk^oq^5c4G(A4NJxjTE>(XhvU6
zxrJ?Qpl^CmafeOcK;69oN_<JSQIK@Wp|#ydzmk2?z_x;c`F&Eg;<kmcnu)M7|1)9L
zf{Y|q2h+th`z-2RAI7|wq5p87I_k~t4J2WCTpiH|J?Ir#Qq4gc6S^g)g#v%NL%}6r
zX%sG3Wjq()%acQ801dKV)zU9^<)d98-V(=i?+$uP#-lK?>}I@eMd^&Pn~LpWq}1O^
zc(h4nH;wdt$|4lw!?9WMTF(}vE+0+pS3UGeP1ue=LD|hzyW^f}A>@fPKc43615pFG
z*daRi-Zxh31EblYFlt9thXrB>K?L~<6%Xo6{%9gC73n;Fmy97|$I@dQa$4#c5AR80
zS~3BRZ_^xTrGYhys|lWgsV}61hoX@|dXWX8Y-yoZPH6r;gzR2C3a5wGm_a?c^q47B
zu{?iPpDLKpAWg}?FYqjhSJ+OTk&fTX!Xg$se0?byJQ+sd%D1*kJrGyu;&lj;IJ%Q4
zUzludSeUfjzg62`;(4o%j!F!w3&}a*iUE!tKEvYc_?E0uEa{(2b%Eg07U3!v8BwI8
z;v5Xv!EQ9PLpv3Bi>3@;CcSh9`N;kwB4CZg1;B;lbbOZ|(YVgp|AG&}$oPT_2HqBE
z2j4aQ2GJL-RJPd&Ous@=Bo7ip<lI+5eUXx#;O7wIkgqpbnS<af@{FiijO!;eFCOt5
zg5Wy>JFq6O(xkDOMdbe1kLkLDNSlN`5fXI~xQCBBye+upMI?wUDM)F2&>qS7u7Xpj
zFLws$szI>Caliu2M#<r=kAcnhj{lr&J(`!aT=FOVC;5lve)8GpAYV+(03{;sFW(tr
zG`3@sZ3}lh6!*&my#KG8qFCN8v|?2p_WUJ%jYQNOBWe`a+#df@REE$|AUeut%Oce1
z+Zy)LG<e7A!g&9Xo_@B!g<>$UL=xGEo+@w=<O|11j7yQ={*UH4l9p@zQ)O0r3wp!q
zUWC8!cZ5cR`-lh6^H7s>AL*ZD%u@V+yxqS{#faMe8NqTaT~|6=+sOmJT`T!t7=Ybb
z3nE$+ERSuMFBt0ZKXf}ti%<evcu%7(HLxyoXX>+1i4~bU5xjcri~GnmYGr?BXaebP
z9Ime-a2X5@mK@`^9VeyUtg}|-Y2bCmRdH<@hWfsS@L!{QY6zZ0EC=pmwX@pAzV~6@
zV#MNmPNYu)M3MueSk2u)Aj;2u?o@oD=0DRV3YdDznkw>=O$NoaL0kF=1wI*?(hLfG
zmdd5WDexI10-w8Os%-vM@;4jkgGh^P3R7I0Wq-ZF6p08|Q>vH{_jJl81U(TN|9b{g
zl;Zw5Zawa}&+R;K8V1FPEX_432&PtROUIgqC@!tm6r;E|qtcCXZAHFuuvvcEYC`NZ
zQEM8ixLyhK7aB~X6xYmXtQU*QPn0Q9as4gIZ!(yY6xX-Wrsaw|%fP?B|0y}1Kd?B~
zd>yxQONIjRa3GHJAII5~2bRFB-`a@iIv-_PWq<xq+*y5sw>ban(X7^mNF=CDLVI6D
zaC?7(V^cH=5J_d-5z0#sMfYQ=yccSE9o&iro^E_=086D(cf%Lt4V44%5~yO~n=pJj
z7hD*U!iQSwh-E}Xc?t^MD^R*G9u84jd>h0y3XI(1TZb|nzMAw?9&zermNRfG{^1wF
zGmuK8$LXGOFu#6|&jEuwO62)V?isq~OI)BR`#%ccQ~}oBQ(Rq=5_<~?>mAd4XL;R{
zS(Ykq@Eb<lZNed)VRe+m;qbKhe(x1!A)VdlZ;iy^5juv+yequob1)h@8p&#Hf_<mS
z82`x4OGhUx{(>~SP&n=Uc#H2}U*J$l@^6jgFD{)jV?`t+lSFz^B$sX=ExIg~&ZJ;_
zr&Kzew9X~<G%D^~a{v1ahx!jnP*3+=ylLqO#}b*;?}$V?@^1;s=a%95C<*oNl1%Z6
zYddK%V(tyHX{6#RmPu=FOK_B=I2AG}(_dv%g5o~b|K(13zR|x2@j19?G{q?|?G)|8
zp@A8+4Fp<L_R2noPl~MEQD7*PJYxGs`z7kCSQSkC1QCM;bLQ{>$_2P2-Fg^Y80w!z
z*axr*jbr@Ng7~C@!-TJVfzhvno!%j>_TMZ^-t-HP--%0+!lBmd`9>M#A8%^}h&~>=
z<`nt&U;;K^LAs|Wk)mFEh%T;++BfSkPXmXiuo|lM`BQ$VQO$?Bye#SNhYqu~{>2ew
zpP}!P{HBOLY|k9>_#zNY0)4PxxRIY&cK5U?2$CNY>aZDcpT9X=h#LMQT`rwPBK`--
z(xnm3<@Z9&X8z>z<U}f_`5PtSE#%VsNW8rgT!1@<hDXt`#iy+kSw#(frs~g<AuIO`
zna{K&#RbchpVkJ)X~X`TeDd<inn3DrEJ<lp$FumJ62tz+u%KK-)ZlEy2VEZ_(YoTV
z=DC*SaKaQg$bV$XkR`5KCgld_Hq``CQ-C*^$BP<F;}q9?xirT#Mrh<%d_pdpQWdwG
z2P~r<7j&la^v#_qOL4Eo@k*9z(%IIRCgGr(i%($|BEL*C$@VAUMc^OkJGwxsDcrWu
z6k#hch1m;{{MBU>QEU1jUW9=nhxQo*W*Q{k1ZIgAwi(FoYi+HUbYlYJ#4F8DpjH;O
z6bij&2><h2{)Y$B<q`bz2PSFqoIGVky!Z$>us}@X$t%X8NIG}LxTRC8DMs@@uVu9>
zg@EURY5ujSKEP<EBJq_=N1Cz~SCnkZQC#C?6AG%PEZY<Q*JaZ^itER+>0ZV4jBJ{w
zxPQs3SBx4xL+*2s_%7p7xM?jM$kwh8wDhI1R^s2S80GkCAgbA^V%JA;D_f3V<ZJK@
zNo8HKEv2kWV@pHrXeLhTr;rMkQGkPrBy)bI$8`vG20Q3ODFFdT2Z*oR>2}xoS!BRS
z+3SOX9Svs?;I8Q-j5`YR!<*ruTQ$6~Fn_^(vGG4+;{gM!ohIJ?iZ@}y4d<;5`ANh4
zdl8<D7egNshkiv7(O`|q;Sa2wsCS9wYESdBm8t9JU`m{rA|WsGkCstdrwsNows`<W
zcB)GuVYnPDWfS$;o{o1zmFJqg?Vuo7pdug~H}nY-QzPh&-&i?DzRVMf((ueH%9{2h
z;Vcx9^%A4dN2-8`pspky;dLj16Z=AwrZm4lsy@PZ7Ny8~ez+)JR`}_nY<VV+S~XpB
zv4uykx>ugUf3|9}yoUc_)l&I`eI2W|Yr>y@yhQrxQ@nC*zA~X?X6nPXAE!RP*_Jw?
zB#K{L+qv)Dx-ePKejWU`uVuZ_;AnYDl02}j#wQWl;CByxU&r4z{6R0IbSXj7MZ&Oa
zdZqsjma<LDe}OFz;eB!tUWlg;mOoV-)=$HKgVlkGJh@TQ=-~lC!_KFJ^cDl(qrkHi
zzccWcfxoc-18g{8%QTIWtk)yC9fUYNgxG-J&L{A}DgGh`2$rPkUTNbqK_ZA?hOs8V
ze2Bkl{0%|%hzQmZ!8->C-h(kB_}BP-5r0qPF9xt>n&tlq{A38&G6+}^zz@o@9&Q+j
z`-mXeT|hhyzp40pntOj7+t1U%qXrtq-%x?61(+aLVCs`A!F~fw?YM6{k3WJP7J}9N
zFR*=hV_`+Kb-iAn5=0FCV7_!3$Y}2$;&(Ux-sI10icR?8vSk<%sP^sHq})9=J2NLU
zJ2fXOCp&9;&WzOb6^}oby69nBYW}lNm6W7rW0-%oeUyIsl&P8Q(W&?FtJ~v;W=+YO
dVtp)UYVJMv<UIQL^qic1iEmtzU)h-Y{{i0MgMt76

diff --git a/pc-bios/vgabios-bochs-display.bin b/pc-bios/vgabios-bochs-display.bin
index 3ecf92de011483ecf4943db6175ec0594a592f04..b20d67ccf54042aa2393ccac5789cce122c9436a 100644
GIT binary patch
delta 10008
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
HO~3yi2ouRe

delta 9868
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
AFaQ7m

diff --git a/pc-bios/vgabios-cirrus.bin b/pc-bios/vgabios-cirrus.bin
index 9b4ffdf45f5fa0af4dc4974f6eafa01623759ae7..ebe53366e45c62a624440488137deab00cb84c16 100644
GIT binary patch
delta 12242
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

delta 11926
zcmb7q3s{p^w)XcW0RjSFP((yPydhRZK&_(Df*9}AC`D0=dRk|P-e$BWrJbWqD9K2`
zGHrMJ>&(<sI(44Y>3FIgTSe?xE-j#T6tuP8#-g=0U&AQYj#5zg-?bBvdd`2I=l79h
zU)ElG?X}ikw;jia8pns42lC#_Q6E`qk?#NZ@pc+nFgr);{P9>ydDJg=y!ycU*cEI!
z%Vq8c=00Iz<vDswnJJXjUNtb~z`0ldGIfBvgDLx)6WviRiAN+1Sr6D#7Us@rXBjP<
zMqtSn19Nx2$x7;ac3POSCoh!A0Fd+AE$ntdsD+hmF-X=46*WHWtlZYl++S}yS8?X%
zu8MOO){|qfFf9R=+wdXV+P%kk<(L>=B9B|C?B6_E$AUXCIe9cIKHk$KN!Z*vI+_(9
zmAFEkM@GjI`Ds0D435{slwG$C;sEY0P=1O9H}_wdz`|%9H)uRst*xDRYeohSFo9NO
zkExAM)Q+;FJ-~FuH^4I4@7V2bCO5H?Pb1lCwuY@`1$7!Jg_TD+H!{~r#rYR4%VX|u
znU9erZR?o35%fwama@!1OR4ECP=Uj{O}kl1O%SW?&{AhFK$hsS%Yk{}VlNE1P48Nm
zy}U?A!)qadJr|jLjLG%H(Xx4=My=u;s4?mk=Ru88qd4D|w>2~OHSoUSL-4*lXD_S0
zq{Z4AR@<s$G8lc%?6KUnutw7^l09GoecL#;yro#jva}itS_b8fnm1WXE9eW{$v5hf
z?JdArOY(H*>}J(6mX_ACQ<vF7jO0}UP2O(S0;#z3UT5ywH<^5v_BXxDPI)YBlxg>y
z?5P^<P9`_A-$4tu?50h32#C_Newa!h4B@H-u0GgG=B~F3(0-VpA*R>;xR|R(d83xO
z&MR-!Ia{pBq+vTG>u6TerJ;$E4t&+=kJ`Xp%xJ73z7u?)_Xe`GlPv8B%V@@lS#Xnu
zW#sLkHMN&CEV!0soTBlTRy#UG!Y)hc;-G=hQM8!W1`(BP*`-%puXd|1$;_=1mp<Id
z(ryu>AUkFMBU1rhZrW}3ynF`@8g$ESE>=T0CEa@4m)n|Y{O6K#Uk9c}U~<=imz_Ja
znEQ;`Q`V)%$%J%8FV5+A?rmDF7Xozyf^aXi-K358;wroe?dQJ@jIrMkXi~aJotDJl
za}NN=VYD5)oWX9;4nr3^O!6g|d9f^`L3x>rPVWL>ou|Xn1}qUPE_SlHUK|4O@xF2J
zQ4872bv`5{Y)D*LdT-N=Q_m@Ez7HDOT*q!-Bwp^8tVw>>x${6e4qXhb>VeY9bR3My
zKM=d#^)}-IuH){Yl>tmX=Wgb&jvdVR4heWo|FS%ZSLl-lXbaka(&S0-*7HyG;|GM}
zQ18mNKvo^XJM|fZO6yqFhgwN;T$ZhYtm+Fi`P|_7Vbz%ctf)(TXB|HITfwDr5Kju3
zBiHd~LQ-VT-wY|1U+3`yrppiPTRC8YM&8P|hCLiy+o@;n=912b_~o!9eN8vZXW8nr
zd|>!Ujbk}~F#LfyN4_N4pl&rOmh#dBCQ0BJRPU%Qm<5dFTf!6V2I7<lA9)}h78NJm
z(#G7!-jx;SJ`Gc<TlGpwx@`8aPO@;-pMvH#ON9y0<pu4DmQpQq{~!j?&X!sA@m>Jx
zYgqL;>a*$^`l2B%t3KM>)-gM7g1ZTtS0nHAA-~2BeTI36xvhe1SRQRMCnSJnv67#3
zwiX<w7Z4yM7y`%&raR@n2~73!&eA3jb?tr>Ap*rv+a;EEUdZ`ySB0In5E$kR9mTS7
ze<N*I2-P7v2jMw)ja8o@g8Nf5RiFyCT}-sNpUnhGAYt}w`pBk_IrL$I`c?nJ6Rec1
zl?kI@oj_s&#btB!0bsM;M=)%qo&}$|?my%?5G8;zgUN8y>~;T8d449Vih#O+vg?Gl
z<fjO0bbquVK4e6?58qJRIad8S9ih1E3$5~c9V=<=CYMxQr_GV1Ykq0^HXJ5amo!EA
z@ZY+J`H|F7Am$`)uGw<}_YbBd($?C4@qB*5FxY;WICpQ^9R1Wjf`0H36pUs514@2b
z_VzPj(#~D$>uE@ieLWrKz^}T%oxU+xX=2}8VfQ^al?Ez2)pSL1rjX47^YxpGh(IPT
z7&{nCd^@~AaPRAFXDZIY{htv4?yvcwh*5TEs5^Tk<XKUZ2=BUCqRB*H%^gi6Z->gg
z1KBVdjixKfz||+`-%IS1Obk>s`nPglWS`J(I6+=p?|ywS?u($lA$BJ_7zh~liBq!Q
z2kP6b92EKSCcaZGu`xX`mS)epT@{Uq?|j@#VtMXpKi%$obeHEQ5#8=65RL%nishEc
z1J}JzSXUcvkB><!S#=}nhuya!?sRn%_5EGC)(!pp5Q`85+-so(V#M8pT15TCR?!;Y
zg(%Ttjh{K2X83TGkx3w2bUR6wKSPlS92<UO`Mt2%m*}|0itBaw#-+8e@uqfOlO4%h
z2ZhMnxpz=9jA3+Sre@r~_^QYSau?qfd6@tEkO%m>!4KH8yuP?dgqQWqeVmna>a4%C
zN8ua6OR0o!t#t!is5mPm??Chdt;zTdvPR-Fz?zONS*-`b-4ABZZ+d*aXlR-uMy&o3
z0Q*NC^N$$Bh@F<1{X?OBK(qWK`o585|A?+{Bu0$*(2AI^Kn?2od5~v-{zJ122=X)(
zkOc%3g&ASCH5#MV8lyG@7^4CeR}IX}nU~p*y@8|p)Ia(6L#B>+NOp8;tk1A2^5Ja0
zrD2YCpk%v+KtkN`ncaML^wQ8+m@eNy>s|g<^rFbmAkjus8`h9ko7&(l@AA9R(`LuA
zPo&D89=iC-ft)MMef#En6su`%9`Dx_zChbbwzTPNZ+Mpw$R={!H<&D<W_O3#6Ucu(
zbi8J+%KvldSos(~F?4(y#ly^fwB>uipTwd)c^(9|2pqnmuy9Mer7Snp(TRw3A`Sx%
z4B%-otK>+&EoPd0o_`jTC%gEtVGr83z~H)r)Oi{#KpX=yWZNLPP6{}8g5?@ka#?1<
zb*1p|ty*;8)J{_fqd|bug2)W<{|#1qIgkanh>)#3H`Y&7`KFlKYZUJy{!;ePl`02a
zAnpnRb87;aQq`k?E6ja^rmhfEc<Zon!w?7o*i9dBq|k6F0dk;VehVKPn>Y)|Jm3yy
zvtwI4*r0})!A6_MQl1@C>k%O~Z3zyUeaQ3LS(Q{prs3(UydrjnPNWmfv0nx*{}z!;
zsQ=pN!j=7S2$_%|LXPq%zCJ2}mqsl!H<~@qfZeqW>DDJ2OjF(gHEcvugPezzG=)PL
z*J+yERY{X_omB}m@K9IvAZGuTn=H5+ytWQAvwWV4_~@Y_af3`0n`Xm$<9h!|wDlA_
z*-P4z7$tqDDDNvZo#@2|qCS?uy&|93-FeN-?SZkV`C_Np^K1Xb=&-m=mo4D4rNPt+
zuh9pvv4fR-6NJs2HI}lR6EDPog?Y`mB(npJK}Dh96)U-9x1=u~8g~`3H9mj<7Of9K
zS_l8Pc$4O2H-9&NxaP=hek6YO&~B-u%b;w%4I@<74|aJsA3c1u;pTG>_Zysko97SD
zS+|0u)(-O_VyurX+w%7Nfj&iA(gB{Bs`>_y2AHa>V`2IBBRJ6G`(u1ZO>41+AuK8G
zA~S1y*BgOsaITjky3#XTmyl?m3=UdKbDG&9A&L6Lw-+MF+uxbdsFb9N$latjd;anr
z?e;m0RzETa-etAlX~DwF6<Fq?*pP_Y(nOLhXjb-|vAE$faNV1s3=*=mQ0avsVB}n4
zWVprgi%>hVBus-g_<$ZT8hiN9TZ0pAX;Lb7lY>G>Ibix6CyJd0XF*r6S+a$)Y6q=U
z_Mi8zxL=Gf|BC?2=7d2=rbc#HK%VLb@F|?0xlUVkC=)yqYDqUWB0vngDq<(S?eE?Z
z{kpK@?$hj4x2Pz%E>dh)19Nnr#7F*%&9n5FuBeN8a8V{xjp5av0A4)8WSB`&^(t=$
z5WtrIXD2^B;y3c&dBMm><qf=g<fEE}ojiKfa!trhzF|~qVwuSRaw%W1MPf-bI=GdY
zI3@gWc|6qmyyD!!504sW*Y@~ig^MkNKZwF{eS-v_+a+rd6qv3V$-?#n3vRHuZ9t0-
zJSVK>!yQmWMD^JrxCaP_Ah8?Fb;~*w+y=y1=Kji3Zu;ToU)aO2!Fe9<WikQ1P5{*d
zK4WYs-!M8#)7-&JN3Ybpd;<p<x?+W;tUzxmEx3vAP<)G{82YrUd=`$-W8DOC_COPc
zJI`AqOIwiFz$mQg#jcL%!C6TU51eQ6d9x?sHZK?xmk3;L8(jvfw1D87n53Q_3;ksc
zb;Jb}UdE^95B1StjwHzE2eX5MhqZ}i;Z9t^;}|>wfxB;JoY(|o-No;WG1_x(vT?_7
zTfpOr6R@SXl!_)vtVdGWW!DN7RrVmi>9u}k;g3lukwidDZOqkU3ujNtFsDx@pd7W_
zyZObLbgpsrsH>olYj(p@mIuy|Dm>Cn45dDjK`gVBDZ&(EEvhiEJU95o#Hb9hhTtOw
zya4Ql1Mb^ru$_RuhxwU1z#Q3Yt+{FJ>{$C*mgT+PCqb(I^aVEjow2j+e?-*OcdANa
zQG=xnahv<bwAxJz;ogy(S;`h^$l{Y^a7@HRIMHoUj;JwvzNcM7*^`*V{{(`_#VKx+
z%}B$1P8U)2GV2hcx<^4to4&L*+ftg>)u-o`kI|jRnkMparaQoh({=ex&m9=?fF1;S
zWjVN(d3V9iJ7!PjkGv){l2<2<wJ$QbZoyH<0_Sz>JWEBk26h9%4jg|;qr4L_>~)Pb
z9AoowJ~0S44FQzqz&8mi-i|Fc(8YyS?!Z3Rz5hiicMO_8U`t5R)ZRZNdi7?%9zT{H
zVaIk}Y*!yDatl3FU2@ha&Wjr37+W;iIXyTGfCkXhfP|mS$_S<$u2J9AI670UsVF{$
zK=lsiP@MynyPD>mY%b7*gUt5QqwsjF<a#P||K#{7__@D(6;zaL#|Tv_p|XDgU3GLm
zZA0vS1KZTfJF#{-qMWB~2rU~l=tZ$l$nJWf{>L4i>lNq!k?fg{&J@LYNVZ2hI>#uk
z0UB0C1xd5#v(xH85SFhvt0YI~<BF>tygN&nbvU7NSZntD@wD284K^V?knQ$aj?N8=
z>lmQE22>+Kl@DW8sRG;cr&-nWqV>zu6#I)h5W-BeC(et@sJ;t4HtS?Z=kwM@>Q;E6
z@&OQpvj&xrl6svNQEt7SxsJRL#;PU=G-FS*+b~&8-ob#yf$TpykMsvNdou2*xs*oJ
z8D6i2T8UD{0BS(Vz-L5;oz9ciC;bHLL9ly^2k2JoU=Xb9{HoG{i0+K97za<Kv+CGv
z?=3d&E8PAUvAH`Bk!zFL?%Dn&Lzr5gcg1@ZU#K+G>9W4}wZ(b8^ZW6}w^acwi|~cD
z-agFDh|)noKjfYnU$RC0aidLv^fxLR1s?A+%>Cd!q0g0#n{2C@FIn`7K?uxQV})bC
z@de9<VQ}As5_qTZwB*RNI8sC0J(_9jm4EdYz-`l$vK)hFfk;ts!EsG`brAnma(vLQ
zmyw#B=C3DD33^Gif6tqfGlKpm+N-!>LSj&dXiwlXClttc`5z|aY8GGQ?Gq;319EBc
zLtQ9L=lc({y4BALR7#yai2dr>%=P(_R5YB;bS{^qXNM3CWDDB5q0Cw&Fs@9EIt&`S
z4%24Om))!|O5pvj6RxGWYb457&jzEhzfh8%8^H=2z-m@lnkNm$SGoZGTc<E$B}aSI
zZTzn(vy2%R*-BR2jqp{n$8KwaN2(#qh8VE=^)<9j^hLG`5!HEEm39qct!iIBTZ7^$
zPo5YZ^~nW)rNcvpvMN%j>wEiFO^lU;DmM~_^L$HcLQv*Y)cy_MmHMb=+eWTQ%ZdDV
zl+O+z9desm;ixyEfO(*SKb}^spS4h`sD%`GTiUvTO~?Cu+dGSaV#-&1P5LvMO3weD
zK4eV_qOR`^)+yMWT6)`pZO2&cHwJdF^0yQ@p_&(bR;2jhp|Ur5+Yuxy23B2J48suG
z*8`mZJ;{QP_ErPvFsNYq5^3FQlXc1|vnTa5j2fxGC;K#iY|@`X?O&4IXyCOkdBp5N
zJaO{e#W0QatT1y2F@LS#`nexT@T{;Ek2|dJMKRX!BgIXua2kZk3b%=|zy1hetPwZq
z(CrlV_TKHhYI0gq&Gw8s+emCfuI4(c?hcitf8uSZj>bc_H3^#IKitkErVN|8U0_Q5
z5qPQsU+Y0KaPIovz-#QVuW0x~n{l93VTHQ{SkFziTCLTw!jq!g&YzevL)p8Xs`oCZ
zcs~KweN!fBoEy1k%FNhp8(EbB5>9-_u~E=R!fO}cU-PU7=gJZ<eK5{m1I+<Hsd^88
z%HEL}MZumOG<=9A=?-|H)p$NZ!HjY`Cv4Y$E5fc9KBTyTG@CA?tqpooHQHCEy-g+C
zM6@mLoU0^g;CqE2E%ws9Z>jSDbxQNDKrz0RY~zSgu(F9L$->87Wed^DmA$iZ&63&7
z8YFazYfF#XMUO&`aag<UXhj_eL?GENGCi>p14vyV3z7TH#~1>KZ8=vFR$hhMyn+EG
z8+A5izv)|116g^5zc)2OTb_57AD{ZhFbRki7lI?YEo2KV?5UjgWJ}4x1peZ*q_E2E
zlt9&9Hn6JKmhyeml4TEXoi-#gBd`5A1wK6%>h(2~e}Y;5o`+{74Y~x;p~?jES)oUW
zF_bUJSU5WI5xQ`Pu9KRHqr>JVy5p<v;Xk^RAIKOH(a|lY1u+m7lupf97+kd3;&|R5
z7uk5`^n}nyEM-d#7RL(_l63@sdiwCO-r<(=tjL)?WUoZBTSt{x+#pm<slIvL(wG&y
zMB**elkNWqP`2Kc=wU1kt?wkN!8l}k96O^!(BQHlh(|fsQoe!scEGHwXkZ70nL&(R
zX1ad!Jq%PWH|1tgrBOp230okIo~`p=;i@d0)~|8|G&>OLS-Md)`KB2o?a<s>uK`O|
z4P=M%e8A^f@G*i|6~zt}-ZvD(4sGrmI!jOs<5_WCHw4BGy+n65?TB|BH0wI-^5;7B
zDIK*#6zA5!qQTS*Qk*=18hXW<6*xp?LDVrQ&gTNDF<5b)3sjf#@y3xcbww8_NXV#r
zZVal`2J3M4)Y)Wc_a73t#W+H4=5FJt^b$~G_I%tXtcJVYaRpBfU$uZPq(umg1|eK6
z{0{-MqYZa|t@<jzXpGW0Hu76WlRT0eXO0N0{t7JminE!|5kGoMGOet*f!=IU$AV7Y
zMm4Je6n-aL$+mu{wa%n3$u{4AY0ESHZ*?=Jy^3pd0IM1crl>Cj?A6m{h-KBHG*UH#
zMjsDgwbvk3+<qOgF0IEK3&}XwZ$!8uhDA6~b%-XBU*OS)*7;pyakm4Vq7YQlWqi)X
z+n`8uao4C2t)*`$h==x#_IvG~oz#oNNAA8$vu4Qlj|5XTsxYmq{d$&(J5<MtFG~<-
zZ?(AXpO{2ts&rnQrD0y|64kBki`U<-CX0nh_dI%XN1=%oHVU*cD#=5jRVPs#Ctj%!
zn1v$GH(1K@AEgBCz=mjcyP+LSR$Ly918<;P@tCRXulH5{+gZs~yjULBm^~|xlQk`^
z*ErAH{)~6%z`l*WzZdBH1>$(h`d8+7P0Sa3WR_8`;%l=~$hH19Yxp4h4?ttxrJk29
zjhVQIYOIFWX2pgUpp*m;hEQ$dNv>us8<d5l7y(E|x4IZ!AL9?6<PXnIk^^|r?6km1
zGCQ~{kH0@VMShF_WA=D?6A#WFmcHVy@1$j!21Hqb-A&d6@2Zqa#|A{O%Tg+fH+0w7
zP}wAAG-evKvYN=3XD6+7Yyi6tl1O_?{p$Dh04u;^m&o3k?BI?(lKwtug_tmV-k_k*
z2O-H`MA#FtUL>l}DWN>#X;f|LgtJbv7ifzfGX^ToWKB^rS)9dk(O|MSBZR$~C{vR1
zk))mvqk^zmHU=op=VkTtFk>)$kfum6;@)=1MqJt;jrviTF+_2_h}zfB3dBP$8V4#)
zV{lQ1QBj=n+M<!hFvY3W8pD;<u9w0@YF3tQ=r1YnH%46jQCee!;(R$kEeJCXQ=GFx
zvELxY*)YHuqc~dzsB^=Nv5M0hYFwhYrib0XEB|87TKjcG?8<@c=>EuSKSkymfo%sP
zrHxdNO7|3Z9lT>U@-bz9c7)k;>jZj{>K{Yd!DKRF)tkXUA@zOVSsJq=!Su%LXz>Xz
zk2c<eR4a1$)v=DQAZ6<lq3iolmp_O?$1TOVJQT>g@QVT14oZW+MT`Wmd7uHNDG&9`
zihuSlfgJHx>5h7sN<F3V$bpxk5>R+ST%^t4h`^L8H%ob&DLU!=X`d0GWaucBH2a@;
zCkp1iBSrAUxl<yF&Y;4g?Elo800(dO#GmF*&y63{L1*i~Ea(E?Id_IR{xjcmI?A9h
z1ZP<_g)}f9h%G-8!K}{aQQJa95G*u|?nTUJ;`NiJT0-!ACHQv+)9MF2Y2NU`Pn;&f
z<ciy#9c}i6ex)`C^0o6O*w=+XEU~0Ad2&$!DcCisXgaySN~vftDWp^CZc<zsB5KHu
zP!Ex>bUh%tiwp=@QE|Vd_a%|)BAHaRULt+^QG%knWTXW2;HkbN8KV{F??~g}UJ7L6
z5XD(2&m<MQ3ze5i%gSWZypLq#P{nnm@7by}+n`nl3!WN`k;>NhMLRdbJB=@$AD8=j
zy*RtUb`>vbNV9!mo7l8Jd!NB;3#1}2JQ8g746cVIj!+j6vICnUE#(OK{V&U%e9!#o
zxJz|}uXL_K9T<F{sGOhjCl|y<M}4Z6pf-{lVY!uUkP!seUJk+@M|s?W=!_e6i0)85
zB=MO&Pu5XAJFoqD9f0V;Lh)rIYW)4$^9%mOg1Ct{>)1*)A3vqaMm`{3+|-5oUSt7v
zHJ%_}Z4$Qv*ni|7Etoi^ww@gf6_S4*PEP$gNJtizBuOrsK@$Ck2y-;T%=}46b&i&s
z7sd{wghOqTNDH#$qM0PU9tqaK6?Sjl>^b>2aSN*GcM)o;3{kkI$vkdRY@{!h`h$O-
zPOSdK!xxU%coX;wi((Tg+cA4)iFx%jyaoxv{|tfGO8Qm8b@echT@)8csJw^xLyMB-
z6a48#<1&0}-}>0MH$8Xtmul-_<0xTA(~Tn(=S|5tQgOz}#sp*t{P?2b_O<}yXvH~Q
zHl`}Be7Hcmmqwj+by2KQW6i=#+dTM)M5Anb3ig3g6+9Aq6O4h@dBz}XjxoTNi?p-)
zRU&FdFT`eCM+CthgLe*1ifnDVXyKUN)ZSKcounJ#9VxoBKAKvuP%E5VbdRts)!e;!
ztUQK)uy~BJ=|ghYYKKlNDduT8(fsb>5KZN8sc8@|eaHj7fA*ooV1oUQ@JLx;pjwEE
zdNy31;vOg)f3G+{kl<uqQk*WSXpqriU1Tg)T&mA*%IadB(WSV~A&YvOf=`@fv+<9L
zvle&WSV?!@__pFYM9>B)T#eTm-&b6C3uwrWl~scdrSwDK!QQd_(;UMpO3#f|^gEdh
zv@CAa{%Dz`UO-)HlMnD3o83mQa}<LCOWYpy6VX<yv}DQGW#ThBJwp96vL8fgC9QU|
zXHpHH`tVr0RZH6jsZVR!!RN(s$B=q2)*2@%&iQgtmN89nCdha_HCP{qoSoYxwOlr)
zD=rsIi1_6MIX!m!Bx^w#oo-+2UH=a#@H(xokd0FmC-nJ2#W_tjPF7qwa<5lNEQ?Cn
ziYqQilCij3?YZZ`%A+1fM+-As-1(uFeiNjX_@#%3$-DX8hgaywfLP=>XZfQ`;xyi8
z`Q|0V<s@FaWYXL=ag6sNH7~r~1=0HmJ>l&xU7+(0R6jy^^SPM%n8f=AML_*kKZj2@
zj}2NRHu-`Vnnxs=u;OE}LP9*Nj*;=epz%L29LUCR0+9~W0|WoS92Hkd>Ao)wrZM<G
zdS_+sAOX>89wA@jnx%>O9Je%e`m<yub4B2|2yXzmMkw$C8`(~Z9y_1}wj86TXhFZA
z(PlJzCUf`F_?W$dDif%>?+~MT?b0-j!NZf6J&2!8jbAoZ9>pJDHeOS;oxiedk^J7i
z3(FR2dD8N)H0%|AWBI6%SCFBX;?J>$$FGPA&O~!P{v<wg#gLGi0$<Njz}KvZ>fe2l
zVEwZa-$}5K`e7gChiTH^mH0na4C&XqOTE>-o5bZ~;VS>aReV-HHo4bbLtQ_tV>N#<
zA87rv*prs7^e<h>57VT-i#_wPOJDCUfuh_-2Xo}_i(mQIFni`NC8-AIOhT!OewiDJ
z?~W(&GY|Yh1EnNssH6+VwX5op{x?|4f6V^_tOs}q@8|gL#S6Xbg|+_-@&5#@0~wie
zlcdqZQh^BRS3ZK9fbel3+KulW_}hlRfd3EJK)^aQqnaf7KE$Pd#82ZpAAgJa4a*>V
zjelDr5!DPS72mP=GvF@_nK_ZDBTSX|NDRdsk=Xu(BwfH?GycK>>(Kmn*v~OXuzUN#
zDgt(mEbGI;Cm`-6f`H!v@ay<?;Exa+{J=Ur94TOXh1DPSX+La)fNce02=+eMZ-Cbf
zIHMnSpn$cv%DVprxEJvtSP0^T-p>gtfMUHg4an$pvG~^G?@pm4J&B0~ZNBFJg|`(j
zy?E{Wik}!Tab#LbdP-VCdTM%F>eTdU2}#R-u|8q`zgZKqpZ(RQO$lk3=I`$qrk^@t
rQVM%~(iGmZBRV2=Lh1y|`t(T|Q>LUp{)?&U>H9i&1j>BF+RFb6=EVq+

diff --git a/pc-bios/vgabios-qxl.bin b/pc-bios/vgabios-qxl.bin
index 8a27dac557290e9ad4abcdbecc757d4aac3e623a..4b5573a85781bc86bad592e4efb5a37da996e260 100644
GIT binary patch
delta 12577
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
UOk;OtKf;%9{lf=GA5NG5FZr~EZU6uP

delta 12255
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
APyhe`

diff --git a/pc-bios/vgabios-ramfb.bin b/pc-bios/vgabios-ramfb.bin
index ec9541cfb48f44bd3800308fff1c3ce78ef991fc..d458ec7436429c834400cca56b90a23322df3f07 100644
GIT binary patch
delta 10113
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
Y9>~tmV>5H^=f5fYE$=A4h`-wZ1v~o&X#fBK

delta 9975
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

diff --git a/pc-bios/vgabios-stdvga.bin b/pc-bios/vgabios-stdvga.bin
index 55390c45c9252ade6af86d139ae1044221488722..797e1036c98532323cec8cdccc9d51314ec2ac39 100644
GIT binary patch
delta 12577
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
U8oMj|5x#u$A3i+taJu||0l~n9SO5S3

delta 12255
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
AIsgCw

diff --git a/pc-bios/vgabios-virtio.bin b/pc-bios/vgabios-virtio.bin
index 2334733a75509e00a39d99f19ef8297585ff99ca..3f8fe9de13bb42cb77995cd78930f16fbf87d4c3 100644
GIT binary patch
delta 12577
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
U)7f2FkMI@S{_w%khtuT$3!6EGQUCw|

delta 12255
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
AGynhq

diff --git a/pc-bios/vgabios-vmware.bin b/pc-bios/vgabios-vmware.bin
index b668ac04a67c22497901c3a8d0f1c1120b231b74..d5f263a9f74a07be5d02efaa44aa21e98869c68f 100644
GIT binary patch
delta 12577
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
U)7f2FkMI@S{_w%khtuT$3&rPz^#A|>

delta 12255
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
B&es3{

diff --git a/pc-bios/vgabios.bin b/pc-bios/vgabios.bin
index a924891ea58e0f6a98e8ea0ec31e611f73907654..d26af416ced07e63ba5418dc4065e7c11fc1b9eb 100644
GIT binary patch
delta 12426
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
ZoBhbNyxHu|+=uzI+kW@H{sDvde*vahLtOv>

delta 12085
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

-- 
2.38.1


^ permalink raw reply	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 03/51] replay: Fix declaration of replay_read_next_clock
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 01/51] update seabios source from 1.16.0 to 1.16.1 Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 02/51] update seabios binaries " Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 04/51] hw/display/qxl: Have qxl_log_command Return early if no log_cmd handler Juan Quintela
                   ` (48 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Philippe Mathieu-Daudé, Wilfred Mallawa,
	Pavel Dovgalyuk

From: Richard Henderson <richard.henderson@linaro.org>

Fixes the build with gcc 13:

replay/replay-time.c:34:6: error: conflicting types for  \
  'replay_read_next_clock' due to enum/integer mismatch; \
  have 'void(ReplayClockKind)' [-Werror=enum-int-mismatch]
   34 | void replay_read_next_clock(ReplayClockKind kind)
      |      ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../qemu/replay/replay-time.c:14:
replay/replay-internal.h:139:6: note: previous declaration of \
  'replay_read_next_clock' with type 'void(unsigned int)'
  139 | void replay_read_next_clock(unsigned int kind);
      |      ^~~~~~~~~~~~~~~~~~~~~~

Fixes: 8eda206e090 ("replay: recording and replaying clock ticks")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
Reviewed-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221129010547.284051-1-richard.henderson@linaro.org>
---
 replay/replay-internal.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/replay/replay-internal.h b/replay/replay-internal.h
index 89e377be90..b6836354ac 100644
--- a/replay/replay-internal.h
+++ b/replay/replay-internal.h
@@ -136,7 +136,7 @@ bool replay_next_event_is(int event);
 /*! Reads next clock value from the file.
     If clock kind read from the file is different from the parameter,
     the value is not used. */
-void replay_read_next_clock(unsigned int kind);
+void replay_read_next_clock(ReplayClockKind kind);
 
 /* Asynchronous events queue */
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 04/51] hw/display/qxl: Have qxl_log_command Return early if no log_cmd handler
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (2 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 03/51] replay: Fix declaration of replay_read_next_clock Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 05/51] hw/display/qxl: Document qxl_phys2virt() Juan Quintela
                   ` (47 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Philippe Mathieu-Daudé, Marc-André Lureau

From: Philippe Mathieu-Daudé <philmd@linaro.org>

Only 3 command types are logged: no need to call qxl_phys2virt()
for the other types. Using different cases will help to pass
different structure sizes to qxl_phys2virt() in a pair of commits.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221128202741.4945-2-philmd@linaro.org>
---
 hw/display/qxl-logger.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/hw/display/qxl-logger.c b/hw/display/qxl-logger.c
index 68bfa47568..1bcf803db6 100644
--- a/hw/display/qxl-logger.c
+++ b/hw/display/qxl-logger.c
@@ -247,6 +247,16 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext)
             qxl_name(qxl_type, ext->cmd.type),
             compat ? "(compat)" : "");
 
+    switch (ext->cmd.type) {
+    case QXL_CMD_DRAW:
+        break;
+    case QXL_CMD_SURFACE:
+        break;
+    case QXL_CMD_CURSOR:
+        break;
+    default:
+        goto out;
+    }
     data = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id);
     if (!data) {
         return 1;
@@ -269,6 +279,7 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext)
         qxl_log_cmd_cursor(qxl, data, ext->group_id);
         break;
     }
+out:
     fprintf(stderr, "\n");
     return 0;
 }
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 05/51] hw/display/qxl: Document qxl_phys2virt()
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (3 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 04/51] hw/display/qxl: Have qxl_log_command Return early if no log_cmd handler Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 06/51] hw/display/qxl: Pass requested buffer size to qxl_phys2virt() Juan Quintela
                   ` (46 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Philippe Mathieu-Daudé, Marc-André Lureau

From: Philippe Mathieu-Daudé <philmd@linaro.org>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221128202741.4945-3-philmd@linaro.org>
---
 hw/display/qxl.h | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index e74de9579d..78b3a6c9ba 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -147,6 +147,25 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL)
 #define QXL_DEFAULT_REVISION (QXL_REVISION_STABLE_V12 + 1)
 
 /* qxl.c */
+/**
+ * qxl_phys2virt: Get a pointer within a PCI VRAM memory region.
+ *
+ * @qxl: QXL device
+ * @phys: physical offset of buffer within the VRAM
+ * @group_id: memory slot group
+ *
+ * Returns a host pointer to a buffer placed at offset @phys within the
+ * active slot @group_id of the PCI VGA RAM memory region associated with
+ * the @qxl device. If the slot is inactive, or the offset is out
+ * of the memory region, returns NULL.
+ *
+ * Use with care; by the time this function returns, the returned pointer is
+ * not protected by RCU anymore.  If the caller is not within an RCU critical
+ * section and does not hold the iothread lock, it must have other means of
+ * protecting the pointer, such as a reference to the region that includes
+ * the incoming ram_addr_t.
+ *
+ */
 void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id);
 void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...)
     G_GNUC_PRINTF(2, 3);
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 06/51] hw/display/qxl: Pass requested buffer size to qxl_phys2virt()
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (4 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 05/51] hw/display/qxl: Document qxl_phys2virt() Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 07/51] hw/display/qxl: Avoid buffer overrun in qxl_phys2virt (CVE-2022-4144) Juan Quintela
                   ` (45 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Philippe Mathieu-Daudé

From: Philippe Mathieu-Daudé <philmd@linaro.org>

Currently qxl_phys2virt() doesn't check for buffer overrun.
In order to do so in the next commit, pass the buffer size
as argument.

For QXLCursor in qxl_render_cursor() -> qxl_cursor() we
verify the size of the chunked data ahead, checking we can
access 'sizeof(QXLCursor) + chunk->data_size' bytes.
Since in the SPICE_CURSOR_TYPE_MONO case the cursor is
assumed to fit in one chunk, no change are required.
In SPICE_CURSOR_TYPE_ALPHA the ahead read is handled in
qxl_unpack_chunks().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221128202741.4945-4-philmd@linaro.org>
---
 hw/display/qxl.h        |  4 +++-
 hw/display/qxl-logger.c | 11 ++++++++---
 hw/display/qxl-render.c | 20 ++++++++++++++++----
 hw/display/qxl.c        | 14 +++++++++-----
 4 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index 78b3a6c9ba..bf03138ab4 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -153,6 +153,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL)
  * @qxl: QXL device
  * @phys: physical offset of buffer within the VRAM
  * @group_id: memory slot group
+ * @size: size of the buffer
  *
  * Returns a host pointer to a buffer placed at offset @phys within the
  * active slot @group_id of the PCI VGA RAM memory region associated with
@@ -166,7 +167,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL)
  * the incoming ram_addr_t.
  *
  */
-void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id);
+void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int group_id,
+                    size_t size);
 void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...)
     G_GNUC_PRINTF(2, 3);
 
diff --git a/hw/display/qxl-logger.c b/hw/display/qxl-logger.c
index 1bcf803db6..35c38f6252 100644
--- a/hw/display/qxl-logger.c
+++ b/hw/display/qxl-logger.c
@@ -106,7 +106,7 @@ static int qxl_log_image(PCIQXLDevice *qxl, QXLPHYSICAL addr, int group_id)
     QXLImage *image;
     QXLImageDescriptor *desc;
 
-    image = qxl_phys2virt(qxl, addr, group_id);
+    image = qxl_phys2virt(qxl, addr, group_id, sizeof(QXLImage));
     if (!image) {
         return 1;
     }
@@ -214,7 +214,8 @@ int qxl_log_cmd_cursor(PCIQXLDevice *qxl, QXLCursorCmd *cmd, int group_id)
                 cmd->u.set.position.y,
                 cmd->u.set.visible ? "yes" : "no",
                 cmd->u.set.shape);
-        cursor = qxl_phys2virt(qxl, cmd->u.set.shape, group_id);
+        cursor = qxl_phys2virt(qxl, cmd->u.set.shape, group_id,
+                               sizeof(QXLCursor));
         if (!cursor) {
             return 1;
         }
@@ -236,6 +237,7 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext)
 {
     bool compat = ext->flags & QXL_COMMAND_FLAG_COMPAT;
     void *data;
+    size_t datasz;
     int ret;
 
     if (!qxl->cmdlog) {
@@ -249,15 +251,18 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext)
 
     switch (ext->cmd.type) {
     case QXL_CMD_DRAW:
+        datasz = compat ? sizeof(QXLCompatDrawable) : sizeof(QXLDrawable);
         break;
     case QXL_CMD_SURFACE:
+        datasz = sizeof(QXLSurfaceCmd);
         break;
     case QXL_CMD_CURSOR:
+        datasz = sizeof(QXLCursorCmd);
         break;
     default:
         goto out;
     }
-    data = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id);
+    data = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id, datasz);
     if (!data) {
         return 1;
     }
diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c
index ca217004bf..fcfd40c3ac 100644
--- a/hw/display/qxl-render.c
+++ b/hw/display/qxl-render.c
@@ -107,7 +107,9 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl)
         qxl->guest_primary.resized = 0;
         qxl->guest_primary.data = qxl_phys2virt(qxl,
                                                 qxl->guest_primary.surface.mem,
-                                                MEMSLOT_GROUP_GUEST);
+                                                MEMSLOT_GROUP_GUEST,
+                                                qxl->guest_primary.abs_stride
+                                                * height);
         if (!qxl->guest_primary.data) {
             goto end;
         }
@@ -228,7 +230,8 @@ static void qxl_unpack_chunks(void *dest, size_t size, PCIQXLDevice *qxl,
         if (offset == size) {
             return;
         }
-        chunk = qxl_phys2virt(qxl, chunk->next_chunk, group_id);
+        chunk = qxl_phys2virt(qxl, chunk->next_chunk, group_id,
+                              sizeof(QXLDataChunk) + chunk->data_size);
         if (!chunk) {
             return;
         }
@@ -295,7 +298,8 @@ fail:
 /* called from spice server thread context only */
 int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext)
 {
-    QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id);
+    QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id,
+                                      sizeof(QXLCursorCmd));
     QXLCursor *cursor;
     QEMUCursor *c;
 
@@ -314,7 +318,15 @@ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext)
     }
     switch (cmd->type) {
     case QXL_CURSOR_SET:
-        cursor = qxl_phys2virt(qxl, cmd->u.set.shape, ext->group_id);
+        /* First read the QXLCursor to get QXLDataChunk::data_size ... */
+        cursor = qxl_phys2virt(qxl, cmd->u.set.shape, ext->group_id,
+                               sizeof(QXLCursor));
+        if (!cursor) {
+            return 1;
+        }
+        /* Then read including the chunked data following QXLCursor. */
+        cursor = qxl_phys2virt(qxl, cmd->u.set.shape, ext->group_id,
+                               sizeof(QXLCursor) + cursor->chunk.data_size);
         if (!cursor) {
             return 1;
         }
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 5b10f697f1..231d733250 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -274,7 +274,8 @@ static void qxl_spice_monitors_config_async(PCIQXLDevice *qxl, int replay)
                                           QXL_IO_MONITORS_CONFIG_ASYNC));
     }
 
-    cfg = qxl_phys2virt(qxl, qxl->guest_monitors_config, MEMSLOT_GROUP_GUEST);
+    cfg = qxl_phys2virt(qxl, qxl->guest_monitors_config, MEMSLOT_GROUP_GUEST,
+                        sizeof(QXLMonitorsConfig));
     if (cfg != NULL && cfg->count == 1) {
         qxl->guest_primary.resized = 1;
         qxl->guest_head0_width  = cfg->heads[0].width;
@@ -459,7 +460,8 @@ static int qxl_track_command(PCIQXLDevice *qxl, struct QXLCommandExt *ext)
     switch (le32_to_cpu(ext->cmd.type)) {
     case QXL_CMD_SURFACE:
     {
-        QXLSurfaceCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id);
+        QXLSurfaceCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id,
+                                           sizeof(QXLSurfaceCmd));
 
         if (!cmd) {
             return 1;
@@ -494,7 +496,8 @@ static int qxl_track_command(PCIQXLDevice *qxl, struct QXLCommandExt *ext)
     }
     case QXL_CMD_CURSOR:
     {
-        QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id);
+        QXLCursorCmd *cmd = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id,
+                                          sizeof(QXLCursorCmd));
 
         if (!cmd) {
             return 1;
@@ -1456,7 +1459,8 @@ static bool qxl_get_check_slot_offset(PCIQXLDevice *qxl, QXLPHYSICAL pqxl,
 }
 
 /* can be also called from spice server thread context */
-void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, int group_id)
+void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, int group_id,
+                    size_t size)
 {
     uint64_t offset;
     uint32_t slot;
@@ -1964,7 +1968,7 @@ static void qxl_dirty_surfaces(PCIQXLDevice *qxl)
         }
 
         cmd = qxl_phys2virt(qxl, qxl->guest_surfaces.cmds[i],
-                            MEMSLOT_GROUP_GUEST);
+                            MEMSLOT_GROUP_GUEST, sizeof(QXLSurfaceCmd));
         assert(cmd);
         assert(cmd->type == QXL_SURFACE_CMD_CREATE);
         qxl_dirty_one_surface(qxl, cmd->u.surface_create.data,
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 07/51] hw/display/qxl: Avoid buffer overrun in qxl_phys2virt (CVE-2022-4144)
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (5 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 06/51] hw/display/qxl: Pass requested buffer size to qxl_phys2virt() Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 08/51] hw/display/qxl: Assert memory slot fits in preallocated MemoryRegion Juan Quintela
                   ` (44 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Philippe Mathieu-Daudé

From: Philippe Mathieu-Daudé <philmd@linaro.org>

Have qxl_get_check_slot_offset() return false if the requested
buffer size does not fit within the slot memory region.

Similarly qxl_phys2virt() now returns NULL in such case, and
qxl_dirty_one_surface() aborts.

This avoids buffer overrun in the host pointer returned by
memory_region_get_ram_ptr().

Fixes: CVE-2022-4144 (out-of-bounds read)
Reported-by: Wenxu Yin (@awxylitol)
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1336
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221128202741.4945-5-philmd@linaro.org>
---
 hw/display/qxl.h |  2 +-
 hw/display/qxl.c | 27 +++++++++++++++++++++++----
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index bf03138ab4..7894bd5134 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -157,7 +157,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL)
  *
  * Returns a host pointer to a buffer placed at offset @phys within the
  * active slot @group_id of the PCI VGA RAM memory region associated with
- * the @qxl device. If the slot is inactive, or the offset is out
+ * the @qxl device. If the slot is inactive, or the offset + size are out
  * of the memory region, returns NULL.
  *
  * Use with care; by the time this function returns, the returned pointer is
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 231d733250..0b21626aad 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -1424,11 +1424,13 @@ static void qxl_reset_surfaces(PCIQXLDevice *d)
 
 /* can be also called from spice server thread context */
 static bool qxl_get_check_slot_offset(PCIQXLDevice *qxl, QXLPHYSICAL pqxl,
-                                      uint32_t *s, uint64_t *o)
+                                      uint32_t *s, uint64_t *o,
+                                      size_t size_requested)
 {
     uint64_t phys   = le64_to_cpu(pqxl);
     uint32_t slot   = (phys >> (64 -  8)) & 0xff;
     uint64_t offset = phys & 0xffffffffffff;
+    uint64_t size_available;
 
     if (slot >= NUM_MEMSLOTS) {
         qxl_set_guest_bug(qxl, "slot too large %d >= %d", slot,
@@ -1452,6 +1454,23 @@ static bool qxl_get_check_slot_offset(PCIQXLDevice *qxl, QXLPHYSICAL pqxl,
                           slot, offset, qxl->guest_slots[slot].size);
         return false;
     }
+    size_available = memory_region_size(qxl->guest_slots[slot].mr);
+    if (qxl->guest_slots[slot].offset + offset >= size_available) {
+        qxl_set_guest_bug(qxl,
+                          "slot %d offset %"PRIu64" > region size %"PRIu64"\n",
+                          slot, qxl->guest_slots[slot].offset + offset,
+                          size_available);
+        return false;
+    }
+    size_available -= qxl->guest_slots[slot].offset + offset;
+    if (size_requested > size_available) {
+        qxl_set_guest_bug(qxl,
+                          "slot %d offset %"PRIu64" size %zu: "
+                          "overrun by %"PRIu64" bytes\n",
+                          slot, offset, size_requested,
+                          size_requested - size_available);
+        return false;
+    }
 
     *s = slot;
     *o = offset;
@@ -1471,7 +1490,7 @@ void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, int group_id,
         offset = le64_to_cpu(pqxl) & 0xffffffffffff;
         return (void *)(intptr_t)offset;
     case MEMSLOT_GROUP_GUEST:
-        if (!qxl_get_check_slot_offset(qxl, pqxl, &slot, &offset)) {
+        if (!qxl_get_check_slot_offset(qxl, pqxl, &slot, &offset, size)) {
             return NULL;
         }
         ptr = memory_region_get_ram_ptr(qxl->guest_slots[slot].mr);
@@ -1937,9 +1956,9 @@ static void qxl_dirty_one_surface(PCIQXLDevice *qxl, QXLPHYSICAL pqxl,
     uint32_t slot;
     bool rc;
 
-    rc = qxl_get_check_slot_offset(qxl, pqxl, &slot, &offset);
-    assert(rc == true);
     size = (uint64_t)height * abs(stride);
+    rc = qxl_get_check_slot_offset(qxl, pqxl, &slot, &offset, size);
+    assert(rc == true);
     trace_qxl_surfaces_dirty(qxl->id, offset, size);
     qxl_set_dirty(qxl->guest_slots[slot].mr,
                   qxl->guest_slots[slot].offset + offset,
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 08/51] hw/display/qxl: Assert memory slot fits in preallocated MemoryRegion
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (6 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 07/51] hw/display/qxl: Avoid buffer overrun in qxl_phys2virt (CVE-2022-4144) Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 09/51] block-backend: avoid bdrv_unregister_buf() NULL pointer deref Juan Quintela
                   ` (43 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Philippe Mathieu-Daudé

From: Philippe Mathieu-Daudé <philmd@linaro.org>

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221128202741.4945-6-philmd@linaro.org>
---
 hw/display/qxl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 0b21626aad..6772849dec 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -1384,6 +1384,7 @@ static int qxl_add_memslot(PCIQXLDevice *d, uint32_t slot_id, uint64_t delta,
         qxl_set_guest_bug(d, "%s: pci_region = %d", __func__, pci_region);
         return 1;
     }
+    assert(guest_end - pci_start <= memory_region_size(mr));
 
     virt_start = (intptr_t)memory_region_get_ram_ptr(mr);
     memslot.slot_id = slot_id;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 09/51] block-backend: avoid bdrv_unregister_buf() NULL pointer deref
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (7 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 08/51] hw/display/qxl: Assert memory slot fits in preallocated MemoryRegion Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 10/51] target/arm: Set TCGCPUOps.restore_state_to_opc for v7m Juan Quintela
                   ` (42 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Jonathan Cameron, Philippe Mathieu-Daudé

From: Stefan Hajnoczi <stefanha@redhat.com>

bdrv_*() APIs expect a valid BlockDriverState. Calling them with bs=NULL
leads to undefined behavior.

Jonathan Cameron reported this following NULL pointer dereference when a
VM with a virtio-blk device and a memory-backend-file object is
terminated:
1. qemu_cleanup() closes all drives, setting blk->root to NULL
2. qemu_cleanup() calls user_creatable_cleanup(), which results in a RAM
   block notifier callback because the memory-backend-file is destroyed.
3. blk_unregister_buf() is called by virtio-blk's BlockRamRegistrar
   notifier callback and undefined behavior occurs.

Fixes: baf422684d73 ("virtio-blk: use BDRV_REQ_REGISTERED_BUF optimization hint")
Co-authored-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221121211923.1993171-1-stefanha@redhat.com>
---
 block/block-backend.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/block/block-backend.c b/block/block-backend.c
index b48c91f4e1..d98a96ff37 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -2576,14 +2576,25 @@ static void blk_root_drained_end(BdrvChild *child, int *drained_end_counter)
 
 bool blk_register_buf(BlockBackend *blk, void *host, size_t size, Error **errp)
 {
+    BlockDriverState *bs = blk_bs(blk);
+
     GLOBAL_STATE_CODE();
-    return bdrv_register_buf(blk_bs(blk), host, size, errp);
+
+    if (bs) {
+        return bdrv_register_buf(bs, host, size, errp);
+    }
+    return true;
 }
 
 void blk_unregister_buf(BlockBackend *blk, void *host, size_t size)
 {
+    BlockDriverState *bs = blk_bs(blk);
+
     GLOBAL_STATE_CODE();
-    bdrv_unregister_buf(blk_bs(blk), host, size);
+
+    if (bs) {
+        bdrv_unregister_buf(bs, host, size);
+    }
 }
 
 int coroutine_fn blk_co_copy_range(BlockBackend *blk_in, int64_t off_in,
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 10/51] target/arm: Set TCGCPUOps.restore_state_to_opc for v7m
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (8 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 09/51] block-backend: avoid bdrv_unregister_buf() NULL pointer deref Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 11/51] Update VERSION for v7.2.0-rc3 Juan Quintela
                   ` (41 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Evgeny Ermakov

From: Evgeny Ermakov <evgeny.v.ermakov@gmail.com>

This setting got missed, breaking v7m.

Fixes: 56c6c98df85c ("target/arm: Convert to tcg_ops restore_state_to_opc")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1347
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Evgeny Ermakov <evgeny.v.ermakov@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20221129204146.550394-1-richard.henderson@linaro.org>
---
 target/arm/internals.h | 4 ++++
 target/arm/cpu.c       | 6 +++---
 target/arm/cpu_tcg.c   | 1 +
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/target/arm/internals.h b/target/arm/internals.h
index d9121d9ff8..161e42d50f 100644
--- a/target/arm/internals.h
+++ b/target/arm/internals.h
@@ -185,6 +185,10 @@ static inline int r14_bank_number(int mode)
 void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu);
 void arm_translate_init(void);
 
+void arm_restore_state_to_opc(CPUState *cs,
+                              const TranslationBlock *tb,
+                              const uint64_t *data);
+
 #ifdef CONFIG_TCG
 void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb);
 #endif /* CONFIG_TCG */
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index a021df9e9e..38d066c294 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -91,9 +91,9 @@ void arm_cpu_synchronize_from_tb(CPUState *cs,
     }
 }
 
-static void arm_restore_state_to_opc(CPUState *cs,
-                                     const TranslationBlock *tb,
-                                     const uint64_t *data)
+void arm_restore_state_to_opc(CPUState *cs,
+                              const TranslationBlock *tb,
+                              const uint64_t *data)
 {
     CPUARMState *env = cs->env_ptr;
 
diff --git a/target/arm/cpu_tcg.c b/target/arm/cpu_tcg.c
index 60ff539fa1..9a2cef7d05 100644
--- a/target/arm/cpu_tcg.c
+++ b/target/arm/cpu_tcg.c
@@ -1035,6 +1035,7 @@ static const struct TCGCPUOps arm_v7m_tcg_ops = {
     .initialize = arm_translate_init,
     .synchronize_from_tb = arm_cpu_synchronize_from_tb,
     .debug_excp_handler = arm_debug_excp_handler,
+    .restore_state_to_opc = arm_restore_state_to_opc,
 
 #ifdef CONFIG_USER_ONLY
     .record_sigsegv = arm_cpu_record_sigsegv,
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 11/51] Update VERSION for v7.2.0-rc3
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (9 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 10/51] target/arm: Set TCGCPUOps.restore_state_to_opc for v7m Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 12/51] tests/qtests: override "force-legacy" for gpio virtio-mmio tests Juan Quintela
                   ` (40 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Stefan Hajnoczi <stefanha@redhat.com>

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 VERSION | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/VERSION b/VERSION
index 02998662dd..1c24435536 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-7.1.92
+7.1.93
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 12/51] tests/qtests: override "force-legacy" for gpio virtio-mmio tests
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (10 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 11/51] Update VERSION for v7.2.0-rc3 Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 13/51] vhost: enable vrings in vhost_dev_start() for vhost-user devices Juan Quintela
                   ` (39 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Alex Bennée <alex.bennee@linaro.org>

The GPIO device is a VIRTIO_F_VERSION_1 devices but running with a
legacy MMIO interface we miss out that feature bit causing confusion.
For the GPIO test force the mmio bus to support non-legacy so we can
properly test it.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1333
Message-Id: <20221130112439.2527228-2-alex.bennee@linaro.org>
Acked-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 tests/qtest/libqos/virtio-gpio.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/qtest/libqos/virtio-gpio.c b/tests/qtest/libqos/virtio-gpio.c
index 762aa6695b..f22d7b5eb5 100644
--- a/tests/qtest/libqos/virtio-gpio.c
+++ b/tests/qtest/libqos/virtio-gpio.c
@@ -154,7 +154,8 @@ static void virtio_gpio_register_nodes(void)
     QOSGraphEdgeOptions edge_opts = { };
 
     /* vhost-user-gpio-device */
-    edge_opts.extra_device_opts = "id=gpio0,chardev=chr-vhost-user-test";
+    edge_opts.extra_device_opts = "id=gpio0,chardev=chr-vhost-user-test "
+        "-global virtio-mmio.force-legacy=false";
     qos_node_create_driver("vhost-user-gpio-device",
                             virtio_gpio_device_create);
     qos_node_consumes("vhost-user-gpio-device", "virtio-bus", &edge_opts);
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 13/51] vhost: enable vrings in vhost_dev_start() for vhost-user devices
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (11 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 12/51] tests/qtests: override "force-legacy" for gpio virtio-mmio tests Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 14/51] hw/virtio: add started_vu status field to vhost-user-gpio Juan Quintela
                   ` (38 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Stefano Garzarella, German Maglione

From: Stefano Garzarella <sgarzare@redhat.com>

Commit 02b61f38d3 ("hw/virtio: incorporate backend features in features")
properly negotiates VHOST_USER_F_PROTOCOL_FEATURES with the vhost-user
backend, but we forgot to enable vrings as specified in
docs/interop/vhost-user.rst:

    If ``VHOST_USER_F_PROTOCOL_FEATURES`` has not been negotiated, the
    ring starts directly in the enabled state.

    If ``VHOST_USER_F_PROTOCOL_FEATURES`` has been negotiated, the ring is
    initialized in a disabled state and is enabled by
    ``VHOST_USER_SET_VRING_ENABLE`` with parameter 1.

Some vhost-user front-ends already did this by calling
vhost_ops.vhost_set_vring_enable() directly:
- backends/cryptodev-vhost.c
- hw/net/virtio-net.c
- hw/virtio/vhost-user-gpio.c

But most didn't do that, so we would leave the vrings disabled and some
backends would not work. We observed this issue with the rust version of
virtiofsd [1], which uses the event loop [2] provided by the
vhost-user-backend crate where requests are not processed if vring is
not enabled.

Let's fix this issue by enabling the vrings in vhost_dev_start() for
vhost-user front-ends that don't already do this directly. Same thing
also in vhost_dev_stop() where we disable vrings.

[1] https://gitlab.com/virtio-fs/virtiofsd
[2] https://github.com/rust-vmm/vhost/blob/240fc2966/crates/vhost-user-backend/src/event_loop.rs#L217

Fixes: 02b61f38d3 ("hw/virtio: incorporate backend features in features")
Reported-by: German Maglione <gmaglione@redhat.com>
Tested-by: German Maglione <gmaglione@redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Acked-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Message-Id: <20221123131630.52020-1-sgarzare@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20221130112439.2527228-3-alex.bennee@linaro.org>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/virtio/vhost.h      |  6 +++--
 backends/cryptodev-vhost.c     |  4 ++--
 backends/vhost-user.c          |  4 ++--
 hw/block/vhost-user-blk.c      |  4 ++--
 hw/net/vhost_net.c             |  8 +++----
 hw/scsi/vhost-scsi-common.c    |  4 ++--
 hw/virtio/vhost-user-fs.c      |  4 ++--
 hw/virtio/vhost-user-gpio.c    |  4 ++--
 hw/virtio/vhost-user-i2c.c     |  4 ++--
 hw/virtio/vhost-user-rng.c     |  4 ++--
 hw/virtio/vhost-vsock-common.c |  4 ++--
 hw/virtio/vhost.c              | 44 ++++++++++++++++++++++++++++++----
 hw/virtio/trace-events         |  4 ++--
 13 files changed, 67 insertions(+), 31 deletions(-)

diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h
index 353252ac3e..67a6807fac 100644
--- a/include/hw/virtio/vhost.h
+++ b/include/hw/virtio/vhost.h
@@ -184,24 +184,26 @@ static inline bool vhost_dev_is_started(struct vhost_dev *hdev)
  * vhost_dev_start() - start the vhost device
  * @hdev: common vhost_dev structure
  * @vdev: the VirtIODevice structure
+ * @vrings: true to have vrings enabled in this call
  *
  * Starts the vhost device. From this point VirtIO feature negotiation
  * can start and the device can start processing VirtIO transactions.
  *
  * Return: 0 on success, < 0 on error.
  */
-int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev);
+int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev, bool vrings);
 
 /**
  * vhost_dev_stop() - stop the vhost device
  * @hdev: common vhost_dev structure
  * @vdev: the VirtIODevice structure
+ * @vrings: true to have vrings disabled in this call
  *
  * Stop the vhost device. After the device is stopped the notifiers
  * can be disabled (@vhost_dev_disable_notifiers) and the device can
  * be torn down (@vhost_dev_cleanup).
  */
-void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev);
+void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev, bool vrings);
 
 /**
  * DOC: vhost device configuration handling
diff --git a/backends/cryptodev-vhost.c b/backends/cryptodev-vhost.c
index bc13e466b4..572f87b3be 100644
--- a/backends/cryptodev-vhost.c
+++ b/backends/cryptodev-vhost.c
@@ -94,7 +94,7 @@ cryptodev_vhost_start_one(CryptoDevBackendVhost *crypto,
         goto fail_notifiers;
     }
 
-    r = vhost_dev_start(&crypto->dev, dev);
+    r = vhost_dev_start(&crypto->dev, dev, false);
     if (r < 0) {
         goto fail_start;
     }
@@ -111,7 +111,7 @@ static void
 cryptodev_vhost_stop_one(CryptoDevBackendVhost *crypto,
                                  VirtIODevice *dev)
 {
-    vhost_dev_stop(&crypto->dev, dev);
+    vhost_dev_stop(&crypto->dev, dev, false);
     vhost_dev_disable_notifiers(&crypto->dev, dev);
 }
 
diff --git a/backends/vhost-user.c b/backends/vhost-user.c
index 5dedb2d987..7bfcaef976 100644
--- a/backends/vhost-user.c
+++ b/backends/vhost-user.c
@@ -85,7 +85,7 @@ vhost_user_backend_start(VhostUserBackend *b)
     }
 
     b->dev.acked_features = b->vdev->guest_features;
-    ret = vhost_dev_start(&b->dev, b->vdev);
+    ret = vhost_dev_start(&b->dev, b->vdev, true);
     if (ret < 0) {
         error_report("Error start vhost dev");
         goto err_guest_notifiers;
@@ -120,7 +120,7 @@ vhost_user_backend_stop(VhostUserBackend *b)
         return;
     }
 
-    vhost_dev_stop(&b->dev, b->vdev);
+    vhost_dev_stop(&b->dev, b->vdev, true);
 
     if (k->set_guest_notifiers) {
         ret = k->set_guest_notifiers(qbus->parent,
diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c
index 0d5190accf..1177064631 100644
--- a/hw/block/vhost-user-blk.c
+++ b/hw/block/vhost-user-blk.c
@@ -178,7 +178,7 @@ static int vhost_user_blk_start(VirtIODevice *vdev, Error **errp)
     }
 
     s->dev.vq_index_end = s->dev.nvqs;
-    ret = vhost_dev_start(&s->dev, vdev);
+    ret = vhost_dev_start(&s->dev, vdev, true);
     if (ret < 0) {
         error_setg_errno(errp, -ret, "Error starting vhost");
         goto err_guest_notifiers;
@@ -213,7 +213,7 @@ static void vhost_user_blk_stop(VirtIODevice *vdev)
         return;
     }
 
-    vhost_dev_stop(&s->dev, vdev);
+    vhost_dev_stop(&s->dev, vdev, true);
 
     ret = k->set_guest_notifiers(qbus->parent, s->dev.nvqs, false);
     if (ret < 0) {
diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
index 26e4930676..043058ff43 100644
--- a/hw/net/vhost_net.c
+++ b/hw/net/vhost_net.c
@@ -259,7 +259,7 @@ static int vhost_net_start_one(struct vhost_net *net,
         goto fail_notifiers;
     }
 
-    r = vhost_dev_start(&net->dev, dev);
+    r = vhost_dev_start(&net->dev, dev, false);
     if (r < 0) {
         goto fail_start;
     }
@@ -308,7 +308,7 @@ fail:
     if (net->nc->info->poll) {
         net->nc->info->poll(net->nc, true);
     }
-    vhost_dev_stop(&net->dev, dev);
+    vhost_dev_stop(&net->dev, dev, false);
 fail_start:
     vhost_dev_disable_notifiers(&net->dev, dev);
 fail_notifiers:
@@ -329,7 +329,7 @@ static void vhost_net_stop_one(struct vhost_net *net,
     if (net->nc->info->poll) {
         net->nc->info->poll(net->nc, true);
     }
-    vhost_dev_stop(&net->dev, dev);
+    vhost_dev_stop(&net->dev, dev, false);
     if (net->nc->info->stop) {
         net->nc->info->stop(net->nc);
     }
@@ -606,7 +606,7 @@ err_start:
         assert(r >= 0);
     }
 
-    vhost_dev_stop(&net->dev, vdev);
+    vhost_dev_stop(&net->dev, vdev, false);
 
     return r;
 }
diff --git a/hw/scsi/vhost-scsi-common.c b/hw/scsi/vhost-scsi-common.c
index 767f827e55..18ea5dcfa1 100644
--- a/hw/scsi/vhost-scsi-common.c
+++ b/hw/scsi/vhost-scsi-common.c
@@ -68,7 +68,7 @@ int vhost_scsi_common_start(VHostSCSICommon *vsc)
         goto err_guest_notifiers;
     }
 
-    ret = vhost_dev_start(&vsc->dev, vdev);
+    ret = vhost_dev_start(&vsc->dev, vdev, true);
     if (ret < 0) {
         error_report("Error start vhost dev");
         goto err_guest_notifiers;
@@ -101,7 +101,7 @@ void vhost_scsi_common_stop(VHostSCSICommon *vsc)
     VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus);
     int ret = 0;
 
-    vhost_dev_stop(&vsc->dev, vdev);
+    vhost_dev_stop(&vsc->dev, vdev, true);
 
     if (k->set_guest_notifiers) {
         ret = k->set_guest_notifiers(qbus->parent, vsc->dev.nvqs, false);
diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c
index dc4014cdef..d97b179e6f 100644
--- a/hw/virtio/vhost-user-fs.c
+++ b/hw/virtio/vhost-user-fs.c
@@ -76,7 +76,7 @@ static void vuf_start(VirtIODevice *vdev)
     }
 
     fs->vhost_dev.acked_features = vdev->guest_features;
-    ret = vhost_dev_start(&fs->vhost_dev, vdev);
+    ret = vhost_dev_start(&fs->vhost_dev, vdev, true);
     if (ret < 0) {
         error_report("Error starting vhost: %d", -ret);
         goto err_guest_notifiers;
@@ -110,7 +110,7 @@ static void vuf_stop(VirtIODevice *vdev)
         return;
     }
 
-    vhost_dev_stop(&fs->vhost_dev, vdev);
+    vhost_dev_stop(&fs->vhost_dev, vdev, true);
 
     ret = k->set_guest_notifiers(qbus->parent, fs->vhost_dev.nvqs, false);
     if (ret < 0) {
diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c
index 5851cb3bc9..0b40ebd15a 100644
--- a/hw/virtio/vhost-user-gpio.c
+++ b/hw/virtio/vhost-user-gpio.c
@@ -81,7 +81,7 @@ static int vu_gpio_start(VirtIODevice *vdev)
      */
     vhost_ack_features(&gpio->vhost_dev, feature_bits, vdev->guest_features);
 
-    ret = vhost_dev_start(&gpio->vhost_dev, vdev);
+    ret = vhost_dev_start(&gpio->vhost_dev, vdev, false);
     if (ret < 0) {
         error_report("Error starting vhost-user-gpio: %d", ret);
         goto err_guest_notifiers;
@@ -139,7 +139,7 @@ static void vu_gpio_stop(VirtIODevice *vdev)
         return;
     }
 
-    vhost_dev_stop(vhost_dev, vdev);
+    vhost_dev_stop(vhost_dev, vdev, false);
 
     ret = k->set_guest_notifiers(qbus->parent, vhost_dev->nvqs, false);
     if (ret < 0) {
diff --git a/hw/virtio/vhost-user-i2c.c b/hw/virtio/vhost-user-i2c.c
index 1c9f3d20dc..dc5c828ba6 100644
--- a/hw/virtio/vhost-user-i2c.c
+++ b/hw/virtio/vhost-user-i2c.c
@@ -46,7 +46,7 @@ static void vu_i2c_start(VirtIODevice *vdev)
 
     i2c->vhost_dev.acked_features = vdev->guest_features;
 
-    ret = vhost_dev_start(&i2c->vhost_dev, vdev);
+    ret = vhost_dev_start(&i2c->vhost_dev, vdev, true);
     if (ret < 0) {
         error_report("Error starting vhost-user-i2c: %d", -ret);
         goto err_guest_notifiers;
@@ -80,7 +80,7 @@ static void vu_i2c_stop(VirtIODevice *vdev)
         return;
     }
 
-    vhost_dev_stop(&i2c->vhost_dev, vdev);
+    vhost_dev_stop(&i2c->vhost_dev, vdev, true);
 
     ret = k->set_guest_notifiers(qbus->parent, i2c->vhost_dev.nvqs, false);
     if (ret < 0) {
diff --git a/hw/virtio/vhost-user-rng.c b/hw/virtio/vhost-user-rng.c
index f9084cde58..201a39e220 100644
--- a/hw/virtio/vhost-user-rng.c
+++ b/hw/virtio/vhost-user-rng.c
@@ -47,7 +47,7 @@ static void vu_rng_start(VirtIODevice *vdev)
     }
 
     rng->vhost_dev.acked_features = vdev->guest_features;
-    ret = vhost_dev_start(&rng->vhost_dev, vdev);
+    ret = vhost_dev_start(&rng->vhost_dev, vdev, true);
     if (ret < 0) {
         error_report("Error starting vhost-user-rng: %d", -ret);
         goto err_guest_notifiers;
@@ -81,7 +81,7 @@ static void vu_rng_stop(VirtIODevice *vdev)
         return;
     }
 
-    vhost_dev_stop(&rng->vhost_dev, vdev);
+    vhost_dev_stop(&rng->vhost_dev, vdev, true);
 
     ret = k->set_guest_notifiers(qbus->parent, rng->vhost_dev.nvqs, false);
     if (ret < 0) {
diff --git a/hw/virtio/vhost-vsock-common.c b/hw/virtio/vhost-vsock-common.c
index a67a275de2..d21c72b401 100644
--- a/hw/virtio/vhost-vsock-common.c
+++ b/hw/virtio/vhost-vsock-common.c
@@ -70,7 +70,7 @@ int vhost_vsock_common_start(VirtIODevice *vdev)
     }
 
     vvc->vhost_dev.acked_features = vdev->guest_features;
-    ret = vhost_dev_start(&vvc->vhost_dev, vdev);
+    ret = vhost_dev_start(&vvc->vhost_dev, vdev, true);
     if (ret < 0) {
         error_report("Error starting vhost: %d", -ret);
         goto err_guest_notifiers;
@@ -105,7 +105,7 @@ void vhost_vsock_common_stop(VirtIODevice *vdev)
         return;
     }
 
-    vhost_dev_stop(&vvc->vhost_dev, vdev);
+    vhost_dev_stop(&vvc->vhost_dev, vdev, true);
 
     ret = k->set_guest_notifiers(qbus->parent, vvc->vhost_dev.nvqs, false);
     if (ret < 0) {
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index d1c4c20b8c..7fb008bc9e 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -1777,15 +1777,36 @@ int vhost_dev_get_inflight(struct vhost_dev *dev, uint16_t queue_size,
     return 0;
 }
 
+static int vhost_dev_set_vring_enable(struct vhost_dev *hdev, int enable)
+{
+    if (!hdev->vhost_ops->vhost_set_vring_enable) {
+        return 0;
+    }
+
+    /*
+     * For vhost-user devices, if VHOST_USER_F_PROTOCOL_FEATURES has not
+     * been negotiated, the rings start directly in the enabled state, and
+     * .vhost_set_vring_enable callback will fail since
+     * VHOST_USER_SET_VRING_ENABLE is not supported.
+     */
+    if (hdev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_USER &&
+        !virtio_has_feature(hdev->backend_features,
+                            VHOST_USER_F_PROTOCOL_FEATURES)) {
+        return 0;
+    }
+
+    return hdev->vhost_ops->vhost_set_vring_enable(hdev, enable);
+}
+
 /* Host notifiers must be enabled at this point. */
-int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev)
+int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev, bool vrings)
 {
     int i, r;
 
     /* should only be called after backend is connected */
     assert(hdev->vhost_ops);
 
-    trace_vhost_dev_start(hdev, vdev->name);
+    trace_vhost_dev_start(hdev, vdev->name, vrings);
 
     vdev->vhost_started = true;
     hdev->started = true;
@@ -1830,10 +1851,16 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev)
             goto fail_log;
         }
     }
+    if (vrings) {
+        r = vhost_dev_set_vring_enable(hdev, true);
+        if (r) {
+            goto fail_log;
+        }
+    }
     if (hdev->vhost_ops->vhost_dev_start) {
         r = hdev->vhost_ops->vhost_dev_start(hdev, true);
         if (r) {
-            goto fail_log;
+            goto fail_start;
         }
     }
     if (vhost_dev_has_iommu(hdev) &&
@@ -1848,6 +1875,10 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev)
         }
     }
     return 0;
+fail_start:
+    if (vrings) {
+        vhost_dev_set_vring_enable(hdev, false);
+    }
 fail_log:
     vhost_log_put(hdev, false);
 fail_vq:
@@ -1866,18 +1897,21 @@ fail_features:
 }
 
 /* Host notifiers must be enabled at this point. */
-void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev)
+void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev, bool vrings)
 {
     int i;
 
     /* should only be called after backend is connected */
     assert(hdev->vhost_ops);
 
-    trace_vhost_dev_stop(hdev, vdev->name);
+    trace_vhost_dev_stop(hdev, vdev->name, vrings);
 
     if (hdev->vhost_ops->vhost_dev_start) {
         hdev->vhost_ops->vhost_dev_start(hdev, false);
     }
+    if (vrings) {
+        vhost_dev_set_vring_enable(hdev, false);
+    }
     for (i = 0; i < hdev->nvqs; ++i) {
         vhost_virtqueue_stop(hdev,
                              vdev,
diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events
index 820dadc26c..14fc5b9bb2 100644
--- a/hw/virtio/trace-events
+++ b/hw/virtio/trace-events
@@ -9,8 +9,8 @@ vhost_section(const char *name) "%s"
 vhost_reject_section(const char *name, int d) "%s:%d"
 vhost_iotlb_miss(void *dev, int step) "%p step %d"
 vhost_dev_cleanup(void *dev) "%p"
-vhost_dev_start(void *dev, const char *name) "%p:%s"
-vhost_dev_stop(void *dev, const char *name) "%p:%s"
+vhost_dev_start(void *dev, const char *name, bool vrings) "%p:%s vrings:%d"
+vhost_dev_stop(void *dev, const char *name, bool vrings) "%p:%s vrings:%d"
 
 
 # vhost-user.c
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 14/51] hw/virtio: add started_vu status field to vhost-user-gpio
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (12 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 13/51] vhost: enable vrings in vhost_dev_start() for vhost-user devices Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 15/51] hw/virtio: generalise CHR_EVENT_CLOSED handling Juan Quintela
                   ` (37 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Alex Bennée <alex.bennee@linaro.org>

As per the fix to vhost-user-blk in f5b22d06fb (vhost: recheck dev
state in the vhost_migration_log routine) we really should track the
connection and starting separately.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20221130112439.2527228-4-alex.bennee@linaro.org>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/virtio/vhost-user-gpio.h | 10 ++++++++++
 hw/virtio/vhost-user-gpio.c         | 11 ++++-------
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/include/hw/virtio/vhost-user-gpio.h b/include/hw/virtio/vhost-user-gpio.h
index 4fe9aeecc0..a9305c5e6c 100644
--- a/include/hw/virtio/vhost-user-gpio.h
+++ b/include/hw/virtio/vhost-user-gpio.h
@@ -28,7 +28,17 @@ struct VHostUserGPIO {
     VhostUserState vhost_user;
     VirtQueue *command_vq;
     VirtQueue *interrupt_vq;
+    /**
+     * There are at least two steps of initialization of the
+     * vhost-user device. The first is a "connect" step and
+     * second is a "start" step. Make a separation between
+     * those initialization phases by using two fields.
+     *
+     * @connected: see vu_gpio_connect()/vu_gpio_disconnect()
+     * @started_vu: see vu_gpio_start()/vu_gpio_stop()
+     */
     bool connected;
+    bool started_vu;
     /*< public >*/
 };
 
diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c
index 0b40ebd15a..be9be08b4c 100644
--- a/hw/virtio/vhost-user-gpio.c
+++ b/hw/virtio/vhost-user-gpio.c
@@ -86,6 +86,7 @@ static int vu_gpio_start(VirtIODevice *vdev)
         error_report("Error starting vhost-user-gpio: %d", ret);
         goto err_guest_notifiers;
     }
+    gpio->started_vu = true;
 
     /*
      * guest_notifier_mask/pending not used yet, so just unmask
@@ -126,16 +127,12 @@ static void vu_gpio_stop(VirtIODevice *vdev)
     struct vhost_dev *vhost_dev = &gpio->vhost_dev;
     int ret;
 
-    if (!k->set_guest_notifiers) {
+    if (!gpio->started_vu) {
         return;
     }
+    gpio->started_vu = false;
 
-    /*
-     * We can call vu_gpio_stop multiple times, for example from
-     * vm_state_notify and the final object finalisation. Check we
-     * aren't already stopped before doing so.
-     */
-    if (!vhost_dev_is_started(vhost_dev)) {
+    if (!k->set_guest_notifiers) {
         return;
     }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 15/51] hw/virtio: generalise CHR_EVENT_CLOSED handling
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (13 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 14/51] hw/virtio: add started_vu status field to vhost-user-gpio Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 16/51] include/hw: VM state takes precedence in virtio_device_should_start Juan Quintela
                   ` (36 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Alex Bennée <alex.bennee@linaro.org>

..and use for both virtio-user-blk and virtio-user-gpio. This avoids
the circular close by deferring shutdown due to disconnection until a
later point. virtio-user-blk already had this mechanism in place so
generalise it as a vhost-user helper function and use for both blk and
gpio devices.

While we are at it we also fix up vhost-user-gpio to re-establish the
event handler after close down so we can reconnect later.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Message-Id: <20221130112439.2527228-5-alex.bennee@linaro.org>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/virtio/vhost-user.h | 18 +++++++++
 hw/block/vhost-user-blk.c      | 41 +++-----------------
 hw/virtio/vhost-user-gpio.c    | 11 +++++-
 hw/virtio/vhost-user.c         | 71 ++++++++++++++++++++++++++++++++++
 4 files changed, 104 insertions(+), 37 deletions(-)

diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h
index c6e693cd3f..191216a74f 100644
--- a/include/hw/virtio/vhost-user.h
+++ b/include/hw/virtio/vhost-user.h
@@ -68,4 +68,22 @@ bool vhost_user_init(VhostUserState *user, CharBackend *chr, Error **errp);
  */
 void vhost_user_cleanup(VhostUserState *user);
 
+/**
+ * vhost_user_async_close() - cleanup vhost-user post connection drop
+ * @d: DeviceState for the associated device (passed to callback)
+ * @chardev: the CharBackend associated with the connection
+ * @vhost: the common vhost device
+ * @cb: the user callback function to complete the clean-up
+ *
+ * This function is used to handle the shutdown of a vhost-user
+ * connection to a backend. We handle this centrally to make sure we
+ * do all the steps and handle potential races due to VM shutdowns.
+ * Once the connection is disabled we call a backhalf to ensure
+ */
+typedef void (*vu_async_close_fn)(DeviceState *cb);
+
+void vhost_user_async_close(DeviceState *d,
+                            CharBackend *chardev, struct vhost_dev *vhost,
+                            vu_async_close_fn cb);
+
 #endif
diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c
index 1177064631..aff4d2b8cb 100644
--- a/hw/block/vhost-user-blk.c
+++ b/hw/block/vhost-user-blk.c
@@ -369,17 +369,10 @@ static void vhost_user_blk_disconnect(DeviceState *dev)
     vhost_user_blk_stop(vdev);
 
     vhost_dev_cleanup(&s->dev);
-}
 
-static void vhost_user_blk_chr_closed_bh(void *opaque)
-{
-    DeviceState *dev = opaque;
-    VirtIODevice *vdev = VIRTIO_DEVICE(dev);
-    VHostUserBlk *s = VHOST_USER_BLK(vdev);
-
-    vhost_user_blk_disconnect(dev);
+    /* Re-instate the event handler for new connections */
     qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, vhost_user_blk_event,
-                             NULL, opaque, NULL, true);
+                             NULL, dev, NULL, true);
 }
 
 static void vhost_user_blk_event(void *opaque, QEMUChrEvent event)
@@ -398,33 +391,9 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event)
         }
         break;
     case CHR_EVENT_CLOSED:
-        if (!runstate_check(RUN_STATE_SHUTDOWN)) {
-            /*
-             * A close event may happen during a read/write, but vhost
-             * code assumes the vhost_dev remains setup, so delay the
-             * stop & clear.
-             */
-            AioContext *ctx = qemu_get_current_aio_context();
-
-            qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, NULL, NULL,
-                    NULL, NULL, false);
-            aio_bh_schedule_oneshot(ctx, vhost_user_blk_chr_closed_bh, opaque);
-
-            /*
-             * Move vhost device to the stopped state. The vhost-user device
-             * will be clean up and disconnected in BH. This can be useful in
-             * the vhost migration code. If disconnect was caught there is an
-             * option for the general vhost code to get the dev state without
-             * knowing its type (in this case vhost-user).
-             *
-             * FIXME: this is sketchy to be reaching into vhost_dev
-             * now because we are forcing something that implies we
-             * have executed vhost_dev_stop() but that won't happen
-             * until vhost_user_blk_stop() gets called from the bh.
-             * Really this state check should be tracked locally.
-             */
-            s->dev.started = false;
-        }
+        /* defer close until later to avoid circular close */
+        vhost_user_async_close(dev, &s->chardev, &s->dev,
+                               vhost_user_blk_disconnect);
         break;
     case CHR_EVENT_BREAK:
     case CHR_EVENT_MUX_IN:
diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c
index be9be08b4c..b7b82a1099 100644
--- a/hw/virtio/vhost-user-gpio.c
+++ b/hw/virtio/vhost-user-gpio.c
@@ -233,6 +233,8 @@ static int vu_gpio_connect(DeviceState *dev, Error **errp)
     return 0;
 }
 
+static void vu_gpio_event(void *opaque, QEMUChrEvent event);
+
 static void vu_gpio_disconnect(DeviceState *dev)
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
@@ -245,6 +247,11 @@ static void vu_gpio_disconnect(DeviceState *dev)
 
     vu_gpio_stop(vdev);
     vhost_dev_cleanup(&gpio->vhost_dev);
+
+    /* Re-instate the event handler for new connections */
+    qemu_chr_fe_set_handlers(&gpio->chardev,
+                             NULL, NULL, vu_gpio_event,
+                             NULL, dev, NULL, true);
 }
 
 static void vu_gpio_event(void *opaque, QEMUChrEvent event)
@@ -262,7 +269,9 @@ static void vu_gpio_event(void *opaque, QEMUChrEvent event)
         }
         break;
     case CHR_EVENT_CLOSED:
-        vu_gpio_disconnect(dev);
+        /* defer close until later to avoid circular close */
+        vhost_user_async_close(dev, &gpio->chardev, &gpio->vhost_dev,
+                               vu_gpio_disconnect);
         break;
     case CHR_EVENT_BREAK:
     case CHR_EVENT_MUX_IN:
diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index abe23d4ebe..8f635844af 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -21,6 +21,7 @@
 #include "qemu/error-report.h"
 #include "qemu/main-loop.h"
 #include "qemu/sockets.h"
+#include "sysemu/runstate.h"
 #include "sysemu/cryptodev.h"
 #include "migration/migration.h"
 #include "migration/postcopy-ram.h"
@@ -2670,6 +2671,76 @@ void vhost_user_cleanup(VhostUserState *user)
     user->chr = NULL;
 }
 
+
+typedef struct {
+    vu_async_close_fn cb;
+    DeviceState *dev;
+    CharBackend *cd;
+    struct vhost_dev *vhost;
+} VhostAsyncCallback;
+
+static void vhost_user_async_close_bh(void *opaque)
+{
+    VhostAsyncCallback *data = opaque;
+    struct vhost_dev *vhost = data->vhost;
+
+    /*
+     * If the vhost_dev has been cleared in the meantime there is
+     * nothing left to do as some other path has completed the
+     * cleanup.
+     */
+    if (vhost->vdev) {
+        data->cb(data->dev);
+    }
+
+    g_free(data);
+}
+
+/*
+ * We only schedule the work if the machine is running. If suspended
+ * we want to keep all the in-flight data as is for migration
+ * purposes.
+ */
+void vhost_user_async_close(DeviceState *d,
+                            CharBackend *chardev, struct vhost_dev *vhost,
+                            vu_async_close_fn cb)
+{
+    if (!runstate_check(RUN_STATE_SHUTDOWN)) {
+        /*
+         * A close event may happen during a read/write, but vhost
+         * code assumes the vhost_dev remains setup, so delay the
+         * stop & clear.
+         */
+        AioContext *ctx = qemu_get_current_aio_context();
+        VhostAsyncCallback *data = g_new0(VhostAsyncCallback, 1);
+
+        /* Save data for the callback */
+        data->cb = cb;
+        data->dev = d;
+        data->cd = chardev;
+        data->vhost = vhost;
+
+        /* Disable any further notifications on the chardev */
+        qemu_chr_fe_set_handlers(chardev,
+                                 NULL, NULL, NULL, NULL, NULL, NULL,
+                                 false);
+
+        aio_bh_schedule_oneshot(ctx, vhost_user_async_close_bh, data);
+
+        /*
+         * Move vhost device to the stopped state. The vhost-user device
+         * will be clean up and disconnected in BH. This can be useful in
+         * the vhost migration code. If disconnect was caught there is an
+         * option for the general vhost code to get the dev state without
+         * knowing its type (in this case vhost-user).
+         *
+         * Note if the vhost device is fully cleared by the time we
+         * execute the bottom half we won't continue with the cleanup.
+         */
+        vhost->started = false;
+    }
+}
+
 static int vhost_user_dev_start(struct vhost_dev *dev, bool started)
 {
     if (!virtio_has_feature(dev->protocol_features,
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 16/51] include/hw: VM state takes precedence in virtio_device_should_start
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (14 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 15/51] hw/virtio: generalise CHR_EVENT_CLOSED handling Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 17/51] hw/nvme: fix aio cancel in format Juan Quintela
                   ` (35 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Alex Bennée <alex.bennee@linaro.org>

The VM status should always preempt the device status for these
checks. This ensures the device is in the correct state when we
suspend the VM prior to migrations. This restores the checks to the
order they where in before the refactoring moved things around.

While we are at it lets improve our documentation of the various
fields involved and document the two functions.

Fixes: 9f6bcfd99f (hw/virtio: move vm_running check to virtio_device_started)
Fixes: 259d69c00b (hw/virtio: introduce virtio_device_should_start)
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20221130112439.2527228-6-alex.bennee@linaro.org>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/virtio/virtio.h | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index a973811cbf..acfd4df125 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -116,6 +116,13 @@ struct VirtIODevice
     bool broken; /* device in invalid state, needs reset */
     bool use_disabled_flag; /* allow use of 'disable' flag when needed */
     bool disabled; /* device in temporarily disabled state */
+    /**
+     * @use_started: true if the @started flag should be used to check the
+     * current state of the VirtIO device. Otherwise status bits
+     * should be checked for a current status of the device.
+     * @use_started is only set via QMP and defaults to true for all
+     * modern machines (since 4.1).
+     */
     bool use_started;
     bool started;
     bool start_on_kick; /* when virtio 1.0 feature has not been negotiated */
@@ -391,6 +398,16 @@ static inline bool virtio_is_big_endian(VirtIODevice *vdev)
     return false;
 }
 
+/**
+ * virtio_device_started() - check if device started
+ * @vdev - the VirtIO device
+ * @status - the devices status bits
+ *
+ * Check if the device is started. For most modern machines this is
+ * tracked via the @vdev->started field (to support migration),
+ * otherwise we check for the final negotiated status bit that
+ * indicates everything is ready.
+ */
 static inline bool virtio_device_started(VirtIODevice *vdev, uint8_t status)
 {
     if (vdev->use_started) {
@@ -411,15 +428,11 @@ static inline bool virtio_device_started(VirtIODevice *vdev, uint8_t status)
  */
 static inline bool virtio_device_should_start(VirtIODevice *vdev, uint8_t status)
 {
-    if (vdev->use_started) {
-        return vdev->started;
-    }
-
     if (!vdev->vm_running) {
         return false;
     }
 
-    return status & VIRTIO_CONFIG_S_DRIVER_OK;
+    return virtio_device_started(vdev, status);
 }
 
 static inline void virtio_set_started(VirtIODevice *vdev, bool started)
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 17/51] hw/nvme: fix aio cancel in format
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (15 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 16/51] include/hw: VM state takes precedence in virtio_device_should_start Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 18/51] hw/nvme: fix aio cancel in flush Juan Quintela
                   ` (34 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Klaus Jensen, Jonathan Derrick

From: Klaus Jensen <k.jensen@samsung.com>

There are several bugs in the async cancel code for the Format command.

Firstly, cancelling a format operation neglects to set iocb->ret as well
as clearing the iocb->aiocb after cancelling the underlying aiocb which
causes the aio callback to ignore the cancellation. Trivial fix.

Secondly, and worse, because the request is queued up for posting to the
CQ in a bottom half, if the cancellation is due to the submission queue
being deleted (which calls blk_aio_cancel), the req structure is
deallocated in nvme_del_sq prior to the bottom half being schedulued.

Fix this by simply removing the bottom half, there is no reason to defer
it anyway.

Fixes: 3bcf26d3d619 ("hw/nvme: reimplement format nvm to allow cancellation")
Reported-by: Jonathan Derrick <jonathan.derrick@linux.dev>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
 hw/nvme/ctrl.c | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index ac3885ce50..9bc56075f6 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -5741,7 +5741,6 @@ static uint16_t nvme_ns_attachment(NvmeCtrl *n, NvmeRequest *req)
 typedef struct NvmeFormatAIOCB {
     BlockAIOCB common;
     BlockAIOCB *aiocb;
-    QEMUBH *bh;
     NvmeRequest *req;
     int ret;
 
@@ -5756,14 +5755,15 @@ typedef struct NvmeFormatAIOCB {
     uint8_t pil;
 } NvmeFormatAIOCB;
 
-static void nvme_format_bh(void *opaque);
-
 static void nvme_format_cancel(BlockAIOCB *aiocb)
 {
     NvmeFormatAIOCB *iocb = container_of(aiocb, NvmeFormatAIOCB, common);
 
+    iocb->ret = -ECANCELED;
+
     if (iocb->aiocb) {
         blk_aio_cancel_async(iocb->aiocb);
+        iocb->aiocb = NULL;
     }
 }
 
@@ -5787,13 +5787,17 @@ static void nvme_format_set(NvmeNamespace *ns, uint8_t lbaf, uint8_t mset,
     nvme_ns_init_format(ns);
 }
 
+static void nvme_do_format(NvmeFormatAIOCB *iocb);
+
 static void nvme_format_ns_cb(void *opaque, int ret)
 {
     NvmeFormatAIOCB *iocb = opaque;
     NvmeNamespace *ns = iocb->ns;
     int bytes;
 
-    if (ret < 0) {
+    if (iocb->ret < 0) {
+        goto done;
+    } else if (ret < 0) {
         iocb->ret = ret;
         goto done;
     }
@@ -5817,8 +5821,7 @@ static void nvme_format_ns_cb(void *opaque, int ret)
     iocb->offset = 0;
 
 done:
-    iocb->aiocb = NULL;
-    qemu_bh_schedule(iocb->bh);
+    nvme_do_format(iocb);
 }
 
 static uint16_t nvme_format_check(NvmeNamespace *ns, uint8_t lbaf, uint8_t pi)
@@ -5842,9 +5845,8 @@ static uint16_t nvme_format_check(NvmeNamespace *ns, uint8_t lbaf, uint8_t pi)
     return NVME_SUCCESS;
 }
 
-static void nvme_format_bh(void *opaque)
+static void nvme_do_format(NvmeFormatAIOCB *iocb)
 {
-    NvmeFormatAIOCB *iocb = opaque;
     NvmeRequest *req = iocb->req;
     NvmeCtrl *n = nvme_ctrl(req);
     uint32_t dw10 = le32_to_cpu(req->cmd.cdw10);
@@ -5882,11 +5884,7 @@ static void nvme_format_bh(void *opaque)
     return;
 
 done:
-    qemu_bh_delete(iocb->bh);
-    iocb->bh = NULL;
-
     iocb->common.cb(iocb->common.opaque, iocb->ret);
-
     qemu_aio_unref(iocb);
 }
 
@@ -5905,7 +5903,6 @@ static uint16_t nvme_format(NvmeCtrl *n, NvmeRequest *req)
     iocb = qemu_aio_get(&nvme_format_aiocb_info, NULL, nvme_misc_cb, req);
 
     iocb->req = req;
-    iocb->bh = qemu_bh_new(nvme_format_bh, iocb);
     iocb->ret = 0;
     iocb->ns = NULL;
     iocb->nsid = 0;
@@ -5934,14 +5931,13 @@ static uint16_t nvme_format(NvmeCtrl *n, NvmeRequest *req)
     }
 
     req->aiocb = &iocb->common;
-    qemu_bh_schedule(iocb->bh);
+    nvme_do_format(iocb);
 
     return NVME_NO_COMPLETE;
 
 out:
-    qemu_bh_delete(iocb->bh);
-    iocb->bh = NULL;
     qemu_aio_unref(iocb);
+
     return status;
 }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 18/51] hw/nvme: fix aio cancel in flush
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (16 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 17/51] hw/nvme: fix aio cancel in format Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 19/51] hw/nvme: fix aio cancel in zone reset Juan Quintela
                   ` (33 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Klaus Jensen

From: Klaus Jensen <k.jensen@samsung.com>

Make sure that iocb->aiocb is NULL'ed when cancelling.

Fix a potential use-after-free by removing the bottom half and enqueuing
the completion directly.

Fixes: 38f4ac65ac88 ("hw/nvme: reimplement flush to allow cancellation")
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
 hw/nvme/ctrl.c | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 9bc56075f6..fede5af6af 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -3160,7 +3160,6 @@ typedef struct NvmeFlushAIOCB {
     BlockAIOCB common;
     BlockAIOCB *aiocb;
     NvmeRequest *req;
-    QEMUBH *bh;
     int ret;
 
     NvmeNamespace *ns;
@@ -3176,6 +3175,7 @@ static void nvme_flush_cancel(BlockAIOCB *acb)
 
     if (iocb->aiocb) {
         blk_aio_cancel_async(iocb->aiocb);
+        iocb->aiocb = NULL;
     }
 }
 
@@ -3185,6 +3185,8 @@ static const AIOCBInfo nvme_flush_aiocb_info = {
     .get_aio_context = nvme_get_aio_context,
 };
 
+static void nvme_do_flush(NvmeFlushAIOCB *iocb);
+
 static void nvme_flush_ns_cb(void *opaque, int ret)
 {
     NvmeFlushAIOCB *iocb = opaque;
@@ -3206,13 +3208,11 @@ static void nvme_flush_ns_cb(void *opaque, int ret)
     }
 
 out:
-    iocb->aiocb = NULL;
-    qemu_bh_schedule(iocb->bh);
+    nvme_do_flush(iocb);
 }
 
-static void nvme_flush_bh(void *opaque)
+static void nvme_do_flush(NvmeFlushAIOCB *iocb)
 {
-    NvmeFlushAIOCB *iocb = opaque;
     NvmeRequest *req = iocb->req;
     NvmeCtrl *n = nvme_ctrl(req);
     int i;
@@ -3239,14 +3239,8 @@ static void nvme_flush_bh(void *opaque)
     return;
 
 done:
-    qemu_bh_delete(iocb->bh);
-    iocb->bh = NULL;
-
     iocb->common.cb(iocb->common.opaque, iocb->ret);
-
     qemu_aio_unref(iocb);
-
-    return;
 }
 
 static uint16_t nvme_flush(NvmeCtrl *n, NvmeRequest *req)
@@ -3258,7 +3252,6 @@ static uint16_t nvme_flush(NvmeCtrl *n, NvmeRequest *req)
     iocb = qemu_aio_get(&nvme_flush_aiocb_info, NULL, nvme_misc_cb, req);
 
     iocb->req = req;
-    iocb->bh = qemu_bh_new(nvme_flush_bh, iocb);
     iocb->ret = 0;
     iocb->ns = NULL;
     iocb->nsid = 0;
@@ -3280,13 +3273,11 @@ static uint16_t nvme_flush(NvmeCtrl *n, NvmeRequest *req)
     }
 
     req->aiocb = &iocb->common;
-    qemu_bh_schedule(iocb->bh);
+    nvme_do_flush(iocb);
 
     return NVME_NO_COMPLETE;
 
 out:
-    qemu_bh_delete(iocb->bh);
-    iocb->bh = NULL;
     qemu_aio_unref(iocb);
 
     return status;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 19/51] hw/nvme: fix aio cancel in zone reset
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (17 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 18/51] hw/nvme: fix aio cancel in flush Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 20/51] hw/nvme: fix aio cancel in dsm Juan Quintela
                   ` (32 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Klaus Jensen

From: Klaus Jensen <k.jensen@samsung.com>

If the zone reset operation is cancelled but the block unmap operation
completes normally, the callback will continue resetting the next zone
since it neglects to check iocb->ret which will have been set to
-ECANCELED. Make sure that this is checked and bail out if an error is
present.

Secondly, fix a potential use-after-free by removing the bottom half and
enqueuing the completion directly.

Fixes: 63d96e4ffd71 ("hw/nvme: reimplement zone reset to allow cancellation")
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
 hw/nvme/ctrl.c | 36 +++++++++++-------------------------
 1 file changed, 11 insertions(+), 25 deletions(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index fede5af6af..bf4abf73f7 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -3712,7 +3712,6 @@ typedef struct NvmeZoneResetAIOCB {
     BlockAIOCB common;
     BlockAIOCB *aiocb;
     NvmeRequest *req;
-    QEMUBH *bh;
     int ret;
 
     bool all;
@@ -3741,17 +3740,6 @@ static const AIOCBInfo nvme_zone_reset_aiocb_info = {
     .cancel_async = nvme_zone_reset_cancel,
 };
 
-static void nvme_zone_reset_bh(void *opaque)
-{
-    NvmeZoneResetAIOCB *iocb = opaque;
-
-    iocb->common.cb(iocb->common.opaque, iocb->ret);
-
-    qemu_bh_delete(iocb->bh);
-    iocb->bh = NULL;
-    qemu_aio_unref(iocb);
-}
-
 static void nvme_zone_reset_cb(void *opaque, int ret);
 
 static void nvme_zone_reset_epilogue_cb(void *opaque, int ret)
@@ -3762,14 +3750,8 @@ static void nvme_zone_reset_epilogue_cb(void *opaque, int ret)
     int64_t moff;
     int count;
 
-    if (ret < 0) {
-        nvme_zone_reset_cb(iocb, ret);
-        return;
-    }
-
-    if (!ns->lbaf.ms) {
-        nvme_zone_reset_cb(iocb, 0);
-        return;
+    if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) {
+        goto out;
     }
 
     moff = nvme_moff(ns, iocb->zone->d.zslba);
@@ -3779,6 +3761,9 @@ static void nvme_zone_reset_epilogue_cb(void *opaque, int ret)
                                         BDRV_REQ_MAY_UNMAP,
                                         nvme_zone_reset_cb, iocb);
     return;
+
+out:
+    nvme_zone_reset_cb(iocb, ret);
 }
 
 static void nvme_zone_reset_cb(void *opaque, int ret)
@@ -3787,7 +3772,9 @@ static void nvme_zone_reset_cb(void *opaque, int ret)
     NvmeRequest *req = iocb->req;
     NvmeNamespace *ns = req->ns;
 
-    if (ret < 0) {
+    if (iocb->ret < 0) {
+        goto done;
+    } else if (ret < 0) {
         iocb->ret = ret;
         goto done;
     }
@@ -3835,9 +3822,9 @@ static void nvme_zone_reset_cb(void *opaque, int ret)
 
 done:
     iocb->aiocb = NULL;
-    if (iocb->bh) {
-        qemu_bh_schedule(iocb->bh);
-    }
+
+    iocb->common.cb(iocb->common.opaque, iocb->ret);
+    qemu_aio_unref(iocb);
 }
 
 static uint16_t nvme_zone_mgmt_send_zrwa_flush(NvmeCtrl *n, NvmeZone *zone,
@@ -3942,7 +3929,6 @@ static uint16_t nvme_zone_mgmt_send(NvmeCtrl *n, NvmeRequest *req)
                            nvme_misc_cb, req);
 
         iocb->req = req;
-        iocb->bh = qemu_bh_new(nvme_zone_reset_bh, iocb);
         iocb->ret = 0;
         iocb->all = all;
         iocb->idx = zone_idx;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 20/51] hw/nvme: fix aio cancel in dsm
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (18 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 19/51] hw/nvme: fix aio cancel in zone reset Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 21/51] hw/nvme: remove copy bh scheduling Juan Quintela
                   ` (31 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Klaus Jensen

From: Klaus Jensen <k.jensen@samsung.com>

When the DSM operation is cancelled asynchronously, we set iocb->ret to
-ECANCELED. However, the callback function only checks the return value
of the completed aio, which may have completed succesfully prior to the
cancellation and thus the callback ends up continuing the dsm operation
instead of bailing out. Fix this.

Secondly, fix a potential use-after-free by removing the bottom half and
enqueuing the completion directly.

Fixes: d7d1474fd85d ("hw/nvme: reimplement dsm to allow cancellation")
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
 hw/nvme/ctrl.c | 34 ++++++++--------------------------
 1 file changed, 8 insertions(+), 26 deletions(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index bf4abf73f7..e847b89461 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -2329,7 +2329,6 @@ typedef struct NvmeDSMAIOCB {
     BlockAIOCB common;
     BlockAIOCB *aiocb;
     NvmeRequest *req;
-    QEMUBH *bh;
     int ret;
 
     NvmeDsmRange *range;
@@ -2351,7 +2350,7 @@ static void nvme_dsm_cancel(BlockAIOCB *aiocb)
     } else {
         /*
          * We only reach this if nvme_dsm_cancel() has already been called or
-         * the command ran to completion and nvme_dsm_bh is scheduled to run.
+         * the command ran to completion.
          */
         assert(iocb->idx == iocb->nr);
     }
@@ -2362,17 +2361,6 @@ static const AIOCBInfo nvme_dsm_aiocb_info = {
     .cancel_async = nvme_dsm_cancel,
 };
 
-static void nvme_dsm_bh(void *opaque)
-{
-    NvmeDSMAIOCB *iocb = opaque;
-
-    iocb->common.cb(iocb->common.opaque, iocb->ret);
-
-    qemu_bh_delete(iocb->bh);
-    iocb->bh = NULL;
-    qemu_aio_unref(iocb);
-}
-
 static void nvme_dsm_cb(void *opaque, int ret);
 
 static void nvme_dsm_md_cb(void *opaque, int ret)
@@ -2384,16 +2372,10 @@ static void nvme_dsm_md_cb(void *opaque, int ret)
     uint64_t slba;
     uint32_t nlb;
 
-    if (ret < 0) {
-        iocb->ret = ret;
+    if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) {
         goto done;
     }
 
-    if (!ns->lbaf.ms) {
-        nvme_dsm_cb(iocb, 0);
-        return;
-    }
-
     range = &iocb->range[iocb->idx - 1];
     slba = le64_to_cpu(range->slba);
     nlb = le32_to_cpu(range->nlb);
@@ -2406,7 +2388,6 @@ static void nvme_dsm_md_cb(void *opaque, int ret)
     ret = nvme_block_status_all(ns, slba, nlb, BDRV_BLOCK_ZERO);
     if (ret) {
         if (ret < 0) {
-            iocb->ret = ret;
             goto done;
         }
 
@@ -2420,8 +2401,7 @@ static void nvme_dsm_md_cb(void *opaque, int ret)
     return;
 
 done:
-    iocb->aiocb = NULL;
-    qemu_bh_schedule(iocb->bh);
+    nvme_dsm_cb(iocb, ret);
 }
 
 static void nvme_dsm_cb(void *opaque, int ret)
@@ -2434,7 +2414,9 @@ static void nvme_dsm_cb(void *opaque, int ret)
     uint64_t slba;
     uint32_t nlb;
 
-    if (ret < 0) {
+    if (iocb->ret < 0) {
+        goto done;
+    } else if (ret < 0) {
         iocb->ret = ret;
         goto done;
     }
@@ -2468,7 +2450,8 @@ next:
 
 done:
     iocb->aiocb = NULL;
-    qemu_bh_schedule(iocb->bh);
+    iocb->common.cb(iocb->common.opaque, iocb->ret);
+    qemu_aio_unref(iocb);
 }
 
 static uint16_t nvme_dsm(NvmeCtrl *n, NvmeRequest *req)
@@ -2486,7 +2469,6 @@ static uint16_t nvme_dsm(NvmeCtrl *n, NvmeRequest *req)
                                          nvme_misc_cb, req);
 
         iocb->req = req;
-        iocb->bh = qemu_bh_new(nvme_dsm_bh, iocb);
         iocb->ret = 0;
         iocb->range = g_new(NvmeDsmRange, nr);
         iocb->nr = nr;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 21/51] hw/nvme: remove copy bh scheduling
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (19 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 20/51] hw/nvme: fix aio cancel in dsm Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 22/51] target/i386: allow MMX instructions with CR4.OSFXSR=0 Juan Quintela
                   ` (30 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Klaus Jensen

From: Klaus Jensen <k.jensen@samsung.com>

Fix a potential use-after-free by removing the bottom half and enqueuing
the completion directly.

Fixes: 796d20681d9b ("hw/nvme: reimplement the copy command to allow aio cancellation")
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
 hw/nvme/ctrl.c | 63 +++++++++++---------------------------------------
 1 file changed, 14 insertions(+), 49 deletions(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index e847b89461..e54276dc1d 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -2552,7 +2552,6 @@ typedef struct NvmeCopyAIOCB {
     BlockAIOCB common;
     BlockAIOCB *aiocb;
     NvmeRequest *req;
-    QEMUBH *bh;
     int ret;
 
     void *ranges;
@@ -2590,9 +2589,8 @@ static const AIOCBInfo nvme_copy_aiocb_info = {
     .cancel_async = nvme_copy_cancel,
 };
 
-static void nvme_copy_bh(void *opaque)
+static void nvme_copy_done(NvmeCopyAIOCB *iocb)
 {
-    NvmeCopyAIOCB *iocb = opaque;
     NvmeRequest *req = iocb->req;
     NvmeNamespace *ns = req->ns;
     BlockAcctStats *stats = blk_get_stats(ns->blkconf.blk);
@@ -2604,9 +2602,6 @@ static void nvme_copy_bh(void *opaque)
     qemu_iovec_destroy(&iocb->iov);
     g_free(iocb->bounce);
 
-    qemu_bh_delete(iocb->bh);
-    iocb->bh = NULL;
-
     if (iocb->ret < 0) {
         block_acct_failed(stats, &iocb->acct.read);
         block_acct_failed(stats, &iocb->acct.write);
@@ -2619,7 +2614,7 @@ static void nvme_copy_bh(void *opaque)
     qemu_aio_unref(iocb);
 }
 
-static void nvme_copy_cb(void *opaque, int ret);
+static void nvme_do_copy(NvmeCopyAIOCB *iocb);
 
 static void nvme_copy_source_range_parse_format0(void *ranges, int idx,
                                                  uint64_t *slba, uint32_t *nlb,
@@ -2731,7 +2726,7 @@ static void nvme_copy_out_completed_cb(void *opaque, int ret)
     iocb->idx++;
     iocb->slba += nlb;
 out:
-    nvme_copy_cb(iocb, iocb->ret);
+    nvme_do_copy(iocb);
 }
 
 static void nvme_copy_out_cb(void *opaque, int ret)
@@ -2743,16 +2738,8 @@ static void nvme_copy_out_cb(void *opaque, int ret)
     size_t mlen;
     uint8_t *mbounce;
 
-    if (ret < 0) {
-        iocb->ret = ret;
+    if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) {
         goto out;
-    } else if (iocb->ret < 0) {
-        goto out;
-    }
-
-    if (!ns->lbaf.ms) {
-        nvme_copy_out_completed_cb(iocb, 0);
-        return;
     }
 
     nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, NULL,
@@ -2771,7 +2758,7 @@ static void nvme_copy_out_cb(void *opaque, int ret)
     return;
 
 out:
-    nvme_copy_cb(iocb, ret);
+    nvme_copy_out_completed_cb(iocb, ret);
 }
 
 static void nvme_copy_in_completed_cb(void *opaque, int ret)
@@ -2865,15 +2852,9 @@ static void nvme_copy_in_completed_cb(void *opaque, int ret)
 
 invalid:
     req->status = status;
-    iocb->aiocb = NULL;
-    if (iocb->bh) {
-        qemu_bh_schedule(iocb->bh);
-    }
-
-    return;
-
+    iocb->ret = -1;
 out:
-    nvme_copy_cb(iocb, ret);
+    nvme_do_copy(iocb);
 }
 
 static void nvme_copy_in_cb(void *opaque, int ret)
@@ -2884,16 +2865,8 @@ static void nvme_copy_in_cb(void *opaque, int ret)
     uint64_t slba;
     uint32_t nlb;
 
-    if (ret < 0) {
-        iocb->ret = ret;
+    if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) {
         goto out;
-    } else if (iocb->ret < 0) {
-        goto out;
-    }
-
-    if (!ns->lbaf.ms) {
-        nvme_copy_in_completed_cb(iocb, 0);
-        return;
     }
 
     nvme_copy_source_range_parse(iocb->ranges, iocb->idx, iocb->format, &slba,
@@ -2909,12 +2882,11 @@ static void nvme_copy_in_cb(void *opaque, int ret)
     return;
 
 out:
-    nvme_copy_cb(iocb, iocb->ret);
+    nvme_copy_in_completed_cb(iocb, ret);
 }
 
-static void nvme_copy_cb(void *opaque, int ret)
+static void nvme_do_copy(NvmeCopyAIOCB *iocb)
 {
-    NvmeCopyAIOCB *iocb = opaque;
     NvmeRequest *req = iocb->req;
     NvmeNamespace *ns = req->ns;
     uint64_t slba;
@@ -2922,10 +2894,7 @@ static void nvme_copy_cb(void *opaque, int ret)
     size_t len;
     uint16_t status;
 
-    if (ret < 0) {
-        iocb->ret = ret;
-        goto done;
-    } else if (iocb->ret < 0) {
+    if (iocb->ret < 0) {
         goto done;
     }
 
@@ -2972,14 +2941,11 @@ static void nvme_copy_cb(void *opaque, int ret)
 
 invalid:
     req->status = status;
+    iocb->ret = -1;
 done:
-    iocb->aiocb = NULL;
-    if (iocb->bh) {
-        qemu_bh_schedule(iocb->bh);
-    }
+    nvme_copy_done(iocb);
 }
 
-
 static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *req)
 {
     NvmeNamespace *ns = req->ns;
@@ -3049,7 +3015,6 @@ static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *req)
     }
 
     iocb->req = req;
-    iocb->bh = qemu_bh_new(nvme_copy_bh, iocb);
     iocb->ret = 0;
     iocb->nr = nr;
     iocb->idx = 0;
@@ -3066,7 +3031,7 @@ static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *req)
                      BLOCK_ACCT_WRITE);
 
     req->aiocb = &iocb->common;
-    nvme_copy_cb(iocb, 0);
+    nvme_do_copy(iocb);
 
     return NVME_NO_COMPLETE;
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 22/51] target/i386: allow MMX instructions with CR4.OSFXSR=0
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (20 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 21/51] hw/nvme: remove copy bh scheduling Juan Quintela
@ 2022-12-05  9:51 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 23/51] target/i386: Always completely initialize TranslateFault Juan Quintela
                   ` (29 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:51 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Paolo Bonzini <pbonzini@redhat.com>

MMX state is saved/restored by FSAVE/FRSTOR so the instructions are
not illegal opcodes even if CR4.OSFXSR=0.  Make sure that validate_vex
takes into account the prefix and only checks HF_OSFXSR_MASK in the
presence of an SSE instruction.

Fixes: 20581aadec5e ("target/i386: validate VEX prefixes via the instructions' exception classes", 2022-10-18)
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1350
Reported-by: Helge Konetzka (@hejko on gitlab.com)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target/i386/tcg/decode-new.c.inc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc
index e4878b967f..80c579164f 100644
--- a/target/i386/tcg/decode-new.c.inc
+++ b/target/i386/tcg/decode-new.c.inc
@@ -1488,7 +1488,8 @@ static bool validate_vex(DisasContext *s, X86DecodedInsn *decode)
             if (!(s->flags & HF_AVX_EN_MASK)) {
                 goto illegal;
             }
-        } else {
+        } else if (e->special != X86_SPECIAL_MMX ||
+                   (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA))) {
             if (!(s->flags & HF_OSFXSR_MASK)) {
                 goto illegal;
             }
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 23/51] target/i386: Always completely initialize TranslateFault
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (21 preceding siblings ...)
  2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 22/51] target/i386: allow MMX instructions with CR4.OSFXSR=0 Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 24/51] hw/loongarch/virt: Add cfi01 pflash device Juan Quintela
                   ` (28 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Daniel Hoffman

From: Richard Henderson <richard.henderson@linaro.org>

In get_physical_address, the canonical address check failed to
set TranslateFault.stage2, which resulted in an uninitialized
read from the struct when reporting the fault in x86_cpu_tlb_fill.

Adjust all error paths to use structure assignment so that the
entire struct is always initialized.

Reported-by: Daniel Hoffman <dhoff749@gmail.com>
Fixes: 9bbcf372193a ("target/i386: Reorg GET_HPHYS")
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20221201074522.178498-1-richard.henderson@linaro.org>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1324
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target/i386/tcg/sysemu/excp_helper.c | 34 ++++++++++++++++------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
index 405a5d414a..55bd1194d3 100644
--- a/target/i386/tcg/sysemu/excp_helper.c
+++ b/target/i386/tcg/sysemu/excp_helper.c
@@ -71,10 +71,11 @@ static bool ptw_translate(PTETranslate *inout, hwaddr addr)
         TranslateFault *err = inout->err;
 
         assert(inout->ptw_idx == MMU_NESTED_IDX);
-        err->exception_index = 0; /* unused */
-        err->error_code = inout->env->error_code;
-        err->cr2 = addr;
-        err->stage2 = S2_GPT;
+        *err = (TranslateFault){
+            .error_code = inout->env->error_code,
+            .cr2 = addr,
+            .stage2 = S2_GPT,
+        };
         return false;
     }
     return true;
@@ -431,10 +432,11 @@ do_check_protect_pse36:
                                   MMU_NESTED_IDX, true,
                                   &pte_trans.haddr, &full, 0);
         if (unlikely(flags & TLB_INVALID_MASK)) {
-            err->exception_index = 0; /* unused */
-            err->error_code = env->error_code;
-            err->cr2 = paddr;
-            err->stage2 = S2_GPA;
+            *err = (TranslateFault){
+                .error_code = env->error_code,
+                .cr2 = paddr,
+                .stage2 = S2_GPA,
+            };
             return false;
         }
 
@@ -494,10 +496,11 @@ do_check_protect_pse36:
         }
         break;
     }
-    err->exception_index = EXCP0E_PAGE;
-    err->error_code = error_code;
-    err->cr2 = addr;
-    err->stage2 = S2_NONE;
+    *err = (TranslateFault){
+        .exception_index = EXCP0E_PAGE,
+        .error_code = error_code,
+        .cr2 = addr,
+    };
     return false;
 }
 
@@ -564,9 +567,10 @@ static bool get_physical_address(CPUX86State *env, vaddr addr,
                 int shift = in.pg_mode & PG_MODE_LA57 ? 56 : 47;
                 int64_t sext = (int64_t)addr >> shift;
                 if (sext != 0 && sext != -1) {
-                    err->exception_index = EXCP0D_GPF;
-                    err->error_code = 0;
-                    err->cr2 = addr;
+                    *err = (TranslateFault){
+                        .exception_index = EXCP0D_GPF,
+                        .cr2 = addr,
+                    };
                     return false;
                 }
             }
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 24/51] hw/loongarch/virt: Add cfi01 pflash device
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (22 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 23/51] target/i386: Always completely initialize TranslateFault Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 25/51] tests/qtest/migration-test: Fix unlink error and memory leaks Juan Quintela
                   ` (27 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Philippe Mathieu-Daudé

From: Xiaojuan Yang <yangxiaojuan@loongson.cn>

Add cfi01 pflash device for LoongArch virt machine

Signed-off-by: Xiaojuan Yang <yangxiaojuan@loongson.cn>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20221130100647.398565-1-yangxiaojuan@loongson.cn>
Signed-off-by: Song Gao <gaosong@loongson.cn>
---
 include/hw/loongarch/virt.h |  5 +++
 hw/loongarch/acpi-build.c   | 18 +++++++++++
 hw/loongarch/virt.c         | 62 +++++++++++++++++++++++++++++++++++++
 hw/loongarch/Kconfig        |  1 +
 4 files changed, 86 insertions(+)

diff --git a/include/hw/loongarch/virt.h b/include/hw/loongarch/virt.h
index 45c383f5a7..f5f818894e 100644
--- a/include/hw/loongarch/virt.h
+++ b/include/hw/loongarch/virt.h
@@ -12,6 +12,7 @@
 #include "hw/boards.h"
 #include "qemu/queue.h"
 #include "hw/intc/loongarch_ipi.h"
+#include "hw/block/flash.h"
 
 #define LOONGARCH_MAX_VCPUS     4
 
@@ -20,6 +21,9 @@
 #define VIRT_FWCFG_BASE         0x1e020000UL
 #define VIRT_BIOS_BASE          0x1c000000UL
 #define VIRT_BIOS_SIZE          (4 * MiB)
+#define VIRT_FLASH_SECTOR_SIZE  (128 * KiB)
+#define VIRT_FLASH_BASE         0x1d000000UL
+#define VIRT_FLASH_SIZE         (16 * MiB)
 
 #define VIRT_LOWMEM_BASE        0
 #define VIRT_LOWMEM_SIZE        0x10000000
@@ -48,6 +52,7 @@ struct LoongArchMachineState {
     int          fdt_size;
     DeviceState *platform_bus_dev;
     PCIBus       *pci_bus;
+    PFlashCFI01  *flash;
 };
 
 #define TYPE_LOONGARCH_MACHINE  MACHINE_TYPE_NAME("virt")
diff --git a/hw/loongarch/acpi-build.c b/hw/loongarch/acpi-build.c
index 7d5f5a757d..c2b237736d 100644
--- a/hw/loongarch/acpi-build.c
+++ b/hw/loongarch/acpi-build.c
@@ -279,6 +279,23 @@ static void build_pci_device_aml(Aml *scope, LoongArchMachineState *lams)
     acpi_dsdt_add_gpex(scope, &cfg);
 }
 
+static void build_flash_aml(Aml *scope, LoongArchMachineState *lams)
+{
+    Aml *dev, *crs;
+
+    hwaddr flash_base = VIRT_FLASH_BASE;
+    hwaddr flash_size = VIRT_FLASH_SIZE;
+
+    dev = aml_device("FLS0");
+    aml_append(dev, aml_name_decl("_HID", aml_string("LNRO0015")));
+    aml_append(dev, aml_name_decl("_UID", aml_int(0)));
+
+    crs = aml_resource_template();
+    aml_append(crs, aml_memory32_fixed(flash_base, flash_size, AML_READ_WRITE));
+    aml_append(dev, aml_name_decl("_CRS", crs));
+    aml_append(scope, dev);
+}
+
 #ifdef CONFIG_TPM
 static void acpi_dsdt_add_tpm(Aml *scope, LoongArchMachineState *vms)
 {
@@ -328,6 +345,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, MachineState *machine)
     build_uart_device_aml(dsdt);
     build_pci_device_aml(dsdt, lams);
     build_la_ged_aml(dsdt, machine);
+    build_flash_aml(dsdt, lams);
 #ifdef CONFIG_TPM
     acpi_dsdt_add_tpm(dsdt, lams);
 #endif
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 958be74fa1..c8a495ea30 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -42,6 +42,63 @@
 #include "hw/display/ramfb.h"
 #include "hw/mem/pc-dimm.h"
 #include "sysemu/tpm.h"
+#include "sysemu/block-backend.h"
+#include "hw/block/flash.h"
+
+static void virt_flash_create(LoongArchMachineState *lams)
+{
+    DeviceState *dev = qdev_new(TYPE_PFLASH_CFI01);
+
+    qdev_prop_set_uint64(dev, "sector-length", VIRT_FLASH_SECTOR_SIZE);
+    qdev_prop_set_uint8(dev, "width", 4);
+    qdev_prop_set_uint8(dev, "device-width", 2);
+    qdev_prop_set_bit(dev, "big-endian", false);
+    qdev_prop_set_uint16(dev, "id0", 0x89);
+    qdev_prop_set_uint16(dev, "id1", 0x18);
+    qdev_prop_set_uint16(dev, "id2", 0x00);
+    qdev_prop_set_uint16(dev, "id3", 0x00);
+    qdev_prop_set_string(dev, "name", "virt.flash");
+    object_property_add_child(OBJECT(lams), "virt.flash", OBJECT(dev));
+    object_property_add_alias(OBJECT(lams), "pflash",
+                              OBJECT(dev), "drive");
+
+    lams->flash = PFLASH_CFI01(dev);
+}
+
+static void virt_flash_map(LoongArchMachineState *lams,
+                           MemoryRegion *sysmem)
+{
+    PFlashCFI01 *flash = lams->flash;
+    DeviceState *dev = DEVICE(flash);
+    hwaddr base = VIRT_FLASH_BASE;
+    hwaddr size = VIRT_FLASH_SIZE;
+
+    assert(QEMU_IS_ALIGNED(size, VIRT_FLASH_SECTOR_SIZE));
+    assert(size / VIRT_FLASH_SECTOR_SIZE <= UINT32_MAX);
+
+    qdev_prop_set_uint32(dev, "num-blocks", size / VIRT_FLASH_SECTOR_SIZE);
+    sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
+    memory_region_add_subregion(sysmem, base,
+                                sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
+
+}
+
+static void fdt_add_flash_node(LoongArchMachineState *lams)
+{
+    MachineState *ms = MACHINE(lams);
+    char *nodename;
+
+    hwaddr flash_base = VIRT_FLASH_BASE;
+    hwaddr flash_size = VIRT_FLASH_SIZE;
+
+    nodename = g_strdup_printf("/flash@%" PRIx64, flash_base);
+    qemu_fdt_add_subnode(ms->fdt, nodename);
+    qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "cfi-flash");
+    qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg",
+                                 2, flash_base, 2, flash_size);
+    qemu_fdt_setprop_cell(ms->fdt, nodename, "bank-width", 4);
+    g_free(nodename);
+}
 
 static void fdt_add_rtc_node(LoongArchMachineState *lams)
 {
@@ -596,6 +653,9 @@ static void loongarch_firmware_init(LoongArchMachineState *lams)
     int bios_size;
 
     lams->bios_loaded = false;
+
+    virt_flash_map(lams, get_system_memory());
+
     if (filename) {
         bios_name = qemu_find_file(QEMU_FILE_TYPE_BIOS, filename);
         if (!bios_name) {
@@ -779,6 +839,7 @@ static void loongarch_init(MachineState *machine)
             loongarch_direct_kernel_boot(lams);
         }
     }
+    fdt_add_flash_node(lams);
     /* register reset function */
     for (i = 0; i < machine->smp.cpus; i++) {
         lacpu = LOONGARCH_CPU(qemu_get_cpu(i));
@@ -838,6 +899,7 @@ static void loongarch_machine_initfn(Object *obj)
     lams->acpi = ON_OFF_AUTO_AUTO;
     lams->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6);
     lams->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8);
+    virt_flash_create(lams);
 }
 
 static bool memhp_type_supported(DeviceState *dev)
diff --git a/hw/loongarch/Kconfig b/hw/loongarch/Kconfig
index 17d15b6c90..eb112af990 100644
--- a/hw/loongarch/Kconfig
+++ b/hw/loongarch/Kconfig
@@ -20,3 +20,4 @@ config LOONGARCH_VIRT
     select ACPI_HW_REDUCED
     select FW_CFG_DMA
     select DIMM
+    select PFLASH_CFI01
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 25/51] tests/qtest/migration-test: Fix unlink error and memory leaks
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (23 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 24/51] hw/loongarch/virt: Add cfi01 pflash device Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 26/51] target/s390x/tcg: Fix and improve the SACF instruction Juan Quintela
                   ` (26 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Bin Meng, Daniel P . Berrangé

From: Thomas Huth <thuth@redhat.com>

When running the migration test compiled with Clang from Fedora 37
and sanitizers enabled, there is an error complaining about unlink():

 ../tests/qtest/migration-test.c:1072:12: runtime error: null pointer
  passed as argument 1, which is declared to never be null
 /usr/include/unistd.h:858:48: note: nonnull attribute specified here
 SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
  ../tests/qtest/migration-test.c:1072:12 in
 (test program exited with status code 1)
 TAP parsing error: Too few tests run (expected 33, got 20)

The data->clientcert and data->clientkey pointers can indeed be unset
in some tests, so we have to check them before calling unlink() with
those.

While we're at it, I also noticed that the code is only freeing
some but not all of the allocated strings in this function, and
indeed, valgrind is also complaining about memory leaks here.
So let's call g_free() on all allocated strings to avoid leaking
memory here.

Message-Id: <20221125083054.117504-1-thuth@redhat.com>
Tested-by: Bin Meng <bmeng@tinylab.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/qtest/migration-test.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 442998d9eb..dbde726adf 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -1066,15 +1066,27 @@ test_migrate_tls_x509_finish(QTestState *from,
     TestMigrateTLSX509Data *data = opaque;
 
     test_tls_cleanup(data->keyfile);
+    g_free(data->keyfile);
+
     unlink(data->cacert);
+    g_free(data->cacert);
     unlink(data->servercert);
+    g_free(data->servercert);
     unlink(data->serverkey);
-    unlink(data->clientcert);
-    unlink(data->clientkey);
+    g_free(data->serverkey);
+
+    if (data->clientcert) {
+        unlink(data->clientcert);
+        g_free(data->clientcert);
+    }
+    if (data->clientkey) {
+        unlink(data->clientkey);
+        g_free(data->clientkey);
+    }
+
     rmdir(data->workdir);
-
     g_free(data->workdir);
-    g_free(data->keyfile);
+
     g_free(data);
 }
 #endif /* CONFIG_TASN1 */
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 26/51] target/s390x/tcg: Fix and improve the SACF instruction
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (24 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 25/51] tests/qtest/migration-test: Fix unlink error and memory leaks Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 27/51] hw/display/next-fb: Fix comment typo Juan Quintela
                   ` (25 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

From: Thomas Huth <thuth@redhat.com>

The SET ADDRESS SPACE CONTROL FAST instruction is not privileged, it can be
used from problem space, too. Just the switching to the home address space
is privileged and should still generate a privilege exception. This bug is
e.g. causing programs like Java that use the "getcpu" vdso kernel function
to crash (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990417#26 ).

While we're at it, also check if DAT is not enabled. In that case the
instruction is supposed to generate a special operation exception.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/655
Message-Id: <20221201184443.136355-1-thuth@redhat.com>
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/s390x/tcg/insn-data.h.inc | 2 +-
 target/s390x/tcg/cc_helper.c     | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc
index 7e952bdfc8..54d4250c9f 100644
--- a/target/s390x/tcg/insn-data.h.inc
+++ b/target/s390x/tcg/insn-data.h.inc
@@ -1365,7 +1365,7 @@
 /* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
     F(0xb220, SERVC,   RRE,   Z,   r1_o, r2_o, 0, 0, servc, 0, IF_PRIV | IF_IO)
 /* SET ADDRESS SPACE CONTROL FAST */
-    F(0xb279, SACF,    S,     Z,   0, a2, 0, 0, sacf, 0, IF_PRIV)
+    C(0xb279, SACF,    S,     Z,   0, a2, 0, 0, sacf, 0)
 /* SET CLOCK */
     F(0xb204, SCK,     S,     Z,   0, m2_64a, 0, 0, sck, 0, IF_PRIV | IF_IO)
 /* SET CLOCK COMPARATOR */
diff --git a/target/s390x/tcg/cc_helper.c b/target/s390x/tcg/cc_helper.c
index b2e8d3d9f5..b36f8cdc8b 100644
--- a/target/s390x/tcg/cc_helper.c
+++ b/target/s390x/tcg/cc_helper.c
@@ -487,6 +487,10 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1)
 {
     HELPER_LOG("%s: %16" PRIx64 "\n", __func__, a1);
 
+    if (!(env->psw.mask & PSW_MASK_DAT)) {
+        tcg_s390_program_interrupt(env, PGM_SPECIAL_OP, GETPC());
+    }
+
     switch (a1 & 0xf00) {
     case 0x000:
         env->psw.mask &= ~PSW_MASK_ASC;
@@ -497,6 +501,9 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1)
         env->psw.mask |= PSW_ASC_SECONDARY;
         break;
     case 0x300:
+        if ((env->psw.mask & PSW_MASK_PSTATE) != 0) {
+            tcg_s390_program_interrupt(env, PGM_PRIVILEGED, GETPC());
+        }
         env->psw.mask &= ~PSW_MASK_ASC;
         env->psw.mask |= PSW_ASC_HOME;
         break;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 27/51] hw/display/next-fb: Fix comment typo
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (25 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 26/51] target/s390x/tcg: Fix and improve the SACF instruction Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 28/51] multifd: Create page_size fields into both MultiFD{Recv, Send}Params Juan Quintela
                   ` (24 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Evgeny Ermakov, Philippe Mathieu-Daudé

From: Evgeny Ermakov <evgeny.v.ermakov@gmail.com>

Signed-off-by: Evgeny Ermakov <evgeny.v.ermakov@gmail.com>
Message-Id: <20221125160849.23711-1-evgeny.v.ermakov@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 hw/display/next-fb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/display/next-fb.c b/hw/display/next-fb.c
index dd6a1aa8ae..8446ff3c00 100644
--- a/hw/display/next-fb.c
+++ b/hw/display/next-fb.c
@@ -126,7 +126,7 @@ static void nextfb_class_init(ObjectClass *oc, void *data)
     set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
     dc->realize = nextfb_realize;
 
-    /* Note: This device does not any state that we have to reset or migrate */
+    /* Note: This device does not have any state that we have to reset or migrate */
 }
 
 static const TypeInfo nextfb_info = {
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 28/51] multifd: Create page_size fields into both MultiFD{Recv, Send}Params
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (26 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 27/51] hw/display/next-fb: Fix comment typo Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 29/51] multifd: Create page_count " Juan Quintela
                   ` (23 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Leonardo Bras

We were calling qemu_target_page_size() left and right.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Leonardo Bras <leobras@redhat.com>
---
 migration/multifd.h      |  4 ++++
 migration/multifd-zlib.c | 14 ++++++--------
 migration/multifd-zstd.c | 12 +++++-------
 migration/multifd.c      | 18 ++++++++----------
 4 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/migration/multifd.h b/migration/multifd.h
index 519f498643..86fb9982b3 100644
--- a/migration/multifd.h
+++ b/migration/multifd.h
@@ -80,6 +80,8 @@ typedef struct {
     bool registered_yank;
     /* packet allocated len */
     uint32_t packet_len;
+    /* guest page size */
+    uint32_t page_size;
     /* multifd flags for sending ram */
     int write_flags;
 
@@ -143,6 +145,8 @@ typedef struct {
     QIOChannel *c;
     /* packet allocated len */
     uint32_t packet_len;
+    /* guest page size */
+    uint32_t page_size;
 
     /* syncs main thread and channels */
     QemuSemaphore sem_sync;
diff --git a/migration/multifd-zlib.c b/migration/multifd-zlib.c
index 18213a9513..37770248e1 100644
--- a/migration/multifd-zlib.c
+++ b/migration/multifd-zlib.c
@@ -116,7 +116,6 @@ static void zlib_send_cleanup(MultiFDSendParams *p, Error **errp)
 static int zlib_send_prepare(MultiFDSendParams *p, Error **errp)
 {
     struct zlib_data *z = p->data;
-    size_t page_size = qemu_target_page_size();
     z_stream *zs = &z->zs;
     uint32_t out_size = 0;
     int ret;
@@ -135,8 +134,8 @@ static int zlib_send_prepare(MultiFDSendParams *p, Error **errp)
          * with compression. zlib does not guarantee that this is safe,
          * therefore copy the page before calling deflate().
          */
-        memcpy(z->buf, p->pages->block->host + p->normal[i], page_size);
-        zs->avail_in = page_size;
+        memcpy(z->buf, p->pages->block->host + p->normal[i], p->page_size);
+        zs->avail_in = p->page_size;
         zs->next_in = z->buf;
 
         zs->avail_out = available;
@@ -242,12 +241,11 @@ static void zlib_recv_cleanup(MultiFDRecvParams *p)
 static int zlib_recv_pages(MultiFDRecvParams *p, Error **errp)
 {
     struct zlib_data *z = p->data;
-    size_t page_size = qemu_target_page_size();
     z_stream *zs = &z->zs;
     uint32_t in_size = p->next_packet_size;
     /* we measure the change of total_out */
     uint32_t out_size = zs->total_out;
-    uint32_t expected_size = p->normal_num * page_size;
+    uint32_t expected_size = p->normal_num * p->page_size;
     uint32_t flags = p->flags & MULTIFD_FLAG_COMPRESSION_MASK;
     int ret;
     int i;
@@ -274,7 +272,7 @@ static int zlib_recv_pages(MultiFDRecvParams *p, Error **errp)
             flush = Z_SYNC_FLUSH;
         }
 
-        zs->avail_out = page_size;
+        zs->avail_out = p->page_size;
         zs->next_out = p->host + p->normal[i];
 
         /*
@@ -288,8 +286,8 @@ static int zlib_recv_pages(MultiFDRecvParams *p, Error **errp)
         do {
             ret = inflate(zs, flush);
         } while (ret == Z_OK && zs->avail_in
-                             && (zs->total_out - start) < page_size);
-        if (ret == Z_OK && (zs->total_out - start) < page_size) {
+                             && (zs->total_out - start) < p->page_size);
+        if (ret == Z_OK && (zs->total_out - start) < p->page_size) {
             error_setg(errp, "multifd %u: inflate generated too few output",
                        p->id);
             return -1;
diff --git a/migration/multifd-zstd.c b/migration/multifd-zstd.c
index d788d309f2..f4a8e1ed1f 100644
--- a/migration/multifd-zstd.c
+++ b/migration/multifd-zstd.c
@@ -113,7 +113,6 @@ static void zstd_send_cleanup(MultiFDSendParams *p, Error **errp)
 static int zstd_send_prepare(MultiFDSendParams *p, Error **errp)
 {
     struct zstd_data *z = p->data;
-    size_t page_size = qemu_target_page_size();
     int ret;
     uint32_t i;
 
@@ -128,7 +127,7 @@ static int zstd_send_prepare(MultiFDSendParams *p, Error **errp)
             flush = ZSTD_e_flush;
         }
         z->in.src = p->pages->block->host + p->normal[i];
-        z->in.size = page_size;
+        z->in.size = p->page_size;
         z->in.pos = 0;
 
         /*
@@ -241,8 +240,7 @@ static int zstd_recv_pages(MultiFDRecvParams *p, Error **errp)
 {
     uint32_t in_size = p->next_packet_size;
     uint32_t out_size = 0;
-    size_t page_size = qemu_target_page_size();
-    uint32_t expected_size = p->normal_num * page_size;
+    uint32_t expected_size = p->normal_num * p->page_size;
     uint32_t flags = p->flags & MULTIFD_FLAG_COMPRESSION_MASK;
     struct zstd_data *z = p->data;
     int ret;
@@ -265,7 +263,7 @@ static int zstd_recv_pages(MultiFDRecvParams *p, Error **errp)
 
     for (i = 0; i < p->normal_num; i++) {
         z->out.dst = p->host + p->normal[i];
-        z->out.size = page_size;
+        z->out.size = p->page_size;
         z->out.pos = 0;
 
         /*
@@ -279,8 +277,8 @@ static int zstd_recv_pages(MultiFDRecvParams *p, Error **errp)
         do {
             ret = ZSTD_decompressStream(z->zds, &z->out, &z->in);
         } while (ret > 0 && (z->in.size - z->in.pos > 0)
-                         && (z->out.pos < page_size));
-        if (ret > 0 && (z->out.pos < page_size)) {
+                         && (z->out.pos < p->page_size));
+        if (ret > 0 && (z->out.pos < p->page_size)) {
             error_setg(errp, "multifd %u: decompressStream buffer too small",
                        p->id);
             return -1;
diff --git a/migration/multifd.c b/migration/multifd.c
index 509bbbe3bf..efffa77a76 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -87,15 +87,14 @@ static void nocomp_send_cleanup(MultiFDSendParams *p, Error **errp)
 static int nocomp_send_prepare(MultiFDSendParams *p, Error **errp)
 {
     MultiFDPages_t *pages = p->pages;
-    size_t page_size = qemu_target_page_size();
 
     for (int i = 0; i < p->normal_num; i++) {
         p->iov[p->iovs_num].iov_base = pages->block->host + p->normal[i];
-        p->iov[p->iovs_num].iov_len = page_size;
+        p->iov[p->iovs_num].iov_len = p->page_size;
         p->iovs_num++;
     }
 
-    p->next_packet_size = p->normal_num * page_size;
+    p->next_packet_size = p->normal_num * p->page_size;
     p->flags |= MULTIFD_FLAG_NOCOMP;
     return 0;
 }
@@ -139,7 +138,6 @@ static void nocomp_recv_cleanup(MultiFDRecvParams *p)
 static int nocomp_recv_pages(MultiFDRecvParams *p, Error **errp)
 {
     uint32_t flags = p->flags & MULTIFD_FLAG_COMPRESSION_MASK;
-    size_t page_size = qemu_target_page_size();
 
     if (flags != MULTIFD_FLAG_NOCOMP) {
         error_setg(errp, "multifd %u: flags received %x flags expected %x",
@@ -148,7 +146,7 @@ static int nocomp_recv_pages(MultiFDRecvParams *p, Error **errp)
     }
     for (int i = 0; i < p->normal_num; i++) {
         p->iov[i].iov_base = p->host + p->normal[i];
-        p->iov[i].iov_len = page_size;
+        p->iov[i].iov_len = p->page_size;
     }
     return qio_channel_readv_all(p->c, p->iov, p->normal_num, errp);
 }
@@ -281,8 +279,7 @@ static void multifd_send_fill_packet(MultiFDSendParams *p)
 static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp)
 {
     MultiFDPacket_t *packet = p->packet;
-    size_t page_size = qemu_target_page_size();
-    uint32_t page_count = MULTIFD_PACKET_SIZE / page_size;
+    uint32_t page_count = MULTIFD_PACKET_SIZE / p->page_size;
     RAMBlock *block;
     int i;
 
@@ -344,7 +341,7 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp)
     for (i = 0; i < p->normal_num; i++) {
         uint64_t offset = be64_to_cpu(packet->offset[i]);
 
-        if (offset > (block->used_length - page_size)) {
+        if (offset > (block->used_length - p->page_size)) {
             error_setg(errp, "multifd: offset too long %" PRIu64
                        " (max " RAM_ADDR_FMT ")",
                        offset, block->used_length);
@@ -433,8 +430,7 @@ static int multifd_send_pages(QEMUFile *f)
     p->packet_num = multifd_send_state->packet_num++;
     multifd_send_state->pages = p->pages;
     p->pages = pages;
-    transferred = ((uint64_t) pages->num) * qemu_target_page_size()
-                + p->packet_len;
+    transferred = ((uint64_t) pages->num) * p->page_size + p->packet_len;
     qemu_file_acct_rate_limit(f, transferred);
     ram_counters.multifd_bytes += transferred;
     ram_counters.transferred += transferred;
@@ -947,6 +943,7 @@ int multifd_save_setup(Error **errp)
         /* We need one extra place for the packet header */
         p->iov = g_new0(struct iovec, page_count + 1);
         p->normal = g_new0(ram_addr_t, page_count);
+        p->page_size = qemu_target_page_size();
 
         if (migrate_use_zero_copy_send()) {
             p->write_flags = QIO_CHANNEL_WRITE_FLAG_ZERO_COPY;
@@ -1194,6 +1191,7 @@ int multifd_load_setup(Error **errp)
         p->name = g_strdup_printf("multifdrecv_%d", i);
         p->iov = g_new0(struct iovec, page_count);
         p->normal = g_new0(ram_addr_t, page_count);
+        p->page_size = qemu_target_page_size();
     }
 
     for (i = 0; i < thread_count; i++) {
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 29/51] multifd: Create page_count fields into both MultiFD{Recv, Send}Params
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (27 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 28/51] multifd: Create page_size fields into both MultiFD{Recv, Send}Params Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 30/51] migration: Export ram_transferred_ram() Juan Quintela
                   ` (22 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Leonardo Bras

We were recalculating it left and right.  We plan to change that
values on next patches.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Leonardo Bras <leobras@redhat.com>
---
 migration/multifd.h | 4 ++++
 migration/multifd.c | 7 ++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/migration/multifd.h b/migration/multifd.h
index 86fb9982b3..e2802a9ce2 100644
--- a/migration/multifd.h
+++ b/migration/multifd.h
@@ -82,6 +82,8 @@ typedef struct {
     uint32_t packet_len;
     /* guest page size */
     uint32_t page_size;
+    /* number of pages in a full packet */
+    uint32_t page_count;
     /* multifd flags for sending ram */
     int write_flags;
 
@@ -147,6 +149,8 @@ typedef struct {
     uint32_t packet_len;
     /* guest page size */
     uint32_t page_size;
+    /* number of pages in a full packet */
+    uint32_t page_count;
 
     /* syncs main thread and channels */
     QemuSemaphore sem_sync;
diff --git a/migration/multifd.c b/migration/multifd.c
index efffa77a76..b8dc559d24 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -279,7 +279,6 @@ static void multifd_send_fill_packet(MultiFDSendParams *p)
 static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp)
 {
     MultiFDPacket_t *packet = p->packet;
-    uint32_t page_count = MULTIFD_PACKET_SIZE / p->page_size;
     RAMBlock *block;
     int i;
 
@@ -306,10 +305,10 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp)
      * If we received a packet that is 100 times bigger than expected
      * just stop migration.  It is a magic number.
      */
-    if (packet->pages_alloc > page_count) {
+    if (packet->pages_alloc > p->page_count) {
         error_setg(errp, "multifd: received packet "
                    "with size %u and expected a size of %u",
-                   packet->pages_alloc, page_count) ;
+                   packet->pages_alloc, p->page_count) ;
         return -1;
     }
 
@@ -944,6 +943,7 @@ int multifd_save_setup(Error **errp)
         p->iov = g_new0(struct iovec, page_count + 1);
         p->normal = g_new0(ram_addr_t, page_count);
         p->page_size = qemu_target_page_size();
+        p->page_count = page_count;
 
         if (migrate_use_zero_copy_send()) {
             p->write_flags = QIO_CHANNEL_WRITE_FLAG_ZERO_COPY;
@@ -1191,6 +1191,7 @@ int multifd_load_setup(Error **errp)
         p->name = g_strdup_printf("multifdrecv_%d", i);
         p->iov = g_new0(struct iovec, page_count);
         p->normal = g_new0(ram_addr_t, page_count);
+        p->page_count = page_count;
         p->page_size = qemu_target_page_size();
     }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 30/51] migration: Export ram_transferred_ram()
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (28 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 29/51] multifd: Create page_count " Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 31/51] migration: Export ram_release_page() Juan Quintela
                   ` (21 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, David Edmondson, Leonardo Bras

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: David Edmondson <david.edmondson@oracle.com>
Reviewed-by: Leonardo Bras <leobras@redhat.com>
---
 migration/ram.h | 2 ++
 migration/ram.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/migration/ram.h b/migration/ram.h
index c7af65ac74..e844966f69 100644
--- a/migration/ram.h
+++ b/migration/ram.h
@@ -65,6 +65,8 @@ int ram_load_postcopy(QEMUFile *f, int channel);
 
 void ram_handle_compressed(void *host, uint8_t ch, uint64_t size);
 
+void ram_transferred_add(uint64_t bytes);
+
 int ramblock_recv_bitmap_test(RAMBlock *rb, void *host_addr);
 bool ramblock_recv_bitmap_test_byte_offset(RAMBlock *rb, uint64_t byte_offset);
 void ramblock_recv_bitmap_set(RAMBlock *rb, void *host_addr);
diff --git a/migration/ram.c b/migration/ram.c
index 1338e47665..2cbe707bfc 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -422,7 +422,7 @@ uint64_t ram_bytes_remaining(void)
 
 MigrationStats ram_counters;
 
-static void ram_transferred_add(uint64_t bytes)
+void ram_transferred_add(uint64_t bytes)
 {
     if (runstate_is_running()) {
         ram_counters.precopy_bytes += bytes;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 31/51] migration: Export ram_release_page()
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (29 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 30/51] migration: Export ram_transferred_ram() Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 32/51] migration: Take bitmap mutex when completing ram migration Juan Quintela
                   ` (20 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Leonardo Bras

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Leonardo Bras <leobras@redhat.com>
---
 migration/ram.h | 1 +
 migration/ram.c | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/migration/ram.h b/migration/ram.h
index e844966f69..038d52f49f 100644
--- a/migration/ram.h
+++ b/migration/ram.h
@@ -66,6 +66,7 @@ int ram_load_postcopy(QEMUFile *f, int channel);
 void ram_handle_compressed(void *host, uint8_t ch, uint64_t size);
 
 void ram_transferred_add(uint64_t bytes);
+void ram_release_page(const char *rbname, uint64_t offset);
 
 int ramblock_recv_bitmap_test(RAMBlock *rb, void *host_addr);
 bool ramblock_recv_bitmap_test_byte_offset(RAMBlock *rb, uint64_t byte_offset);
diff --git a/migration/ram.c b/migration/ram.c
index 2cbe707bfc..8aad17c429 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1234,7 +1234,7 @@ static void migration_bitmap_sync_precopy(RAMState *rs)
     }
 }
 
-static void ram_release_page(const char *rbname, uint64_t offset)
+void ram_release_page(const char *rbname, uint64_t offset)
 {
     if (!migrate_release_ram() || !migration_in_postcopy()) {
         return;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 32/51] migration: Take bitmap mutex when completing ram migration
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (30 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 31/51] migration: Export ram_release_page() Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 33/51] migration: Add postcopy_preempt_active() Juan Quintela
                   ` (19 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Any call to ram_find_and_save_block() needs to take the bitmap mutex.  We
used to not take it for most of ram_save_complete() because we thought
we're the only one left using the bitmap, but it's not true after the
preempt full patchset applied, since the return path can be taking it too.

Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/migration/ram.c b/migration/ram.c
index 8aad17c429..cc72c24c18 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3406,6 +3406,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
         /* try transferring iterative blocks of memory */
 
         /* flush all remaining blocks regardless of rate limiting */
+        qemu_mutex_lock(&rs->bitmap_mutex);
         while (true) {
             int pages;
 
@@ -3419,6 +3420,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
                 break;
             }
         }
+        qemu_mutex_unlock(&rs->bitmap_mutex);
 
         flush_compressed_data(rs);
         ram_control_after_iterate(f, RAM_CONTROL_FINISH);
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 33/51] migration: Add postcopy_preempt_active()
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (31 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 32/51] migration: Take bitmap mutex when completing ram migration Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 34/51] migration: Cleanup xbzrle zero page cache update logic Juan Quintela
                   ` (18 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Add the helper to show that postcopy preempt enabled, meanwhile active.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index cc72c24c18..00a2e30322 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -162,6 +162,11 @@ out:
     return ret;
 }
 
+static bool postcopy_preempt_active(void)
+{
+    return migrate_postcopy_preempt() && migration_in_postcopy();
+}
+
 bool ramblock_is_ignored(RAMBlock *block)
 {
     return !qemu_ram_is_migratable(block) ||
@@ -2433,7 +2438,7 @@ static void postcopy_preempt_choose_channel(RAMState *rs, PageSearchStatus *pss)
 /* We need to make sure rs->f always points to the default channel elsewhere */
 static void postcopy_preempt_reset_channel(RAMState *rs)
 {
-    if (migrate_postcopy_preempt() && migration_in_postcopy()) {
+    if (postcopy_preempt_active()) {
         rs->postcopy_channel = RAM_CHANNEL_PRECOPY;
         rs->f = migrate_get_current()->to_dst_file;
         trace_postcopy_preempt_reset_channel();
@@ -2471,7 +2476,7 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
         return 0;
     }
 
-    if (migrate_postcopy_preempt() && migration_in_postcopy()) {
+    if (postcopy_preempt_active()) {
         postcopy_preempt_choose_channel(rs, pss);
     }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 34/51] migration: Cleanup xbzrle zero page cache update logic
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (32 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 33/51] migration: Add postcopy_preempt_active() Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 35/51] migration: Trivial cleanup save_page_header() on same block check Juan Quintela
                   ` (17 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

The major change is to replace "!save_page_use_compression()" with
"xbzrle_enabled" to make it clear.

Reasonings:

(1) When compression enabled, "!save_page_use_compression()" is exactly the
    same as checking "xbzrle_enabled".

(2) When compression disabled, "!save_page_use_compression()" always return
    true.  We used to try calling the xbzrle code, but after this change we
    won't, and we shouldn't need to.

Since at it, drop the xbzrle_enabled check in xbzrle_cache_zero_page()
because with this change it's not needed anymore.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 00a2e30322..7124ff531c 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -741,10 +741,6 @@ void mig_throttle_counter_reset(void)
  */
 static void xbzrle_cache_zero_page(RAMState *rs, ram_addr_t current_addr)
 {
-    if (!rs->xbzrle_enabled) {
-        return;
-    }
-
     /* We don't care if this fails to allocate a new cache page
      * as long as it updated an old one */
     cache_insert(XBZRLE.cache, current_addr, XBZRLE.zero_target_page,
@@ -2301,7 +2297,7 @@ static int ram_save_target_page(RAMState *rs, PageSearchStatus *pss)
         /* Must let xbzrle know, otherwise a previous (now 0'd) cached
          * page would be stale
          */
-        if (!save_page_use_compression(rs)) {
+        if (rs->xbzrle_enabled) {
             XBZRLE_cache_lock();
             xbzrle_cache_zero_page(rs, block->offset + offset);
             XBZRLE_cache_unlock();
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 35/51] migration: Trivial cleanup save_page_header() on same block check
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (33 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 34/51] migration: Cleanup xbzrle zero page cache update logic Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 36/51] migration: Remove RAMState.f references in compression code Juan Quintela
                   ` (16 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

The 2nd check on RAM_SAVE_FLAG_CONTINUE is a bit redundant.  Use a boolean
to be clearer.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 7124ff531c..41475431fc 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -661,14 +661,15 @@ static size_t save_page_header(RAMState *rs, QEMUFile *f,  RAMBlock *block,
                                ram_addr_t offset)
 {
     size_t size, len;
+    bool same_block = (block == rs->last_sent_block);
 
-    if (block == rs->last_sent_block) {
+    if (same_block) {
         offset |= RAM_SAVE_FLAG_CONTINUE;
     }
     qemu_put_be64(f, offset);
     size = 8;
 
-    if (!(offset & RAM_SAVE_FLAG_CONTINUE)) {
+    if (!same_block) {
         len = strlen(block->idstr);
         qemu_put_byte(f, len);
         qemu_put_buffer(f, (uint8_t *)block->idstr, len);
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 36/51] migration: Remove RAMState.f references in compression code
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (34 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 35/51] migration: Trivial cleanup save_page_header() on same block check Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 37/51] migration: Yield bitmap_mutex properly when sending/sleeping Juan Quintela
                   ` (15 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Removing referencing to RAMState.f in compress_page_with_multi_thread() and
flush_compressed_data().

Compression code by default isn't compatible with having >1 channels (or it
won't currently know which channel to flush the compressed data), so to
make it simple we always flush on the default to_dst_file port until
someone wants to add >1 ports support, as rs->f right now can really
change (after postcopy preempt is introduced).

There should be no functional change at all after patch applied, since as
long as rs->f referenced in compression code, it must be to_dst_file.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 41475431fc..6e3dc845c5 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1461,6 +1461,7 @@ static bool save_page_use_compression(RAMState *rs);
 
 static void flush_compressed_data(RAMState *rs)
 {
+    MigrationState *ms = migrate_get_current();
     int idx, len, thread_count;
 
     if (!save_page_use_compression(rs)) {
@@ -1479,7 +1480,7 @@ static void flush_compressed_data(RAMState *rs)
     for (idx = 0; idx < thread_count; idx++) {
         qemu_mutex_lock(&comp_param[idx].mutex);
         if (!comp_param[idx].quit) {
-            len = qemu_put_qemu_file(rs->f, comp_param[idx].file);
+            len = qemu_put_qemu_file(ms->to_dst_file, comp_param[idx].file);
             /*
              * it's safe to fetch zero_page without holding comp_done_lock
              * as there is no further request submitted to the thread,
@@ -1498,11 +1499,11 @@ static inline void set_compress_params(CompressParam *param, RAMBlock *block,
     param->offset = offset;
 }
 
-static int compress_page_with_multi_thread(RAMState *rs, RAMBlock *block,
-                                           ram_addr_t offset)
+static int compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset)
 {
     int idx, thread_count, bytes_xmit = -1, pages = -1;
     bool wait = migrate_compress_wait_thread();
+    MigrationState *ms = migrate_get_current();
 
     thread_count = migrate_compress_threads();
     qemu_mutex_lock(&comp_done_lock);
@@ -1510,7 +1511,8 @@ retry:
     for (idx = 0; idx < thread_count; idx++) {
         if (comp_param[idx].done) {
             comp_param[idx].done = false;
-            bytes_xmit = qemu_put_qemu_file(rs->f, comp_param[idx].file);
+            bytes_xmit = qemu_put_qemu_file(ms->to_dst_file,
+                                            comp_param[idx].file);
             qemu_mutex_lock(&comp_param[idx].mutex);
             set_compress_params(&comp_param[idx], block, offset);
             qemu_cond_signal(&comp_param[idx].cond);
@@ -2263,7 +2265,7 @@ static bool save_compress_page(RAMState *rs, RAMBlock *block, ram_addr_t offset)
         return false;
     }
 
-    if (compress_page_with_multi_thread(rs, block, offset) > 0) {
+    if (compress_page_with_multi_thread(block, offset) > 0) {
         return true;
     }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 37/51] migration: Yield bitmap_mutex properly when sending/sleeping
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (35 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 36/51] migration: Remove RAMState.f references in compression code Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 38/51] migration: Use atomic ops properly for page accountings Juan Quintela
                   ` (14 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Don't take the bitmap mutex when sending pages, or when being throttled by
migration_rate_limit() (which is a bit tricky to call it here in ram code,
but seems still helpful).

It prepares for the possibility of concurrently sending pages in >1 threads
using the function ram_save_host_page() because all threads may need the
bitmap_mutex to operate on bitmaps, so that either sendmsg() or any kind of
qemu_sem_wait() blocking for one thread will not block the other from
progressing.

Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 46 +++++++++++++++++++++++++++++++++++-----------
 1 file changed, 35 insertions(+), 11 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 6e3dc845c5..5379164749 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2452,9 +2452,14 @@ static void postcopy_preempt_reset_channel(RAMState *rs)
  * a host page in which case the remainder of the hostpage is sent.
  * Only dirty target pages are sent. Note that the host page size may
  * be a huge page for this block.
+ *
  * The saving stops at the boundary of the used_length of the block
  * if the RAMBlock isn't a multiple of the host page size.
  *
+ * The caller must be with ram_state.bitmap_mutex held to call this
+ * function.  Note that this function can temporarily release the lock, but
+ * when the function is returned it'll make sure the lock is still held.
+ *
  * Returns the number of pages written or negative on error
  *
  * @rs: current RAM state
@@ -2462,6 +2467,7 @@ static void postcopy_preempt_reset_channel(RAMState *rs)
  */
 static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
 {
+    bool page_dirty, preempt_active = postcopy_preempt_active();
     int tmppages, pages = 0;
     size_t pagesize_bits =
         qemu_ram_pagesize(pss->block) >> TARGET_PAGE_BITS;
@@ -2485,22 +2491,40 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
             break;
         }
 
+        page_dirty = migration_bitmap_clear_dirty(rs, pss->block, pss->page);
+
         /* Check the pages is dirty and if it is send it */
-        if (migration_bitmap_clear_dirty(rs, pss->block, pss->page)) {
+        if (page_dirty) {
+            /*
+             * Properly yield the lock only in postcopy preempt mode
+             * because both migration thread and rp-return thread can
+             * operate on the bitmaps.
+             */
+            if (preempt_active) {
+                qemu_mutex_unlock(&rs->bitmap_mutex);
+            }
             tmppages = ram_save_target_page(rs, pss);
-            if (tmppages < 0) {
-                return tmppages;
+            if (tmppages >= 0) {
+                pages += tmppages;
+                /*
+                 * Allow rate limiting to happen in the middle of huge pages if
+                 * something is sent in the current iteration.
+                 */
+                if (pagesize_bits > 1 && tmppages > 0) {
+                    migration_rate_limit();
+                }
             }
-
-            pages += tmppages;
-            /*
-             * Allow rate limiting to happen in the middle of huge pages if
-             * something is sent in the current iteration.
-             */
-            if (pagesize_bits > 1 && tmppages > 0) {
-                migration_rate_limit();
+            if (preempt_active) {
+                qemu_mutex_lock(&rs->bitmap_mutex);
             }
+        } else {
+            tmppages = 0;
+        }
+
+        if (tmppages < 0) {
+            return tmppages;
         }
+
         pss->page = migration_bitmap_find_dirty(rs, pss->block, pss->page);
     } while ((pss->page < hostpage_boundary) &&
              offset_in_ramblock(pss->block,
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 38/51] migration: Use atomic ops properly for page accountings
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (36 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 37/51] migration: Yield bitmap_mutex properly when sending/sleeping Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 39/51] migration: Teach PSS about host page Juan Quintela
                   ` (13 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

To prepare for thread-safety on page accountings, at least below counters
need to be accessed only atomically, they are:

        ram_counters.transferred
        ram_counters.duplicate
        ram_counters.normal
        ram_counters.postcopy_bytes

There are a lot of other counters but they won't be accessed outside
migration thread, then they're still safe to be accessed without atomic
ops.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.h       | 20 ++++++++++++++++++++
 migration/migration.c | 10 +++++-----
 migration/multifd.c   |  4 ++--
 migration/ram.c       | 40 ++++++++++++++++++++++++----------------
 4 files changed, 51 insertions(+), 23 deletions(-)

diff --git a/migration/ram.h b/migration/ram.h
index 038d52f49f..81cbb0947c 100644
--- a/migration/ram.h
+++ b/migration/ram.h
@@ -32,7 +32,27 @@
 #include "qapi/qapi-types-migration.h"
 #include "exec/cpu-common.h"
 #include "io/channel.h"
+#include "qemu/stats64.h"
 
+/*
+ * These are the migration statistic counters that need to be updated using
+ * atomic ops (can be accessed by more than one thread).  Here since we
+ * cannot modify MigrationStats directly to use Stat64 as it was defined in
+ * the QAPI scheme, we define an internal structure to hold them, and we
+ * propagate the real values when QMP queries happen.
+ *
+ * IOW, the corresponding fields within ram_counters on these specific
+ * fields will be always zero and not being used at all; they're just
+ * placeholders to make it QAPI-compatible.
+ */
+typedef struct {
+    Stat64 transferred;
+    Stat64 duplicate;
+    Stat64 normal;
+    Stat64 postcopy_bytes;
+} MigrationAtomicStats;
+
+extern MigrationAtomicStats ram_atomic_counters;
 extern MigrationStats ram_counters;
 extern XBZRLECacheStats xbzrle_counters;
 extern CompressionStats compression_counters;
diff --git a/migration/migration.c b/migration/migration.c
index f485eea5fb..de83c50f51 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1049,13 +1049,13 @@ static void populate_ram_info(MigrationInfo *info, MigrationState *s)
 
     info->has_ram = true;
     info->ram = g_malloc0(sizeof(*info->ram));
-    info->ram->transferred = ram_counters.transferred;
+    info->ram->transferred = stat64_get(&ram_atomic_counters.transferred);
     info->ram->total = ram_bytes_total();
-    info->ram->duplicate = ram_counters.duplicate;
+    info->ram->duplicate = stat64_get(&ram_atomic_counters.duplicate);
     /* legacy value.  It is not used anymore */
     info->ram->skipped = 0;
-    info->ram->normal = ram_counters.normal;
-    info->ram->normal_bytes = ram_counters.normal * page_size;
+    info->ram->normal = stat64_get(&ram_atomic_counters.normal);
+    info->ram->normal_bytes = info->ram->normal * page_size;
     info->ram->mbps = s->mbps;
     info->ram->dirty_sync_count = ram_counters.dirty_sync_count;
     info->ram->dirty_sync_missed_zero_copy =
@@ -1066,7 +1066,7 @@ static void populate_ram_info(MigrationInfo *info, MigrationState *s)
     info->ram->pages_per_second = s->pages_per_second;
     info->ram->precopy_bytes = ram_counters.precopy_bytes;
     info->ram->downtime_bytes = ram_counters.downtime_bytes;
-    info->ram->postcopy_bytes = ram_counters.postcopy_bytes;
+    info->ram->postcopy_bytes = stat64_get(&ram_atomic_counters.postcopy_bytes);
 
     if (migrate_use_xbzrle()) {
         info->has_xbzrle_cache = true;
diff --git a/migration/multifd.c b/migration/multifd.c
index b8dc559d24..000ca4d4ec 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -432,7 +432,7 @@ static int multifd_send_pages(QEMUFile *f)
     transferred = ((uint64_t) pages->num) * p->page_size + p->packet_len;
     qemu_file_acct_rate_limit(f, transferred);
     ram_counters.multifd_bytes += transferred;
-    ram_counters.transferred += transferred;
+    stat64_add(&ram_atomic_counters.transferred, transferred);
     qemu_mutex_unlock(&p->mutex);
     qemu_sem_post(&p->sem);
 
@@ -624,7 +624,7 @@ int multifd_send_sync_main(QEMUFile *f)
         p->pending_job++;
         qemu_file_acct_rate_limit(f, p->packet_len);
         ram_counters.multifd_bytes += p->packet_len;
-        ram_counters.transferred += p->packet_len;
+        stat64_add(&ram_atomic_counters.transferred, p->packet_len);
         qemu_mutex_unlock(&p->mutex);
         qemu_sem_post(&p->sem);
 
diff --git a/migration/ram.c b/migration/ram.c
index 5379164749..f4cd9038f4 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -425,18 +425,25 @@ uint64_t ram_bytes_remaining(void)
                        0;
 }
 
+/*
+ * NOTE: not all stats in ram_counters are used in reality.  See comments
+ * for struct MigrationAtomicStats.  The ultimate result of ram migration
+ * counters will be a merged version with both ram_counters and the atomic
+ * fields in ram_atomic_counters.
+ */
 MigrationStats ram_counters;
+MigrationAtomicStats ram_atomic_counters;
 
 void ram_transferred_add(uint64_t bytes)
 {
     if (runstate_is_running()) {
         ram_counters.precopy_bytes += bytes;
     } else if (migration_in_postcopy()) {
-        ram_counters.postcopy_bytes += bytes;
+        stat64_add(&ram_atomic_counters.postcopy_bytes, bytes);
     } else {
         ram_counters.downtime_bytes += bytes;
     }
-    ram_counters.transferred += bytes;
+    stat64_add(&ram_atomic_counters.transferred, bytes);
 }
 
 void dirty_sync_missed_zero_copy(void)
@@ -725,7 +732,7 @@ void mig_throttle_counter_reset(void)
 
     rs->time_last_bitmap_sync = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
     rs->num_dirty_pages_period = 0;
-    rs->bytes_xfer_prev = ram_counters.transferred;
+    rs->bytes_xfer_prev = stat64_get(&ram_atomic_counters.transferred);
 }
 
 /**
@@ -1085,8 +1092,9 @@ uint64_t ram_pagesize_summary(void)
 
 uint64_t ram_get_total_transferred_pages(void)
 {
-    return  ram_counters.normal + ram_counters.duplicate +
-                compression_counters.pages + xbzrle_counters.pages;
+    return  stat64_get(&ram_atomic_counters.normal) +
+        stat64_get(&ram_atomic_counters.duplicate) +
+        compression_counters.pages + xbzrle_counters.pages;
 }
 
 static void migration_update_rates(RAMState *rs, int64_t end_time)
@@ -1145,8 +1153,8 @@ static void migration_trigger_throttle(RAMState *rs)
 {
     MigrationState *s = migrate_get_current();
     uint64_t threshold = s->parameters.throttle_trigger_threshold;
-
-    uint64_t bytes_xfer_period = ram_counters.transferred - rs->bytes_xfer_prev;
+    uint64_t bytes_xfer_period =
+        stat64_get(&ram_atomic_counters.transferred) - rs->bytes_xfer_prev;
     uint64_t bytes_dirty_period = rs->num_dirty_pages_period * TARGET_PAGE_SIZE;
     uint64_t bytes_dirty_threshold = bytes_xfer_period * threshold / 100;
 
@@ -1209,7 +1217,7 @@ static void migration_bitmap_sync(RAMState *rs)
         /* reset period counters */
         rs->time_last_bitmap_sync = end_time;
         rs->num_dirty_pages_period = 0;
-        rs->bytes_xfer_prev = ram_counters.transferred;
+        rs->bytes_xfer_prev = stat64_get(&ram_atomic_counters.transferred);
     }
     if (migrate_use_events()) {
         qapi_event_send_migration_pass(ram_counters.dirty_sync_count);
@@ -1285,7 +1293,7 @@ static int save_zero_page(RAMState *rs, RAMBlock *block, ram_addr_t offset)
     int len = save_zero_page_to_file(rs, rs->f, block, offset);
 
     if (len) {
-        ram_counters.duplicate++;
+        stat64_add(&ram_atomic_counters.duplicate, 1);
         ram_transferred_add(len);
         return 1;
     }
@@ -1322,9 +1330,9 @@ static bool control_save_page(RAMState *rs, RAMBlock *block, ram_addr_t offset,
     }
 
     if (bytes_xmit > 0) {
-        ram_counters.normal++;
+        stat64_add(&ram_atomic_counters.normal, 1);
     } else if (bytes_xmit == 0) {
-        ram_counters.duplicate++;
+        stat64_add(&ram_atomic_counters.duplicate, 1);
     }
 
     return true;
@@ -1354,7 +1362,7 @@ static int save_normal_page(RAMState *rs, RAMBlock *block, ram_addr_t offset,
         qemu_put_buffer(rs->f, buf, TARGET_PAGE_SIZE);
     }
     ram_transferred_add(TARGET_PAGE_SIZE);
-    ram_counters.normal++;
+    stat64_add(&ram_atomic_counters.normal, 1);
     return 1;
 }
 
@@ -1410,7 +1418,7 @@ static int ram_save_multifd_page(RAMState *rs, RAMBlock *block,
     if (multifd_queue_page(rs->f, block, offset) < 0) {
         return -1;
     }
-    ram_counters.normal++;
+    stat64_add(&ram_atomic_counters.normal, 1);
 
     return 1;
 }
@@ -1448,7 +1456,7 @@ update_compress_thread_counts(const CompressParam *param, int bytes_xmit)
     ram_transferred_add(bytes_xmit);
 
     if (param->zero_page) {
-        ram_counters.duplicate++;
+        stat64_add(&ram_atomic_counters.duplicate, 1);
         return;
     }
 
@@ -2623,9 +2631,9 @@ void acct_update_position(QEMUFile *f, size_t size, bool zero)
     uint64_t pages = size / TARGET_PAGE_SIZE;
 
     if (zero) {
-        ram_counters.duplicate += pages;
+        stat64_add(&ram_atomic_counters.duplicate, pages);
     } else {
-        ram_counters.normal += pages;
+        stat64_add(&ram_atomic_counters.normal, pages);
         ram_transferred_add(size);
         qemu_file_credit_transfer(f, size);
     }
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 39/51] migration: Teach PSS about host page
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (37 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 38/51] migration: Use atomic ops properly for page accountings Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 40/51] migration: Introduce pss_channel Juan Quintela
                   ` (12 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Migration code has a lot to do with host pages.  Teaching PSS core about
the idea of host page helps a lot and makes the code clean.  Meanwhile,
this prepares for the future changes that can leverage the new PSS helpers
that this patch introduces to send host page in another thread.

Three more fields are introduced for this:

  (1) host_page_sending: this is set to true when QEMU is sending a host
      page, false otherwise.

  (2) host_page_{start|end}: these point to the start/end of host page
      we're sending, and it's only valid when host_page_sending==true.

For example, when we look up the next dirty page on the ramblock, with
host_page_sending==true, we'll not try to look for anything beyond the
current host page boundary.  This can be slightly efficient than current
code because currently we'll set pss->page to next dirty bit (which can be
over current host page boundary) and reset it to host page boundary if we
found it goes beyond that.

With above, we can easily make migration_bitmap_find_dirty() self contained
by updating pss->page properly.  rs* parameter is removed because it's not
even used in old code.

When sending a host page, we should use the pss helpers like this:

  - pss_host_page_prepare(pss): called before sending host page
  - pss_within_range(pss): whether we're still working on the cur host page?
  - pss_host_page_finish(pss): called after sending a host page

Then we can use ram_save_target_page() to save one small page.

Currently ram_save_host_page() is still the only user. If there'll be
another function to send host page (e.g. in return path thread) in the
future, it should follow the same style.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 95 +++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 76 insertions(+), 19 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index f4cd9038f4..4d7b50ef79 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -481,6 +481,11 @@ struct PageSearchStatus {
      * postcopy pages via postcopy preempt channel.
      */
     bool         postcopy_target_channel;
+    /* Whether we're sending a host page */
+    bool          host_page_sending;
+    /* The start/end of current host page.  Only valid if host_page_sending==true */
+    unsigned long host_page_start;
+    unsigned long host_page_end;
 };
 typedef struct PageSearchStatus PageSearchStatus;
 
@@ -858,26 +863,38 @@ static int save_xbzrle_page(RAMState *rs, uint8_t **current_data,
 }
 
 /**
- * migration_bitmap_find_dirty: find the next dirty page from start
+ * pss_find_next_dirty: find the next dirty page of current ramblock
  *
- * Returns the page offset within memory region of the start of a dirty page
+ * This function updates pss->page to point to the next dirty page index
+ * within the ramblock to migrate, or the end of ramblock when nothing
+ * found.  Note that when pss->host_page_sending==true it means we're
+ * during sending a host page, so we won't look for dirty page that is
+ * outside the host page boundary.
  *
- * @rs: current RAM state
- * @rb: RAMBlock where to search for dirty pages
- * @start: page where we start the search
+ * @pss: the current page search status
  */
-static inline
-unsigned long migration_bitmap_find_dirty(RAMState *rs, RAMBlock *rb,
-                                          unsigned long start)
+static void pss_find_next_dirty(PageSearchStatus *pss)
 {
+    RAMBlock *rb = pss->block;
     unsigned long size = rb->used_length >> TARGET_PAGE_BITS;
     unsigned long *bitmap = rb->bmap;
 
     if (ramblock_is_ignored(rb)) {
-        return size;
+        /* Points directly to the end, so we know no dirty page */
+        pss->page = size;
+        return;
     }
 
-    return find_next_bit(bitmap, size, start);
+    /*
+     * If during sending a host page, only look for dirty pages within the
+     * current host page being send.
+     */
+    if (pss->host_page_sending) {
+        assert(pss->host_page_end);
+        size = MIN(size, pss->host_page_end);
+    }
+
+    pss->page = find_next_bit(bitmap, size, pss->page);
 }
 
 static void migration_clear_memory_region_dirty_bitmap(RAMBlock *rb,
@@ -1563,7 +1580,9 @@ static bool find_dirty_block(RAMState *rs, PageSearchStatus *pss, bool *again)
     pss->postcopy_requested = false;
     pss->postcopy_target_channel = RAM_CHANNEL_PRECOPY;
 
-    pss->page = migration_bitmap_find_dirty(rs, pss->block, pss->page);
+    /* Update pss->page for the next dirty bit in ramblock */
+    pss_find_next_dirty(pss);
+
     if (pss->complete_round && pss->block == rs->last_seen_block &&
         pss->page >= rs->last_page) {
         /*
@@ -2452,6 +2471,44 @@ static void postcopy_preempt_reset_channel(RAMState *rs)
     }
 }
 
+/* Should be called before sending a host page */
+static void pss_host_page_prepare(PageSearchStatus *pss)
+{
+    /* How many guest pages are there in one host page? */
+    size_t guest_pfns = qemu_ram_pagesize(pss->block) >> TARGET_PAGE_BITS;
+
+    pss->host_page_sending = true;
+    pss->host_page_start = ROUND_DOWN(pss->page, guest_pfns);
+    pss->host_page_end = ROUND_UP(pss->page + 1, guest_pfns);
+}
+
+/*
+ * Whether the page pointed by PSS is within the host page being sent.
+ * Must be called after a previous pss_host_page_prepare().
+ */
+static bool pss_within_range(PageSearchStatus *pss)
+{
+    ram_addr_t ram_addr;
+
+    assert(pss->host_page_sending);
+
+    /* Over host-page boundary? */
+    if (pss->page >= pss->host_page_end) {
+        return false;
+    }
+
+    ram_addr = ((ram_addr_t)pss->page) << TARGET_PAGE_BITS;
+
+    return offset_in_ramblock(pss->block, ram_addr);
+}
+
+static void pss_host_page_finish(PageSearchStatus *pss)
+{
+    pss->host_page_sending = false;
+    /* This is not needed, but just to reset it */
+    pss->host_page_start = pss->host_page_end = 0;
+}
+
 /**
  * ram_save_host_page: save a whole host page
  *
@@ -2479,8 +2536,6 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
     int tmppages, pages = 0;
     size_t pagesize_bits =
         qemu_ram_pagesize(pss->block) >> TARGET_PAGE_BITS;
-    unsigned long hostpage_boundary =
-        QEMU_ALIGN_UP(pss->page + 1, pagesize_bits);
     unsigned long start_page = pss->page;
     int res;
 
@@ -2493,6 +2548,9 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
         postcopy_preempt_choose_channel(rs, pss);
     }
 
+    /* Update host page boundary information */
+    pss_host_page_prepare(pss);
+
     do {
         if (postcopy_needs_preempt(rs, pss)) {
             postcopy_do_preempt(rs, pss);
@@ -2530,15 +2588,14 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
         }
 
         if (tmppages < 0) {
+            pss_host_page_finish(pss);
             return tmppages;
         }
 
-        pss->page = migration_bitmap_find_dirty(rs, pss->block, pss->page);
-    } while ((pss->page < hostpage_boundary) &&
-             offset_in_ramblock(pss->block,
-                                ((ram_addr_t)pss->page) << TARGET_PAGE_BITS));
-    /* The offset we leave with is the min boundary of host page and block */
-    pss->page = MIN(pss->page, hostpage_boundary);
+        pss_find_next_dirty(pss);
+    } while (pss_within_range(pss));
+
+    pss_host_page_finish(pss);
 
     /*
      * When with postcopy preempt mode, flush the data as soon as possible for
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 40/51] migration: Introduce pss_channel
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (38 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 39/51] migration: Teach PSS about host page Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 41/51] migration: Add pss_init() Juan Quintela
                   ` (11 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Introduce pss_channel for PageSearchStatus, define it as "the migration
channel to be used to transfer this host page".

We used to have rs->f, which is a mirror to MigrationState.to_dst_file.

After postcopy preempt initial version, rs->f can be dynamically changed
depending on which channel we want to use.

But that later work still doesn't grant full concurrency of sending pages
in e.g. different threads, because rs->f can either be the PRECOPY channel
or POSTCOPY channel.  This needs to be per-thread too.

PageSearchStatus is actually a good piece of struct which we can leverage
if we want to have multiple threads sending pages.  Sending a single guest
page may not make sense, so we make the granule to be "host page", and in
the PSS structure we allow specify a QEMUFile* to migrate a specific host
page.  Then we open the possibility to specify different channels in
different threads with different PSS structures.

The PSS prefix can be slightly misleading here because e.g. for the
upcoming usage of postcopy channel/thread it's not "searching" (or,
scanning) at all but sending the explicit page that was requested.  However
since PSS existed for some years keep it as-is until someone complains.

This patch mostly (simply) replace rs->f with pss->pss_channel only. No
functional change intended for this patch yet.  But it does prepare to
finally drop rs->f, and make ram_save_guest_page() thread safe.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 70 +++++++++++++++++++++++++++----------------------
 1 file changed, 38 insertions(+), 32 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 4d7b50ef79..571d780987 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -453,6 +453,8 @@ void dirty_sync_missed_zero_copy(void)
 
 /* used by the search for pages to send */
 struct PageSearchStatus {
+    /* The migration channel used for a specific host page */
+    QEMUFile    *pss_channel;
     /* Current block being searched */
     RAMBlock    *block;
     /* Current page to search from */
@@ -775,9 +777,9 @@ static void xbzrle_cache_zero_page(RAMState *rs, ram_addr_t current_addr)
  * @block: block that contains the page we want to send
  * @offset: offset inside the block for the page
  */
-static int save_xbzrle_page(RAMState *rs, uint8_t **current_data,
-                            ram_addr_t current_addr, RAMBlock *block,
-                            ram_addr_t offset)
+static int save_xbzrle_page(RAMState *rs, QEMUFile *file,
+                            uint8_t **current_data, ram_addr_t current_addr,
+                            RAMBlock *block, ram_addr_t offset)
 {
     int encoded_len = 0, bytes_xbzrle;
     uint8_t *prev_cached_page;
@@ -845,11 +847,11 @@ static int save_xbzrle_page(RAMState *rs, uint8_t **current_data,
     }
 
     /* Send XBZRLE based compressed page */
-    bytes_xbzrle = save_page_header(rs, rs->f, block,
+    bytes_xbzrle = save_page_header(rs, file, block,
                                     offset | RAM_SAVE_FLAG_XBZRLE);
-    qemu_put_byte(rs->f, ENCODING_FLAG_XBZRLE);
-    qemu_put_be16(rs->f, encoded_len);
-    qemu_put_buffer(rs->f, XBZRLE.encoded_buf, encoded_len);
+    qemu_put_byte(file, ENCODING_FLAG_XBZRLE);
+    qemu_put_be16(file, encoded_len);
+    qemu_put_buffer(file, XBZRLE.encoded_buf, encoded_len);
     bytes_xbzrle += encoded_len + 1 + 2;
     /*
      * Like compressed_size (please see update_compress_thread_counts),
@@ -1305,9 +1307,10 @@ static int save_zero_page_to_file(RAMState *rs, QEMUFile *file,
  * @block: block that contains the page we want to send
  * @offset: offset inside the block for the page
  */
-static int save_zero_page(RAMState *rs, RAMBlock *block, ram_addr_t offset)
+static int save_zero_page(RAMState *rs, QEMUFile *file, RAMBlock *block,
+                          ram_addr_t offset)
 {
-    int len = save_zero_page_to_file(rs, rs->f, block, offset);
+    int len = save_zero_page_to_file(rs, file, block, offset);
 
     if (len) {
         stat64_add(&ram_atomic_counters.duplicate, 1);
@@ -1324,15 +1327,15 @@ static int save_zero_page(RAMState *rs, RAMBlock *block, ram_addr_t offset)
  *
  * Return true if the pages has been saved, otherwise false is returned.
  */
-static bool control_save_page(RAMState *rs, RAMBlock *block, ram_addr_t offset,
-                              int *pages)
+static bool control_save_page(PageSearchStatus *pss, RAMBlock *block,
+                              ram_addr_t offset, int *pages)
 {
     uint64_t bytes_xmit = 0;
     int ret;
 
     *pages = -1;
-    ret = ram_control_save_page(rs->f, block->offset, offset, TARGET_PAGE_SIZE,
-                                &bytes_xmit);
+    ret = ram_control_save_page(pss->pss_channel, block->offset, offset,
+                                TARGET_PAGE_SIZE, &bytes_xmit);
     if (ret == RAM_SAVE_CONTROL_NOT_SUPP) {
         return false;
     }
@@ -1366,17 +1369,17 @@ static bool control_save_page(RAMState *rs, RAMBlock *block, ram_addr_t offset,
  * @buf: the page to be sent
  * @async: send to page asyncly
  */
-static int save_normal_page(RAMState *rs, RAMBlock *block, ram_addr_t offset,
-                            uint8_t *buf, bool async)
+static int save_normal_page(RAMState *rs, QEMUFile *file, RAMBlock *block,
+                            ram_addr_t offset, uint8_t *buf, bool async)
 {
-    ram_transferred_add(save_page_header(rs, rs->f, block,
+    ram_transferred_add(save_page_header(rs, file, block,
                                          offset | RAM_SAVE_FLAG_PAGE));
     if (async) {
-        qemu_put_buffer_async(rs->f, buf, TARGET_PAGE_SIZE,
+        qemu_put_buffer_async(file, buf, TARGET_PAGE_SIZE,
                               migrate_release_ram() &&
                               migration_in_postcopy());
     } else {
-        qemu_put_buffer(rs->f, buf, TARGET_PAGE_SIZE);
+        qemu_put_buffer(file, buf, TARGET_PAGE_SIZE);
     }
     ram_transferred_add(TARGET_PAGE_SIZE);
     stat64_add(&ram_atomic_counters.normal, 1);
@@ -1409,8 +1412,8 @@ static int ram_save_page(RAMState *rs, PageSearchStatus *pss)
 
     XBZRLE_cache_lock();
     if (rs->xbzrle_enabled && !migration_in_postcopy()) {
-        pages = save_xbzrle_page(rs, &p, current_addr, block,
-                                 offset);
+        pages = save_xbzrle_page(rs, pss->pss_channel, &p, current_addr,
+                                 block, offset);
         if (!rs->last_stage) {
             /* Can't send this cached data async, since the cache page
              * might get updated before it gets to the wire
@@ -1421,7 +1424,8 @@ static int ram_save_page(RAMState *rs, PageSearchStatus *pss)
 
     /* XBZRLE overflow or normal page */
     if (pages == -1) {
-        pages = save_normal_page(rs, block, offset, p, send_async);
+        pages = save_normal_page(rs, pss->pss_channel, block, offset,
+                                 p, send_async);
     }
 
     XBZRLE_cache_unlock();
@@ -1429,10 +1433,10 @@ static int ram_save_page(RAMState *rs, PageSearchStatus *pss)
     return pages;
 }
 
-static int ram_save_multifd_page(RAMState *rs, RAMBlock *block,
+static int ram_save_multifd_page(QEMUFile *file, RAMBlock *block,
                                  ram_addr_t offset)
 {
-    if (multifd_queue_page(rs->f, block, offset) < 0) {
+    if (multifd_queue_page(file, block, offset) < 0) {
         return -1;
     }
     stat64_add(&ram_atomic_counters.normal, 1);
@@ -1727,7 +1731,7 @@ static int ram_save_release_protection(RAMState *rs, PageSearchStatus *pss,
         uint64_t run_length = (pss->page - start_page) << TARGET_PAGE_BITS;
 
         /* Flush async buffers before un-protect. */
-        qemu_fflush(rs->f);
+        qemu_fflush(pss->pss_channel);
         /* Un-protect memory range. */
         res = uffd_change_protection(rs->uffdio_fd, page_address, run_length,
                 false, false);
@@ -2314,7 +2318,7 @@ static int ram_save_target_page(RAMState *rs, PageSearchStatus *pss)
     ram_addr_t offset = ((ram_addr_t)pss->page) << TARGET_PAGE_BITS;
     int res;
 
-    if (control_save_page(rs, block, offset, &res)) {
+    if (control_save_page(pss, block, offset, &res)) {
         return res;
     }
 
@@ -2322,7 +2326,7 @@ static int ram_save_target_page(RAMState *rs, PageSearchStatus *pss)
         return 1;
     }
 
-    res = save_zero_page(rs, block, offset);
+    res = save_zero_page(rs, pss->pss_channel, block, offset);
     if (res > 0) {
         /* Must let xbzrle know, otherwise a previous (now 0'd) cached
          * page would be stale
@@ -2342,7 +2346,7 @@ static int ram_save_target_page(RAMState *rs, PageSearchStatus *pss)
      * still see partially copied pages which is data corruption.
      */
     if (migrate_use_multifd() && !migration_in_postcopy()) {
-        return ram_save_multifd_page(rs, block, offset);
+        return ram_save_multifd_page(pss->pss_channel, block, offset);
     }
 
     return ram_save_page(rs, pss);
@@ -2544,10 +2548,6 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
         return 0;
     }
 
-    if (postcopy_preempt_active()) {
-        postcopy_preempt_choose_channel(rs, pss);
-    }
-
     /* Update host page boundary information */
     pss_host_page_prepare(pss);
 
@@ -2607,7 +2607,7 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
      * explicit flush or it won't flush until the buffer is full.
      */
     if (migrate_postcopy_preempt() && pss->postcopy_requested) {
-        qemu_fflush(rs->f);
+        qemu_fflush(pss->pss_channel);
     }
 
     res = ram_save_release_protection(rs, pss, start_page);
@@ -2673,6 +2673,12 @@ static int ram_find_and_save_block(RAMState *rs)
         }
 
         if (found) {
+            /* Update rs->f with correct channel */
+            if (postcopy_preempt_active()) {
+                postcopy_preempt_choose_channel(rs, &pss);
+            }
+            /* Cache rs->f in pss_channel (TODO: remove rs->f) */
+            pss.pss_channel = rs->f;
             pages = ram_save_host_page(rs, &pss);
         }
     } while (!pages && again);
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 41/51] migration: Add pss_init()
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (39 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 40/51] migration: Introduce pss_channel Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 42/51] migration: Make PageSearchStatus part of RAMState Juan Quintela
                   ` (10 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Helper to init PSS structures.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 571d780987..d81bf7b183 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -542,6 +542,14 @@ static bool do_compress_ram_page(QEMUFile *f, z_stream *stream, RAMBlock *block,
 static void postcopy_preempt_restore(RAMState *rs, PageSearchStatus *pss,
                                      bool postcopy_requested);
 
+/* NOTE: page is the PFN not real ram_addr_t. */
+static void pss_init(PageSearchStatus *pss, RAMBlock *rb, ram_addr_t page)
+{
+    pss->block = rb;
+    pss->page = page;
+    pss->complete_round = false;
+}
+
 static void *do_data_compress(void *opaque)
 {
     CompressParam *param = opaque;
@@ -2650,9 +2658,7 @@ static int ram_find_and_save_block(RAMState *rs)
         rs->last_page = 0;
     }
 
-    pss.block = rs->last_seen_block;
-    pss.page = rs->last_page;
-    pss.complete_round = false;
+    pss_init(&pss, rs->last_seen_block, rs->last_page);
 
     do {
         again = true;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 42/51] migration: Make PageSearchStatus part of RAMState
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (40 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 41/51] migration: Add pss_init() Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 43/51] migration: Move last_sent_block into PageSearchStatus Juan Quintela
                   ` (9 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

We used to allocate PSS structure on the stack for precopy when sending
pages.  Make it static, so as to describe per-channel ram migration status.

Here we declared RAM_CHANNEL_MAX instances, preparing for postcopy to use
it, even though this patch has not yet to start using the 2nd instance.

This should not have any functional change per se, but it already starts to
export PSS information via the RAMState, so that e.g. one PSS channel can
start to reference the other PSS channel.

Always protect PSS access using the same RAMState.bitmap_mutex.  We already
do so, so no code change needed, just some comment update.  Maybe we should
consider renaming bitmap_mutex some day as it's going to be a more commonly
and big mutex we use for ram states, but just leave it for later.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 112 ++++++++++++++++++++++++++----------------------
 1 file changed, 61 insertions(+), 51 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index d81bf7b183..3194997738 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -85,6 +85,46 @@
 
 XBZRLECacheStats xbzrle_counters;
 
+/* used by the search for pages to send */
+struct PageSearchStatus {
+    /* The migration channel used for a specific host page */
+    QEMUFile    *pss_channel;
+    /* Current block being searched */
+    RAMBlock    *block;
+    /* Current page to search from */
+    unsigned long page;
+    /* Set once we wrap around */
+    bool         complete_round;
+    /*
+     * [POSTCOPY-ONLY] Whether current page is explicitly requested by
+     * postcopy.  When set, the request is "urgent" because the dest QEMU
+     * threads are waiting for us.
+     */
+    bool         postcopy_requested;
+    /*
+     * [POSTCOPY-ONLY] The target channel to use to send current page.
+     *
+     * Note: This may _not_ match with the value in postcopy_requested
+     * above. Let's imagine the case where the postcopy request is exactly
+     * the page that we're sending in progress during precopy. In this case
+     * we'll have postcopy_requested set to true but the target channel
+     * will be the precopy channel (so that we don't split brain on that
+     * specific page since the precopy channel already contains partial of
+     * that page data).
+     *
+     * Besides that specific use case, postcopy_target_channel should
+     * always be equal to postcopy_requested, because by default we send
+     * postcopy pages via postcopy preempt channel.
+     */
+    bool         postcopy_target_channel;
+    /* Whether we're sending a host page */
+    bool          host_page_sending;
+    /* The start/end of current host page.  Invalid if host_page_sending==false */
+    unsigned long host_page_start;
+    unsigned long host_page_end;
+};
+typedef struct PageSearchStatus PageSearchStatus;
+
 /* struct contains XBZRLE cache and a static page
    used by the compression */
 static struct {
@@ -319,6 +359,11 @@ typedef struct {
 struct RAMState {
     /* QEMUFile used for this migration */
     QEMUFile *f;
+    /*
+     * PageSearchStatus structures for the channels when send pages.
+     * Protected by the bitmap_mutex.
+     */
+    PageSearchStatus pss[RAM_CHANNEL_MAX];
     /* UFFD file descriptor, used in 'write-tracking' migration */
     int uffdio_fd;
     /* Last block that we have visited searching for dirty pages */
@@ -362,7 +407,12 @@ struct RAMState {
     uint64_t target_page_count;
     /* number of dirty bits in the bitmap */
     uint64_t migration_dirty_pages;
-    /* Protects modification of the bitmap and migration dirty pages */
+    /*
+     * Protects:
+     * - dirty/clear bitmap
+     * - migration_dirty_pages
+     * - pss structures
+     */
     QemuMutex bitmap_mutex;
     /* The RAMBlock used in the last src_page_requests */
     RAMBlock *last_req_rb;
@@ -451,46 +501,6 @@ void dirty_sync_missed_zero_copy(void)
     ram_counters.dirty_sync_missed_zero_copy++;
 }
 
-/* used by the search for pages to send */
-struct PageSearchStatus {
-    /* The migration channel used for a specific host page */
-    QEMUFile    *pss_channel;
-    /* Current block being searched */
-    RAMBlock    *block;
-    /* Current page to search from */
-    unsigned long page;
-    /* Set once we wrap around */
-    bool         complete_round;
-    /*
-     * [POSTCOPY-ONLY] Whether current page is explicitly requested by
-     * postcopy.  When set, the request is "urgent" because the dest QEMU
-     * threads are waiting for us.
-     */
-    bool         postcopy_requested;
-    /*
-     * [POSTCOPY-ONLY] The target channel to use to send current page.
-     *
-     * Note: This may _not_ match with the value in postcopy_requested
-     * above. Let's imagine the case where the postcopy request is exactly
-     * the page that we're sending in progress during precopy. In this case
-     * we'll have postcopy_requested set to true but the target channel
-     * will be the precopy channel (so that we don't split brain on that
-     * specific page since the precopy channel already contains partial of
-     * that page data).
-     *
-     * Besides that specific use case, postcopy_target_channel should
-     * always be equal to postcopy_requested, because by default we send
-     * postcopy pages via postcopy preempt channel.
-     */
-    bool         postcopy_target_channel;
-    /* Whether we're sending a host page */
-    bool          host_page_sending;
-    /* The start/end of current host page.  Only valid if host_page_sending==true */
-    unsigned long host_page_start;
-    unsigned long host_page_end;
-};
-typedef struct PageSearchStatus PageSearchStatus;
-
 CompressionStats compression_counters;
 
 struct CompressParam {
@@ -2637,7 +2647,7 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
  */
 static int ram_find_and_save_block(RAMState *rs)
 {
-    PageSearchStatus pss;
+    PageSearchStatus *pss = &rs->pss[RAM_CHANNEL_PRECOPY];
     int pages = 0;
     bool again, found;
 
@@ -2658,11 +2668,11 @@ static int ram_find_and_save_block(RAMState *rs)
         rs->last_page = 0;
     }
 
-    pss_init(&pss, rs->last_seen_block, rs->last_page);
+    pss_init(pss, rs->last_seen_block, rs->last_page);
 
     do {
         again = true;
-        found = get_queued_page(rs, &pss);
+        found = get_queued_page(rs, pss);
 
         if (!found) {
             /*
@@ -2670,27 +2680,27 @@ static int ram_find_and_save_block(RAMState *rs)
              * preempted precopy.  Otherwise find the next dirty bit.
              */
             if (postcopy_preempt_triggered(rs)) {
-                postcopy_preempt_restore(rs, &pss, false);
+                postcopy_preempt_restore(rs, pss, false);
                 found = true;
             } else {
                 /* priority queue empty, so just search for something dirty */
-                found = find_dirty_block(rs, &pss, &again);
+                found = find_dirty_block(rs, pss, &again);
             }
         }
 
         if (found) {
             /* Update rs->f with correct channel */
             if (postcopy_preempt_active()) {
-                postcopy_preempt_choose_channel(rs, &pss);
+                postcopy_preempt_choose_channel(rs, pss);
             }
             /* Cache rs->f in pss_channel (TODO: remove rs->f) */
-            pss.pss_channel = rs->f;
-            pages = ram_save_host_page(rs, &pss);
+            pss->pss_channel = rs->f;
+            pages = ram_save_host_page(rs, pss);
         }
     } while (!pages && again);
 
-    rs->last_seen_block = pss.block;
-    rs->last_page = pss.page;
+    rs->last_seen_block = pss->block;
+    rs->last_page = pss->page;
 
     return pages;
 }
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 43/51] migration: Move last_sent_block into PageSearchStatus
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (41 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 42/51] migration: Make PageSearchStatus part of RAMState Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 44/51] migration: Send requested page directly in rp-return thread Juan Quintela
                   ` (8 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Since we use PageSearchStatus to represent a channel, it makes perfect
sense to keep last_sent_block (aka, leverage RAM_SAVE_FLAG_CONTINUE) to be
per-channel rather than global because each channel can be sending
different pages on ramblocks.

Hence move it from RAMState into PageSearchStatus.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 71 ++++++++++++++++++++++++++++---------------------
 1 file changed, 41 insertions(+), 30 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 3194997738..1233ff53ac 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -89,6 +89,8 @@ XBZRLECacheStats xbzrle_counters;
 struct PageSearchStatus {
     /* The migration channel used for a specific host page */
     QEMUFile    *pss_channel;
+    /* Last block from where we have sent data */
+    RAMBlock *last_sent_block;
     /* Current block being searched */
     RAMBlock    *block;
     /* Current page to search from */
@@ -368,8 +370,6 @@ struct RAMState {
     int uffdio_fd;
     /* Last block that we have visited searching for dirty pages */
     RAMBlock *last_seen_block;
-    /* Last block from where we have sent data */
-    RAMBlock *last_sent_block;
     /* Last dirty target page we have sent */
     ram_addr_t last_page;
     /* last ram version we have seen */
@@ -684,16 +684,17 @@ exit:
  *
  * Returns the number of bytes written
  *
- * @f: QEMUFile where to send the data
+ * @pss: current PSS channel status
  * @block: block that contains the page we want to send
  * @offset: offset inside the block for the page
  *          in the lower bits, it contains flags
  */
-static size_t save_page_header(RAMState *rs, QEMUFile *f,  RAMBlock *block,
+static size_t save_page_header(PageSearchStatus *pss, RAMBlock *block,
                                ram_addr_t offset)
 {
     size_t size, len;
-    bool same_block = (block == rs->last_sent_block);
+    bool same_block = (block == pss->last_sent_block);
+    QEMUFile *f = pss->pss_channel;
 
     if (same_block) {
         offset |= RAM_SAVE_FLAG_CONTINUE;
@@ -706,7 +707,7 @@ static size_t save_page_header(RAMState *rs, QEMUFile *f,  RAMBlock *block,
         qemu_put_byte(f, len);
         qemu_put_buffer(f, (uint8_t *)block->idstr, len);
         size += 1 + len;
-        rs->last_sent_block = block;
+        pss->last_sent_block = block;
     }
     return size;
 }
@@ -790,17 +791,19 @@ static void xbzrle_cache_zero_page(RAMState *rs, ram_addr_t current_addr)
  *          -1 means that xbzrle would be longer than normal
  *
  * @rs: current RAM state
+ * @pss: current PSS channel
  * @current_data: pointer to the address of the page contents
  * @current_addr: addr of the page
  * @block: block that contains the page we want to send
  * @offset: offset inside the block for the page
  */
-static int save_xbzrle_page(RAMState *rs, QEMUFile *file,
+static int save_xbzrle_page(RAMState *rs, PageSearchStatus *pss,
                             uint8_t **current_data, ram_addr_t current_addr,
                             RAMBlock *block, ram_addr_t offset)
 {
     int encoded_len = 0, bytes_xbzrle;
     uint8_t *prev_cached_page;
+    QEMUFile *file = pss->pss_channel;
 
     if (!cache_is_cached(XBZRLE.cache, current_addr,
                          ram_counters.dirty_sync_count)) {
@@ -865,7 +868,7 @@ static int save_xbzrle_page(RAMState *rs, QEMUFile *file,
     }
 
     /* Send XBZRLE based compressed page */
-    bytes_xbzrle = save_page_header(rs, file, block,
+    bytes_xbzrle = save_page_header(pss, block,
                                     offset | RAM_SAVE_FLAG_XBZRLE);
     qemu_put_byte(file, ENCODING_FLAG_XBZRLE);
     qemu_put_be16(file, encoded_len);
@@ -1296,19 +1299,19 @@ void ram_release_page(const char *rbname, uint64_t offset)
  * Returns the size of data written to the file, 0 means the page is not
  * a zero page
  *
- * @rs: current RAM state
- * @file: the file where the data is saved
+ * @pss: current PSS channel
  * @block: block that contains the page we want to send
  * @offset: offset inside the block for the page
  */
-static int save_zero_page_to_file(RAMState *rs, QEMUFile *file,
+static int save_zero_page_to_file(PageSearchStatus *pss,
                                   RAMBlock *block, ram_addr_t offset)
 {
     uint8_t *p = block->host + offset;
+    QEMUFile *file = pss->pss_channel;
     int len = 0;
 
     if (buffer_is_zero(p, TARGET_PAGE_SIZE)) {
-        len += save_page_header(rs, file, block, offset | RAM_SAVE_FLAG_ZERO);
+        len += save_page_header(pss, block, offset | RAM_SAVE_FLAG_ZERO);
         qemu_put_byte(file, 0);
         len += 1;
         ram_release_page(block->idstr, offset);
@@ -1321,14 +1324,14 @@ static int save_zero_page_to_file(RAMState *rs, QEMUFile *file,
  *
  * Returns the number of pages written.
  *
- * @rs: current RAM state
+ * @pss: current PSS channel
  * @block: block that contains the page we want to send
  * @offset: offset inside the block for the page
  */
-static int save_zero_page(RAMState *rs, QEMUFile *file, RAMBlock *block,
+static int save_zero_page(PageSearchStatus *pss, RAMBlock *block,
                           ram_addr_t offset)
 {
-    int len = save_zero_page_to_file(rs, file, block, offset);
+    int len = save_zero_page_to_file(pss, block, offset);
 
     if (len) {
         stat64_add(&ram_atomic_counters.duplicate, 1);
@@ -1381,16 +1384,18 @@ static bool control_save_page(PageSearchStatus *pss, RAMBlock *block,
  *
  * Returns the number of pages written.
  *
- * @rs: current RAM state
+ * @pss: current PSS channel
  * @block: block that contains the page we want to send
  * @offset: offset inside the block for the page
  * @buf: the page to be sent
  * @async: send to page asyncly
  */
-static int save_normal_page(RAMState *rs, QEMUFile *file, RAMBlock *block,
+static int save_normal_page(PageSearchStatus *pss, RAMBlock *block,
                             ram_addr_t offset, uint8_t *buf, bool async)
 {
-    ram_transferred_add(save_page_header(rs, file, block,
+    QEMUFile *file = pss->pss_channel;
+
+    ram_transferred_add(save_page_header(pss, block,
                                          offset | RAM_SAVE_FLAG_PAGE));
     if (async) {
         qemu_put_buffer_async(file, buf, TARGET_PAGE_SIZE,
@@ -1430,7 +1435,7 @@ static int ram_save_page(RAMState *rs, PageSearchStatus *pss)
 
     XBZRLE_cache_lock();
     if (rs->xbzrle_enabled && !migration_in_postcopy()) {
-        pages = save_xbzrle_page(rs, pss->pss_channel, &p, current_addr,
+        pages = save_xbzrle_page(rs, pss, &p, current_addr,
                                  block, offset);
         if (!rs->last_stage) {
             /* Can't send this cached data async, since the cache page
@@ -1442,8 +1447,7 @@ static int ram_save_page(RAMState *rs, PageSearchStatus *pss)
 
     /* XBZRLE overflow or normal page */
     if (pages == -1) {
-        pages = save_normal_page(rs, pss->pss_channel, block, offset,
-                                 p, send_async);
+        pages = save_normal_page(pss, block, offset, p, send_async);
     }
 
     XBZRLE_cache_unlock();
@@ -1466,14 +1470,15 @@ static bool do_compress_ram_page(QEMUFile *f, z_stream *stream, RAMBlock *block,
                                  ram_addr_t offset, uint8_t *source_buf)
 {
     RAMState *rs = ram_state;
+    PageSearchStatus *pss = &rs->pss[RAM_CHANNEL_PRECOPY];
     uint8_t *p = block->host + offset;
     int ret;
 
-    if (save_zero_page_to_file(rs, f, block, offset)) {
+    if (save_zero_page_to_file(pss, block, offset)) {
         return true;
     }
 
-    save_page_header(rs, f, block, offset | RAM_SAVE_FLAG_COMPRESS_PAGE);
+    save_page_header(pss, block, offset | RAM_SAVE_FLAG_COMPRESS_PAGE);
 
     /*
      * copy it to a internal buffer to avoid it being modified by VM
@@ -2293,7 +2298,8 @@ static bool save_page_use_compression(RAMState *rs)
  * has been properly handled by compression, otherwise needs other
  * paths to handle it
  */
-static bool save_compress_page(RAMState *rs, RAMBlock *block, ram_addr_t offset)
+static bool save_compress_page(RAMState *rs, PageSearchStatus *pss,
+                               RAMBlock *block, ram_addr_t offset)
 {
     if (!save_page_use_compression(rs)) {
         return false;
@@ -2309,7 +2315,7 @@ static bool save_compress_page(RAMState *rs, RAMBlock *block, ram_addr_t offset)
      * We post the fist page as normal page as compression will take
      * much CPU resource.
      */
-    if (block != rs->last_sent_block) {
+    if (block != pss->last_sent_block) {
         flush_compressed_data(rs);
         return false;
     }
@@ -2340,11 +2346,11 @@ static int ram_save_target_page(RAMState *rs, PageSearchStatus *pss)
         return res;
     }
 
-    if (save_compress_page(rs, block, offset)) {
+    if (save_compress_page(rs, pss, block, offset)) {
         return 1;
     }
 
-    res = save_zero_page(rs, pss->pss_channel, block, offset);
+    res = save_zero_page(pss, block, offset);
     if (res > 0) {
         /* Must let xbzrle know, otherwise a previous (now 0'd) cached
          * page would be stale
@@ -2475,7 +2481,7 @@ static void postcopy_preempt_choose_channel(RAMState *rs, PageSearchStatus *pss)
          * If channel switched, reset last_sent_block since the old sent block
          * may not be on the same channel.
          */
-        rs->last_sent_block = NULL;
+        pss->last_sent_block = NULL;
 
         trace_postcopy_preempt_switch_channel(channel);
     }
@@ -2814,8 +2820,13 @@ static void ram_save_cleanup(void *opaque)
 
 static void ram_state_reset(RAMState *rs)
 {
+    int i;
+
+    for (i = 0; i < RAM_CHANNEL_MAX; i++) {
+        rs->pss[i].last_sent_block = NULL;
+    }
+
     rs->last_seen_block = NULL;
-    rs->last_sent_block = NULL;
     rs->last_page = 0;
     rs->last_version = ram_list.version;
     rs->xbzrle_enabled = false;
@@ -3009,8 +3020,8 @@ void ram_postcopy_send_discard_bitmap(MigrationState *ms)
     migration_bitmap_sync(rs);
 
     /* Easiest way to make sure we don't resume in the middle of a host-page */
+    rs->pss[RAM_CHANNEL_PRECOPY].last_sent_block = NULL;
     rs->last_seen_block = NULL;
-    rs->last_sent_block = NULL;
     rs->last_page = 0;
 
     postcopy_each_ram_send_discard(ms);
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 44/51] migration: Send requested page directly in rp-return thread
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (42 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 43/51] migration: Move last_sent_block into PageSearchStatus Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 45/51] migration: Remove old preempt code around state maintainance Juan Quintela
                   ` (7 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

With all the facilities ready, send the requested page directly in the
rp-return thread rather than queuing it in the request queue, if and only
if postcopy preempt is enabled.  It can achieve so because it uses separate
channel for sending urgent pages.  The only shared data is bitmap and it's
protected by the bitmap_mutex.

Note that since we're moving the ownership of the urgent channel from the
migration thread to rp thread it also means the rp thread is responsible
for managing the qemufile, e.g. properly close it when pausing migration
happens.  For this, let migration_release_from_dst_file to cover shutdown
of the urgent channel too, renaming it as migration_release_dst_files() to
better show what it does.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/migration.c |  35 +++++++------
 migration/ram.c       | 112 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 131 insertions(+), 16 deletions(-)

diff --git a/migration/migration.c b/migration/migration.c
index de83c50f51..c1d4d76d0c 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -2848,8 +2848,11 @@ static int migrate_handle_rp_resume_ack(MigrationState *s, uint32_t value)
     return 0;
 }
 
-/* Release ms->rp_state.from_dst_file in a safe way */
-static void migration_release_from_dst_file(MigrationState *ms)
+/*
+ * Release ms->rp_state.from_dst_file (and postcopy_qemufile_src if
+ * existed) in a safe way.
+ */
+static void migration_release_dst_files(MigrationState *ms)
 {
     QEMUFile *file;
 
@@ -2862,6 +2865,18 @@ static void migration_release_from_dst_file(MigrationState *ms)
         ms->rp_state.from_dst_file = NULL;
     }
 
+    /*
+     * Do the same to postcopy fast path socket too if there is.  No
+     * locking needed because this qemufile should only be managed by
+     * return path thread.
+     */
+    if (ms->postcopy_qemufile_src) {
+        migration_ioc_unregister_yank_from_file(ms->postcopy_qemufile_src);
+        qemu_file_shutdown(ms->postcopy_qemufile_src);
+        qemu_fclose(ms->postcopy_qemufile_src);
+        ms->postcopy_qemufile_src = NULL;
+    }
+
     qemu_fclose(file);
 }
 
@@ -3006,7 +3021,7 @@ out:
              * Maybe there is something we can do: it looks like a
              * network down issue, and we pause for a recovery.
              */
-            migration_release_from_dst_file(ms);
+            migration_release_dst_files(ms);
             rp = NULL;
             if (postcopy_pause_return_path_thread(ms)) {
                 /*
@@ -3024,7 +3039,7 @@ out:
     }
 
     trace_source_return_path_thread_end();
-    migration_release_from_dst_file(ms);
+    migration_release_dst_files(ms);
     rcu_unregister_thread();
     return NULL;
 }
@@ -3547,18 +3562,6 @@ static MigThrError postcopy_pause(MigrationState *s)
         qemu_file_shutdown(file);
         qemu_fclose(file);
 
-        /*
-         * Do the same to postcopy fast path socket too if there is.  No
-         * locking needed because no racer as long as we do this before setting
-         * status to paused.
-         */
-        if (s->postcopy_qemufile_src) {
-            migration_ioc_unregister_yank_from_file(s->postcopy_qemufile_src);
-            qemu_file_shutdown(s->postcopy_qemufile_src);
-            qemu_fclose(s->postcopy_qemufile_src);
-            s->postcopy_qemufile_src = NULL;
-        }
-
         migrate_set_state(&s->state, s->state,
                           MIGRATION_STATUS_POSTCOPY_PAUSED);
 
diff --git a/migration/ram.c b/migration/ram.c
index 1233ff53ac..16ade7cb70 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -546,6 +546,8 @@ static QemuThread *decompress_threads;
 static QemuMutex decomp_done_lock;
 static QemuCond decomp_done_cond;
 
+static int ram_save_host_page_urgent(PageSearchStatus *pss);
+
 static bool do_compress_ram_page(QEMUFile *f, z_stream *stream, RAMBlock *block,
                                  ram_addr_t offset, uint8_t *source_buf);
 
@@ -560,6 +562,16 @@ static void pss_init(PageSearchStatus *pss, RAMBlock *rb, ram_addr_t page)
     pss->complete_round = false;
 }
 
+/*
+ * Check whether two PSSs are actively sending the same page.  Return true
+ * if it is, false otherwise.
+ */
+static bool pss_overlap(PageSearchStatus *pss1, PageSearchStatus *pss2)
+{
+    return pss1->host_page_sending && pss2->host_page_sending &&
+        (pss1->host_page_start == pss2->host_page_start);
+}
+
 static void *do_data_compress(void *opaque)
 {
     CompressParam *param = opaque;
@@ -2260,6 +2272,57 @@ int ram_save_queue_pages(const char *rbname, ram_addr_t start, ram_addr_t len)
         return -1;
     }
 
+    /*
+     * When with postcopy preempt, we send back the page directly in the
+     * rp-return thread.
+     */
+    if (postcopy_preempt_active()) {
+        ram_addr_t page_start = start >> TARGET_PAGE_BITS;
+        size_t page_size = qemu_ram_pagesize(ramblock);
+        PageSearchStatus *pss = &ram_state->pss[RAM_CHANNEL_POSTCOPY];
+        int ret = 0;
+
+        qemu_mutex_lock(&rs->bitmap_mutex);
+
+        pss_init(pss, ramblock, page_start);
+        /*
+         * Always use the preempt channel, and make sure it's there.  It's
+         * safe to access without lock, because when rp-thread is running
+         * we should be the only one who operates on the qemufile
+         */
+        pss->pss_channel = migrate_get_current()->postcopy_qemufile_src;
+        pss->postcopy_requested = true;
+        assert(pss->pss_channel);
+
+        /*
+         * It must be either one or multiple of host page size.  Just
+         * assert; if something wrong we're mostly split brain anyway.
+         */
+        assert(len % page_size == 0);
+        while (len) {
+            if (ram_save_host_page_urgent(pss)) {
+                error_report("%s: ram_save_host_page_urgent() failed: "
+                             "ramblock=%s, start_addr=0x"RAM_ADDR_FMT,
+                             __func__, ramblock->idstr, start);
+                ret = -1;
+                break;
+            }
+            /*
+             * NOTE: after ram_save_host_page_urgent() succeeded, pss->page
+             * will automatically be moved and point to the next host page
+             * we're going to send, so no need to update here.
+             *
+             * Normally QEMU never sends >1 host page in requests, so
+             * logically we don't even need that as the loop should only
+             * run once, but just to be consistent.
+             */
+            len -= page_size;
+        };
+        qemu_mutex_unlock(&rs->bitmap_mutex);
+
+        return ret;
+    }
+
     struct RAMSrcPageRequest *new_entry =
         g_new0(struct RAMSrcPageRequest, 1);
     new_entry->rb = ramblock;
@@ -2537,6 +2600,55 @@ static void pss_host_page_finish(PageSearchStatus *pss)
     pss->host_page_start = pss->host_page_end = 0;
 }
 
+/*
+ * Send an urgent host page specified by `pss'.  Need to be called with
+ * bitmap_mutex held.
+ *
+ * Returns 0 if save host page succeeded, false otherwise.
+ */
+static int ram_save_host_page_urgent(PageSearchStatus *pss)
+{
+    bool page_dirty, sent = false;
+    RAMState *rs = ram_state;
+    int ret = 0;
+
+    trace_postcopy_preempt_send_host_page(pss->block->idstr, pss->page);
+    pss_host_page_prepare(pss);
+
+    /*
+     * If precopy is sending the same page, let it be done in precopy, or
+     * we could send the same page in two channels and none of them will
+     * receive the whole page.
+     */
+    if (pss_overlap(pss, &ram_state->pss[RAM_CHANNEL_PRECOPY])) {
+        trace_postcopy_preempt_hit(pss->block->idstr,
+                                   pss->page << TARGET_PAGE_BITS);
+        return 0;
+    }
+
+    do {
+        page_dirty = migration_bitmap_clear_dirty(rs, pss->block, pss->page);
+
+        if (page_dirty) {
+            /* Be strict to return code; it must be 1, or what else? */
+            if (ram_save_target_page(rs, pss) != 1) {
+                error_report_once("%s: ram_save_target_page failed", __func__);
+                ret = -1;
+                goto out;
+            }
+            sent = true;
+        }
+        pss_find_next_dirty(pss);
+    } while (pss_within_range(pss));
+out:
+    pss_host_page_finish(pss);
+    /* For urgent requests, flush immediately if sent */
+    if (sent) {
+        qemu_fflush(pss->pss_channel);
+    }
+    return ret;
+}
+
 /**
  * ram_save_host_page: save a whole host page
  *
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 45/51] migration: Remove old preempt code around state maintainance
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (43 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 44/51] migration: Send requested page directly in rp-return thread Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 46/51] migration: Drop rs->f Juan Quintela
                   ` (6 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

With the new code to send pages in rp-return thread, there's little help to
keep lots of the old code on maintaining the preempt state in migration
thread, because the new way should always be faster..

Then if we'll always send pages in the rp-return thread anyway, we don't
need those logic to maintain preempt state anymore because now we serialize
things using the mutex directly instead of using those fields.

It's very unfortunate to have those code for a short period, but that's
still one intermediate step that we noticed the next bottleneck on the
migration thread.  Now what we can do best is to drop unnecessary code as
long as the new code is stable to reduce the burden.  It's actually a good
thing because the new "sending page in rp-return thread" model is (IMHO)
even cleaner and with better performance.

Remove the old code that was responsible for maintaining preempt states, at
the meantime also remove x-postcopy-preempt-break-huge parameter because
with concurrent sender threads we don't really need to break-huge anymore.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/migration.h |   7 -
 migration/migration.c |   2 -
 migration/ram.c       | 291 +-----------------------------------------
 3 files changed, 3 insertions(+), 297 deletions(-)

diff --git a/migration/migration.h b/migration/migration.h
index cdad8aceaa..ae4ffd3454 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -340,13 +340,6 @@ struct MigrationState {
     bool send_configuration;
     /* Whether we send section footer during migration */
     bool send_section_footer;
-    /*
-     * Whether we allow break sending huge pages when postcopy preempt is
-     * enabled.  When disabled, we won't interrupt precopy within sending a
-     * host huge page, which is the old behavior of vanilla postcopy.
-     * NOTE: this parameter is ignored if postcopy preempt is not enabled.
-     */
-    bool postcopy_preempt_break_huge;
 
     /* Needed by postcopy-pause state */
     QemuSemaphore postcopy_pause_sem;
diff --git a/migration/migration.c b/migration/migration.c
index c1d4d76d0c..c3490c495d 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -4402,8 +4402,6 @@ static Property migration_properties[] = {
     DEFINE_PROP_SIZE("announce-step", MigrationState,
                       parameters.announce_step,
                       DEFAULT_MIGRATE_ANNOUNCE_STEP),
-    DEFINE_PROP_BOOL("x-postcopy-preempt-break-huge", MigrationState,
-                      postcopy_preempt_break_huge, true),
     DEFINE_PROP_STRING("tls-creds", MigrationState, parameters.tls_creds),
     DEFINE_PROP_STRING("tls-hostname", MigrationState, parameters.tls_hostname),
     DEFINE_PROP_STRING("tls-authz", MigrationState, parameters.tls_authz),
diff --git a/migration/ram.c b/migration/ram.c
index 16ade7cb70..1ae093fb61 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -97,28 +97,6 @@ struct PageSearchStatus {
     unsigned long page;
     /* Set once we wrap around */
     bool         complete_round;
-    /*
-     * [POSTCOPY-ONLY] Whether current page is explicitly requested by
-     * postcopy.  When set, the request is "urgent" because the dest QEMU
-     * threads are waiting for us.
-     */
-    bool         postcopy_requested;
-    /*
-     * [POSTCOPY-ONLY] The target channel to use to send current page.
-     *
-     * Note: This may _not_ match with the value in postcopy_requested
-     * above. Let's imagine the case where the postcopy request is exactly
-     * the page that we're sending in progress during precopy. In this case
-     * we'll have postcopy_requested set to true but the target channel
-     * will be the precopy channel (so that we don't split brain on that
-     * specific page since the precopy channel already contains partial of
-     * that page data).
-     *
-     * Besides that specific use case, postcopy_target_channel should
-     * always be equal to postcopy_requested, because by default we send
-     * postcopy pages via postcopy preempt channel.
-     */
-    bool         postcopy_target_channel;
     /* Whether we're sending a host page */
     bool          host_page_sending;
     /* The start/end of current host page.  Invalid if host_page_sending==false */
@@ -343,20 +321,6 @@ struct RAMSrcPageRequest {
     QSIMPLEQ_ENTRY(RAMSrcPageRequest) next_req;
 };
 
-typedef struct {
-    /*
-     * Cached ramblock/offset values if preempted.  They're only meaningful if
-     * preempted==true below.
-     */
-    RAMBlock *ram_block;
-    unsigned long ram_page;
-    /*
-     * Whether a postcopy preemption just happened.  Will be reset after
-     * precopy recovered to background migration.
-     */
-    bool preempted;
-} PostcopyPreemptState;
-
 /* State of RAM for migration */
 struct RAMState {
     /* QEMUFile used for this migration */
@@ -419,14 +383,6 @@ struct RAMState {
     /* Queue of outstanding page requests from the destination */
     QemuMutex src_page_req_mutex;
     QSIMPLEQ_HEAD(, RAMSrcPageRequest) src_page_requests;
-
-    /* Postcopy preemption informations */
-    PostcopyPreemptState postcopy_preempt_state;
-    /*
-     * Current channel we're using on src VM.  Only valid if postcopy-preempt
-     * is enabled.
-     */
-    unsigned int postcopy_channel;
 };
 typedef struct RAMState RAMState;
 
@@ -434,11 +390,6 @@ static RAMState *ram_state;
 
 static NotifierWithReturnList precopy_notifier_list;
 
-static void postcopy_preempt_reset(RAMState *rs)
-{
-    memset(&rs->postcopy_preempt_state, 0, sizeof(PostcopyPreemptState));
-}
-
 /* Whether postcopy has queued requests? */
 static bool postcopy_has_request(RAMState *rs)
 {
@@ -551,9 +502,6 @@ static int ram_save_host_page_urgent(PageSearchStatus *pss);
 static bool do_compress_ram_page(QEMUFile *f, z_stream *stream, RAMBlock *block,
                                  ram_addr_t offset, uint8_t *source_buf);
 
-static void postcopy_preempt_restore(RAMState *rs, PageSearchStatus *pss,
-                                     bool postcopy_requested);
-
 /* NOTE: page is the PFN not real ram_addr_t. */
 static void pss_init(PageSearchStatus *pss, RAMBlock *rb, ram_addr_t page)
 {
@@ -1612,13 +1560,6 @@ retry:
  */
 static bool find_dirty_block(RAMState *rs, PageSearchStatus *pss, bool *again)
 {
-    /*
-     * This is not a postcopy requested page, mark it "not urgent", and use
-     * precopy channel to send it.
-     */
-    pss->postcopy_requested = false;
-    pss->postcopy_target_channel = RAM_CHANNEL_PRECOPY;
-
     /* Update pss->page for the next dirty bit in ramblock */
     pss_find_next_dirty(pss);
 
@@ -2069,55 +2010,6 @@ void ram_write_tracking_stop(void)
 }
 #endif /* defined(__linux__) */
 
-/*
- * Check whether two addr/offset of the ramblock falls onto the same host huge
- * page.  Returns true if so, false otherwise.
- */
-static bool offset_on_same_huge_page(RAMBlock *rb, uint64_t addr1,
-                                     uint64_t addr2)
-{
-    size_t page_size = qemu_ram_pagesize(rb);
-
-    addr1 = ROUND_DOWN(addr1, page_size);
-    addr2 = ROUND_DOWN(addr2, page_size);
-
-    return addr1 == addr2;
-}
-
-/*
- * Whether a previous preempted precopy huge page contains current requested
- * page?  Returns true if so, false otherwise.
- *
- * This should really happen very rarely, because it means when we were sending
- * during background migration for postcopy we're sending exactly the page that
- * some vcpu got faulted on on dest node.  When it happens, we probably don't
- * need to do much but drop the request, because we know right after we restore
- * the precopy stream it'll be serviced.  It'll slightly affect the order of
- * postcopy requests to be serviced (e.g. it'll be the same as we move current
- * request to the end of the queue) but it shouldn't be a big deal.  The most
- * imporant thing is we can _never_ try to send a partial-sent huge page on the
- * POSTCOPY channel again, otherwise that huge page will got "split brain" on
- * two channels (PRECOPY, POSTCOPY).
- */
-static bool postcopy_preempted_contains(RAMState *rs, RAMBlock *block,
-                                        ram_addr_t offset)
-{
-    PostcopyPreemptState *state = &rs->postcopy_preempt_state;
-
-    /* No preemption at all? */
-    if (!state->preempted) {
-        return false;
-    }
-
-    /* Not even the same ramblock? */
-    if (state->ram_block != block) {
-        return false;
-    }
-
-    return offset_on_same_huge_page(block, offset,
-                                    state->ram_page << TARGET_PAGE_BITS);
-}
-
 /**
  * get_queued_page: unqueue a page from the postcopy requests
  *
@@ -2157,20 +2049,7 @@ static bool get_queued_page(RAMState *rs, PageSearchStatus *pss)
 
     } while (block && !dirty);
 
-    if (block) {
-        /* See comment above postcopy_preempted_contains() */
-        if (postcopy_preempted_contains(rs, block, offset)) {
-            trace_postcopy_preempt_hit(block->idstr, offset);
-            /*
-             * If what we preempted previously was exactly what we're
-             * requesting right now, restore the preempted precopy
-             * immediately, boosting its priority as it's requested by
-             * postcopy.
-             */
-            postcopy_preempt_restore(rs, pss, true);
-            return true;
-        }
-    } else {
+    if (!block) {
         /*
          * Poll write faults too if background snapshot is enabled; that's
          * when we have vcpus got blocked by the write protected pages.
@@ -2192,9 +2071,6 @@ static bool get_queued_page(RAMState *rs, PageSearchStatus *pss)
          * really rare.
          */
         pss->complete_round = false;
-        /* Mark it an urgent request, meanwhile using POSTCOPY channel */
-        pss->postcopy_requested = true;
-        pss->postcopy_target_channel = RAM_CHANNEL_POSTCOPY;
     }
 
     return !!block;
@@ -2291,7 +2167,6 @@ int ram_save_queue_pages(const char *rbname, ram_addr_t start, ram_addr_t len)
          * we should be the only one who operates on the qemufile
          */
         pss->pss_channel = migrate_get_current()->postcopy_qemufile_src;
-        pss->postcopy_requested = true;
         assert(pss->pss_channel);
 
         /*
@@ -2439,129 +2314,6 @@ static int ram_save_target_page(RAMState *rs, PageSearchStatus *pss)
     return ram_save_page(rs, pss);
 }
 
-static bool postcopy_needs_preempt(RAMState *rs, PageSearchStatus *pss)
-{
-    MigrationState *ms = migrate_get_current();
-
-    /* Not enabled eager preempt?  Then never do that. */
-    if (!migrate_postcopy_preempt()) {
-        return false;
-    }
-
-    /* If the user explicitly disabled breaking of huge page, skip */
-    if (!ms->postcopy_preempt_break_huge) {
-        return false;
-    }
-
-    /* If the ramblock we're sending is a small page?  Never bother. */
-    if (qemu_ram_pagesize(pss->block) == TARGET_PAGE_SIZE) {
-        return false;
-    }
-
-    /* Not in postcopy at all? */
-    if (!migration_in_postcopy()) {
-        return false;
-    }
-
-    /*
-     * If we're already handling a postcopy request, don't preempt as this page
-     * has got the same high priority.
-     */
-    if (pss->postcopy_requested) {
-        return false;
-    }
-
-    /* If there's postcopy requests, then check it up! */
-    return postcopy_has_request(rs);
-}
-
-/* Returns true if we preempted precopy, false otherwise */
-static void postcopy_do_preempt(RAMState *rs, PageSearchStatus *pss)
-{
-    PostcopyPreemptState *p_state = &rs->postcopy_preempt_state;
-
-    trace_postcopy_preempt_triggered(pss->block->idstr, pss->page);
-
-    /*
-     * Time to preempt precopy. Cache current PSS into preempt state, so that
-     * after handling the postcopy pages we can recover to it.  We need to do
-     * so because the dest VM will have partial of the precopy huge page kept
-     * over in its tmp huge page caches; better move on with it when we can.
-     */
-    p_state->ram_block = pss->block;
-    p_state->ram_page = pss->page;
-    p_state->preempted = true;
-}
-
-/* Whether we're preempted by a postcopy request during sending a huge page */
-static bool postcopy_preempt_triggered(RAMState *rs)
-{
-    return rs->postcopy_preempt_state.preempted;
-}
-
-static void postcopy_preempt_restore(RAMState *rs, PageSearchStatus *pss,
-                                     bool postcopy_requested)
-{
-    PostcopyPreemptState *state = &rs->postcopy_preempt_state;
-
-    assert(state->preempted);
-
-    pss->block = state->ram_block;
-    pss->page = state->ram_page;
-
-    /* Whether this is a postcopy request? */
-    pss->postcopy_requested = postcopy_requested;
-    /*
-     * When restoring a preempted page, the old data resides in PRECOPY
-     * slow channel, even if postcopy_requested is set.  So always use
-     * PRECOPY channel here.
-     */
-    pss->postcopy_target_channel = RAM_CHANNEL_PRECOPY;
-
-    trace_postcopy_preempt_restored(pss->block->idstr, pss->page);
-
-    /* Reset preempt state, most importantly, set preempted==false */
-    postcopy_preempt_reset(rs);
-}
-
-static void postcopy_preempt_choose_channel(RAMState *rs, PageSearchStatus *pss)
-{
-    MigrationState *s = migrate_get_current();
-    unsigned int channel = pss->postcopy_target_channel;
-    QEMUFile *next;
-
-    if (channel != rs->postcopy_channel) {
-        if (channel == RAM_CHANNEL_PRECOPY) {
-            next = s->to_dst_file;
-        } else {
-            next = s->postcopy_qemufile_src;
-        }
-        /* Update and cache the current channel */
-        rs->f = next;
-        rs->postcopy_channel = channel;
-
-        /*
-         * If channel switched, reset last_sent_block since the old sent block
-         * may not be on the same channel.
-         */
-        pss->last_sent_block = NULL;
-
-        trace_postcopy_preempt_switch_channel(channel);
-    }
-
-    trace_postcopy_preempt_send_host_page(pss->block->idstr, pss->page);
-}
-
-/* We need to make sure rs->f always points to the default channel elsewhere */
-static void postcopy_preempt_reset_channel(RAMState *rs)
-{
-    if (postcopy_preempt_active()) {
-        rs->postcopy_channel = RAM_CHANNEL_PRECOPY;
-        rs->f = migrate_get_current()->to_dst_file;
-        trace_postcopy_preempt_reset_channel();
-    }
-}
-
 /* Should be called before sending a host page */
 static void pss_host_page_prepare(PageSearchStatus *pss)
 {
@@ -2688,11 +2440,6 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
     pss_host_page_prepare(pss);
 
     do {
-        if (postcopy_needs_preempt(rs, pss)) {
-            postcopy_do_preempt(rs, pss);
-            break;
-        }
-
         page_dirty = migration_bitmap_clear_dirty(rs, pss->block, pss->page);
 
         /* Check the pages is dirty and if it is send it */
@@ -2733,19 +2480,6 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
 
     pss_host_page_finish(pss);
 
-    /*
-     * When with postcopy preempt mode, flush the data as soon as possible for
-     * postcopy requests, because we've already sent a whole huge page, so the
-     * dst node should already have enough resource to atomically filling in
-     * the current missing page.
-     *
-     * More importantly, when using separate postcopy channel, we must do
-     * explicit flush or it won't flush until the buffer is full.
-     */
-    if (migrate_postcopy_preempt() && pss->postcopy_requested) {
-        qemu_fflush(pss->pss_channel);
-    }
-
     res = ram_save_release_protection(rs, pss, start_page);
     return (res < 0 ? res : pages);
 }
@@ -2793,24 +2527,11 @@ static int ram_find_and_save_block(RAMState *rs)
         found = get_queued_page(rs, pss);
 
         if (!found) {
-            /*
-             * Recover previous precopy ramblock/offset if postcopy has
-             * preempted precopy.  Otherwise find the next dirty bit.
-             */
-            if (postcopy_preempt_triggered(rs)) {
-                postcopy_preempt_restore(rs, pss, false);
-                found = true;
-            } else {
-                /* priority queue empty, so just search for something dirty */
-                found = find_dirty_block(rs, pss, &again);
-            }
+            /* priority queue empty, so just search for something dirty */
+            found = find_dirty_block(rs, pss, &again);
         }
 
         if (found) {
-            /* Update rs->f with correct channel */
-            if (postcopy_preempt_active()) {
-                postcopy_preempt_choose_channel(rs, pss);
-            }
             /* Cache rs->f in pss_channel (TODO: remove rs->f) */
             pss->pss_channel = rs->f;
             pages = ram_save_host_page(rs, pss);
@@ -2942,8 +2663,6 @@ static void ram_state_reset(RAMState *rs)
     rs->last_page = 0;
     rs->last_version = ram_list.version;
     rs->xbzrle_enabled = false;
-    postcopy_preempt_reset(rs);
-    rs->postcopy_channel = RAM_CHANNEL_PRECOPY;
 }
 
 #define MAX_WAIT 50 /* ms, half buffered_file limit */
@@ -3587,8 +3306,6 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
     }
     qemu_mutex_unlock(&rs->bitmap_mutex);
 
-    postcopy_preempt_reset_channel(rs);
-
     /*
      * Must occur before EOS (or any QEMUFile operation)
      * because of RDMA protocol.
@@ -3668,8 +3385,6 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
         return ret;
     }
 
-    postcopy_preempt_reset_channel(rs);
-
     ret = multifd_send_sync_main(rs->f);
     if (ret < 0) {
         return ret;
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 46/51] migration: Drop rs->f
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (44 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 45/51] migration: Remove old preempt code around state maintainance Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 47/51] migration: Remove res_compatible parameter Juan Quintela
                   ` (5 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz, Peter Xu

From: Peter Xu <peterx@redhat.com>

Now with rs->pss we can already cache channels in pss->pss_channels.  That
pss_channel contains more infromation than rs->f because it's per-channel.
So rs->f could be replaced by rss->pss[RAM_CHANNEL_PRECOPY].pss_channel,
while rs->f itself is a bit vague now.

Note that vanilla postcopy still send pages via pss[RAM_CHANNEL_PRECOPY],
that's slightly confusing but it reflects the reality.

Then, after the replacement we can safely drop rs->f.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 1ae093fb61..334309f1c6 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -323,8 +323,6 @@ struct RAMSrcPageRequest {
 
 /* State of RAM for migration */
 struct RAMState {
-    /* QEMUFile used for this migration */
-    QEMUFile *f;
     /*
      * PageSearchStatus structures for the channels when send pages.
      * Protected by the bitmap_mutex.
@@ -2532,8 +2530,6 @@ static int ram_find_and_save_block(RAMState *rs)
         }
 
         if (found) {
-            /* Cache rs->f in pss_channel (TODO: remove rs->f) */
-            pss->pss_channel = rs->f;
             pages = ram_save_host_page(rs, pss);
         }
     } while (!pages && again);
@@ -3089,7 +3085,7 @@ static void ram_state_resume_prepare(RAMState *rs, QEMUFile *out)
     ram_state_reset(rs);
 
     /* Update RAMState cache of output QEMUFile */
-    rs->f = out;
+    rs->pss[RAM_CHANNEL_PRECOPY].pss_channel = out;
 
     trace_ram_state_resume_prepare(pages);
 }
@@ -3180,7 +3176,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
             return -1;
         }
     }
-    (*rsp)->f = f;
+    (*rsp)->pss[RAM_CHANNEL_PRECOPY].pss_channel = f;
 
     WITH_RCU_READ_LOCK_GUARD() {
         qemu_put_be64(f, ram_bytes_total_common(true) | RAM_SAVE_FLAG_MEM_SIZE);
@@ -3315,7 +3311,7 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
 out:
     if (ret >= 0
         && migration_is_setup_or_active(migrate_get_current()->state)) {
-        ret = multifd_send_sync_main(rs->f);
+        ret = multifd_send_sync_main(rs->pss[RAM_CHANNEL_PRECOPY].pss_channel);
         if (ret < 0) {
             return ret;
         }
@@ -3385,7 +3381,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
         return ret;
     }
 
-    ret = multifd_send_sync_main(rs->f);
+    ret = multifd_send_sync_main(rs->pss[RAM_CHANNEL_PRECOPY].pss_channel);
     if (ret < 0) {
         return ret;
     }
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 47/51] migration: Remove res_compatible parameter
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (45 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 46/51] migration: Drop rs->f Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 48/51] migration: No save_live_pending() method uses the QEMUFile parameter Juan Quintela
                   ` (4 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

It was only used for RAM, and in that case, it means that this amount
of data was sent for memory.  Just delete the field in all callers.

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 include/migration/register.h   | 20 ++++++++++----------
 migration/savevm.h             |  4 +---
 hw/s390x/s390-stattrib.c       |  6 ++----
 hw/vfio/migration.c            | 10 ++++------
 migration/block-dirty-bitmap.c |  7 +++----
 migration/block.c              |  7 +++----
 migration/migration.c          |  9 ++++-----
 migration/ram.c                |  8 +++-----
 migration/savevm.c             | 14 +++++---------
 hw/vfio/trace-events           |  2 +-
 migration/trace-events         |  2 +-
 11 files changed, 37 insertions(+), 52 deletions(-)

diff --git a/include/migration/register.h b/include/migration/register.h
index c1dcff0f90..1950fee6a8 100644
--- a/include/migration/register.h
+++ b/include/migration/register.h
@@ -48,18 +48,18 @@ typedef struct SaveVMHandlers {
     int (*save_setup)(QEMUFile *f, void *opaque);
     void (*save_live_pending)(QEMUFile *f, void *opaque,
                               uint64_t threshold_size,
-                              uint64_t *res_precopy_only,
-                              uint64_t *res_compatible,
-                              uint64_t *res_postcopy_only);
+                              uint64_t *rest_precopy,
+                              uint64_t *rest_postcopy);
     /* Note for save_live_pending:
-     * - res_precopy_only is for data which must be migrated in precopy phase
-     *     or in stopped state, in other words - before target vm start
-     * - res_compatible is for data which may be migrated in any phase
-     * - res_postcopy_only is for data which must be migrated in postcopy phase
-     *     or in stopped state, in other words - after source vm stop
+     * - res_precopy is for data which must be migrated in precopy
+     *     phase or in stopped state, in other words - before target
+     *     vm start
+     * - res_postcopy is for data which must be migrated in postcopy
+     *     phase or in stopped state, in other words - after source vm
+     *     stop
      *
-     * Sum of res_postcopy_only, res_compatible and res_postcopy_only is the
-     * whole amount of pending data.
+     * Sum of res_precopy and res_postcopy is the whole amount of
+     * pending data.
      */
 
 
diff --git a/migration/savevm.h b/migration/savevm.h
index 6461342cb4..9bd55c336c 100644
--- a/migration/savevm.h
+++ b/migration/savevm.h
@@ -41,9 +41,7 @@ void qemu_savevm_state_complete_postcopy(QEMUFile *f);
 int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
                                        bool inactivate_disks);
 void qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size,
-                               uint64_t *res_precopy_only,
-                               uint64_t *res_compatible,
-                               uint64_t *res_postcopy_only);
+                               uint64_t *res_precopy, uint64_t *res_postcopy);
 void qemu_savevm_send_ping(QEMUFile *f, uint32_t value);
 void qemu_savevm_send_open_return_path(QEMUFile *f);
 int qemu_savevm_send_packaged(QEMUFile *f, const uint8_t *buf, size_t len);
diff --git a/hw/s390x/s390-stattrib.c b/hw/s390x/s390-stattrib.c
index 9eda1c3b2a..ee60b53da4 100644
--- a/hw/s390x/s390-stattrib.c
+++ b/hw/s390x/s390-stattrib.c
@@ -183,16 +183,14 @@ static int cmma_save_setup(QEMUFile *f, void *opaque)
 }
 
 static void cmma_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,
-                              uint64_t *res_precopy_only,
-                              uint64_t *res_compatible,
-                              uint64_t *res_postcopy_only)
+                              uint64_t *res_precopy, uint64_t *res_postcopy)
 {
     S390StAttribState *sas = S390_STATTRIB(opaque);
     S390StAttribClass *sac = S390_STATTRIB_GET_CLASS(sas);
     long long res = sac->get_dirtycount(sas);
 
     if (res >= 0) {
-        *res_precopy_only += res;
+        *res_precopy += res;
     }
 }
 
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index c74453e0b5..d03681678d 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -458,9 +458,8 @@ static void vfio_save_cleanup(void *opaque)
 
 static void vfio_save_pending(QEMUFile *f, void *opaque,
                               uint64_t threshold_size,
-                              uint64_t *res_precopy_only,
-                              uint64_t *res_compatible,
-                              uint64_t *res_postcopy_only)
+                              uint64_t *res_precopy,
+                              uint64_t *res_postcopy)
 {
     VFIODevice *vbasedev = opaque;
     VFIOMigration *migration = vbasedev->migration;
@@ -471,10 +470,9 @@ static void vfio_save_pending(QEMUFile *f, void *opaque,
         return;
     }
 
-    *res_precopy_only += migration->pending_bytes;
+    *res_precopy += migration->pending_bytes;
 
-    trace_vfio_save_pending(vbasedev->name, *res_precopy_only,
-                            *res_postcopy_only, *res_compatible);
+    trace_vfio_save_pending(vbasedev->name, *res_precopy, *res_postcopy);
 }
 
 static int vfio_save_iterate(QEMUFile *f, void *opaque)
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index 9aba7d9c22..dfea546330 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -763,9 +763,8 @@ static int dirty_bitmap_save_complete(QEMUFile *f, void *opaque)
 
 static void dirty_bitmap_save_pending(QEMUFile *f, void *opaque,
                                       uint64_t max_size,
-                                      uint64_t *res_precopy_only,
-                                      uint64_t *res_compatible,
-                                      uint64_t *res_postcopy_only)
+                                      uint64_t *res_precopy,
+                                      uint64_t *res_postcopy)
 {
     DBMSaveState *s = &((DBMState *)opaque)->save;
     SaveBitmapState *dbms;
@@ -785,7 +784,7 @@ static void dirty_bitmap_save_pending(QEMUFile *f, void *opaque,
 
     trace_dirty_bitmap_save_pending(pending, max_size);
 
-    *res_postcopy_only += pending;
+    *res_postcopy += pending;
 }
 
 /* First occurrence of this bitmap. It should be created if doesn't exist */
diff --git a/migration/block.c b/migration/block.c
index 4347da1526..593754c38c 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -863,9 +863,8 @@ static int block_save_complete(QEMUFile *f, void *opaque)
 }
 
 static void block_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,
-                               uint64_t *res_precopy_only,
-                               uint64_t *res_compatible,
-                               uint64_t *res_postcopy_only)
+                               uint64_t *res_precopy,
+                               uint64_t *res_postcopy)
 {
     /* Estimate pending number of bytes to send */
     uint64_t pending;
@@ -886,7 +885,7 @@ static void block_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,
 
     trace_migration_block_save_pending(pending);
     /* We don't do postcopy */
-    *res_precopy_only += pending;
+    *res_precopy += pending;
 }
 
 static int block_load(QEMUFile *f, void *opaque, int version_id)
diff --git a/migration/migration.c b/migration/migration.c
index c3490c495d..6b8a6dd74e 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3756,15 +3756,14 @@ typedef enum {
  */
 static MigIterateState migration_iteration_run(MigrationState *s)
 {
-    uint64_t pending_size, pend_pre, pend_compat, pend_post;
+    uint64_t pending_size, pend_pre, pend_post;
     bool in_postcopy = s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE;
 
     qemu_savevm_state_pending(s->to_dst_file, s->threshold_size, &pend_pre,
-                              &pend_compat, &pend_post);
-    pending_size = pend_pre + pend_compat + pend_post;
+                              &pend_post);
+    pending_size = pend_pre + pend_post;
 
-    trace_migrate_pending(pending_size, s->threshold_size,
-                          pend_pre, pend_compat, pend_post);
+    trace_migrate_pending(pending_size, s->threshold_size, pend_pre, pend_post);
 
     if (pending_size && pending_size >= s->threshold_size) {
         /* Still a significant amount to transfer */
diff --git a/migration/ram.c b/migration/ram.c
index 334309f1c6..640839dcee 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3393,9 +3393,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
 }
 
 static void ram_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,
-                             uint64_t *res_precopy_only,
-                             uint64_t *res_compatible,
-                             uint64_t *res_postcopy_only)
+                             uint64_t *res_precopy, uint64_t *res_postcopy)
 {
     RAMState **temp = opaque;
     RAMState *rs = *temp;
@@ -3415,9 +3413,9 @@ static void ram_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,
 
     if (migrate_postcopy_ram()) {
         /* We can do postcopy, and all the data is postcopiable */
-        *res_compatible += remaining_size;
+        *res_postcopy += remaining_size;
     } else {
-        *res_precopy_only += remaining_size;
+        *res_precopy += remaining_size;
     }
 }
 
diff --git a/migration/savevm.c b/migration/savevm.c
index a0cdb714f7..4d02887f25 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1472,16 +1472,13 @@ flush:
  * for units that can't do postcopy.
  */
 void qemu_savevm_state_pending(QEMUFile *f, uint64_t threshold_size,
-                               uint64_t *res_precopy_only,
-                               uint64_t *res_compatible,
-                               uint64_t *res_postcopy_only)
+                               uint64_t *res_precopy,
+                               uint64_t *res_postcopy)
 {
     SaveStateEntry *se;
 
-    *res_precopy_only = 0;
-    *res_compatible = 0;
-    *res_postcopy_only = 0;
-
+    *res_precopy = 0;
+    *res_postcopy = 0;
 
     QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
         if (!se->ops || !se->ops->save_live_pending) {
@@ -1493,8 +1490,7 @@ void qemu_savevm_state_pending(QEMUFile *f, uint64_t threshold_size,
             }
         }
         se->ops->save_live_pending(f, se->opaque, threshold_size,
-                                   res_precopy_only, res_compatible,
-                                   res_postcopy_only);
+                                   res_precopy, res_postcopy);
     }
 }
 
diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events
index 73dffe9e00..a21cbd2a56 100644
--- a/hw/vfio/trace-events
+++ b/hw/vfio/trace-events
@@ -157,7 +157,7 @@ vfio_save_cleanup(const char *name) " (%s)"
 vfio_save_buffer(const char *name, uint64_t data_offset, uint64_t data_size, uint64_t pending) " (%s) Offset 0x%"PRIx64" size 0x%"PRIx64" pending 0x%"PRIx64
 vfio_update_pending(const char *name, uint64_t pending) " (%s) pending 0x%"PRIx64
 vfio_save_device_config_state(const char *name) " (%s)"
-vfio_save_pending(const char *name, uint64_t precopy, uint64_t postcopy, uint64_t compatible) " (%s) precopy 0x%"PRIx64" postcopy 0x%"PRIx64" compatible 0x%"PRIx64
+vfio_save_pending(const char *name, uint64_t precopy, uint64_t postcopy) " (%s) precopy 0x%"PRIx64" postcopy 0x%"PRIx64
 vfio_save_iterate(const char *name, int data_size) " (%s) data_size %d"
 vfio_save_complete_precopy(const char *name) " (%s)"
 vfio_load_device_config_state(const char *name) " (%s)"
diff --git a/migration/trace-events b/migration/trace-events
index 57003edcbd..f2a873fd6c 100644
--- a/migration/trace-events
+++ b/migration/trace-events
@@ -150,7 +150,7 @@ migrate_fd_cleanup(void) ""
 migrate_fd_error(const char *error_desc) "error=%s"
 migrate_fd_cancel(void) ""
 migrate_handle_rp_req_pages(const char *rbname, size_t start, size_t len) "in %s at 0x%zx len 0x%zx"
-migrate_pending(uint64_t size, uint64_t max, uint64_t pre, uint64_t compat, uint64_t post) "pending size %" PRIu64 " max %" PRIu64 " (pre = %" PRIu64 " compat=%" PRIu64 " post=%" PRIu64 ")"
+migrate_pending(uint64_t size, uint64_t max, uint64_t pre, uint64_t post) "pending size %" PRIu64 " max %" PRIu64 " (pre = %" PRIu64 " post=%" PRIu64 ")"
 migrate_send_rp_message(int msg_type, uint16_t len) "%d: len %d"
 migrate_send_rp_recv_bitmap(char *name, int64_t size) "block '%s' size 0x%"PRIi64
 migration_completion_file_err(void) ""
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 48/51] migration: No save_live_pending() method uses the QEMUFile parameter
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (46 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 47/51] migration: Remove res_compatible parameter Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 49/51] migration: Split save_live_pending() into state_pending_* Juan Quintela
                   ` (3 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

So remove it everywhere.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 include/migration/register.h   | 6 ++----
 migration/savevm.h             | 2 +-
 hw/s390x/s390-stattrib.c       | 2 +-
 hw/vfio/migration.c            | 6 ++----
 migration/block-dirty-bitmap.c | 5 ++---
 migration/block.c              | 2 +-
 migration/migration.c          | 3 +--
 migration/ram.c                | 2 +-
 migration/savevm.c             | 5 ++---
 9 files changed, 13 insertions(+), 20 deletions(-)

diff --git a/include/migration/register.h b/include/migration/register.h
index 1950fee6a8..5b5424ed8f 100644
--- a/include/migration/register.h
+++ b/include/migration/register.h
@@ -46,10 +46,8 @@ typedef struct SaveVMHandlers {
 
     /* This runs outside the iothread lock!  */
     int (*save_setup)(QEMUFile *f, void *opaque);
-    void (*save_live_pending)(QEMUFile *f, void *opaque,
-                              uint64_t threshold_size,
-                              uint64_t *rest_precopy,
-                              uint64_t *rest_postcopy);
+    void (*save_live_pending)(void *opaque,  uint64_t threshold_size,
+                              uint64_t *rest_precopy, uint64_t *rest_postcopy);
     /* Note for save_live_pending:
      * - res_precopy is for data which must be migrated in precopy
      *     phase or in stopped state, in other words - before target
diff --git a/migration/savevm.h b/migration/savevm.h
index 9bd55c336c..98fae6f9b3 100644
--- a/migration/savevm.h
+++ b/migration/savevm.h
@@ -40,7 +40,7 @@ void qemu_savevm_state_cleanup(void);
 void qemu_savevm_state_complete_postcopy(QEMUFile *f);
 int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
                                        bool inactivate_disks);
-void qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size,
+void qemu_savevm_state_pending(uint64_t max_size,
                                uint64_t *res_precopy, uint64_t *res_postcopy);
 void qemu_savevm_send_ping(QEMUFile *f, uint32_t value);
 void qemu_savevm_send_open_return_path(QEMUFile *f);
diff --git a/hw/s390x/s390-stattrib.c b/hw/s390x/s390-stattrib.c
index ee60b53da4..9b74eeadf3 100644
--- a/hw/s390x/s390-stattrib.c
+++ b/hw/s390x/s390-stattrib.c
@@ -182,7 +182,7 @@ static int cmma_save_setup(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void cmma_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,
+static void cmma_save_pending(void *opaque, uint64_t max_size,
                               uint64_t *res_precopy, uint64_t *res_postcopy)
 {
     S390StAttribState *sas = S390_STATTRIB(opaque);
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index d03681678d..8ae1bd31a8 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -456,10 +456,8 @@ static void vfio_save_cleanup(void *opaque)
     trace_vfio_save_cleanup(vbasedev->name);
 }
 
-static void vfio_save_pending(QEMUFile *f, void *opaque,
-                              uint64_t threshold_size,
-                              uint64_t *res_precopy,
-                              uint64_t *res_postcopy)
+static void vfio_save_pending(void *opaque,  uint64_t threshold_size,
+                              uint64_t *res_precopy, uint64_t *res_postcopy)
 {
     VFIODevice *vbasedev = opaque;
     VFIOMigration *migration = vbasedev->migration;
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index dfea546330..a445bdc3c3 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -761,9 +761,8 @@ static int dirty_bitmap_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void dirty_bitmap_save_pending(QEMUFile *f, void *opaque,
-                                      uint64_t max_size,
-                                      uint64_t *res_precopy,
+static void dirty_bitmap_save_pending(void *opaque, uint64_t max_size,
+                                      uint64_t *res_precopy, 
                                       uint64_t *res_postcopy)
 {
     DBMSaveState *s = &((DBMState *)opaque)->save;
diff --git a/migration/block.c b/migration/block.c
index 593754c38c..39ce4003c6 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -862,7 +862,7 @@ static int block_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void block_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,
+static void block_save_pending(void *opaque, uint64_t max_size,
                                uint64_t *res_precopy,
                                uint64_t *res_postcopy)
 {
diff --git a/migration/migration.c b/migration/migration.c
index 6b8a6dd74e..a75a281635 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3759,8 +3759,7 @@ static MigIterateState migration_iteration_run(MigrationState *s)
     uint64_t pending_size, pend_pre, pend_post;
     bool in_postcopy = s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE;
 
-    qemu_savevm_state_pending(s->to_dst_file, s->threshold_size, &pend_pre,
-                              &pend_post);
+    qemu_savevm_state_pending(s->threshold_size, &pend_pre, &pend_post);
     pending_size = pend_pre + pend_post;
 
     trace_migrate_pending(pending_size, s->threshold_size, pend_pre, pend_post);
diff --git a/migration/ram.c b/migration/ram.c
index 640839dcee..63cb6544e5 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3392,7 +3392,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void ram_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,
+static void ram_save_pending(void *opaque, uint64_t max_size,
                              uint64_t *res_precopy, uint64_t *res_postcopy)
 {
     RAMState **temp = opaque;
diff --git a/migration/savevm.c b/migration/savevm.c
index 4d02887f25..9ddcbba4e3 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1471,8 +1471,7 @@ flush:
  * the result is split into the amount for units that can and
  * for units that can't do postcopy.
  */
-void qemu_savevm_state_pending(QEMUFile *f, uint64_t threshold_size,
-                               uint64_t *res_precopy,
+void qemu_savevm_state_pending(uint64_t threshold_size, uint64_t *res_precopy,
                                uint64_t *res_postcopy)
 {
     SaveStateEntry *se;
@@ -1489,7 +1488,7 @@ void qemu_savevm_state_pending(QEMUFile *f, uint64_t threshold_size,
                 continue;
             }
         }
-        se->ops->save_live_pending(f, se->opaque, threshold_size,
+        se->ops->save_live_pending(se->opaque, threshold_size,
                                    res_precopy, res_postcopy);
     }
 }
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 49/51] migration: Split save_live_pending() into state_pending_*
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (47 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 48/51] migration: No save_live_pending() method uses the QEMUFile parameter Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 50/51] migration: Remove unused threshold_size parameter Juan Quintela
                   ` (2 subsequent siblings)
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

We split the function into to:

- state_pending_estimate: We estimate the remaining state size without
  stopping the machine.

- state pending_exact: We calculate the exact amount of remaining
  state.

The only "device" that implements different functions for _estimate()
and _exact() is ram.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 docs/devel/migration.rst       | 18 ++++++++++--------
 docs/devel/vfio-migration.rst  |  4 ++--
 include/migration/register.h   | 12 ++++++++----
 migration/savevm.h             |  8 ++++++--
 hw/s390x/s390-stattrib.c       |  7 ++++---
 hw/vfio/migration.c            |  9 +++++----
 migration/block-dirty-bitmap.c | 11 ++++++-----
 migration/block.c              | 11 ++++++-----
 migration/migration.c          | 13 +++++++++----
 migration/ram.c                | 31 ++++++++++++++++++++++++-------
 migration/savevm.c             | 34 +++++++++++++++++++++++++++++-----
 hw/vfio/trace-events           |  2 +-
 migration/trace-events         |  7 ++++---
 13 files changed, 114 insertions(+), 53 deletions(-)

diff --git a/docs/devel/migration.rst b/docs/devel/migration.rst
index 3e9656d8e0..6f65c23b47 100644
--- a/docs/devel/migration.rst
+++ b/docs/devel/migration.rst
@@ -482,15 +482,17 @@ An iterative device must provide:
   - A ``load_setup`` function that initialises the data structures on the
     destination.
 
-  - A ``save_live_pending`` function that is called repeatedly and must
-    indicate how much more data the iterative data must save.  The core
-    migration code will use this to determine when to pause the CPUs
-    and complete the migration.
+  - A ``state_pending_exact`` function that indicates how much more
+    data we must save.  The core migration code will use this to
+    determine when to pause the CPUs and complete the migration.
 
-  - A ``save_live_iterate`` function (called after ``save_live_pending``
-    when there is significant data still to be sent).  It should send
-    a chunk of data until the point that stream bandwidth limits tell it
-    to stop.  Each call generates one section.
+  - A ``state_pending_estimate`` function that indicates how much more
+    data we must save.  When the estimated amount is smaller than the
+    threshold, we call ``state_pending_exact``.
+
+  - A ``save_live_iterate`` function should send a chunk of data until
+    the point that stream bandwidth limits tell it to stop.  Each call
+    generates one section.
 
   - A ``save_live_complete_precopy`` function that must transmit the
     last section for the device containing any remaining data.
diff --git a/docs/devel/vfio-migration.rst b/docs/devel/vfio-migration.rst
index 9ff6163c88..673057c90d 100644
--- a/docs/devel/vfio-migration.rst
+++ b/docs/devel/vfio-migration.rst
@@ -28,7 +28,7 @@ VFIO implements the device hooks for the iterative approach as follows:
 * A ``load_setup`` function that sets up the migration region on the
   destination and sets _RESUMING flag in the VFIO device state.
 
-* A ``save_live_pending`` function that reads pending_bytes from the vendor
+* A ``state_pending_exact`` function that reads pending_bytes from the vendor
   driver, which indicates the amount of data that the vendor driver has yet to
   save for the VFIO device.
 
@@ -114,7 +114,7 @@ Live migration save path
                     (RUNNING, _SETUP, _RUNNING|_SAVING)
                                   |
                     (RUNNING, _ACTIVE, _RUNNING|_SAVING)
-             If device is active, get pending_bytes by .save_live_pending()
+             If device is active, get pending_bytes by .state_pending_exact()
           If total pending_bytes >= threshold_size, call .save_live_iterate()
                   Data of VFIO device for pre-copy phase is copied
         Iterate till total pending bytes converge and are less than threshold
diff --git a/include/migration/register.h b/include/migration/register.h
index 5b5424ed8f..313b8e1c3b 100644
--- a/include/migration/register.h
+++ b/include/migration/register.h
@@ -46,9 +46,7 @@ typedef struct SaveVMHandlers {
 
     /* This runs outside the iothread lock!  */
     int (*save_setup)(QEMUFile *f, void *opaque);
-    void (*save_live_pending)(void *opaque,  uint64_t threshold_size,
-                              uint64_t *rest_precopy, uint64_t *rest_postcopy);
-    /* Note for save_live_pending:
+    /* Note for state_pending_*:
      * - res_precopy is for data which must be migrated in precopy
      *     phase or in stopped state, in other words - before target
      *     vm start
@@ -59,7 +57,13 @@ typedef struct SaveVMHandlers {
      * Sum of res_precopy and res_postcopy is the whole amount of
      * pending data.
      */
-
+    /* This calculate the exact remaining data to transfer */
+    void (*state_pending_exact)(void *opaque,  uint64_t threshold_size,
+                                uint64_t *rest_precopy, uint64_t *rest_postcopy);
+    /* This estimates the remaining data to transfer */
+    void (*state_pending_estimate)(void *opaque,  uint64_t threshold_size,
+                                   uint64_t *rest_precopy,
+                                   uint64_t *rest_postcopy);
 
     LoadStateHandler *load_state;
     int (*load_setup)(QEMUFile *f, void *opaque);
diff --git a/migration/savevm.h b/migration/savevm.h
index 98fae6f9b3..613f85e717 100644
--- a/migration/savevm.h
+++ b/migration/savevm.h
@@ -40,8 +40,12 @@ void qemu_savevm_state_cleanup(void);
 void qemu_savevm_state_complete_postcopy(QEMUFile *f);
 int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
                                        bool inactivate_disks);
-void qemu_savevm_state_pending(uint64_t max_size,
-                               uint64_t *res_precopy, uint64_t *res_postcopy);
+void qemu_savevm_state_pending_exact(uint64_t max_size,
+                                     uint64_t *res_precopy,
+                                     uint64_t *res_postcopy);
+void qemu_savevm_state_pending_estimate(uint64_t max_size,
+                                        uint64_t *res_precopy,
+                                        uint64_t *res_postcopy);
 void qemu_savevm_send_ping(QEMUFile *f, uint32_t value);
 void qemu_savevm_send_open_return_path(QEMUFile *f);
 int qemu_savevm_send_packaged(QEMUFile *f, const uint8_t *buf, size_t len);
diff --git a/hw/s390x/s390-stattrib.c b/hw/s390x/s390-stattrib.c
index 9b74eeadf3..dfb95eb20c 100644
--- a/hw/s390x/s390-stattrib.c
+++ b/hw/s390x/s390-stattrib.c
@@ -182,8 +182,8 @@ static int cmma_save_setup(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void cmma_save_pending(void *opaque, uint64_t max_size,
-                              uint64_t *res_precopy, uint64_t *res_postcopy)
+static void cmma_state_pending(void *opaque, uint64_t *res_precopy,
+                               uint64_t *res_postcopy)
 {
     S390StAttribState *sas = S390_STATTRIB(opaque);
     S390StAttribClass *sac = S390_STATTRIB_GET_CLASS(sas);
@@ -369,7 +369,8 @@ static SaveVMHandlers savevm_s390_stattrib_handlers = {
     .save_setup = cmma_save_setup,
     .save_live_iterate = cmma_save_iterate,
     .save_live_complete_precopy = cmma_save_complete,
-    .save_live_pending = cmma_save_pending,
+    .state_pending_exact = cmma_state_pending,
+    .state_pending_estimate = cmma_state_pending,
     .save_cleanup = cmma_save_cleanup,
     .load_state = cmma_load,
     .is_active = cmma_active,
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index 8ae1bd31a8..1545498e11 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -456,8 +456,8 @@ static void vfio_save_cleanup(void *opaque)
     trace_vfio_save_cleanup(vbasedev->name);
 }
 
-static void vfio_save_pending(void *opaque,  uint64_t threshold_size,
-                              uint64_t *res_precopy, uint64_t *res_postcopy)
+static void vfio_state_pending(void *opaque,  uint64_t threshold_size,
+                               uint64_t *res_precopy, uint64_t *res_postcopy)
 {
     VFIODevice *vbasedev = opaque;
     VFIOMigration *migration = vbasedev->migration;
@@ -470,7 +470,7 @@ static void vfio_save_pending(void *opaque,  uint64_t threshold_size,
 
     *res_precopy += migration->pending_bytes;
 
-    trace_vfio_save_pending(vbasedev->name, *res_precopy, *res_postcopy);
+    trace_vfio_state_pending(vbasedev->name, *res_precopy, *res_postcopy);
 }
 
 static int vfio_save_iterate(QEMUFile *f, void *opaque)
@@ -681,7 +681,8 @@ static int vfio_load_state(QEMUFile *f, void *opaque, int version_id)
 static SaveVMHandlers savevm_vfio_handlers = {
     .save_setup = vfio_save_setup,
     .save_cleanup = vfio_save_cleanup,
-    .save_live_pending = vfio_save_pending,
+    .state_pending_exact = vfio_state_pending,
+    .state_pending_estimate = vfio_state_pending,
     .save_live_iterate = vfio_save_iterate,
     .save_live_complete_precopy = vfio_save_complete_precopy,
     .save_state = vfio_save_state,
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index a445bdc3c3..5b24007650 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -761,9 +761,9 @@ static int dirty_bitmap_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void dirty_bitmap_save_pending(void *opaque, uint64_t max_size,
-                                      uint64_t *res_precopy, 
-                                      uint64_t *res_postcopy)
+static void dirty_bitmap_state_pending(void *opaque, uint64_t max_size,
+                                       uint64_t *res_precopy,
+                                       uint64_t *res_postcopy)
 {
     DBMSaveState *s = &((DBMState *)opaque)->save;
     SaveBitmapState *dbms;
@@ -781,7 +781,7 @@ static void dirty_bitmap_save_pending(void *opaque, uint64_t max_size,
 
     qemu_mutex_unlock_iothread();
 
-    trace_dirty_bitmap_save_pending(pending, max_size);
+    trace_dirty_bitmap_state_pending(pending);
 
     *res_postcopy += pending;
 }
@@ -1250,7 +1250,8 @@ static SaveVMHandlers savevm_dirty_bitmap_handlers = {
     .save_live_complete_postcopy = dirty_bitmap_save_complete,
     .save_live_complete_precopy = dirty_bitmap_save_complete,
     .has_postcopy = dirty_bitmap_has_postcopy,
-    .save_live_pending = dirty_bitmap_save_pending,
+    .state_pending_exact = dirty_bitmap_state_pending,
+    .state_pending_estimate = dirty_bitmap_state_pending,
     .save_live_iterate = dirty_bitmap_save_iterate,
     .is_active_iterate = dirty_bitmap_is_active_iterate,
     .load_state = dirty_bitmap_load,
diff --git a/migration/block.c b/migration/block.c
index 39ce4003c6..8e6ad1c468 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -862,9 +862,9 @@ static int block_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void block_save_pending(void *opaque, uint64_t max_size,
-                               uint64_t *res_precopy,
-                               uint64_t *res_postcopy)
+static void block_state_pending(void *opaque, uint64_t max_size,
+                                uint64_t *res_precopy,
+                                uint64_t *res_postcopy)
 {
     /* Estimate pending number of bytes to send */
     uint64_t pending;
@@ -883,7 +883,7 @@ static void block_save_pending(void *opaque, uint64_t max_size,
         pending = BLK_MIG_BLOCK_SIZE;
     }
 
-    trace_migration_block_save_pending(pending);
+    trace_migration_block_state_pending(pending);
     /* We don't do postcopy */
     *res_precopy += pending;
 }
@@ -1018,7 +1018,8 @@ static SaveVMHandlers savevm_block_handlers = {
     .save_setup = block_save_setup,
     .save_live_iterate = block_save_iterate,
     .save_live_complete_precopy = block_save_complete,
-    .save_live_pending = block_save_pending,
+    .state_pending_exact = block_state_pending,
+    .state_pending_estimate = block_state_pending,
     .load_state = block_load,
     .save_cleanup = block_migration_cleanup,
     .is_active = block_is_active,
diff --git a/migration/migration.c b/migration/migration.c
index a75a281635..9e18c911db 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3756,13 +3756,18 @@ typedef enum {
  */
 static MigIterateState migration_iteration_run(MigrationState *s)
 {
-    uint64_t pending_size, pend_pre, pend_post;
+    uint64_t pend_pre, pend_post;
     bool in_postcopy = s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE;
 
-    qemu_savevm_state_pending(s->threshold_size, &pend_pre, &pend_post);
-    pending_size = pend_pre + pend_post;
+    qemu_savevm_state_pending_estimate(s->threshold_size, &pend_pre, &pend_post);
+    uint64_t pending_size = pend_pre + pend_post;
+    trace_migrate_pending_estimate(pending_size, s->threshold_size, pend_pre, pend_post);
 
-    trace_migrate_pending(pending_size, s->threshold_size, pend_pre, pend_post);
+    if (pend_pre <= s->threshold_size) {
+        qemu_savevm_state_pending_exact(s->threshold_size, &pend_pre, &pend_post);
+        pending_size = pend_pre + pend_post;
+        trace_migrate_pending_exact(pending_size, s->threshold_size, pend_pre, pend_post);
+    }
 
     if (pending_size && pending_size >= s->threshold_size) {
         /* Still a significant amount to transfer */
diff --git a/migration/ram.c b/migration/ram.c
index 63cb6544e5..ad5a2eeadd 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3392,17 +3392,33 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void ram_save_pending(void *opaque, uint64_t max_size,
-                             uint64_t *res_precopy, uint64_t *res_postcopy)
+static void ram_state_pending_estimate(void *opaque, uint64_t max_size,
+                                       uint64_t *res_precopy,
+                                       uint64_t *res_postcopy)
 {
     RAMState **temp = opaque;
     RAMState *rs = *temp;
-    uint64_t remaining_size;
 
-    remaining_size = rs->migration_dirty_pages * TARGET_PAGE_SIZE;
+    uint64_t remaining_size = rs->migration_dirty_pages * TARGET_PAGE_SIZE;
 
-    if (!migration_in_postcopy() &&
-        remaining_size < max_size) {
+    if (migrate_postcopy_ram()) {
+        /* We can do postcopy, and all the data is postcopiable */
+        *res_postcopy += remaining_size;
+    } else {
+        *res_precopy += remaining_size;
+    }
+}
+
+static void ram_state_pending_exact(void *opaque, uint64_t max_size,
+                                    uint64_t *res_precopy,
+                                    uint64_t *res_postcopy)
+{
+    RAMState **temp = opaque;
+    RAMState *rs = *temp;
+
+    uint64_t remaining_size = rs->migration_dirty_pages * TARGET_PAGE_SIZE;
+
+    if (!migration_in_postcopy()) {
         qemu_mutex_lock_iothread();
         WITH_RCU_READ_LOCK_GUARD() {
             migration_bitmap_sync_precopy(rs);
@@ -4558,7 +4574,8 @@ static SaveVMHandlers savevm_ram_handlers = {
     .save_live_complete_postcopy = ram_save_complete,
     .save_live_complete_precopy = ram_save_complete,
     .has_postcopy = ram_has_postcopy,
-    .save_live_pending = ram_save_pending,
+    .state_pending_exact = ram_state_pending_exact,
+    .state_pending_estimate = ram_state_pending_estimate,
     .load_state = ram_load,
     .save_cleanup = ram_save_cleanup,
     .load_setup = ram_load_setup,
diff --git a/migration/savevm.c b/migration/savevm.c
index 9ddcbba4e3..89b9075ff1 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1471,8 +1471,9 @@ flush:
  * the result is split into the amount for units that can and
  * for units that can't do postcopy.
  */
-void qemu_savevm_state_pending(uint64_t threshold_size, uint64_t *res_precopy,
-                               uint64_t *res_postcopy)
+void qemu_savevm_state_pending_exact(uint64_t threshold_size,
+                                     uint64_t *res_precopy,
+                                     uint64_t *res_postcopy)
 {
     SaveStateEntry *se;
 
@@ -1480,7 +1481,7 @@ void qemu_savevm_state_pending(uint64_t threshold_size, uint64_t *res_precopy,
     *res_postcopy = 0;
 
     QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
-        if (!se->ops || !se->ops->save_live_pending) {
+        if (!se->ops || !se->ops->state_pending_exact) {
             continue;
         }
         if (se->ops->is_active) {
@@ -1488,8 +1489,31 @@ void qemu_savevm_state_pending(uint64_t threshold_size, uint64_t *res_precopy,
                 continue;
             }
         }
-        se->ops->save_live_pending(se->opaque, threshold_size,
-                                   res_precopy, res_postcopy);
+        se->ops->state_pending_exact(se->opaque, threshold_size,
+                                     res_precopy, res_postcopy);
+    }
+}
+
+void qemu_savevm_state_pending_estimate(uint64_t threshold_size,
+                                        uint64_t *res_precopy,
+                                        uint64_t *res_postcopy)
+{
+    SaveStateEntry *se;
+
+    *res_precopy = 0;
+    *res_postcopy = 0;
+
+    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
+        if (!se->ops || !se->ops->state_pending_estimate) {
+            continue;
+        }
+        if (se->ops->is_active) {
+            if (!se->ops->is_active(se->opaque)) {
+                continue;
+            }
+        }
+        se->ops->state_pending_estimate(se->opaque, threshold_size,
+                                        res_precopy, res_postcopy);
     }
 }
 
diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events
index a21cbd2a56..90a8aecb37 100644
--- a/hw/vfio/trace-events
+++ b/hw/vfio/trace-events
@@ -157,7 +157,7 @@ vfio_save_cleanup(const char *name) " (%s)"
 vfio_save_buffer(const char *name, uint64_t data_offset, uint64_t data_size, uint64_t pending) " (%s) Offset 0x%"PRIx64" size 0x%"PRIx64" pending 0x%"PRIx64
 vfio_update_pending(const char *name, uint64_t pending) " (%s) pending 0x%"PRIx64
 vfio_save_device_config_state(const char *name) " (%s)"
-vfio_save_pending(const char *name, uint64_t precopy, uint64_t postcopy) " (%s) precopy 0x%"PRIx64" postcopy 0x%"PRIx64
+vfio_state_pending(const char *name, uint64_t precopy, uint64_t postcopy) " (%s) precopy 0x%"PRIx64" postcopy 0x%"PRIx64
 vfio_save_iterate(const char *name, int data_size) " (%s) data_size %d"
 vfio_save_complete_precopy(const char *name) " (%s)"
 vfio_load_device_config_state(const char *name) " (%s)"
diff --git a/migration/trace-events b/migration/trace-events
index f2a873fd6c..84352f310a 100644
--- a/migration/trace-events
+++ b/migration/trace-events
@@ -150,7 +150,8 @@ migrate_fd_cleanup(void) ""
 migrate_fd_error(const char *error_desc) "error=%s"
 migrate_fd_cancel(void) ""
 migrate_handle_rp_req_pages(const char *rbname, size_t start, size_t len) "in %s at 0x%zx len 0x%zx"
-migrate_pending(uint64_t size, uint64_t max, uint64_t pre, uint64_t post) "pending size %" PRIu64 " max %" PRIu64 " (pre = %" PRIu64 " post=%" PRIu64 ")"
+migrate_pending_estimate(uint64_t size, uint64_t max, uint64_t pre, uint64_t post) "pending size %" PRIu64 " max %" PRIu64 " (pre = %" PRIu64 " post=%" PRIu64 ")"
+migrate_pending_exact(uint64_t size, uint64_t max, uint64_t pre, uint64_t post) "pending size %" PRIu64 " max %" PRIu64 " (pre = %" PRIu64 " post=%" PRIu64 ")"
 migrate_send_rp_message(int msg_type, uint16_t len) "%d: len %d"
 migrate_send_rp_recv_bitmap(char *name, int64_t size) "block '%s' size 0x%"PRIi64
 migration_completion_file_err(void) ""
@@ -330,7 +331,7 @@ send_bitmap_bits(uint32_t flags, uint64_t start_sector, uint32_t nr_sectors, uin
 dirty_bitmap_save_iterate(int in_postcopy) "in postcopy: %d"
 dirty_bitmap_save_complete_enter(void) ""
 dirty_bitmap_save_complete_finish(void) ""
-dirty_bitmap_save_pending(uint64_t pending, uint64_t max_size) "pending %" PRIu64 " max: %" PRIu64
+dirty_bitmap_state_pending(uint64_t pending) "pending %" PRIu64
 dirty_bitmap_load_complete(void) ""
 dirty_bitmap_load_bits_enter(uint64_t first_sector, uint32_t nr_sectors) "chunk: %" PRIu64 " %" PRIu32
 dirty_bitmap_load_bits_zeroes(void) ""
@@ -355,7 +356,7 @@ migration_block_save_device_dirty(int64_t sector) "Error reading sector %" PRId6
 migration_block_flush_blks(const char *action, int submitted, int read_done, int transferred) "%s submitted %d read_done %d transferred %d"
 migration_block_save(const char *mig_stage, int submitted, int transferred) "Enter save live %s submitted %d transferred %d"
 migration_block_save_complete(void) "Block migration completed"
-migration_block_save_pending(uint64_t pending) "Enter save live pending  %" PRIu64
+migration_block_state_pending(uint64_t pending) "Enter save live pending  %" PRIu64
 
 # page_cache.c
 migration_pagecache_init(int64_t max_num_items) "Setting cache buckets to %" PRId64
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 50/51] migration: Remove unused threshold_size parameter
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (48 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 49/51] migration: Split save_live_pending() into state_pending_* Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 51/51] migration: simplify migration_iteration_run() Juan Quintela
  2022-12-05  9:56 ` [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

Until previous commit, save_live_pending() was used for ram.  Now with
the split into state_pending_estimate() and state_pending_exact() it
is not needed anymore, so remove them.

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 include/migration/register.h   |  7 +++----
 migration/savevm.h             |  6 ++----
 hw/vfio/migration.c            |  6 +++---
 migration/block-dirty-bitmap.c |  3 +--
 migration/block.c              |  3 +--
 migration/migration.c          |  4 ++--
 migration/ram.c                |  6 ++----
 migration/savevm.c             | 12 ++++--------
 8 files changed, 18 insertions(+), 29 deletions(-)

diff --git a/include/migration/register.h b/include/migration/register.h
index 313b8e1c3b..5f08204fb2 100644
--- a/include/migration/register.h
+++ b/include/migration/register.h
@@ -58,11 +58,10 @@ typedef struct SaveVMHandlers {
      * pending data.
      */
     /* This calculate the exact remaining data to transfer */
-    void (*state_pending_exact)(void *opaque,  uint64_t threshold_size,
-                                uint64_t *rest_precopy, uint64_t *rest_postcopy);
+    void (*state_pending_exact)(void *opaque, uint64_t *rest_precopy,
+                                uint64_t *rest_postcopy);
     /* This estimates the remaining data to transfer */
-    void (*state_pending_estimate)(void *opaque,  uint64_t threshold_size,
-                                   uint64_t *rest_precopy,
+    void (*state_pending_estimate)(void *opaque, uint64_t *rest_precopy,
                                    uint64_t *rest_postcopy);
 
     LoadStateHandler *load_state;
diff --git a/migration/savevm.h b/migration/savevm.h
index 613f85e717..24f2d2a28b 100644
--- a/migration/savevm.h
+++ b/migration/savevm.h
@@ -40,11 +40,9 @@ void qemu_savevm_state_cleanup(void);
 void qemu_savevm_state_complete_postcopy(QEMUFile *f);
 int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
                                        bool inactivate_disks);
-void qemu_savevm_state_pending_exact(uint64_t max_size,
-                                     uint64_t *res_precopy,
+void qemu_savevm_state_pending_exact(uint64_t *res_precopy,
                                      uint64_t *res_postcopy);
-void qemu_savevm_state_pending_estimate(uint64_t max_size,
-                                        uint64_t *res_precopy,
+void qemu_savevm_state_pending_estimate(uint64_t *res_precopy,
                                         uint64_t *res_postcopy);
 void qemu_savevm_send_ping(QEMUFile *f, uint32_t value);
 void qemu_savevm_send_open_return_path(QEMUFile *f);
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index 1545498e11..8dbbfa2c56 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -456,8 +456,8 @@ static void vfio_save_cleanup(void *opaque)
     trace_vfio_save_cleanup(vbasedev->name);
 }
 
-static void vfio_state_pending(void *opaque,  uint64_t threshold_size,
-                               uint64_t *res_precopy, uint64_t *res_postcopy)
+static void vfio_state_pending(void *opaque, uint64_t *res_precopy,
+                               uint64_t *res_postcopy)
 {
     VFIODevice *vbasedev = opaque;
     VFIOMigration *migration = vbasedev->migration;
@@ -511,7 +511,7 @@ static int vfio_save_iterate(QEMUFile *f, void *opaque)
     }
 
     /*
-     * Reset pending_bytes as .save_live_pending is not called during savevm or
+     * Reset pending_bytes as .state_pending_* is not called during savevm or
      * snapshot case, in such case vfio_update_pending() at the start of this
      * function updates pending_bytes.
      */
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index 5b24007650..8a11577252 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -761,8 +761,7 @@ static int dirty_bitmap_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void dirty_bitmap_state_pending(void *opaque, uint64_t max_size,
-                                       uint64_t *res_precopy,
+static void dirty_bitmap_state_pending(void *opaque, uint64_t *res_precopy,
                                        uint64_t *res_postcopy)
 {
     DBMSaveState *s = &((DBMState *)opaque)->save;
diff --git a/migration/block.c b/migration/block.c
index 8e6ad1c468..4f1f7c0f8d 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -862,8 +862,7 @@ static int block_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void block_state_pending(void *opaque, uint64_t max_size,
-                                uint64_t *res_precopy,
+static void block_state_pending(void *opaque, uint64_t *res_precopy,
                                 uint64_t *res_postcopy)
 {
     /* Estimate pending number of bytes to send */
diff --git a/migration/migration.c b/migration/migration.c
index 9e18c911db..b54e4657ce 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3759,12 +3759,12 @@ static MigIterateState migration_iteration_run(MigrationState *s)
     uint64_t pend_pre, pend_post;
     bool in_postcopy = s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE;
 
-    qemu_savevm_state_pending_estimate(s->threshold_size, &pend_pre, &pend_post);
+    qemu_savevm_state_pending_estimate(&pend_pre, &pend_post);
     uint64_t pending_size = pend_pre + pend_post;
     trace_migrate_pending_estimate(pending_size, s->threshold_size, pend_pre, pend_post);
 
     if (pend_pre <= s->threshold_size) {
-        qemu_savevm_state_pending_exact(s->threshold_size, &pend_pre, &pend_post);
+        qemu_savevm_state_pending_exact(&pend_pre, &pend_post);
         pending_size = pend_pre + pend_post;
         trace_migrate_pending_exact(pending_size, s->threshold_size, pend_pre, pend_post);
     }
diff --git a/migration/ram.c b/migration/ram.c
index ad5a2eeadd..48378ee57e 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3392,8 +3392,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
     return 0;
 }
 
-static void ram_state_pending_estimate(void *opaque, uint64_t max_size,
-                                       uint64_t *res_precopy,
+static void ram_state_pending_estimate(void *opaque, uint64_t *res_precopy,
                                        uint64_t *res_postcopy)
 {
     RAMState **temp = opaque;
@@ -3409,8 +3408,7 @@ static void ram_state_pending_estimate(void *opaque, uint64_t max_size,
     }
 }
 
-static void ram_state_pending_exact(void *opaque, uint64_t max_size,
-                                    uint64_t *res_precopy,
+static void ram_state_pending_exact(void *opaque, uint64_t *res_precopy,
                                     uint64_t *res_postcopy)
 {
     RAMState **temp = opaque;
diff --git a/migration/savevm.c b/migration/savevm.c
index 89b9075ff1..5ad94f0be9 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1471,8 +1471,7 @@ flush:
  * the result is split into the amount for units that can and
  * for units that can't do postcopy.
  */
-void qemu_savevm_state_pending_exact(uint64_t threshold_size,
-                                     uint64_t *res_precopy,
+void qemu_savevm_state_pending_exact(uint64_t *res_precopy,
                                      uint64_t *res_postcopy)
 {
     SaveStateEntry *se;
@@ -1489,13 +1488,11 @@ void qemu_savevm_state_pending_exact(uint64_t threshold_size,
                 continue;
             }
         }
-        se->ops->state_pending_exact(se->opaque, threshold_size,
-                                     res_precopy, res_postcopy);
+        se->ops->state_pending_exact(se->opaque, res_precopy, res_postcopy);
     }
 }
 
-void qemu_savevm_state_pending_estimate(uint64_t threshold_size,
-                                        uint64_t *res_precopy,
+void qemu_savevm_state_pending_estimate(uint64_t *res_precopy,
                                         uint64_t *res_postcopy)
 {
     SaveStateEntry *se;
@@ -1512,8 +1509,7 @@ void qemu_savevm_state_pending_estimate(uint64_t threshold_size,
                 continue;
             }
         }
-        se->ops->state_pending_estimate(se->opaque, threshold_size,
-                                        res_precopy, res_postcopy);
+        se->ops->state_pending_estimate(se->opaque, res_precopy, res_postcopy);
     }
 }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* [Virtio-fs] [PATCH v2 51/51] migration: simplify migration_iteration_run()
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (49 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 50/51] migration: Remove unused threshold_size parameter Juan Quintela
@ 2022-12-05  9:52 ` Juan Quintela
  2022-12-05  9:56 ` [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:52 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, Juan Quintela, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 migration/migration.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/migration/migration.c b/migration/migration.c
index b54e4657ce..b2c974f166 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3769,23 +3769,23 @@ static MigIterateState migration_iteration_run(MigrationState *s)
         trace_migrate_pending_exact(pending_size, s->threshold_size, pend_pre, pend_post);
     }
 
-    if (pending_size && pending_size >= s->threshold_size) {
-        /* Still a significant amount to transfer */
-        if (!in_postcopy && pend_pre <= s->threshold_size &&
-            qatomic_read(&s->start_postcopy)) {
-            if (postcopy_start(s)) {
-                error_report("%s: postcopy failed to start", __func__);
-            }
-            return MIG_ITERATE_SKIP;
-        }
-        /* Just another iteration step */
-        qemu_savevm_state_iterate(s->to_dst_file, in_postcopy);
-    } else {
+    if (pending_size < s->threshold_size) {
         trace_migration_thread_low_pending(pending_size);
         migration_completion(s);
         return MIG_ITERATE_BREAK;
     }
 
+    /* Still a significant amount to transfer */
+    if (!in_postcopy && pend_pre <= s->threshold_size &&
+        qatomic_read(&s->start_postcopy)) {
+        if (postcopy_start(s)) {
+            error_report("%s: postcopy failed to start", __func__);
+        }
+        return MIG_ITERATE_SKIP;
+    }
+
+    /* Just another iteration step */
+    qemu_savevm_state_iterate(s->to_dst_file, in_postcopy);
     return MIG_ITERATE_RESUME;
 }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 53+ messages in thread

* Re: [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO
  2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
                   ` (50 preceding siblings ...)
  2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 51/51] migration: simplify migration_iteration_run() Juan Quintela
@ 2022-12-05  9:56 ` Juan Quintela
  51 siblings, 0 replies; 53+ messages in thread
From: Juan Quintela @ 2022-12-05  9:56 UTC (permalink / raw
  To: qemu-devel
  Cc: Fam Zheng, Thomas Huth, Viresh Kumar, Kevin Wolf, Mathieu Poirier,
	Laurent Vivier, Eric Blake, Richard Henderson, Raphael Norwitz,
	Stefan Hajnoczi, virtio-fs, Alex Bennée,
	Christian Borntraeger, Gonglei (Arei), qemu-block, Xiaojuan Yang,
	Thomas Huth, Ilya Leoshkevich, Eduardo Habkost, Gerd Hoffmann,
	Dr. David Alan Gilbert, Alex Williamson, Eric Farman, Halil Pasic,
	Peter Maydell, Vladimir Sementsov-Ogievskiy, Jason Wang,
	Laurent Vivier, Song Gao, qemu-s390x, Pavel Dovgalyuk,
	Klaus Jensen, John Snow, Michael Tokarev, qemu-arm, Paolo Bonzini,
	Michael S. Tsirkin, Keith Busch, David Hildenbrand, qemu-trivial,
	Hanna Reitz

Juan Quintela <quintela@redhat.com> wrote:
> Hi

Nack myself

This patch series should be sent against my next-8.0 branch, not master.

Sorry for the noise.

Will resend.

>
> On this v2:
>
> - Remove the stop of the guest to calculate the size
> - Rebase on latest upstream.
>
> Please review.
>
> [v1/RFC]
> VFIO migration has several requirements:
> - the size of the state is only known when the guest is stopped
> - they need to send possible lots of data.
>
> this series only address the 1st set of problems.
>
> What they do:
> - res_compatible parameter was not used anywhere, just add that information to res_postcopy.
> - Remove QEMUFILE parameter from save_live_pending
> - Split save_live_pending into
>   * save_pending_estimate(): the pending state size without trying too hard
>   * save_pending_exact(): the real pending state size, it is called with the guest stopped.
> - Now save_pending_* don't need the threshold parameter
> - HACK a way to stop the guest before moving there.
>
> ToDo:
> - autoconverge test is broken, no real clue why, but it is possible that the test is wrong.
>
> - Make an artifact to be able to send massive amount of data in the save state stage (probably more multifd channels).
>
> - Be able to not having to start the guest between cheking the state pending size and migration_completion().
>
> Please review.
>
> Thanks, Juan.
>
> Alex Bennée (4):
>   tests/qtests: override "force-legacy" for gpio virtio-mmio tests
>   hw/virtio: add started_vu status field to vhost-user-gpio
>   hw/virtio: generalise CHR_EVENT_CLOSED handling
>   include/hw: VM state takes precedence in virtio_device_should_start
>
> Evgeny Ermakov (2):
>   target/arm: Set TCGCPUOps.restore_state_to_opc for v7m
>   hw/display/next-fb: Fix comment typo
>
> Gerd Hoffmann (2):
>   update seabios source from 1.16.0 to 1.16.1
>   update seabios binaries to 1.16.1
>
> Juan Quintela (9):
>   multifd: Create page_size fields into both MultiFD{Recv,Send}Params
>   multifd: Create page_count fields into both MultiFD{Recv,Send}Params
>   migration: Export ram_transferred_ram()
>   migration: Export ram_release_page()
>   migration: Remove res_compatible parameter
>   migration: No save_live_pending() method uses the QEMUFile parameter
>   migration: Split save_live_pending() into state_pending_*
>   migration: Remove unused threshold_size parameter
>   migration: simplify migration_iteration_run()
>
> Klaus Jensen (5):
>   hw/nvme: fix aio cancel in format
>   hw/nvme: fix aio cancel in flush
>   hw/nvme: fix aio cancel in zone reset
>   hw/nvme: fix aio cancel in dsm
>   hw/nvme: remove copy bh scheduling
>
> Paolo Bonzini (1):
>   target/i386: allow MMX instructions with CR4.OSFXSR=0
>
> Peter Xu (15):
>   migration: Take bitmap mutex when completing ram migration
>   migration: Add postcopy_preempt_active()
>   migration: Cleanup xbzrle zero page cache update logic
>   migration: Trivial cleanup save_page_header() on same block check
>   migration: Remove RAMState.f references in compression code
>   migration: Yield bitmap_mutex properly when sending/sleeping
>   migration: Use atomic ops properly for page accountings
>   migration: Teach PSS about host page
>   migration: Introduce pss_channel
>   migration: Add pss_init()
>   migration: Make PageSearchStatus part of RAMState
>   migration: Move last_sent_block into PageSearchStatus
>   migration: Send requested page directly in rp-return thread
>   migration: Remove old preempt code around state maintainance
>   migration: Drop rs->f
>
> Philippe Mathieu-Daudé (5):
>   hw/display/qxl: Have qxl_log_command Return early if no log_cmd
>     handler
>   hw/display/qxl: Document qxl_phys2virt()
>   hw/display/qxl: Pass requested buffer size to qxl_phys2virt()
>   hw/display/qxl: Avoid buffer overrun in qxl_phys2virt (CVE-2022-4144)
>   hw/display/qxl: Assert memory slot fits in preallocated MemoryRegion
>
> Richard Henderson (2):
>   replay: Fix declaration of replay_read_next_clock
>   target/i386: Always completely initialize TranslateFault
>
> Stefan Hajnoczi (2):
>   block-backend: avoid bdrv_unregister_buf() NULL pointer deref
>   Update VERSION for v7.2.0-rc3
>
> Stefano Garzarella (1):
>   vhost: enable vrings in vhost_dev_start() for vhost-user devices
>
> Thomas Huth (2):
>   tests/qtest/migration-test: Fix unlink error and memory leaks
>   target/s390x/tcg: Fix and improve the SACF instruction
>
> Xiaojuan Yang (1):
>   hw/loongarch/virt: Add cfi01 pflash device


^ permalink raw reply	[flat|nested] 53+ messages in thread

end of thread, other threads:[~2022-12-05  9:56 UTC | newest]

Thread overview: 53+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-05  9:51 [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 01/51] update seabios source from 1.16.0 to 1.16.1 Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 02/51] update seabios binaries " Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 03/51] replay: Fix declaration of replay_read_next_clock Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 04/51] hw/display/qxl: Have qxl_log_command Return early if no log_cmd handler Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 05/51] hw/display/qxl: Document qxl_phys2virt() Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 06/51] hw/display/qxl: Pass requested buffer size to qxl_phys2virt() Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 07/51] hw/display/qxl: Avoid buffer overrun in qxl_phys2virt (CVE-2022-4144) Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 08/51] hw/display/qxl: Assert memory slot fits in preallocated MemoryRegion Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 09/51] block-backend: avoid bdrv_unregister_buf() NULL pointer deref Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 10/51] target/arm: Set TCGCPUOps.restore_state_to_opc for v7m Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 11/51] Update VERSION for v7.2.0-rc3 Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 12/51] tests/qtests: override "force-legacy" for gpio virtio-mmio tests Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 13/51] vhost: enable vrings in vhost_dev_start() for vhost-user devices Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 14/51] hw/virtio: add started_vu status field to vhost-user-gpio Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 15/51] hw/virtio: generalise CHR_EVENT_CLOSED handling Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 16/51] include/hw: VM state takes precedence in virtio_device_should_start Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 17/51] hw/nvme: fix aio cancel in format Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 18/51] hw/nvme: fix aio cancel in flush Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 19/51] hw/nvme: fix aio cancel in zone reset Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 20/51] hw/nvme: fix aio cancel in dsm Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 21/51] hw/nvme: remove copy bh scheduling Juan Quintela
2022-12-05  9:51 ` [Virtio-fs] [PATCH v2 22/51] target/i386: allow MMX instructions with CR4.OSFXSR=0 Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 23/51] target/i386: Always completely initialize TranslateFault Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 24/51] hw/loongarch/virt: Add cfi01 pflash device Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 25/51] tests/qtest/migration-test: Fix unlink error and memory leaks Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 26/51] target/s390x/tcg: Fix and improve the SACF instruction Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 27/51] hw/display/next-fb: Fix comment typo Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 28/51] multifd: Create page_size fields into both MultiFD{Recv, Send}Params Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 29/51] multifd: Create page_count " Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 30/51] migration: Export ram_transferred_ram() Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 31/51] migration: Export ram_release_page() Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 32/51] migration: Take bitmap mutex when completing ram migration Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 33/51] migration: Add postcopy_preempt_active() Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 34/51] migration: Cleanup xbzrle zero page cache update logic Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 35/51] migration: Trivial cleanup save_page_header() on same block check Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 36/51] migration: Remove RAMState.f references in compression code Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 37/51] migration: Yield bitmap_mutex properly when sending/sleeping Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 38/51] migration: Use atomic ops properly for page accountings Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 39/51] migration: Teach PSS about host page Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 40/51] migration: Introduce pss_channel Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 41/51] migration: Add pss_init() Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 42/51] migration: Make PageSearchStatus part of RAMState Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 43/51] migration: Move last_sent_block into PageSearchStatus Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 44/51] migration: Send requested page directly in rp-return thread Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 45/51] migration: Remove old preempt code around state maintainance Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 46/51] migration: Drop rs->f Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 47/51] migration: Remove res_compatible parameter Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 48/51] migration: No save_live_pending() method uses the QEMUFile parameter Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 49/51] migration: Split save_live_pending() into state_pending_* Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 50/51] migration: Remove unused threshold_size parameter Juan Quintela
2022-12-05  9:52 ` [Virtio-fs] [PATCH v2 51/51] migration: simplify migration_iteration_run() Juan Quintela
2022-12-05  9:56 ` [Virtio-fs] [PATCH v2 00/51] migration patches for VFIO Juan Quintela

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).