From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49588) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VeWqA-0000Wh-7Y for qemu-devel@nongnu.org; Thu, 07 Nov 2013 16:10:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VeWq2-0003B9-Ha for qemu-devel@nongnu.org; Thu, 07 Nov 2013 16:10:09 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45840) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VeWq2-00034b-2X for qemu-devel@nongnu.org; Thu, 07 Nov 2013 16:10:02 -0500 Message-ID: <527C023F.2060506@redhat.com> Date: Thu, 07 Nov 2013 22:12:31 +0100 From: Laszlo Ersek MIME-Version: 1.0 References: <1383511723-11228-1-git-send-email-marcel.a@redhat.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------010209040007060702080803" Subject: Re: [Qemu-devel] [PATCH] exec: fix regression by making system-memory region UINT64_MAX size List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel Cc: Peter Maydell , "edk2-devel@lists.sourceforge.net" , "Michael S. Tsirkin" , Jan Kiszka , Marcel Apfelbaum , Anthony Liguori , Paolo Bonzini , Jordan Justen , afaerber , rth@twiddle.net This is a multi-part message in MIME format. --------------010209040007060702080803 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit This is a QEMU bug report, only disguised as an edk2-devel followup. The problem in a nutshell is that the OVMF binary, placed into pflash (read-only KVM memslot) used to run in qemu-1.6, but it fails to start in qemu-1.7. The OVMF reset vector reads as 0xFF bytes. (Jordan and myself started writing these emails in parallel.) On 11/07/13 21:27, Jordan Justen wrote: > On Sun, Nov 3, 2013 at 12:48 PM, Marcel Apfelbaum > wrote: >> The commit: >> >> Commit: a53ae8e934cd54686875b5bcfc2f434244ee55d6 >> Author: Marcel Apfelbaum >> Date: Mon Sep 16 11:21:16 2013 +0300 >> >> hw/pci: partially handle pci master abort >> >> introduced a regression on make check: > > Laszlo pointed out that my OVMF flash support series was not working > with QEMU master. It was working with QEMU 1.6.0. I then bisected the > issue to this commit. It seems this commit regresses -pflash support > for both KVM and non-KVM modes. > > Can you reproduce the issue this with command? > x86_64-softmmu/qemu-system-x86_64 -pflash pc-bios/bios.bin > (with or without adding -enable-kvm) > > I tried adding this patch ("exec: fix regression by making > system-memory region UINT64_MAX size") and it did not help the -pflash > regression. >>From the edk2-devel discussion: On 11/07/13 19:07, Laszlo Ersek wrote: > On 11/07/13 17:28, Laszlo Ersek wrote: >> On 11/06/13 23:29, Jordan Justen wrote: >>> https://github.com/jljusten/edk2.git ovmf-nvvars-v2 >>> >>> This series implements support for QEMU's emulated >>> system flash. >>> >>> This allows for persistent UEFI non-volatile variables. >>> >>> Previously we attempted to emulate non-volatile >>> variables in a few ways, but each of them would fail >>> in particular situations. >>> >>> To support flash based variable storage, we: >>> * Reserve space in the firmware device image >>> * Add a new flash firmware volume block driver >>> * Disable EmuVariableFvbRuntimeDxe (at runtime) if QEMU >>> flash is available. >>> >>> To use: >>> * QEMU version 1.1 or newer is required without KVM >>> * KVM support requires Linux 3.7 and QEMU 1.6 >>> * Run QEMU with -pflash OVMF.fd instead of -L or -bios >>> or use OvmfPkg/build.sh --enable-flash qemu ... >>> * If QEMU is 1.6 or newer, then OvmfPkg/build.sh will >>> automatically enable flash when running QEMU, so in >>> that case --enable-flash is not required. >>> >>> See also: >>> * http://wiki.qemu.org/Features/PC_System_Flash >>> >>> v2: >>> * Replace >>> "OvmfPkg/AcpiPlatformDxe/Qemu: Allow high runtime memory regions" >>> with >>> "OvmfPkg/AcpiPlatformDxe/Qemu: Decrease upper limit for PCI window 32" >>> * Separate portions of >>> "OvmfPkg/build.sh: Support --enable-flash switch" >>> out into a new patch >>> "OvmfPkg/build.sh: Enable flash for QEMU >= 1.6" >>> * Add "OvmfPkg/README: Add information about OVMF flash layout" >>> * Update "OvmfPkg: Add NV Variable storage within FD" to also change the >>> size of PcdVariableStoreSize >>> * Update commit messages on a couple patches for better clarity >> >> Tested in the following configurations: >> >> (1) RHEL-6 host (no KVM support, no qemu support -- that is, >> regression test): RHEL-6, Fedora 19, Windows 2008 R2 (needs CSM), >> Windows 2012 R2 boot tests work OK. >> >> (2) 3.10-based host kernel, qemu v1.7.0-rc0, Xeon W3550 host CPU: >> Unfortunately qemu dies with the following KVM trace: >> >> KVM internal error. Suberror: 1 >> emulation failure >> EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000623 >> ESI=00000000 EDI=00000000 EBP=00000000 ESP=00000000 >> EIP=0000fff0 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 >> ES =0000 00000000 0000ffff 00009300 >> CS =f000 ffff0000 0000ffff 00009b00 >> SS =0000 00000000 0000ffff 00009300 >> DS =0000 00000000 0000ffff 00009300 >> FS =0000 00000000 0000ffff 00009300 >> GS =0000 00000000 0000ffff 00009300 >> LDT=0000 00000000 0000ffff 00008200 >> TR =0000 00000000 0000ffff 00008b00 >> GDT= 00000000 0000ffff >> IDT= 00000000 0000ffff >> CR0=60000010 CR2=00000000 CR3=00000000 CR4=00000000 >> DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 >> DR6=00000000ffff0ff0 DR7=0000000000000400 >> EFER=0000000000000000 >> Code=ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> I'm quite unsure, but the CS:IP value seems to point at the reset >> vector, no? However, the Code=... log only shows 0xFF bytes. >> >> (3) 3.10.17 host kernel, qemu v1.7.0-rc0, Athlon II X2 B22 host CPU: >> almost identical KVM error, with the following difference: >> >> --- vmx 2013-11-07 17:23:45.612973935 +0100 >> +++ svm 2013-11-07 17:24:17.237973059 +0100 >> @@ -1,6 +1,6 @@ >> KVM internal error. Suberror: 1 >> emulation failure >> -EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000623 >> +EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000663 >> ESI=00000000 EDI=00000000 EBP=00000000 ESP=00000000 >> EIP=0000fff0 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 >> ES =0000 00000000 0000ffff 00009300 >> >> Any ideas? > > I. > This is a QEMU regression (somewhere between v1.6.0 and v1.7.0-rc0), > I'll have to bisect it. This bug is "caused" by the following commit: a53ae8e934cd54686875b5bcfc2f434244ee55d6 is the first bad commit commit a53ae8e934cd54686875b5bcfc2f434244ee55d6 Author: Marcel Apfelbaum Date: Mon Sep 16 11:21:16 2013 +0300 hw/pci: partially handle pci master abort A MemoryRegion with negative priority was created and it spans over all the pci address space. It "intercepts" the accesses to unassigned pci address space and will follow the pci spec: 1. returns -1 on read 2. does nothing on write Note: setting the RECEIVED MASTER ABORT bit in the STATUS register of the device that initiated the transaction will be implemented in another series Signed-off-by: Marcel Apfelbaum Acked-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin The patch was posted as patch 3/3 of the series [Qemu-devel] [PATCH v5 0/3] pci: partially implement master abort protocol http://thread.gmane.org/gmane.comp.emulators.qemu/233798/focus=233801 Basically, the series adds a "background" memory region that covers all "unassigned" PCI addresses, and patch 3/3 specifically makes sure that writes to this region are dropped, and reads all return -1 (0xFFFFFFFF). The read implementation (master_abort_mem_read(), -1) is consistent with the KVM dump in the quoted part above. For some reason, this "background" region pushes into the "foreground" when it comes to the pflash region just below 4GB (in guest-phys address space). Or, hm, supposing we start to run in real mode at FFFF:0000, the problem could be with the "isa-bios" region too. So I think we have a bug in qemu, which is likely one of the three below: (1) This commit is wrong. Or, (2) the pflash implementation is wrong, because it doesn't register a memory region (with appropriate priority) that would catch the access. (3) Both this commit and the pflash implementations are right, but this is an unusual situation that the memory infrastructure doesn't handle well. (I doubt that the problem is in KVM.) When the bug hits, the "info qtree" command has the following to say about the flash device: dev: cfi.pflash01, id "" drive = pflash0 num-blocks = 512 sector-length = 4096 width = 1 big-endian = 0 id0 = 0 id1 = 0 id2 = 0 id3 = 0 name = "system.flash" irq 0 mmio 00000000ffe00000/0000000000200000 The "info mtree" command lists: memory 0000000000000000-7ffffffffffffffe (prio 0, RW): system [...] 0000000060000000-00000000ffffffff (prio 0, RW): alias pci-hole @pci 0000000060000000-00000000ffffffff [...] 00000000ffe00000-00000000ffffffff (prio 0, R-): system.flash [...] pci <-------- referred to as "rom_memory" in the source (pci is enabled) 0000000000000000-7ffffffffffffffe (prio 0, RW): pci 0000000000000000-7ffffffffffffffe (prio -2147483648, RW): pci-master-abort [...] 00000000000e0000-00000000000fffff (prio 1, R-): isa-bios For some reason, the range called "pci-master-abort" takes priority over "isa-bios" (and/or "system.flash"). I wrote the attached debug patch (for v1.7.0-rc0). It produces quite a bit of output, but grepping it for isa-bios|system\.flash|pci-master-abort|pci-hole results in the following messages: adding subregion 'system.flash' to region 'system' at offset ffe00000 subregion 'system.flash' (prio: 0) loses to sibling subregion 'icc-apic-container' (prio: 4096) subregion 'system.flash' (prio: 0) wins over sibling subregion 'ram-below-4g' (prio: 0) adding subregion 'isa-bios' to region 'pci' at offset e0000 subregion 'isa-bios' (prio: 1) inserted at tail subregion 'pc.rom' (prio: 1) wins over sibling subregion 'isa-bios' (prio: 1) adding subregion 'pci-master-abort' to region 'pci' at offset 0 subregion 'pci-master-abort' (prio: -2147483648) loses to sibling subregion 'pc.rom' (prio: 1) subregion 'pci-master-abort' (prio: -2147483648) loses to sibling subregion 'isa-bios' (prio: 1) subregion 'pci-master-abort' (prio: -2147483648) inserted at tail adding subregion 'pci-hole' to region 'system' at offset 60000000 warning: subregion collision 60000000/a0000000 (pci-hole) vs ffe00000/200000 (system.flash) subregion 'pci-hole' (prio: 0) loses to sibling subregion 'icc-apic-container' (prio: 4096) subregion 'pci-hole' (prio: 0) wins over sibling subregion 'system.flash' (prio: 0) adding subregion 'pci-hole64' to region 'system' at offset 100000000 subregion 'pci-hole64' (prio: 0) loses to sibling subregion 'icc-apic-container' (prio: 4096) subregion 'pci-hole64' (prio: 0) wins over sibling subregion 'pci-hole' (prio: 0) subregion 'smram-region' (prio: 1) wins over sibling subregion 'pci-hole64' (prio: 0) warning: subregion collision fec00000/1000 (kvm-ioapic) vs 60000000/a0000000 (pci-hole) subregion 'kvm-ioapic' (prio: 0) wins over sibling subregion 'pci-hole64' (prio: 0) warning: subregion collision fed00000/400 (hpet) vs 60000000/a0000000 (pci-hole) I think I know what's going on... There's even a warning above, printed by original (albeit disabled) qemu source code. The "pci-hole" subregion, which is an alias, takes priority over "system.flash". And, unfortunately, "pci-hole" provides a window into "pci-master-abort". I think this should be fixable by raising the priority of "system.flash" to 2048. This way the relationship between "system.flash" and any other region will not change, except it's going to be reversed with "pci-hole". The 2nd attached patch seems to solve the problem for me. I'll resubmit it as a standalone patch if it is deemed good. With it in place, I can run OVMF just fine. And: @@ -28,170 +28,224 @@ adding subregion 'pci-conf-data' to region 'io' at offset cfc subregion 'pci-conf-data' (prio: 0) wins over sibling subregion 'pci-conf-idx' (prio: 0) adding subregion 'pci-hole' to region 'system' at offset 60000000 -warning: subregion collision 60000000/a0000000 (pci-hole) vs ffe00000/200000 (system.flash) subregion 'pci-hole' (prio: 0) loses to sibling subregion 'icc-apic-container' (prio: 4096) -subregion 'pci-hole' (prio: 0) wins over sibling subregion 'system.flash' (prio: 0) +subregion 'pci-hole' (prio: 0) loses to sibling subregion 'system.flash' (prio: 2048) +subregion 'pci-hole' (prio: 0) wins over sibling subregion 'ram-below-4g' (prio: 0) According to the debug patch, the flash region starts to win over quite a few unrelated other regions as well. But in practice I could see no adverse effects -- the priority matters only when the addresses actually overlap, and "system.flash" should not overlap with anything but "pci-hole". I'm attaching the following files as well: - the "info mtree" output before and after the patch, - the full output of the debug patch (before and after). Thanks, Laszlo --------------010209040007060702080803 Content-Type: text/plain; charset=ISO-8859-2; name="0001-debug-messages-for-memory_region_add_subregion_commo.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0001-debug-messages-for-memory_region_add_subregion_commo.pa"; filename*1="tch" >>From 44854609c3134ec174593a890dfb1a9340b714f7 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Thu, 7 Nov 2013 21:19:07 +0100 Subject: [PATCH 1/2] debug messages for memory_region_add_subregion_common() Signed-off-by: Laszlo Ersek --- memory.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/memory.c b/memory.c index 28f6449..5e60a6c 100644 --- a/memory.c +++ b/memory.c @@ -1427,6 +1427,10 @@ static void memory_region_add_subregion_common(MemoryRegion *mr, memory_region_ref(subregion); subregion->parent = mr; subregion->addr = offset; + + fprintf(stderr, "adding subregion '%s' to region '%s' at offset %llx\n", + subregion->name, mr->name, (unsigned long long)offset); + QTAILQ_FOREACH(other, &mr->subregions, subregions_link) { if (subregion->may_overlap || other->may_overlap) { continue; @@ -1437,8 +1441,8 @@ static void memory_region_add_subregion_common(MemoryRegion *mr, int128_make64(other->addr))) { continue; } -#if 0 - printf("warning: subregion collision %llx/%llx (%s) " +#if 1 + fprintf(stderr, "warning: subregion collision %llx/%llx (%s) " "vs %llx/%llx (%s)\n", (unsigned long long)offset, (unsigned long long)int128_get64(subregion->size), @@ -1448,12 +1452,21 @@ static void memory_region_add_subregion_common(MemoryRegion *mr, other->name); #endif } + QTAILQ_FOREACH(other, &mr->subregions, subregions_link) { if (subregion->priority >= other->priority) { + fprintf(stderr, "subregion '%s' (prio: %d) wins over sibling " + "subregion '%s' (prio: %d)\n", subregion->name, + subregion->priority, other->name, other->priority); QTAILQ_INSERT_BEFORE(other, subregion, subregions_link); goto done; } + fprintf(stderr, "subregion '%s' (prio: %d) loses to sibling " + "subregion '%s' (prio: %d)\n", subregion->name, + subregion->priority, other->name, other->priority); } + fprintf(stderr, "subregion '%s' (prio: %d) inserted at tail\n", + subregion->name, subregion->priority); QTAILQ_INSERT_TAIL(&mr->subregions, subregion, subregions_link); done: memory_region_update_pending |= mr->enabled && subregion->enabled; -- 1.8.3.1 --------------010209040007060702080803 Content-Type: text/plain; charset=ISO-8859-2; name="0002-pflash_cfi01-flash-memory-should-take-priority-over-.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0002-pflash_cfi01-flash-memory-should-take-priority-over-.pa"; filename*1="tch" >>From c3f1150bb3b0618e08ff21bf302363b36aaea863 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Thu, 7 Nov 2013 21:36:59 +0100 Subject: [PATCH 2/2] pflash_cfi01: flash memory should take priority over "pci-hole" After commit a53ae8e9 ("hw/pci: partially handle pci master abort"), the "pci-hole" alias provides a window into the "pci-master-abort" memory range. This range throws away writes and returns 0xFFFFFFFF for all reads. Unfortunately, "pci-hole" has been in conflict with (and incidentally taking priority over) "system.flash" for some time. This problem is exposed now that commit a53ae8e9 made "pci-master-abort" appear in "pci-hole" -- the flash has become invisible. The problem can be triggered by running OVMF from flash (with the -pflash option instead of -bios) on KVM 3.7+. Fix it by raising the priority of flash, so that its relationship with "pci-hole" is reversed. Its relationship with some other overlapping ranges seems to change as well, but in my testing this had no adverse effects. The neighbor "pflash_cfi02" is not touched (although the fix should apply the same), due to lack of a test case. Signed-off-by: Laszlo Ersek --- hw/block/pflash_cfi01.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index 018a967..ab39ac2 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -765,7 +765,7 @@ pflash_t *pflash_cfi01_register(hwaddr base, qdev_prop_set_string(dev, "name", name); qdev_init_nofail(dev); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); + sysbus_mmio_map_overlap(SYS_BUS_DEVICE(dev), 0, base, 2048); return CFI_PFLASH01(dev); } -- 1.8.3.1 --------------010209040007060702080803 Content-Type: application/x-gzip; name="info-mtree-unpatched.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="info-mtree-unpatched.txt.gz" H4sICPrqe1ICA2luZm8tbXRyZWUtdW5wYXRjaGVkLnR4dACVmEGPmzAQhe+R8h9ybKV6C8EJ pKeeKu2h6qqX7q0yxk6s4hgBybb/voZkd8PzJAFOG6+/9+yZsTG2yrr633wWwcNSPXjU4kNV G7eIPi1+/vr4ZdH8a1pl57PFIiBf/1idUSBFaUSzqIVluSrdC+PbxddKPviG+1LgJwad/JNf +MUDv8Z2jrXaGrfv/Mx9HTCT2Ekm18wqb9VZoA8tgT4cO6WTfUgJ9MmwUz7Zh5RAH4md9GQf UgJ8CgxuMTk/tAT6YHCLyfmhJdAHg1tMzg8tgT4Y3GJyfmgJ8FEYXDU5P7QE+mBw1eT80BLo g8FVk/NDS6APBldNzg8tAT4ag6sn+9ASlz5r3Nn1rZeEl2c7V6qh0VWNSyPdz/myU9cQGv05 WmacqIwc0gXSviEJ6F2l2iGnkFOX0+PRZn1GjZSss2XS7Vth9qruhMZLXU6g17GNGQxFq7uR Zm8v8gddimZ3wcdv72A+JVNrPsjVdZX57PHzD+LYEUH1gJtxN48c5ycFqrCCyZ3YE2yGrKZY n6KQXaLvMiZyA5V1ejiiPCFRwnWN6DrCGGURX7JCtIKgY6RxzKqUNcFx5DjpKm0RwikOOUXT uiWClCrEiNo/CjLAGVpmQZRc5eo2iwgWY5QlRE1UYqsINkU2Hc9ukM3HsxpZPZrdLBk2ANtF arMMSYFRFqNXQI6mOQZZVN3OHJISTaUevdwLZIvxy10jq+mS+haWVIwrIE6xLEwRZiZGy1iP wZJ0zbBhDJaDWxIER5q6PjRUVhINiybRK4B1IQkMh6pHDVWniKWj3DLEcIaNqo0oA5JHUK6+ AcfZCFao/LD11RPyWHi+gVgp5N7LixjZeCy7isF3FSOrX6TeBqDEUEmNm1H3yvdz1cwUfwl+ g/wGjpKVMX8T/0XeqLZfcbUrCRmJMvraMKgX3mq9Gs6jawCBo+1WLZJCwbHCN+AdiJCVYaeT T1uVhyCKQqOGjjWlIavDdQ2FGiqhNLaVCjaePIYB5HESxM+yxuaHZj4znEffnuezp8fH52Q+ O+WnX35dC//99P218dDk7LCT/rx5NHVrHGtk00fivaFfR4OmvPxz8/fe10H/+7zLHLfiva8o S+f2p//3J07lB3y6NbpxiLxyA/XK9WpTL756iDiCXsHYMuYpz5I1zy4K1gp/6K6ZyMPKG3Wn dQ5R6V6sste+IO6JRYEYs+fbwNsXX9QFQRdTZ+998uMnJTtvnLlxPp+z2X/1NkJEjhQAAA== --------------010209040007060702080803 Content-Type: application/x-gzip; name="info-mtree-patched.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="info-mtree-patched.txt.gz" H4sICIr+e1ICA2luZm8tbXRyZWUtcGF0Y2hlZC50eHQA7ZpPj6M2GMbvkeY75NhK9RSDE0hP c1ppDlVXvXRvlW3sDBoICEhm99vXhMxuePySwB4yhybSSCOL3/P4fW3jfxSmKOtvD4sAfsz9 2fPf8peqzspl8Nvy739+/WPZfGtaUzwslkuKPP5WNCnzTDbLWhZMmbx8Y2K7fKr0oyu4LgV+ cvCQ+6kzPz7wa4rOsTbbrNx1ftl1HTDT+JCOxswqZ9VZoA8tgT4CH4pn+5AS6JPgQ2q2DymB PhofsrN9SAnwSTG56ez2oSXQB5Obzm4fWgJ9MLnp7PahJdAHk5vObh9aAnwMJtfMbh9aAn0w uWZ2+9AS6IPJNbPbh5ZAH0yumd0+tAT4WEyune1DS5z7rPHNbi9NEk6evZS5GRqNapwb2WPM 5w91Bb7R66FgWSmrTA/pFGlXEHn0S2XaIWeQM+fhiWCzPqGZ1qyzZbrctTLbmboTmi51HsBR p2iyQVWsuZjpMBCJk2Df5/JHm8vm5UyCf5+GxZzGWotBc42rPCyef/+LXnkMOhC4ZeXFVcfp FwOVFpLpF7kj2ARZS7GulXw2RN+QE80Dnav/CURFRKKE6xrRdYA5SgIRslS2kqA50lhnk+ua 4ARygnTVRerDMVY5RtO6JZIUG8SI7n+QZIITtEy8LJVVWbdJQLCYoyQi+kQlt4ZgY2Tj6ewG WTWdtcjayewmZFgAbJepTeiTErMsJ48AhaYKkyyr7uXskxpNtZ083FNk0+nD3SJr6S71ye9S HEcAj7FbZKnfMhwtuZ2CRfGaYcEUTIFb5CVHZ3W9b6hWiSwMmsiuALapJjCsqp1UVRsjFk9y SxDzdramzmTukSKA7uoKsJ6NZKlR+63rPT6PHc8VECOFfPeKlCPLp7IrDr4rjqx903brgRpT pS2+jLop38VqWZZ+JfgN8htYTVZZ9jVym/LGtMcRV5c5IaNRxo5Vg5rwVuvVMI6uAAQORTdq kZQGlhWuwOAbSlcZ61c+bZXvvSxKixqWW0pDV/txDYMaJqI0tpXxXjwK10bKdXnMn2sGwapi uAAdoQPS2hxakhZIr8jgdzSdIK0oui28Xq841pv7UResKdS+QRb3Sq4gwm3QIavbrOwa3qcF 0vEcOkFazaE10ukc2iBtZ9CYcc35HDpE2sv5/oXiMNtcWOIlw1TxPqsTW60xpYgYJ70SyQvk cUIaRxNE1TxrPZYEsM6ECD59mX/a2+/w3GBZFtLtFevlU79nXF4Velh8fn7+Et3Wsp9XjsuG W0cq/v3850cEu28U60fILb1PI7rRTdYP648wP67XPsxe5a//S++dW7Pd3Pu0+zhs5cfkW+Z5 We5uH/eRNW6p0l+UXTg0G7l0e+fomscDO2v89TV55DaCsdBNfSKJ1scDxvcFeh80k8pfaU+6 xjs1fV6+Faa4MJN7YnL0+N91o0cld6/B8qn793DxCrI/feoPmafXPvBqz4rTjSvK4F2AtNfq zUfqnVCnqNduM6lbn67XlMW1exy8J2CnrbDKysHiOsGUJtza8ZbuOo2SdTDMlC8SxJTIe2Lm 0dhcrofJ+nTYcabCvUCiCyoqa1XesqIYHpokIaqEwfkNBayaT+/67pj/K1SHFAq8fWZHslaq 3BB8gnziHaEf+UpJDIKjN//JIHyheUFwDIJPDyJE73A0iB8LjpE4fK15cYQYRzg9jgi9o/E4 Tqu2kSh8Jf/k4FIUEUYRTY9CoLcYjeK0DhkJwhdyDTsjCIFBiOlBrNB7Nfqu698N79/U3L/F uX+Lc/8W5/4tzv1bnPu3OPdvce7f4tzkW5wfG6YLW+ArW63F4j96IR60TywAAA== --------------010209040007060702080803 Content-Type: application/x-gzip; name="region-prios-unpatched.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="region-prios-unpatched.txt.gz" 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 vk+TDMAOHv3R/wGA0rOrcpYAAA== --------------010209040007060702080803 Content-Type: application/x-gzip; name="region-prios-patched.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="region-prios-patched.txt.gz" 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 G2M1M1bGjxzWRosPaZIpcOkpmPwPR/vEdsi6AAA= --------------010209040007060702080803--