* PASEMI: PCI_SCAN_ALL_PCIE_DEVS @ 2018-03-12 5:21 Christian Zigotzky 2018-03-14 7:48 ` Christian Zigotzky 0 siblings, 1 reply; 3+ messages in thread From: Christian Zigotzky @ 2018-03-12 5:21 UTC (permalink / raw) To: linuxppc-dev, Olof Johansson Hi All, Could you please add Olof=E2=80=98s patch. Without this patch, we have to al= ways add 'pci=3Dpcie_scan_all' to the kernel boot arguments. Please add it. Olof's patch for P.A. Semi boards: --- arch/powerpc/platforms/pasemi/pci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/powerpc/platforms/pasemi/pci.c b/arch/powerpc/platforms/pa= semi/pci.c index 5ff6108..ea54ed2 100644 --- a/arch/powerpc/platforms/pasemi/pci.c +++ b/arch/powerpc/platforms/pasemi/pci.c @@ -224,6 +224,8 @@ void __init pas_pci_init(void) return; } + pci_set_flags(PCI_SCAN_ALL_PCIE_DEVS); + for (np =3D NULL; (np =3D of_get_next_child(root, np)) !=3D NULL;) if (np->name && !strcmp(np->name, "pxp") && !pas_add_bridge(np)) of_node_get(np); --- Thanks, Christian= ^ permalink raw reply related [flat|nested] 3+ messages in thread
* PASEMI: PCI_SCAN_ALL_PCIE_DEVS 2018-03-12 5:21 PASEMI: PCI_SCAN_ALL_PCIE_DEVS Christian Zigotzky @ 2018-03-14 7:48 ` Christian Zigotzky 0 siblings, 0 replies; 3+ messages in thread From: Christian Zigotzky @ 2018-03-14 7:48 UTC (permalink / raw) To: linuxppc-dev, Olof Johansson [-- Attachment #1: Type: text/plain, Size: 256 bytes --] Hi All, Please find attached the current pci.c patch. We use this patch on our P.A. Semi boards because we don't need to add 'pci=pcie_scan_all' to the kernel boot arguments. Please add this patch to the official kernel source code. Thanks, Christian [-- Attachment #2: pci.c.patch --] [-- Type: text/x-patch, Size: 541 bytes --] arch/powerpc/platforms/pasemi/pci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/powerpc/platforms/pasemi/pci.c b/arch/powerpc/platforms/pasemi/pci.c index 5ff6108..ea54ed2 100644 --- a/arch/powerpc/platforms/pasemi/pci.c +++ b/arch/powerpc/platforms/pasemi/pci.c @@ -224,6 +224,8 @@ void __init pas_pci_init(void) return; } + pci_set_flags(PCI_SCAN_ALL_PCIE_DEVS); + for (np = NULL; (np = of_get_next_child(root, np)) != NULL;) if (np->name && !strcmp(np->name, "pxp") && !pas_add_bridge(np)) of_node_get(np); ^ permalink raw reply related [flat|nested] 3+ messages in thread
* DPAA Ethernet problems with mainstream Linux kernels @ 2018-01-10 15:56 Jamie Krueger 2018-01-12 14:22 ` Madalin-cristian Bucur 0 siblings, 1 reply; 3+ messages in thread From: Jamie Krueger @ 2018-01-10 15:56 UTC (permalink / raw) To: linuxppc-dev Hello all @ linuxppc-dev, I have been working with a team of people maintaining PowerPC Linux for the new AmigaONE X5000/20 (a Freescale p5020 SoC based machine). We are trying to determine why the submitted Data Path Acceleration Architecture (DPAA) Ethernet Driver is not fully functional with the mainstream Linux kernels. Here is the results from my latest tests. They were performed using the linux-4.10.17 ppc64, since that represents when the DPAA Ethernet code was introduced. Similar tests, with similar results, were also performed using the latest Linux kernels: linux-4.15-rc5 linux-4.15-rc6 linux-4.15-rc7 (Hence the reason for falling back to test the kernel right after the introduction of the DPAA Ethernet driver sources) --- All Kernel builds had the DPAA Ethernet enabled in the kernel, and are using the correct cyrus_p5020.eth.dtb device tree file (for use on the X5000/20). The results are quite similar for all kernels in regards to the DPAA Ethernet. All tested kernels setup the two Ethernet interfaces correctly as eth0 and eth1, and pull the correct MAC addresses from U-Boot environment variables ethaddr and eth1addr respectively. So at this point Linux has what it believes is fully configured hardware, waiting to have an IP Address/Netmask/Gateway to be set and to bring the interface online. However, all attempts to communicate with the outside world do not make it out the physical (PHY) hardware - or do they? ** The following results were captured under linux-4.10.17 ** When I bring the interface up using a static address, in this case 192.168.1.21, I see the following (NOTE TX bytes says 154.0 KB, while RX bytes says 0.0 B): jamie@X5000-Linux:$ ifconfig eth0 Link encap:Ethernet HWaddr 00:80:10:11:11:11 inet addr:192.168.1.21 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::280:10ff:fe11:1111/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:1428 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:154066 (154.0 KB) Memory:fe4e6000-fe4e6fff eth1 Link encap:Ethernet HWaddr 00:80:10:22:22:22 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fe4e8000-fe4e8fff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:1869 errors:0 dropped:0 overruns:0 frame:0 TX packets:1869 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:156932 (156.9 KB) TX bytes:156932 (156.9 KB) Checking the routing table, everything looks fine there: jamie@X5000-Linux:$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 link-local * 255.255.0.0 U 0 0 0 eth0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 Attempting to PING the interface itself works: jamie@X5000-Linux:$ ping 192.168.1.21 PING 192.168.1.21 (192.168.1.21) 56(84) bytes of data. 64 bytes from 192.168.1.21: icmp_seq=1 ttl=64 time=0.037 ms 64 bytes from 192.168.1.21: icmp_seq=2 ttl=64 time=0.045 ms 64 bytes from 192.168.1.21: icmp_seq=3 ttl=64 time=0.033 ms ^C --- 192.168.1.21 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2043ms However, attempts to PING the gateway (192.168.1.1) fail as unreachable: jamie@X5000-Linux:$ ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. From 192.168.1.21 icmp_seq=1 Destination Host Unreachable From 192.168.1.21 icmp_seq=2 Destination Host Unreachable From 192.168.1.21 icmp_seq=3 Destination Host Unreachable ^C --- 192.168.1.1 ping statistics --- 7 packets transmitted, 0 received, +3 errors, 100% packet loss, time 6077ms In order to take a closer look at what is going on I installed Wireshark both on my test X5000/20 Linux install (Ubuntu 16.04.3 LTS), and on another Linux box connected to the same network switch (in this case at IP address 192.168.1.210) In this test I start the capture on eth0 (X5000/20) before it is put online, and attempt to bring it up using DHCP to obtain it's address. What I found was that network traffic *was* being attempted over eth0. Here is a plain text export of the transmit side (the X5000/20) that was captured using Wireshark. (There were more network packets being sent from the X5000/20, however, I am only showing DHCP traffic to save space in this post): --- No. Time Source Destination Protocol Length Info 2 0.042259843 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 2: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 16 3.830001152 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 16: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 21 9.308914533 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 21: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 23 18.906405343 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 23: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 25 36.390926450 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 25: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 26 44.048328412 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 26: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 30 44.889049203 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 30: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 44 48.254495304 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 44: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 49 54.299052732 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 49: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 51 62.672007482 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 51: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 52 77.485896202 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 52: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 56 89.895304152 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x5df47c84 Frame 56: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 71 93.828837008 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x5df47c84 Frame 71: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 74 97.948453158 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x5df47c84 Frame 74: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) --- Now, over on the external Linux machine (192.168.1.210), I setup a Wireshark capture which filtered for any traffic to/from the MAC address of the X5000/20's eth0, in this case shown as Commodor_11:11:11 (00:80:10:11:11:11) below: This export shows only the DHCP traffic seen from outside the X5000/20, and as you can see, a matching set of DHCP requests *do in fact* make it to the outside network. --- No. Time Source Destination Protocol Length Info 39 5.671762509 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 39: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 73 9.451895404 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 73: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 154 14.919944480 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 154: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 269 24.498335996 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 269: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 630 41.948018648 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 630: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 701 49.590211264 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x655d91e8 Frame 701: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 706 50.429265938 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 706: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 744 53.788035317 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 744: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 797 59.820568614 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 797: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 852 68.176833686 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 852: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 990 82.961224895 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x421bade3 Frame 990: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 3827 95.345964418 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x5df47c84 Frame 3827: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 3887 99.271668572 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x5df47c84 Frame 3887: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) No. Time Source Destination Protocol Length Info 3943 103.383072429 0.0.0.0 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0x5df47c84 Frame 3943: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface 0 Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Source: Commodor_11:11:11 (00:80:10:11:11:11) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Bootstrap Protocol (Discover) --- The odd thing here is that while the DHCP requests were broadcast to the outside network (confirming that at least the transmit to the PHY is working), I could see no responses from my network's DHCP server to answer these requests. It is not a physical networking or routing issue, as I always get a successful DHCP response to the X5000/20 when I enable the Realtek 8169 interface (also installed [PCIe card] in the X5000/20). Since initial outgoing traffic *appears* to be working from the DPAA Ethernet on the X5000/20, is it possible we are missing an interrupt mapping from the Frame Manager to catch the received data? Any help would be appreciated. Thanks. -- Best Regards, Jamie Krueger BITbyBIT Software Group LLC ^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: DPAA Ethernet problems with mainstream Linux kernels 2018-01-10 15:56 DPAA Ethernet problems with mainstream Linux kernels Jamie Krueger @ 2018-01-12 14:22 ` Madalin-cristian Bucur 2018-01-12 16:35 ` Jamie Krueger 0 siblings, 1 reply; 3+ messages in thread From: Madalin-cristian Bucur @ 2018-01-12 14:22 UTC (permalink / raw) To: Jamie Krueger, linuxppc-dev@lists.ozlabs.org; +Cc: netdev@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMaW51eHBwYy1kZXYgW21haWx0 bzpsaW51eHBwYy1kZXYtDQo+IGJvdW5jZXMrbWFkYWxpbi5idWN1cj1ueHAuY29tQGxpc3RzLm96 bGFicy5vcmddIE9uIEJlaGFsZiBPZiBKYW1pZSBLcnVlZ2VyDQo+IFNlbnQ6IFdlZG5lc2RheSwg SmFudWFyeSAxMCwgMjAxOCA1OjU3IFBNDQo+IFRvOiBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJz Lm9yZw0KPiBTdWJqZWN0OiBEUEFBIEV0aGVybmV0IHByb2JsZW1zIHdpdGggbWFpbnN0cmVhbSBM aW51eCBrZXJuZWxzDQo+IA0KPiBIZWxsbyBhbGwgQCBsaW51eHBwYy1kZXYsDQo+IA0KPiBJIGhh dmUgYmVlbiB3b3JraW5nIHdpdGggYSB0ZWFtIG9mIHBlb3BsZSBtYWludGFpbmluZyBQb3dlclBD DQo+IExpbnV4IGZvciB0aGUgbmV3IEFtaWdhT05FIFg1MDAwLzIwIChhIEZyZWVzY2FsZSBwNTAy MCBTb0MgYmFzZWQNCj4gbWFjaGluZSkuDQo+IA0KPiBXZSBhcmUgdHJ5aW5nIHRvIGRldGVybWlu ZSB3aHkgdGhlIHN1Ym1pdHRlZCBEYXRhIFBhdGggQWNjZWxlcmF0aW9uDQo+IEFyY2hpdGVjdHVy ZSAoRFBBQSkgRXRoZXJuZXQgRHJpdmVyIGlzIG5vdCBmdWxseSBmdW5jdGlvbmFsIHdpdGgNCj4g dGhlIG1haW5zdHJlYW0gTGludXgga2VybmVscy4NCg0KSGkgSmFtaWUsDQoNCldlIGFyZSB0ZXN0 aW5nIHRoZSBEUEFBIGRyaXZlciBvbiBzZXZlcmFsIERTIGFuZCBSREIgcGxhdGZvcm1zIGFuZCBp dA0KaXMgd29ya2luZyBwcm9wZXJseS4gVGhlIGlzc3VlcyB5b3UgZW5jb3VudGVyIHdpdGggaXQg b24gdGhlIFg1MDAwLzIwDQphcmUgbGlrZWx5IGNhdXNlZCBieSBzb21lIGlzc3VlcyBzcGVjaWZp YyB0byB0aGF0IHBhcnRpY3VsYXIgcGxhdGZvcm0uDQpUaGUgZGV2aWNlIHRyZWUgdGhhdCB5b3Ug bWVudGlvbiwgY3lydXNfcDUwMjAuZXRoLmR0cyBpcyBub3QgZm91bmQgaW4NCnRoZSBMaW51eCBr ZXJuZWwgc291cmNlcy4gVGhlIGN5cnVzX3A1MDIwLmR0cyBmaWxlIGZyb20gdGhlIGZzbCBwcGMN CmRldmljZSB0cmVlIGZvbGRlciBkb2VzIG5vdCBpbmNsdWRlIHRoZSBQSFkgaW5mb3JtYXRpb24g Zm9yIHRoZSBEUEFBDQppbnRlcmZhY2VzLiBUaGUgcHJvYmxlbXMgdGhhdCB5b3UgZXhwZXJpZW5j ZSBtYXkgYmUgY2F1c2VkIGJ5IHNvbWUNCmlzc3VlcyB3aXRoIHRoZSBQSFkgY29uZmlndXJhdGlv biAoaS5lLiBpbnRlcm5hbCBkZWxheSkuIEkgc3VnZ2VzdA0KdGhhdCB5b3UgY29ubmVjdCB0aGUg RFBBQSBpbnRlcmZhY2UgdG8gYSB0cmFmZmljIGFuYWx5emVyIG9yIGRpcmVjdGx5DQp0byBhbm90 aGVyIGRldmljZSBvbiB3aGljaCB5b3UgY2FuIGNhcHR1cmUgdGhlIGluY29taW5nIHRyYWZmaWMg YW5kDQpjaGVjayB0aGF0IHRoZSByZWNlaXZlZCBmcmFtZXMgYXJlIGNvcnJlY3QuDQoNCk1hZGFs aW4NCg0KPiBIZXJlIGlzIHRoZSByZXN1bHRzIGZyb20gbXkgbGF0ZXN0IHRlc3RzLiBUaGV5IHdl cmUgcGVyZm9ybWVkIHVzaW5nDQo+IHRoZSBsaW51eC00LjEwLjE3IHBwYzY0LCBzaW5jZSB0aGF0 IHJlcHJlc2VudHMgd2hlbiB0aGUgRFBBQSBFdGhlcm5ldA0KPiBjb2RlIHdhcyBpbnRyb2R1Y2Vk Lg0KPiANCj4gU2ltaWxhciB0ZXN0cywgd2l0aCBzaW1pbGFyIHJlc3VsdHMsIHdlcmUgYWxzbyBw ZXJmb3JtZWQNCj4gdXNpbmcgdGhlIGxhdGVzdCBMaW51eCBrZXJuZWxzOg0KPiANCj4gbGludXgt NC4xNS1yYzUNCj4gbGludXgtNC4xNS1yYzYNCj4gbGludXgtNC4xNS1yYzcNCj4gDQo+IChIZW5j ZSB0aGUgcmVhc29uIGZvciBmYWxsaW5nIGJhY2sgdG8gdGVzdCB0aGUga2VybmVsIHJpZ2h0DQo+ ICDCoGFmdGVyIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIERQQUEgRXRoZXJuZXQgZHJpdmVyIHNv dXJjZXMpDQo+IA0KPiAtLS0NCj4gDQo+IEFsbCBLZXJuZWwgYnVpbGRzIGhhZCB0aGUgRFBBQSBF dGhlcm5ldCBlbmFibGVkIGluIHRoZSBrZXJuZWwsDQo+IGFuZCBhcmUgdXNpbmcgdGhlIGNvcnJl Y3QgY3lydXNfcDUwMjAuZXRoLmR0YiBkZXZpY2UgdHJlZSBmaWxlDQo+IChmb3IgdXNlIG9uIHRo ZSBYNTAwMC8yMCkuDQo+IA0KPiBUaGUgcmVzdWx0cyBhcmUgcXVpdGUgc2ltaWxhciBmb3IgYWxs IGtlcm5lbHMgaW4gcmVnYXJkcyB0byB0aGUgRFBBQQ0KPiBFdGhlcm5ldC4NCj4gDQo+IEFsbCB0 ZXN0ZWQga2VybmVscyBzZXR1cCB0aGUgdHdvIEV0aGVybmV0IGludGVyZmFjZXMgY29ycmVjdGx5 DQo+IGFzIGV0aDAgYW5kIGV0aDEsIGFuZCBwdWxsIHRoZSBjb3JyZWN0IE1BQyBhZGRyZXNzZXMg ZnJvbSBVLUJvb3QNCj4gZW52aXJvbm1lbnQgdmFyaWFibGVzIGV0aGFkZHIgYW5kIGV0aDFhZGRy IHJlc3BlY3RpdmVseS4NCj4gDQo+IFNvIGF0IHRoaXMgcG9pbnQgTGludXggaGFzIHdoYXQgaXQg YmVsaWV2ZXMgaXMgZnVsbHkgY29uZmlndXJlZA0KPiBoYXJkd2FyZSwgd2FpdGluZyB0byBoYXZl IGFuIElQIEFkZHJlc3MvTmV0bWFzay9HYXRld2F5DQo+IHRvIGJlIHNldCBhbmQgdG8gYnJpbmcg dGhlIGludGVyZmFjZSBvbmxpbmUuDQo+IA0KPiBIb3dldmVyLCBhbGwgYXR0ZW1wdHMgdG8gY29t bXVuaWNhdGUgd2l0aCB0aGUgb3V0c2lkZSB3b3JsZA0KPiBkbyBub3QgbWFrZSBpdCBvdXQgdGhl IHBoeXNpY2FsIChQSFkpIGhhcmR3YXJlIC0gb3IgZG8gdGhleT8NCj4gDQo+ICoqIFRoZSBmb2xs b3dpbmcgcmVzdWx0cyB3ZXJlIGNhcHR1cmVkIHVuZGVyIGxpbnV4LTQuMTAuMTcgKioNCj4gDQo+ IFdoZW4gSSBicmluZyB0aGUgaW50ZXJmYWNlIHVwIHVzaW5nIGEgc3RhdGljIGFkZHJlc3MsIGlu IHRoaXMgY2FzZQ0KPiAxOTIuMTY4LjEuMjEsIEkgc2VlIHRoZSBmb2xsb3dpbmcgKE5PVEUgVFgg Ynl0ZXMgc2F5cyAxNTQuMCBLQiwNCj4gd2hpbGUgUlggYnl0ZXMgc2F5cyAwLjAgQik6DQo+IA0K PiBqYW1pZUBYNTAwMC1MaW51eDokIGlmY29uZmlnDQo+IGV0aDDCoMKgwqDCoMKgIExpbmsgZW5j YXA6RXRoZXJuZXTCoCBIV2FkZHIgMDA6ODA6MTA6MTE6MTE6MTENCj4gIMKgwqDCoMKgwqDCoMKg wqDCoCBpbmV0IGFkZHI6MTkyLjE2OC4xLjIxwqAgQmNhc3Q6MTkyLjE2OC4xLjI1NSBNYXNrOjI1 NS4yNTUuMjU1LjANCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBpbmV0NiBhZGRyOiBmZTgwOjoyODA6 MTBmZjpmZTExOjExMTEvNjQgU2NvcGU6TGluaw0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIFVQIEJS T0FEQ0FTVCBSVU5OSU5HIE1VTFRJQ0FTVMKgIE1UVToxNTAwwqAgTWV0cmljOjENCj4gIMKgwqDC oMKgwqDCoMKgwqDCoCBSWCBwYWNrZXRzOjAgZXJyb3JzOjAgZHJvcHBlZDowIG92ZXJydW5zOjAg ZnJhbWU6MA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIFRYIHBhY2tldHM6MTQyOCBlcnJvcnM6MCBk cm9wcGVkOjAgb3ZlcnJ1bnM6MCBjYXJyaWVyOjANCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBjb2xs aXNpb25zOjAgdHhxdWV1ZWxlbjoxMDAwDQo+ICDCoMKgwqDCoMKgwqDCoMKgwqAgUlggYnl0ZXM6 MCAoMC4wIEIpwqAgVFggYnl0ZXM6MTU0MDY2ICgxNTQuMCBLQikNCj4gIMKgwqDCoMKgwqDCoMKg wqDCoCBNZW1vcnk6ZmU0ZTYwMDAtZmU0ZTZmZmYNCj4gDQo+IGV0aDHCoMKgwqDCoMKgIExpbmsg ZW5jYXA6RXRoZXJuZXTCoCBIV2FkZHIgMDA6ODA6MTA6MjI6MjI6MjINCj4gIMKgwqDCoMKgwqDC oMKgwqDCoCBVUCBCUk9BRENBU1QgTVVMVElDQVNUwqAgTVRVOjE1MDDCoCBNZXRyaWM6MQ0KPiAg wqDCoMKgwqDCoMKgwqDCoMKgIFJYIHBhY2tldHM6MCBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1 bnM6MCBmcmFtZTowDQo+ICDCoMKgwqDCoMKgwqDCoMKgwqAgVFggcGFja2V0czowIGVycm9yczow IGRyb3BwZWQ6MCBvdmVycnVuczowIGNhcnJpZXI6MA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bGxpc2lvbnM6MCB0eHF1ZXVlbGVuOjEwMDANCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBSWCBieXRl czowICgwLjAgQinCoCBUWCBieXRlczowICgwLjAgQikNCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBN ZW1vcnk6ZmU0ZTgwMDAtZmU0ZThmZmYNCj4gDQo+IGxvwqDCoMKgwqDCoMKgwqAgTGluayBlbmNh cDpMb2NhbCBMb29wYmFjaw0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIGluZXQgYWRkcjoxMjcuMC4w LjHCoCBNYXNrOjI1NS4wLjAuMA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIGluZXQ2IGFkZHI6IDo6 MS8xMjggU2NvcGU6SG9zdA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIFVQIExPT1BCQUNLIFJVTk5J TkfCoCBNVFU6NjU1MzbCoCBNZXRyaWM6MQ0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIFJYIHBhY2tl dHM6MTg2OSBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1bnM6MCBmcmFtZTowDQo+ICDCoMKgwqDC oMKgwqDCoMKgwqAgVFggcGFja2V0czoxODY5IGVycm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczow IGNhcnJpZXI6MA0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbGxpc2lvbnM6MCB0eHF1ZXVlbGVu OjEwMDANCj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBSWCBieXRlczoxNTY5MzIgKDE1Ni45IEtCKcKg IFRYIGJ5dGVzOjE1NjkzMiAoMTU2LjkgS0IpDQo+IA0KPiBDaGVja2luZyB0aGUgcm91dGluZyB0 YWJsZSwgZXZlcnl0aGluZyBsb29rcyBmaW5lIHRoZXJlOg0KPiANCj4gamFtaWVAWDUwMDAtTGlu dXg6JCBuZXRzdGF0IC1yDQo+IEtlcm5lbCBJUCByb3V0aW5nIHRhYmxlDQo+IERlc3RpbmF0aW9u wqDCoMKgwqAgR2F0ZXdhecKgwqDCoMKgwqDCoMKgwqAgR2VubWFza8KgwqDCoMKgwqDCoMKgwqAg RmxhZ3PCoMKgIE1TUyBXaW5kb3fCoCBpcnR0DQo+IElmYWNlDQo+IGRlZmF1bHTCoMKgwqDCoMKg wqDCoMKgIDE5Mi4xNjguMS4xwqDCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqAgVUfCoMKg wqDCoMKgwqDCoCAwIDDCoMKgwqDCoMKgwqDCoMKgwqAgMA0KPiBldGgwDQo+IGxpbmstbG9jYWzC oMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMC4wwqDCoMKg wqAgVcKgwqDCoMKgwqDCoMKgwqAgMCAwwqDCoMKgwqDCoMKgwqDCoMKgIDANCj4gZXRoMA0KPiAx OTIuMTY4LjEuMMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUu MjU1LjDCoMKgIFXCoMKgwqDCoMKgwqDCoMKgIDAgMMKgwqDCoMKgwqDCoMKgwqDCoCAwDQo+IGV0 aDANCj4gDQo+IEF0dGVtcHRpbmcgdG8gUElORyB0aGUgaW50ZXJmYWNlIGl0c2VsZiB3b3JrczoN Cj4gDQo+IGphbWllQFg1MDAwLUxpbnV4OiQgcGluZyAxOTIuMTY4LjEuMjENCj4gUElORyAxOTIu MTY4LjEuMjEgKDE5Mi4xNjguMS4yMSkgNTYoODQpIGJ5dGVzIG9mIGRhdGEuDQo+IDY0IGJ5dGVz IGZyb20gMTkyLjE2OC4xLjIxOiBpY21wX3NlcT0xIHR0bD02NCB0aW1lPTAuMDM3IG1zDQo+IDY0 IGJ5dGVzIGZyb20gMTkyLjE2OC4xLjIxOiBpY21wX3NlcT0yIHR0bD02NCB0aW1lPTAuMDQ1IG1z DQo+IDY0IGJ5dGVzIGZyb20gMTkyLjE2OC4xLjIxOiBpY21wX3NlcT0zIHR0bD02NCB0aW1lPTAu MDMzIG1zDQo+IF5DDQo+IC0tLSAxOTIuMTY4LjEuMjEgcGluZyBzdGF0aXN0aWNzIC0tLQ0KPiAz IHBhY2tldHMgdHJhbnNtaXR0ZWQsIDMgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDIw NDNtcw0KPiANCj4gSG93ZXZlciwgYXR0ZW1wdHMgdG8gUElORyB0aGUgZ2F0ZXdheSAoMTkyLjE2 OC4xLjEpIGZhaWwgYXMgdW5yZWFjaGFibGU6DQo+IA0KPiBqYW1pZUBYNTAwMC1MaW51eDokIHBp bmcgMTkyLjE2OC4xLjENCj4gUElORyAxOTIuMTY4LjEuMSAoMTkyLjE2OC4xLjEpIDU2KDg0KSBi eXRlcyBvZiBkYXRhLg0KPiAgRnJvbSAxOTIuMTY4LjEuMjEgaWNtcF9zZXE9MSBEZXN0aW5hdGlv biBIb3N0IFVucmVhY2hhYmxlDQo+ICBGcm9tIDE5Mi4xNjguMS4yMSBpY21wX3NlcT0yIERlc3Rp bmF0aW9uIEhvc3QgVW5yZWFjaGFibGUNCj4gIEZyb20gMTkyLjE2OC4xLjIxIGljbXBfc2VxPTMg RGVzdGluYXRpb24gSG9zdCBVbnJlYWNoYWJsZQ0KPiBeQw0KPiAtLS0gMTkyLjE2OC4xLjEgcGlu ZyBzdGF0aXN0aWNzIC0tLQ0KPiA3IHBhY2tldHMgdHJhbnNtaXR0ZWQsIDAgcmVjZWl2ZWQsICsz IGVycm9ycywgMTAwJSBwYWNrZXQgbG9zcywgdGltZQ0KPiA2MDc3bXMNCj4gDQo+IEluIG9yZGVy IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB3aGF0IGlzIGdvaW5nIG9uIEkgaW5zdGFsbGVkIFdp cmVzaGFyaw0KPiBib3RoIG9uIG15IHRlc3QgWDUwMDAvMjAgTGludXggaW5zdGFsbCAoVWJ1bnR1 IDE2LjA0LjMgTFRTKSwgYW5kIG9uDQo+IGFub3RoZXIgTGludXggYm94IGNvbm5lY3RlZCB0byB0 aGUgc2FtZSBuZXR3b3JrIHN3aXRjaCAoaW4gdGhpcyBjYXNlDQo+IGF0IElQIGFkZHJlc3MgMTky LjE2OC4xLjIxMCkNCj4gDQo+IEluIHRoaXMgdGVzdCBJIHN0YXJ0IHRoZSBjYXB0dXJlIG9uIGV0 aDAgKFg1MDAwLzIwKSBiZWZvcmUgaXQgaXMgcHV0DQo+IG9ubGluZSwNCj4gYW5kIGF0dGVtcHQg dG8gYnJpbmcgaXQgdXAgdXNpbmcgREhDUCB0byBvYnRhaW4gaXQncyBhZGRyZXNzLg0KPiANCj4g V2hhdCBJIGZvdW5kIHdhcyB0aGF0IG5ldHdvcmsgdHJhZmZpYyAqd2FzKiBiZWluZyBhdHRlbXB0 ZWQgb3ZlciBldGgwLg0KPiBIZXJlIGlzIGEgcGxhaW4gdGV4dCBleHBvcnQgb2YgdGhlIHRyYW5z bWl0IHNpZGUgKHRoZSBYNTAwMC8yMCkgdGhhdA0KPiB3YXMgY2FwdHVyZWQgdXNpbmcgV2lyZXNo YXJrLg0KPiANCj4gKFRoZXJlIHdlcmUgbW9yZSBuZXR3b3JrIHBhY2tldHMgYmVpbmcgc2VudCBm cm9tIHRoZSBYNTAwMC8yMCwNCj4gIMKgaG93ZXZlciwgSSBhbSBvbmx5IHNob3dpbmcgREhDUCB0 cmFmZmljIHRvIHNhdmUgc3BhY2UgaW4gdGhpcyBwb3N0KToNCj4gDQo+IC0tLQ0KPiBOby7CoMKg wqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDC oMKgIDIgMC4wNDIyNTk4NDPCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFu c2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+IA0KPiBGcmFtZSAyOiAzNDIgYnl0ZXMgb24gd2lyZSAo MjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFj ZSAwDQo+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMTox MToxMSksIERzdDogQnJvYWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQg UHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJv b3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKg wqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3Rp bmF0aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCAxNiAzLjgzMDAwMTE1 MsKgwqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4y NTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1 ZDkxZTgNCj4gDQo+IEZyYW1lIDE2OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQy IGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAwDQo+IEV0aGVybmV0 IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJv YWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lv biA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVzZXIgRGF0YWdyYW0g UHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3RzdHJhcCBQcm90b2Nv bCAoRGlzY292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAg U291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29s IExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCAyMSA5LjMwODkxNDUzM8KgwqDCoCAwLjAuMC4w wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLC oMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gDQo+IEZy YW1lIDIxOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVk ICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAwDQo+IEV0aGVybmV0IElJLCBTcmM6IENvbW1v ZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+IChmZjpm ZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4w LjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQ b3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZv DQo+ICDCoMKgwqDCoCAyMyAxOC45MDY0MDUzNDPCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0MsKgwqDCoCBESENQIERpc2Nv dmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg2NTVkOTFlOA0KPiANCj4gRnJhbWUgMjM6IDM0MiBieXRl cyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYgYml0cykNCj4g b24gaW50ZXJmYWNlIDANCj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAw OjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0K PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1 LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9y dDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKg IFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoMKgIDI1 IDM2LjM5MDkyNjQ1MMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1 LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlv biBJRCAweDY1NWQ5MWU4DQo+IA0KPiBGcmFtZSAyNTogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYg Yml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0K PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEp LCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+IEludGVybmV0IFByb3Rv Y29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiBVc2Vy IERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiBCb290c3Ry YXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiANCj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDC oMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlv biBQcm90b2NvbCBMZW5ndGgNCj4gSW5mbw0KPiAgwqDCoMKgwqAgMjYgNDQuMDQ4MzI4NDEywqDC oCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhD UA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgN Cj4gDQo+IEZyYW1lIDI2OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVz IGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAwDQo+IEV0aGVybmV0IElJLCBT cmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0 DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBT cmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVzZXIgRGF0YWdyYW0gUHJvdG9j b2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlz Y292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNl wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sIExlbmd0 aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCAzMCA0NC44ODkwNDkyMDPCoMKgIDAuMC4wLjDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0MsKgwqDCoCBE SENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiANCj4gRnJhbWUgMzA6 IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYg Yml0cykNCj4gb24gaW50ZXJmYWNlIDANCj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6 MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gKGZmOmZmOmZmOmZm OmZmOmZmKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0 OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4 LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5v LsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKg wqDCoMKgIDQ0IDQ4LjI1NDQ5NTMwNMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBU cmFuc2FjdGlvbiBJRCAweDQyMWJhZGUzDQo+IA0KPiBGcmFtZSA0NDogMzQyIGJ5dGVzIG9uIHdp cmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRl cmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6 MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+IEludGVy bmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1 NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0K PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiANCj4gTm8uwqDCoMKgwqAgVGltZcKg wqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBE ZXN0aW5hdGlvbiBQcm90b2NvbCBMZW5ndGgNCj4gSW5mbw0KPiAgwqDCoMKgwqAgNDkgNTQuMjk5 MDUyNzMywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1 NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4 NDIxYmFkZTMNCj4gDQo+IEZyYW1lIDQ5OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwg MzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAwDQo+IEV0aGVy bmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDog QnJvYWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVy c2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVzZXIgRGF0YWdy YW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3RzdHJhcCBQcm90 b2NvbCAoRGlzY292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKg wqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3Rv Y29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCA1MSA2Mi42NzIwMDc0ODLCoMKgIDAuMC4w LjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0 MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiANCj4g RnJhbWUgNTE6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVy ZWQgKDI3MzYgYml0cykNCj4gb24gaW50ZXJmYWNlIDANCj4gRXRoZXJuZXQgSUksIFNyYzogQ29t bW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gKGZm OmZmOmZmOmZmOmZmOmZmKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4w LjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3Jj IFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikN Cj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IElu Zm8NCj4gIMKgwqDCoMKgIDUyIDc3LjQ4NTg5NjIwMsKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlz Y292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDQyMWJhZGUzDQo+IA0KPiBGcmFtZSA1MjogMzQyIGJ5 dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0K PiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAo MDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp DQo+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4y NTUuMjU1LjI1NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQ b3J0OiA2Nw0KPiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiANCj4gTm8uwqDCoMKg wqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbCBMZW5ndGgNCj4gSW5mbw0KPiAgwqDCoMKgwqAg NTYgODkuODk1MzA0MTUywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAy NTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0 aW9uIElEIDB4NWRmNDdjODQNCj4gDQo+IEZyYW1lIDU2OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjcz NiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAw DQo+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMTox MSksIERzdDogQnJvYWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gSW50ZXJuZXQgUHJv dG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+IFVz ZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+IEJvb3Rz dHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+IA0KPiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDC oMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0 aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCA3MSA5My44Mjg4MzcwMDjC oMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBE SENQDQo+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg1ZGY0N2M4 NA0KPiANCj4gRnJhbWUgNzE6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0 ZXMgY2FwdHVyZWQgKDI3MzYgYml0cykNCj4gb24gaW50ZXJmYWNlIDANCj4gRXRoZXJuZXQgSUks IFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNh c3QNCj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQs IFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90 b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChE aXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3Vy Y2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVu Z3RoDQo+IEluZm8NCj4gIMKgwqDCoMKgIDc0IDk3Ljk0ODQ1MzE1OMKgwqAgMC4wLjAuMMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKg IERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDVkZjQ3Yzg0DQo+IA0KPiBGcmFtZSA3 NDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjcz NiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8x MToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6 ZmY6ZmY6ZmYpDQo+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBE c3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDog NjgsIERzdCBQb3J0OiA2Nw0KPiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiAtLS0N Cj4gDQo+IE5vdywgb3ZlciBvbiB0aGUgZXh0ZXJuYWwgTGludXggbWFjaGluZSAoMTkyLjE2OC4x LjIxMCksIEkgc2V0dXAgYQ0KPiBXaXJlc2hhcmsgY2FwdHVyZQ0KPiB3aGljaCBmaWx0ZXJlZCBm b3IgYW55IHRyYWZmaWMgdG8vZnJvbSB0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIFg1MDAwLzIwJ3MN Cj4gZXRoMCwgaW4gdGhpcyBjYXNlDQo+IHNob3duIGFzIENvbW1vZG9yXzExOjExOjExICgwMDo4 MDoxMDoxMToxMToxMSkgYmVsb3c6DQo+IA0KPiBUaGlzIGV4cG9ydCBzaG93cyBvbmx5IHRoZSBE SENQIHRyYWZmaWMgc2VlbiBmcm9tIG91dHNpZGUgdGhlIFg1MDAwLzIwLA0KPiBhbmQgYXMgeW91 IGNhbiBzZWUsIGEgbWF0Y2hpbmcgc2V0IG9mIERIQ1AgcmVxdWVzdHMgKmRvIGluIGZhY3QqIG1h a2UNCj4gaXQgdG8gdGhlIG91dHNpZGUgbmV0d29yay4NCj4gDQo+IC0tLQ0KPiBOby7CoMKgwqDC oCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sIExlbmd0aA0KPiBJbmZvDQo+ICDCoMKgwqDCoCAz OSA1LjY3MTc2MjUwOcKgwqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAy NTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0 aW9uIElEIDB4NjU1ZDkxZTgNCj4gDQo+IEZyYW1lIDM5OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjcz NiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+IG9uIGludGVyZmFjZSAw DQo+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMTox MSksIERzdDogQnJvYWRjYXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gIMKgwqDCoCBEZXN0 aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gIMKgwqDCoCBTb3VyY2U6 IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4gIMKgwqDCoCBUeXBlOiBJ UHY0ICgweDA4MDApDQo+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4w LCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9y dDogNjgsIERzdCBQb3J0OiA2Nw0KPiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiAN Cj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbCBMZW5ndGgNCj4gSW5mbw0K PiAgwqDCoMKgwqAgNzMgOS40NTE4OTU0MDTCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292 ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+IA0KPiBGcmFtZSA3MzogMzQyIGJ5dGVz IG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBv biBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6 ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDC oMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDC oMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQs IFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90 b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChE aXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3Vy Y2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVu Z3RoDQo+IEluZm8NCj4gIMKgwqDCoCAxNTQgMTQuOTE5OTQ0NDgwwqDCoCAwLjAuMC4wwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAg REhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gDQo+IEZyYW1lIDE1 NDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjcz NiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8x MToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6 ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6 ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6 MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2Nv bCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBE YXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFw IFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDC oMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24g UHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCAyNjkgMjQuNDk4MzM1OTk2wqDCoCAw LjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0K PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4g DQo+IEZyYW1lIDI2OTogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBj YXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3Jj OiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0K PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAo ZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAo MDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRl cm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4y NTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcN Cj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXC oMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCA2MzAgNDEuOTQ4 MDE4NjQ4wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1 NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4 NjU1ZDkxZTgNCj4gDQo+IEZyYW1lIDYzMDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyks IDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhl cm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6 IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246 IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rv cl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgw ODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAy NTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBE c3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKg wqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDC oCA3MDEgNDkuNTkwMjExMjY0wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5z YWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gDQo+IEZyYW1lIDcwMTogMzQyIGJ5dGVzIG9uIHdpcmUg KDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZh Y2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6 MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAg RGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291 cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlw ZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4w LjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3Jj IFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikN Cj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IElu Zm8NCj4gIMKgwqDCoCA3MDYgNTAuNDI5MjY1OTM4wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNj b3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gDQo+IEZyYW1lIDcwNjogMzQyIGJ5 dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0K PiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAo MDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp DQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9u IDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQ cm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29s IChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBT b3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wg TGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCA3NDQgNTMuNzg4MDM1MzE3wqDCoCAwLjAuMC4wwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKg wqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gDQo+IEZyYW1l IDc0NDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAo MjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rv cl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6 ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6 ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6 MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90 b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNl ciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0 cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKg wqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRp b24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCA3OTcgNTkuODIwNTY4NjE0wqDC oCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhD UA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMN Cj4gDQo+IEZyYW1lIDc5NzogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRl cyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwg U3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2Fz dA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2Fz dCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMTox MSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJ bnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1 NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDog NjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRp bWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqDCoCA4NTIgNjgu MTc2ODMzNjg2wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1 LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElE IDB4NDIxYmFkZTMNCj4gDQo+IEZyYW1lIDg1MjogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0 cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRlcmZhY2UgMA0KPiBF dGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBE c3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRp b246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21t b2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAo MHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0 OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4 LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5v LsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKg wqDCoCA5OTAgODIuOTYxMjI0ODk1wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRy YW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gDQo+IEZyYW1lIDk5MDogMzQyIGJ5dGVzIG9uIHdp cmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiBvbiBpbnRl cmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6 MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKg wqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAg U291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAg VHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzog MC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwg U3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3Zl cikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+ IEluZm8NCj4gIMKgwqAgMzgyNyA5NS4zNDU5NjQ0MTjCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0MsKgwqDCoCBESENQIERp c2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg1ZGY0N2M4NA0KPiANCj4gRnJhbWUgMzgyNzogMzQy IGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNg0KPiBi aXRzKSBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMTox MSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6ZmY6ZmY6ZmY6ZmY6 ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp DQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEp DQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQcm90b2NvbCBWZXJz aW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gVXNlciBEYXRhZ3Jh bSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9vdHN0cmFwIFByb3Rv Y29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDC oCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9j b2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqAgMzg4NyA5OS4yNzE2Njg1NzLCoMKgIDAuMC4wLjDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+IDM0MsKg wqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg1ZGY0N2M4NA0KPiANCj4gRnJh bWUgMzg4NzogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJl ZCAoMjczNg0KPiBiaXRzKSBvbiBpbnRlcmZhY2UgMA0KPiBFdGhlcm5ldCBJSSwgU3JjOiBDb21t b2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiAoZmY6 ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6 ZmY6ZmY6ZmY6ZmYpDQo+ICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6 MTA6MTE6MTE6MTEpDQo+ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiBJbnRlcm5ldCBQ cm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4g VXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gQm9v dHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gDQo+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDC oMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGlu YXRpb24gUHJvdG9jb2wgTGVuZ3RoDQo+IEluZm8NCj4gIMKgwqAgMzk0MyAxMDMuMzgzMDcyNDI5 wqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERI Q1ANCj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDVkZjQ3Yzg0 DQo+IA0KPiBGcmFtZSAzOTQzOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5 dGVzIGNhcHR1cmVkICgyNzM2DQo+IGJpdHMpIG9uIGludGVyZmFjZSAwDQo+IEV0aGVybmV0IElJ LCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRj YXN0DQo+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gIMKgwqDCoCBEZXN0aW5hdGlvbjogQnJvYWRj YXN0IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gIMKgwqDCoCBTb3VyY2U6IENvbW1vZG9yXzExOjEx OjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4gIMKgwqDCoCBUeXBlOiBJUHY0ICgweDA4MDApDQo+ IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUu MjU1LjI1NQ0KPiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0 OiA2Nw0KPiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiAtLS0NCj4gDQo+IFRoZSBv ZGQgdGhpbmcgaGVyZSBpcyB0aGF0IHdoaWxlIHRoZSBESENQIHJlcXVlc3RzIHdlcmUgYnJvYWRj YXN0IHRvIHRoZQ0KPiBvdXRzaWRlIG5ldHdvcmsgKGNvbmZpcm1pbmcgdGhhdCBhdCBsZWFzdCB0 aGUgdHJhbnNtaXQgdG8gdGhlIFBIWSBpcw0KPiB3b3JraW5nKSwNCj4gSSBjb3VsZCBzZWUgbm8g cmVzcG9uc2VzIGZyb20gbXkgbmV0d29yaydzIERIQ1Agc2VydmVyIHRvIGFuc3dlciB0aGVzZQ0K PiByZXF1ZXN0cy4NCj4gDQo+IEl0IGlzIG5vdCBhIHBoeXNpY2FsIG5ldHdvcmtpbmcgb3Igcm91 dGluZyBpc3N1ZSwgYXMgSSBhbHdheXMgZ2V0IGENCj4gc3VjY2Vzc2Z1bA0KPiBESENQIHJlc3Bv bnNlIHRvIHRoZSBYNTAwMC8yMCB3aGVuIEkgZW5hYmxlIHRoZSBSZWFsdGVrIDgxNjkgaW50ZXJm YWNlDQo+IChhbHNvDQo+IGluc3RhbGxlZCBbUENJZSBjYXJkXSBpbiB0aGUgWDUwMDAvMjApLg0K PiANCj4gU2luY2UgaW5pdGlhbCBvdXRnb2luZyB0cmFmZmljICphcHBlYXJzKiB0byBiZSB3b3Jr aW5nIGZyb20gdGhlIERQQUENCj4gRXRoZXJuZXQNCj4gb24gdGhlIFg1MDAwLzIwLCBpcyBpdCBw b3NzaWJsZSB3ZSBhcmUgbWlzc2luZyBhbiBpbnRlcnJ1cHQgbWFwcGluZyBmcm9tDQo+IHRoZQ0K PiBGcmFtZSBNYW5hZ2VyIHRvIGNhdGNoIHRoZSByZWNlaXZlZCBkYXRhPw0KPiANCj4gQW55IGhl bHAgd291bGQgYmUgYXBwcmVjaWF0ZWQuIFRoYW5rcy4NCj4gDQo+IC0tDQo+IEJlc3QgUmVnYXJk cywNCj4gDQo+IEphbWllIEtydWVnZXINCj4gQklUYnlCSVQgU29mdHdhcmUgR3JvdXAgTExDDQoN Cg== ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: DPAA Ethernet problems with mainstream Linux kernels 2018-01-12 14:22 ` Madalin-cristian Bucur @ 2018-01-12 16:35 ` Jamie Krueger 2018-01-15 10:44 ` Madalin-cristian Bucur 0 siblings, 1 reply; 3+ messages in thread From: Jamie Krueger @ 2018-01-12 16:35 UTC (permalink / raw) To: Madalin-cristian Bucur, linuxppc-dev@lists.ozlabs.org Cc: netdev@vger.kernel.org [-- Attachment #1: Type: text/plain, Size: 29823 bytes --] On 01/12/2018 08:22 AM, Madalin-cristian Bucur wrote: >> -----Original Message----- >> From: Linuxppc-dev [mailto:linuxppc-dev- >> bounces+madalin.bucur=nxp.com@lists.ozlabs.org] On Behalf Of Jamie Krueger >> Sent: Wednesday, January 10, 2018 5:57 PM >> To: linuxppc-dev@lists.ozlabs.org >> Subject: DPAA Ethernet problems with mainstream Linux kernels >> >> Hello all @ linuxppc-dev, >> >> I have been working with a team of people maintaining PowerPC >> Linux for the new AmigaONE X5000/20 (a Freescale p5020 SoC based >> machine). >> >> We are trying to determine why the submitted Data Path Acceleration >> Architecture (DPAA) Ethernet Driver is not fully functional with >> the mainstream Linux kernels. > Hi Jamie, Hi Madalin, > We are testing the DPAA driver on several DS and RDB platforms and it > is working properly. The issues you encounter with it on the X5000/20 > are likely caused by some issues specific to that particular platform. It is good to hear that the DPAA driver is functioning correctly on the reference platforms. I am positive you are correct that the issue is the difference in implementation on the X5000/20 (Cyrus) motherboard, as compared to the reference boards. Can you verify which Linux Kernel sources your tests are being performed on? We have been testing using the mainstream Linux sources up to linux-4.15-rc6 thus far. > The device tree that you mention, cyrus_p5020.eth.dts is not found in > the Linux kernel sources. The cyrus_p5020.dts file from the fsl ppc > device tree folder does not include the PHY information for the DPAA > interfaces. The problems that you experience may be caused by some > issues with the PHY configuration (i.e. internal delay). The cyrus_p5020.eth.dts is a modified version of the cyrus_p5020.dts, which of course was based off the original p5020ds.dts file. As you noted, the current cyrus_p5020.dts file is incomplete, and does not map the Ethernet connections properly. The cyrus_p5020.eth.dts file, along with it's cyrus-pre.dtsi dependent file, are an attempt to correctly define the Ethernet hardware, as it is implemented on the X5000/20. ** I have attached both the cyrus_p5020.eth.dts and cyrus-pre.dtsi files with this email for comparison. Please let me know if you see any corrections that should be made to either file. I am not sure what PHY hardware/configuration you are using on the DS and RDB platforms, but I can confirm that AmigaONE X5000/20 (Cyrus Motherboard with p5020 SoC), has dTSEC 4 and dTSEC 5 wired to two Micrel KSZ9021RN Gigabit Ethernet PHYs, using the RGMII protocol. > I suggest > that you connect the DPAA interface to a traffic analyzer or directly > to another device on which you can capture the incoming traffic and > check that the received frames are correct. I have started testing along that line, using Wireshark to view the traffic on the X5000/20 itself, and from another machine connected on the same subnet. So far (as indicated by some details of in my initial email), I can see outgoing broadcast requests (for DHCP) being sent out from the X5000/20, and these requests are correctly constructed and visible outside the X5000/20. However, no responses to the DHCP broadcasts appear to reach to X5000/20's DPAA Ethernet. I will need to setup some further tests to determine if the DHCP server saw the requests and responded to them. (I assume the DHCP server is getting them, and responding, as I can always get a successful DHCP response to the X5000/20 when using an add-on Ethernet PICe card on the same subnet). I will setup some more direct machine-to-machine testing to see what else I can glean from the network traffic. Please have a look at the attached dts files, maybe there is something obvious there we are not seeing. Also, given that the X5000/20 uses Micrel KSZ9021RN PHYs in RGMII mode, what changes to the DPAA hardware configuration should we expect to see so that the DPAA is configured to talk to them? > Madalin > -- Best Regards, Jamie Krueger BITbyBIT Software Group LLC >> Here is the results from my latest tests. They were performed using >> the linux-4.10.17 ppc64, since that represents when the DPAA Ethernet >> code was introduced. >> >> Similar tests, with similar results, were also performed >> using the latest Linux kernels: >> >> linux-4.15-rc5 >> linux-4.15-rc6 >> linux-4.15-rc7 >> >> (Hence the reason for falling back to test the kernel right >> after the introduction of the DPAA Ethernet driver sources) >> >> --- >> >> All Kernel builds had the DPAA Ethernet enabled in the kernel, >> and are using the correct cyrus_p5020.eth.dtb device tree file >> (for use on the X5000/20). >> >> The results are quite similar for all kernels in regards to the DPAA >> Ethernet. >> >> All tested kernels setup the two Ethernet interfaces correctly >> as eth0 and eth1, and pull the correct MAC addresses from U-Boot >> environment variables ethaddr and eth1addr respectively. >> >> So at this point Linux has what it believes is fully configured >> hardware, waiting to have an IP Address/Netmask/Gateway >> to be set and to bring the interface online. >> >> However, all attempts to communicate with the outside world >> do not make it out the physical (PHY) hardware - or do they? >> >> ** The following results were captured under linux-4.10.17 ** >> >> When I bring the interface up using a static address, in this case >> 192.168.1.21, I see the following (NOTE TX bytes says 154.0 KB, >> while RX bytes says 0.0 B): >> >> jamie@X5000-Linux:$ ifconfig >> eth0 Link encap:Ethernet HWaddr 00:80:10:11:11:11 >> inet addr:192.168.1.21 Bcast:192.168.1.255 Mask:255.255.255.0 >> inet6 addr: fe80::280:10ff:fe11:1111/64 Scope:Link >> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 >> RX packets:0 errors:0 dropped:0 overruns:0 frame:0 >> TX packets:1428 errors:0 dropped:0 overruns:0 carrier:0 >> collisions:0 txqueuelen:1000 >> RX bytes:0 (0.0 B) TX bytes:154066 (154.0 KB) >> Memory:fe4e6000-fe4e6fff >> >> eth1 Link encap:Ethernet HWaddr 00:80:10:22:22:22 >> UP BROADCAST MULTICAST MTU:1500 Metric:1 >> RX packets:0 errors:0 dropped:0 overruns:0 frame:0 >> TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 >> collisions:0 txqueuelen:1000 >> RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) >> Memory:fe4e8000-fe4e8fff >> >> lo Link encap:Local Loopback >> inet addr:127.0.0.1 Mask:255.0.0.0 >> inet6 addr: ::1/128 Scope:Host >> UP LOOPBACK RUNNING MTU:65536 Metric:1 >> RX packets:1869 errors:0 dropped:0 overruns:0 frame:0 >> TX packets:1869 errors:0 dropped:0 overruns:0 carrier:0 >> collisions:0 txqueuelen:1000 >> RX bytes:156932 (156.9 KB) TX bytes:156932 (156.9 KB) >> >> Checking the routing table, everything looks fine there: >> >> jamie@X5000-Linux:$ netstat -r >> Kernel IP routing table >> Destination Gateway Genmask Flags MSS Window irtt >> Iface >> default 192.168.1.1 0.0.0.0 UG 0 0 0 >> eth0 >> link-local * 255.255.0.0 U 0 0 0 >> eth0 >> 192.168.1.0 * 255.255.255.0 U 0 0 0 >> eth0 >> >> Attempting to PING the interface itself works: >> >> jamie@X5000-Linux:$ ping 192.168.1.21 >> PING 192.168.1.21 (192.168.1.21) 56(84) bytes of data. >> 64 bytes from 192.168.1.21: icmp_seq=1 ttl=64 time=0.037 ms >> 64 bytes from 192.168.1.21: icmp_seq=2 ttl=64 time=0.045 ms >> 64 bytes from 192.168.1.21: icmp_seq=3 ttl=64 time=0.033 ms >> ^C >> --- 192.168.1.21 ping statistics --- >> 3 packets transmitted, 3 received, 0% packet loss, time 2043ms >> >> However, attempts to PING the gateway (192.168.1.1) fail as unreachable: >> >> jamie@X5000-Linux:$ ping 192.168.1.1 >> PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. >> From 192.168.1.21 icmp_seq=1 Destination Host Unreachable >> From 192.168.1.21 icmp_seq=2 Destination Host Unreachable >> From 192.168.1.21 icmp_seq=3 Destination Host Unreachable >> ^C >> --- 192.168.1.1 ping statistics --- >> 7 packets transmitted, 0 received, +3 errors, 100% packet loss, time >> 6077ms >> >> In order to take a closer look at what is going on I installed Wireshark >> both on my test X5000/20 Linux install (Ubuntu 16.04.3 LTS), and on >> another Linux box connected to the same network switch (in this case >> at IP address 192.168.1.210) >> >> In this test I start the capture on eth0 (X5000/20) before it is put >> online, >> and attempt to bring it up using DHCP to obtain it's address. >> >> What I found was that network traffic *was* being attempted over eth0. >> Here is a plain text export of the transmit side (the X5000/20) that >> was captured using Wireshark. >> >> (There were more network packets being sent from the X5000/20, >> however, I am only showing DHCP traffic to save space in this post): >> >> --- >> No. Time Source Destination Protocol Length >> Info >> 2 0.042259843 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 2: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 16 3.830001152 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 16: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 21 9.308914533 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 21: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 23 18.906405343 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 23: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 25 36.390926450 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 25: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 26 44.048328412 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 26: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 30 44.889049203 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 30: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 44 48.254495304 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 44: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 49 54.299052732 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 49: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 51 62.672007482 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 51: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 52 77.485896202 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 52: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 56 89.895304152 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x5df47c84 >> >> Frame 56: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 71 93.828837008 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x5df47c84 >> >> Frame 71: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 74 97.948453158 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x5df47c84 >> >> Frame 74: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> --- >> >> Now, over on the external Linux machine (192.168.1.210), I setup a >> Wireshark capture >> which filtered for any traffic to/from the MAC address of the X5000/20's >> eth0, in this case >> shown as Commodor_11:11:11 (00:80:10:11:11:11) below: >> >> This export shows only the DHCP traffic seen from outside the X5000/20, >> and as you can see, a matching set of DHCP requests *do in fact* make >> it to the outside network. >> >> --- >> No. Time Source Destination Protocol Length >> Info >> 39 5.671762509 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 39: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 73 9.451895404 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 73: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 154 14.919944480 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 154: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 269 24.498335996 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 269: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 630 41.948018648 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 630: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 701 49.590211264 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x655d91e8 >> >> Frame 701: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 706 50.429265938 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 706: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 744 53.788035317 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 744: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 797 59.820568614 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 797: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 852 68.176833686 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 852: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 990 82.961224895 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x421bade3 >> >> Frame 990: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) >> on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 3827 95.345964418 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x5df47c84 >> >> Frame 3827: 342 bytes on wire (2736 bits), 342 bytes captured (2736 >> bits) on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 3887 99.271668572 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x5df47c84 >> >> Frame 3887: 342 bytes on wire (2736 bits), 342 bytes captured (2736 >> bits) on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> >> No. Time Source Destination Protocol Length >> Info >> 3943 103.383072429 0.0.0.0 255.255.255.255 DHCP >> 342 DHCP Discover - Transaction ID 0x5df47c84 >> >> Frame 3943: 342 bytes on wire (2736 bits), 342 bytes captured (2736 >> bits) on interface 0 >> Ethernet II, Src: Commodor_11:11:11 (00:80:10:11:11:11), Dst: Broadcast >> (ff:ff:ff:ff:ff:ff) >> Destination: Broadcast (ff:ff:ff:ff:ff:ff) >> Source: Commodor_11:11:11 (00:80:10:11:11:11) >> Type: IPv4 (0x0800) >> Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 >> User Datagram Protocol, Src Port: 68, Dst Port: 67 >> Bootstrap Protocol (Discover) >> --- >> >> The odd thing here is that while the DHCP requests were broadcast to the >> outside network (confirming that at least the transmit to the PHY is >> working), >> I could see no responses from my network's DHCP server to answer these >> requests. >> >> It is not a physical networking or routing issue, as I always get a >> successful >> DHCP response to the X5000/20 when I enable the Realtek 8169 interface >> (also >> installed [PCIe card] in the X5000/20). >> >> Since initial outgoing traffic *appears* to be working from the DPAA >> Ethernet >> on the X5000/20, is it possible we are missing an interrupt mapping from >> the >> Frame Manager to catch the received data? >> >> Any help would be appreciated. Thanks. >> >> -- >> Best Regards, >> >> Jamie Krueger >> BITbyBIT Software Group LLC [-- Attachment #2: cyrus-pre.dtsi --] [-- Type: text/plain, Size: 3260 bytes --] /* * P5020/P5010 Silicon/SoC Device Tree Source (pre include) * * Copyright 2011 - 2015 Freescale Semiconductor Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Freescale Semiconductor nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * * ALTERNATIVELY, this software may be distributed under the terms of the * GNU General Public License ("GPL") as published by the Free Software * Foundation, either version 2 of that License or (at your option) any * later version. * * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /dts-v1/; /include/ "e5500_power_isa.dtsi" / { compatible = "fsl,P5020"; #address-cells = <2>; #size-cells = <2>; interrupt-parent = <&mpic>; aliases { ccsr = &soc; dcsr = &dcsr; serial0 = &serial0; serial1 = &serial1; serial2 = &serial2; serial3 = &serial3; pci0 = &pci0; pci1 = &pci1; pci2 = &pci2; pci3 = &pci3; usb0 = &usb0; usb1 = &usb1; dma0 = &dma0; dma1 = &dma1; sdhc = &sdhc; msi0 = &msi0; msi1 = &msi1; msi2 = &msi2; crypto = &crypto; sec_jr0 = &sec_jr0; sec_jr1 = &sec_jr1; sec_jr2 = &sec_jr2; sec_jr3 = &sec_jr3; rtic_a = &rtic_a; rtic_b = &rtic_b; rtic_c = &rtic_c; rtic_d = &rtic_d; sec_mon = &sec_mon; raideng = &raideng; raideng_jr0 = &raideng_jr0; raideng_jr1 = &raideng_jr1; raideng_jr2 = &raideng_jr2; raideng_jr3 = &raideng_jr3; fman0 = &fman0; ethernet0 = &enet3; ethernet1 = &enet4; }; cpus { #address-cells = <1>; #size-cells = <0>; cpu0: PowerPC,e5500@0 { device_type = "cpu"; reg = <0>; clocks = <&mux0>; next-level-cache = <&L2_0>; fsl,portid-mapping = <0x80000000>; L2_0: l2-cache { next-level-cache = <&cpc>; }; }; cpu1: PowerPC,e5500@1 { device_type = "cpu"; reg = <1>; clocks = <&mux1>; next-level-cache = <&L2_1>; fsl,portid-mapping = <0x40000000>; L2_1: l2-cache { next-level-cache = <&cpc>; }; }; }; }; [-- Attachment #3: cyrus_p5020.eth.dts --] [-- Type: text/plain, Size: 3807 bytes --] /* * Cyrus 5020 Device Tree Source, based on p5020ds.dts * * Copyright 2015 Andy Fleming * * p5020ds.dts copyright: * Copyright 2010 - 2014 Freescale Semiconductor Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ /include/ "cyrus-pre.dtsi" / { model = "varisys,CYRUS"; compatible = "varisys,CYRUS"; #address-cells = <2>; #size-cells = <2>; interrupt-parent = <&mpic>; aliases { phy_rgmii_3 = &phy_rgmii_3; phy_rgmii_7 = &phy_rgmii_7; }; memory { device_type = "memory"; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; bman_fbpr: bman-fbpr { size = <0 0x1000000>; alignment = <0 0x1000000>; }; qman_fqd: qman-fqd { size = <0 0x400000>; alignment = <0 0x400000>; }; qman_pfdr: qman-pfdr { size = <0 0x2000000>; alignment = <0 0x2000000>; }; }; dcsr: dcsr@f00000000 { ranges = <0x00000000 0xf 0x00000000 0x01008000>; }; bportals: bman-portals@ff4000000 { ranges = <0x0 0xf 0xf4000000 0x200000>; }; qportals: qman-portals@ff4200000 { ranges = <0x0 0xf 0xf4200000 0x200000>; }; soc: soc@ffe000000 { ranges = <0x00000000 0xf 0xfe000000 0x1000000>; reg = <0xf 0xfe000000 0 0x00001000>; spi@110000 { }; i2c@118100 { }; i2c@119100 { rtc@6f { compatible = "microchip,mcp7941x"; reg = <0x6f>; }; }; fman@400000 { mdio@e1120 { phy_rgmii_3: ethernet-phy@3 { reg = <0x3>; }; phy_rgmii_7: ethernet-phy@7 { reg = <0x7>; }; }; ethernet@e6000 { phy-handle = <&phy_rgmii_3>; phy-connection-type = "rgmii"; }; ethernet@e8000 { phy-handle = <&phy_rgmii_7>; phy-connection-type = "rgmii"; }; }; }; rio: rapidio@ffe0c0000 { reg = <0xf 0xfe0c0000 0 0x11000>; port1 { ranges = <0 0 0xc 0x20000000 0 0x10000000>; }; port2 { ranges = <0 0 0xc 0x30000000 0 0x10000000>; }; }; lbc: localbus@ffe124000 { reg = <0xf 0xfe124000 0 0x1000>; ranges = <0 0 0xf 0xe8000000 0x08000000 2 0 0xf 0xffa00000 0x00040000 3 0 0xf 0xffdf0000 0x00008000>; }; pci0: pcie@ffe200000 { reg = <0xf 0xfe200000 0 0x1000>; ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x20000000 0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>; pcie@0 { ranges = <0x02000000 0 0xe0000000 0x02000000 0 0xe0000000 0 0x20000000 0x01000000 0 0x00000000 0x01000000 0 0x00000000 0 0x00010000>; }; }; pci1: pcie@ffe201000 { reg = <0xf 0xfe201000 0 0x1000>; ranges = <0x02000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x20000000 0x01000000 0x0 0x00000000 0xf 0xf8010000 0x0 0x00010000>; pcie@0 { ranges = <0x02000000 0 0xe0000000 0x02000000 0 0xe0000000 0 0x20000000 0x01000000 0 0x00000000 0x01000000 0 0x00000000 0 0x00010000>; }; }; pci2: pcie@ffe202000 { reg = <0xf 0xfe202000 0 0x1000>; ranges = <0x02000000 0 0xe0000000 0xc 0x40000000 0 0x20000000 0x01000000 0 0x00000000 0xf 0xf8020000 0 0x00010000>; pcie@0 { ranges = <0x02000000 0 0xe0000000 0x02000000 0 0xe0000000 0 0x20000000 0x01000000 0 0x00000000 0x01000000 0 0x00000000 0 0x00010000>; }; }; pci3: pcie@ffe203000 { reg = <0xf 0xfe203000 0 0x1000>; ranges = <0x02000000 0 0xe0000000 0xc 0x60000000 0 0x20000000 0x01000000 0 0x00000000 0xf 0xf8030000 0 0x00010000>; pcie@0 { ranges = <0x02000000 0 0xe0000000 0x02000000 0 0xe0000000 0 0x20000000 0x01000000 0 0x00000000 0x01000000 0 0x00000000 0 0x00010000>; }; }; }; /include/ "p5020si-post.dtsi" ^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: DPAA Ethernet problems with mainstream Linux kernels 2018-01-12 16:35 ` Jamie Krueger @ 2018-01-15 10:44 ` Madalin-cristian Bucur 2018-02-26 23:11 ` PASEMI: PCI_SCAN_ALL_PCIE_DEVS Christian Zigotzky 0 siblings, 1 reply; 3+ messages in thread From: Madalin-cristian Bucur @ 2018-01-15 10:44 UTC (permalink / raw) To: Jamie Krueger, linuxppc-dev@lists.ozlabs.org; +Cc: netdev@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKYW1pZSBLcnVlZ2VyIFttYWls dG86amFtaWVAYml0YnliaXRzb2Z0d2FyZWdyb3VwLmNvbV0NCj4gU2VudDogRnJpZGF5LCBKYW51 YXJ5IDEyLCAyMDE4IDY6MzYgUE0NCj4gVG86IE1hZGFsaW4tY3Jpc3RpYW4gQnVjdXIgPG1hZGFs aW4uYnVjdXJAbnhwLmNvbT47IGxpbnV4cHBjLQ0KPiBkZXZAbGlzdHMub3psYWJzLm9yZw0KPiBD YzogbmV0ZGV2QHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogRFBBQSBFdGhlcm5ldCBw cm9ibGVtcyB3aXRoIG1haW5zdHJlYW0gTGludXgga2VybmVscw0KPiANCj4gT24gMDEvMTIvMjAx OCAwODoyMiBBTSwgTWFkYWxpbi1jcmlzdGlhbiBCdWN1ciB3cm90ZToNCj4gPj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogTGludXhwcGMtZGV2IFttYWlsdG86bGludXhw cGMtZGV2LQ0KPiA+PiBib3VuY2VzK21hZGFsaW4uYnVjdXI9bnhwLmNvbUBsaXN0cy5vemxhYnMu b3JnXSBPbiBCZWhhbGYgT2YgSmFtaWUNCj4gS3J1ZWdlcg0KPiA+PiBTZW50OiBXZWRuZXNkYXks IEphbnVhcnkgMTAsIDIwMTggNTo1NyBQTQ0KPiA+PiBUbzogbGludXhwcGMtZGV2QGxpc3RzLm96 bGFicy5vcmcNCj4gPj4gU3ViamVjdDogRFBBQSBFdGhlcm5ldCBwcm9ibGVtcyB3aXRoIG1haW5z dHJlYW0gTGludXgga2VybmVscw0KPiA+Pg0KPiA+PiBIZWxsbyBhbGwgQCBsaW51eHBwYy1kZXYs DQo+ID4+DQo+ID4+IEkgaGF2ZSBiZWVuIHdvcmtpbmcgd2l0aCBhIHRlYW0gb2YgcGVvcGxlIG1h aW50YWluaW5nIFBvd2VyUEMNCj4gPj4gTGludXggZm9yIHRoZSBuZXcgQW1pZ2FPTkUgWDUwMDAv MjAgKGEgRnJlZXNjYWxlIHA1MDIwIFNvQyBiYXNlZA0KPiA+PiBtYWNoaW5lKS4NCj4gPj4NCj4g Pj4gV2UgYXJlIHRyeWluZyB0byBkZXRlcm1pbmUgd2h5IHRoZSBzdWJtaXR0ZWQgRGF0YSBQYXRo IEFjY2VsZXJhdGlvbg0KPiA+PiBBcmNoaXRlY3R1cmUgKERQQUEpIEV0aGVybmV0IERyaXZlciBp cyBub3QgZnVsbHkgZnVuY3Rpb25hbCB3aXRoDQo+ID4+IHRoZSBtYWluc3RyZWFtIExpbnV4IGtl cm5lbHMuDQo+ID4gSGkgSmFtaWUsDQo+IEhpIE1hZGFsaW4sDQo+ID4gV2UgYXJlIHRlc3Rpbmcg dGhlIERQQUEgZHJpdmVyIG9uIHNldmVyYWwgRFMgYW5kIFJEQiBwbGF0Zm9ybXMgYW5kIGl0DQo+ ID4gaXMgd29ya2luZyBwcm9wZXJseS4gVGhlIGlzc3VlcyB5b3UgZW5jb3VudGVyIHdpdGggaXQg b24gdGhlIFg1MDAwLzIwDQo+ID4gYXJlIGxpa2VseSBjYXVzZWQgYnkgc29tZSBpc3N1ZXMgc3Bl Y2lmaWMgdG8gdGhhdCBwYXJ0aWN1bGFyIHBsYXRmb3JtLg0KPiBJdCBpcyBnb29kIHRvIGhlYXIg dGhhdCB0aGUgRFBBQSBkcml2ZXIgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5DQo+IG9uIHRoZSBy ZWZlcmVuY2UgcGxhdGZvcm1zLiBJIGFtIHBvc2l0aXZlIHlvdSBhcmUgY29ycmVjdCB0aGF0DQo+ IHRoZSBpc3N1ZSBpcyB0aGUgZGlmZmVyZW5jZSBpbiBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgWDUw MDAvMjANCj4gKEN5cnVzKSBtb3RoZXJib2FyZCwgYXMgY29tcGFyZWQgdG8gdGhlIHJlZmVyZW5j ZSBib2FyZHMuDQo+IA0KPiBDYW4geW91IHZlcmlmeSB3aGljaCBMaW51eCBLZXJuZWwgc291cmNl cyB5b3VyIHRlc3RzIGFyZSBiZWluZw0KPiBwZXJmb3JtZWQgb24/IFdlIGhhdmUgYmVlbiB0ZXN0 aW5nIHVzaW5nIHRoZSBtYWluc3RyZWFtDQo+IExpbnV4IHNvdXJjZXMgdXAgdG8gbGludXgtNC4x NS1yYzYgdGh1cyBmYXIuDQoNCkxhdGVzdCBydW4gaXMgb24gNC4xNS4wLXJjNy0wMDIwMC1nYzky YTlhNC4NCg0KPiA+IFRoZSBkZXZpY2UgdHJlZSB0aGF0IHlvdSBtZW50aW9uLCBjeXJ1c19wNTAy MC5ldGguZHRzIGlzIG5vdCBmb3VuZCBpbg0KPiA+IHRoZSBMaW51eCBrZXJuZWwgc291cmNlcy4g VGhlIGN5cnVzX3A1MDIwLmR0cyBmaWxlIGZyb20gdGhlIGZzbCBwcGMNCj4gPiBkZXZpY2UgdHJl ZSBmb2xkZXIgZG9lcyBub3QgaW5jbHVkZSB0aGUgUEhZIGluZm9ybWF0aW9uIGZvciB0aGUgRFBB QQ0KPiA+IGludGVyZmFjZXMuIFRoZSBwcm9ibGVtcyB0aGF0IHlvdSBleHBlcmllbmNlIG1heSBi ZSBjYXVzZWQgYnkgc29tZQ0KPiA+IGlzc3VlcyB3aXRoIHRoZSBQSFkgY29uZmlndXJhdGlvbiAo aS5lLiBpbnRlcm5hbCBkZWxheSkuDQo+IFRoZSBjeXJ1c19wNTAyMC5ldGguZHRzIGlzIGEgbW9k aWZpZWQgdmVyc2lvbiBvZiB0aGUgY3lydXNfcDUwMjAuZHRzLA0KPiB3aGljaCBvZiBjb3Vyc2Ug d2FzIGJhc2VkIG9mZiB0aGUgb3JpZ2luYWwgcDUwMjBkcy5kdHMgZmlsZS4gQXMgeW91DQo+IG5v dGVkLCB0aGUgY3VycmVudCBjeXJ1c19wNTAyMC5kdHMgZmlsZSBpcyBpbmNvbXBsZXRlLCBhbmQg ZG9lcyBub3QNCj4gbWFwIHRoZSBFdGhlcm5ldCBjb25uZWN0aW9ucyBwcm9wZXJseS4NCj4gDQo+ IFRoZSBjeXJ1c19wNTAyMC5ldGguZHRzIGZpbGUsIGFsb25nIHdpdGggaXQncyBjeXJ1cy1wcmUu ZHRzaSBkZXBlbmRlbnQNCj4gZmlsZSwgYXJlIGFuIGF0dGVtcHQgdG8gY29ycmVjdGx5IGRlZmlu ZSB0aGUgRXRoZXJuZXQgaGFyZHdhcmUsIGFzIGl0IGlzDQo+IGltcGxlbWVudGVkIG9uIHRoZSBY NTAwMC8yMC4NCj4gDQo+ICoqIEkgaGF2ZSBhdHRhY2hlZCBib3RoIHRoZSBjeXJ1c19wNTAyMC5l dGguZHRzIGFuZCBjeXJ1cy1wcmUuZHRzaQ0KPiAgwqDCoMKgwqAgZmlsZXMgd2l0aCB0aGlzIGVt YWlsIGZvciBjb21wYXJpc29uLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91IHNlZQ0KPiAgwqDC oMKgwqAgYW55IGNvcnJlY3Rpb25zIHRoYXQgc2hvdWxkIGJlIG1hZGUgdG8gZWl0aGVyIGZpbGUu DQoNCkF0IGEgZmlyc3QgZ2xhbmNlIHRoZXkgbG9vayBmaW5lIHRvIG1lLg0KDQo+IEkgYW0gbm90 IHN1cmUgd2hhdCBQSFkgaGFyZHdhcmUvY29uZmlndXJhdGlvbiB5b3UgYXJlIHVzaW5nIG9uIHRo ZQ0KPiBEUyBhbmQgUkRCIHBsYXRmb3JtcywgYnV0IEkgY2FuIGNvbmZpcm0gdGhhdCBBbWlnYU9O RSBYNTAwMC8yMA0KPiAoQ3lydXMgTW90aGVyYm9hcmQgd2l0aCBwNTAyMCBTb0MpLCBoYXMgZFRT RUMgNCBhbmQgZFRTRUMgNQ0KPiB3aXJlZCB0byB0d28gTWljcmVsIEtTWjkwMjFSTiBHaWdhYml0 IEV0aGVybmV0IFBIWXMsIHVzaW5nIHRoZQ0KPiBSR01JSSBwcm90b2NvbC4NCg0KU2luY2UgaXQn cyBSR01JSSwgSSB0aGluayB5b3Ugc2hvdWxkIGxvb2sgaW50byBSR01JSSBpbnRlcm5hbCBkZWxh eQ0KcmVxdWlyZW1lbnRzIGZvciB0aGlzIGJvYXJkLg0KDQo+ID4gICBJIHN1Z2dlc3QNCj4gPiB0 aGF0IHlvdSBjb25uZWN0IHRoZSBEUEFBIGludGVyZmFjZSB0byBhIHRyYWZmaWMgYW5hbHl6ZXIg b3IgZGlyZWN0bHkNCj4gPiB0byBhbm90aGVyIGRldmljZSBvbiB3aGljaCB5b3UgY2FuIGNhcHR1 cmUgdGhlIGluY29taW5nIHRyYWZmaWMgYW5kDQo+ID4gY2hlY2sgdGhhdCB0aGUgcmVjZWl2ZWQg ZnJhbWVzIGFyZSBjb3JyZWN0Lg0KPiBJIGhhdmUgc3RhcnRlZCB0ZXN0aW5nIGFsb25nIHRoYXQg bGluZSwgdXNpbmcgV2lyZXNoYXJrIHRvIHZpZXcgdGhlDQo+IHRyYWZmaWMgb24gdGhlIFg1MDAw LzIwIGl0c2VsZiwgYW5kIGZyb20gYW5vdGhlciBtYWNoaW5lIGNvbm5lY3RlZA0KPiBvbiB0aGUg c2FtZSBzdWJuZXQuIFNvIGZhciAoYXMgaW5kaWNhdGVkIGJ5IHNvbWUgZGV0YWlscyBvZiBpbiBt eQ0KPiBpbml0aWFsIGVtYWlsKSwgSSBjYW4gc2VlIG91dGdvaW5nIGJyb2FkY2FzdCByZXF1ZXN0 cyAoZm9yIERIQ1ApDQo+IGJlaW5nIHNlbnQgb3V0IGZyb20gdGhlIFg1MDAwLzIwLCBhbmQgdGhl c2UgcmVxdWVzdHMgYXJlIGNvcnJlY3RseQ0KPiBjb25zdHJ1Y3RlZCBhbmQgdmlzaWJsZSBvdXRz aWRlIHRoZSBYNTAwMC8yMC4NCj4gDQo+IEhvd2V2ZXIsIG5vIHJlc3BvbnNlcyB0byB0aGUgREhD UCBicm9hZGNhc3RzIGFwcGVhciB0byByZWFjaA0KPiB0byBYNTAwMC8yMCdzIERQQUEgRXRoZXJu ZXQuIEkgd2lsbCBuZWVkIHRvIHNldHVwIHNvbWUgZnVydGhlcg0KPiB0ZXN0cyB0byBkZXRlcm1p bmUgaWYgdGhlIERIQ1Agc2VydmVyIHNhdyB0aGUgcmVxdWVzdHMgYW5kIHJlc3BvbmRlZA0KPiB0 byB0aGVtLiAoSSBhc3N1bWUgdGhlIERIQ1Agc2VydmVyIGlzIGdldHRpbmcgdGhlbSwgYW5kIHJl c3BvbmRpbmcsDQo+IGFzIEkgY2FuIGFsd2F5cyBnZXQgYSBzdWNjZXNzZnVsIERIQ1AgcmVzcG9u c2UgdG8gdGhlIFg1MDAwLzIwDQo+IHdoZW4gdXNpbmcgYW4gYWRkLW9uIEV0aGVybmV0IFBJQ2Ug Y2FyZCBvbiB0aGUgc2FtZSBzdWJuZXQpLg0KPiANCj4gSSB3aWxsIHNldHVwIHNvbWUgbW9yZSBk aXJlY3QgbWFjaGluZS10by1tYWNoaW5lIHRlc3RpbmcgdG8NCj4gc2VlIHdoYXQgZWxzZSBJIGNh biBnbGVhbiBmcm9tIHRoZSBuZXR3b3JrIHRyYWZmaWMuDQoNClRoYXQgd2lsbCBwcm92aWRlIG1v cmUgY2xhcml0eSB0byB0aGUgYWN0dWFsIGlzc3VlLg0KDQo+IFBsZWFzZSBoYXZlIGEgbG9vayBh dCB0aGUgYXR0YWNoZWQgZHRzIGZpbGVzLCBtYXliZSB0aGVyZSBpcyBzb21ldGhpbmcNCj4gb2J2 aW91cyB0aGVyZSB3ZSBhcmUgbm90IHNlZWluZy4NCj4gDQo+IEFsc28sIGdpdmVuIHRoYXQgdGhl IFg1MDAwLzIwIHVzZXMgTWljcmVsIEtTWjkwMjFSTiBQSFlzIGluIFJHTUlJDQo+IG1vZGUsIHdo YXQgY2hhbmdlcyB0byB0aGUgRFBBQSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHNob3VsZCB3ZQ0K PiBleHBlY3QgdG8gc2VlIHNvIHRoYXQgdGhlIERQQUEgaXMgY29uZmlndXJlZCB0byB0YWxrIHRv IHRoZW0/DQoNClRoZSBwaHktY29ubmVjdGlvbi10eXBlID0gInJnbWlpIjsgc2hvdWxkIHRha2Ug Y2FyZSBvZiB0aGF0Lg0KVHJ5IHRvIGNoZWNrIHRoZSBsaW5rIGluZm9ybWF0aW9uIHJlcG9ydGVk IGJ5IHRoZSBQSFkuDQoNCj4gPiBNYWRhbGluDQo+ID4NCj4gLS0NCj4gDQo+IEJlc3QgUmVnYXJk cywNCj4gDQo+IEphbWllIEtydWVnZXINCj4gQklUYnlCSVQgU29mdHdhcmUgR3JvdXAgTExDDQo+ IA0KPiA+PiBIZXJlIGlzIHRoZSByZXN1bHRzIGZyb20gbXkgbGF0ZXN0IHRlc3RzLiBUaGV5IHdl cmUgcGVyZm9ybWVkIHVzaW5nDQo+ID4+IHRoZSBsaW51eC00LjEwLjE3IHBwYzY0LCBzaW5jZSB0 aGF0IHJlcHJlc2VudHMgd2hlbiB0aGUgRFBBQSBFdGhlcm5ldA0KPiA+PiBjb2RlIHdhcyBpbnRy b2R1Y2VkLg0KPiA+Pg0KPiA+PiBTaW1pbGFyIHRlc3RzLCB3aXRoIHNpbWlsYXIgcmVzdWx0cywg d2VyZSBhbHNvIHBlcmZvcm1lZA0KPiA+PiB1c2luZyB0aGUgbGF0ZXN0IExpbnV4IGtlcm5lbHM6 DQo+ID4+DQo+ID4+IGxpbnV4LTQuMTUtcmM1DQo+ID4+IGxpbnV4LTQuMTUtcmM2DQo+ID4+IGxp bnV4LTQuMTUtcmM3DQo+ID4+DQo+ID4+IChIZW5jZSB0aGUgcmVhc29uIGZvciBmYWxsaW5nIGJh Y2sgdG8gdGVzdCB0aGUga2VybmVsIHJpZ2h0DQo+ID4+ICAgwqBhZnRlciB0aGUgaW50cm9kdWN0 aW9uIG9mIHRoZSBEUEFBIEV0aGVybmV0IGRyaXZlciBzb3VyY2VzKQ0KPiA+Pg0KPiA+PiAtLS0N Cj4gPj4NCj4gPj4gQWxsIEtlcm5lbCBidWlsZHMgaGFkIHRoZSBEUEFBIEV0aGVybmV0IGVuYWJs ZWQgaW4gdGhlIGtlcm5lbCwNCj4gPj4gYW5kIGFyZSB1c2luZyB0aGUgY29ycmVjdCBjeXJ1c19w NTAyMC5ldGguZHRiIGRldmljZSB0cmVlIGZpbGUNCj4gPj4gKGZvciB1c2Ugb24gdGhlIFg1MDAw LzIwKS4NCj4gPj4NCj4gPj4gVGhlIHJlc3VsdHMgYXJlIHF1aXRlIHNpbWlsYXIgZm9yIGFsbCBr ZXJuZWxzIGluIHJlZ2FyZHMgdG8gdGhlIERQQUENCj4gPj4gRXRoZXJuZXQuDQo+ID4+DQo+ID4+ IEFsbCB0ZXN0ZWQga2VybmVscyBzZXR1cCB0aGUgdHdvIEV0aGVybmV0IGludGVyZmFjZXMgY29y cmVjdGx5DQo+ID4+IGFzIGV0aDAgYW5kIGV0aDEsIGFuZCBwdWxsIHRoZSBjb3JyZWN0IE1BQyBh ZGRyZXNzZXMgZnJvbSBVLUJvb3QNCj4gPj4gZW52aXJvbm1lbnQgdmFyaWFibGVzIGV0aGFkZHIg YW5kIGV0aDFhZGRyIHJlc3BlY3RpdmVseS4NCj4gPj4NCj4gPj4gU28gYXQgdGhpcyBwb2ludCBM aW51eCBoYXMgd2hhdCBpdCBiZWxpZXZlcyBpcyBmdWxseSBjb25maWd1cmVkDQo+ID4+IGhhcmR3 YXJlLCB3YWl0aW5nIHRvIGhhdmUgYW4gSVAgQWRkcmVzcy9OZXRtYXNrL0dhdGV3YXkNCj4gPj4g dG8gYmUgc2V0IGFuZCB0byBicmluZyB0aGUgaW50ZXJmYWNlIG9ubGluZS4NCj4gPj4NCj4gPj4g SG93ZXZlciwgYWxsIGF0dGVtcHRzIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIG91dHNpZGUgd29y bGQNCj4gPj4gZG8gbm90IG1ha2UgaXQgb3V0IHRoZSBwaHlzaWNhbCAoUEhZKSBoYXJkd2FyZSAt IG9yIGRvIHRoZXk/DQo+ID4+DQo+ID4+ICoqIFRoZSBmb2xsb3dpbmcgcmVzdWx0cyB3ZXJlIGNh cHR1cmVkIHVuZGVyIGxpbnV4LTQuMTAuMTcgKioNCj4gPj4NCj4gPj4gV2hlbiBJIGJyaW5nIHRo ZSBpbnRlcmZhY2UgdXAgdXNpbmcgYSBzdGF0aWMgYWRkcmVzcywgaW4gdGhpcyBjYXNlDQo+ID4+ IDE5Mi4xNjguMS4yMSwgSSBzZWUgdGhlIGZvbGxvd2luZyAoTk9URSBUWCBieXRlcyBzYXlzIDE1 NC4wIEtCLA0KPiA+PiB3aGlsZSBSWCBieXRlcyBzYXlzIDAuMCBCKToNCj4gPj4NCj4gPj4gamFt aWVAWDUwMDAtTGludXg6JCBpZmNvbmZpZw0KPiA+PiBldGgwwqDCoMKgwqDCoCBMaW5rIGVuY2Fw OkV0aGVybmV0wqAgSFdhZGRyIDAwOjgwOjEwOjExOjExOjExDQo+ID4+ICAgwqDCoMKgwqDCoMKg wqDCoMKgIGluZXQgYWRkcjoxOTIuMTY4LjEuMjHCoCBCY2FzdDoxOTIuMTY4LjEuMjU1DQo+IE1h c2s6MjU1LjI1NS4yNTUuMA0KPiA+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBpbmV0NiBhZGRyOiBm ZTgwOjoyODA6MTBmZjpmZTExOjExMTEvNjQgU2NvcGU6TGluaw0KPiA+PiAgIMKgwqDCoMKgwqDC oMKgwqDCoCBVUCBCUk9BRENBU1QgUlVOTklORyBNVUxUSUNBU1TCoCBNVFU6MTUwMMKgIE1ldHJp YzoxDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIFJYIHBhY2tldHM6MCBlcnJvcnM6MCBkcm9w cGVkOjAgb3ZlcnJ1bnM6MCBmcmFtZTowDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIFRYIHBh Y2tldHM6MTQyOCBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1bnM6MCBjYXJyaWVyOjANCj4gPj4g ICDCoMKgwqDCoMKgwqDCoMKgwqAgY29sbGlzaW9uczowIHR4cXVldWVsZW46MTAwMA0KPiA+PiAg IMKgwqDCoMKgwqDCoMKgwqDCoCBSWCBieXRlczowICgwLjAgQinCoCBUWCBieXRlczoxNTQwNjYg KDE1NC4wIEtCKQ0KPiA+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBNZW1vcnk6ZmU0ZTYwMDAtZmU0 ZTZmZmYNCj4gPj4NCj4gPj4gZXRoMcKgwqDCoMKgwqAgTGluayBlbmNhcDpFdGhlcm5ldMKgIEhX YWRkciAwMDo4MDoxMDoyMjoyMjoyMg0KPiA+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBVUCBCUk9B RENBU1QgTVVMVElDQVNUwqAgTVRVOjE1MDDCoCBNZXRyaWM6MQ0KPiA+PiAgIMKgwqDCoMKgwqDC oMKgwqDCoCBSWCBwYWNrZXRzOjAgZXJyb3JzOjAgZHJvcHBlZDowIG92ZXJydW5zOjAgZnJhbWU6 MA0KPiA+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBUWCBwYWNrZXRzOjAgZXJyb3JzOjAgZHJvcHBl ZDowIG92ZXJydW5zOjAgY2FycmllcjowDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbGxp c2lvbnM6MCB0eHF1ZXVlbGVuOjEwMDANCj4gPj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgUlggYnl0 ZXM6MCAoMC4wIEIpwqAgVFggYnl0ZXM6MCAoMC4wIEIpDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDC oMKgIE1lbW9yeTpmZTRlODAwMC1mZTRlOGZmZg0KPiA+Pg0KPiA+PiBsb8KgwqDCoMKgwqDCoMKg IExpbmsgZW5jYXA6TG9jYWwgTG9vcGJhY2sNCj4gPj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgaW5l dCBhZGRyOjEyNy4wLjAuMcKgIE1hc2s6MjU1LjAuMC4wDQo+ID4+ICAgwqDCoMKgwqDCoMKgwqDC oMKgIGluZXQ2IGFkZHI6IDo6MS8xMjggU2NvcGU6SG9zdA0KPiA+PiAgIMKgwqDCoMKgwqDCoMKg wqDCoCBVUCBMT09QQkFDSyBSVU5OSU5HwqAgTVRVOjY1NTM2wqAgTWV0cmljOjENCj4gPj4gICDC oMKgwqDCoMKgwqDCoMKgwqAgUlggcGFja2V0czoxODY5IGVycm9yczowIGRyb3BwZWQ6MCBvdmVy cnVuczowIGZyYW1lOjANCj4gPj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgVFggcGFja2V0czoxODY5 IGVycm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczowIGNhcnJpZXI6MA0KPiA+PiAgIMKgwqDCoMKg wqDCoMKgwqDCoCBjb2xsaXNpb25zOjAgdHhxdWV1ZWxlbjoxMDAwDQo+ID4+ICAgwqDCoMKgwqDC oMKgwqDCoMKgIFJYIGJ5dGVzOjE1NjkzMiAoMTU2LjkgS0IpwqAgVFggYnl0ZXM6MTU2OTMyICgx NTYuOSBLQikNCj4gPj4NCj4gPj4gQ2hlY2tpbmcgdGhlIHJvdXRpbmcgdGFibGUsIGV2ZXJ5dGhp bmcgbG9va3MgZmluZSB0aGVyZToNCj4gPj4NCj4gPj4gamFtaWVAWDUwMDAtTGludXg6JCBuZXRz dGF0IC1yDQo+ID4+IEtlcm5lbCBJUCByb3V0aW5nIHRhYmxlDQo+ID4+IERlc3RpbmF0aW9uwqDC oMKgwqAgR2F0ZXdhecKgwqDCoMKgwqDCoMKgwqAgR2VubWFza8KgwqDCoMKgwqDCoMKgwqAgRmxh Z3PCoMKgIE1TUw0KPiBXaW5kb3fCoCBpcnR0DQo+ID4+IElmYWNlDQo+ID4+IGRlZmF1bHTCoMKg wqDCoMKgwqDCoMKgIDE5Mi4xNjguMS4xwqDCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqAg VUfCoMKgwqDCoMKgwqDCoCAwDQo+IDDCoMKgwqDCoMKgwqDCoMKgwqAgMA0KPiA+PiBldGgwDQo+ ID4+IGxpbmstbG9jYWzCoMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1 NS4yNTUuMC4wwqDCoMKgwqAgVcKgwqDCoMKgwqDCoMKgwqAgMA0KPiAwwqDCoMKgwqDCoMKgwqDC oMKgIDANCj4gPj4gZXRoMA0KPiA+PiAxOTIuMTY4LjEuMMKgwqDCoMKgICrCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjDCoMKgIFXCoMKgwqDCoMKgwqDCoMKgIDANCj4g MMKgwqDCoMKgwqDCoMKgwqDCoCAwDQo+ID4+IGV0aDANCj4gPj4NCj4gPj4gQXR0ZW1wdGluZyB0 byBQSU5HIHRoZSBpbnRlcmZhY2UgaXRzZWxmIHdvcmtzOg0KPiA+Pg0KPiA+PiBqYW1pZUBYNTAw MC1MaW51eDokIHBpbmcgMTkyLjE2OC4xLjIxDQo+ID4+IFBJTkcgMTkyLjE2OC4xLjIxICgxOTIu MTY4LjEuMjEpIDU2KDg0KSBieXRlcyBvZiBkYXRhLg0KPiA+PiA2NCBieXRlcyBmcm9tIDE5Mi4x NjguMS4yMTogaWNtcF9zZXE9MSB0dGw9NjQgdGltZT0wLjAzNyBtcw0KPiA+PiA2NCBieXRlcyBm cm9tIDE5Mi4xNjguMS4yMTogaWNtcF9zZXE9MiB0dGw9NjQgdGltZT0wLjA0NSBtcw0KPiA+PiA2 NCBieXRlcyBmcm9tIDE5Mi4xNjguMS4yMTogaWNtcF9zZXE9MyB0dGw9NjQgdGltZT0wLjAzMyBt cw0KPiA+PiBeQw0KPiA+PiAtLS0gMTkyLjE2OC4xLjIxIHBpbmcgc3RhdGlzdGljcyAtLS0NCj4g Pj4gMyBwYWNrZXRzIHRyYW5zbWl0dGVkLCAzIHJlY2VpdmVkLCAwJSBwYWNrZXQgbG9zcywgdGlt ZSAyMDQzbXMNCj4gPj4NCj4gPj4gSG93ZXZlciwgYXR0ZW1wdHMgdG8gUElORyB0aGUgZ2F0ZXdh eSAoMTkyLjE2OC4xLjEpIGZhaWwgYXMNCj4gdW5yZWFjaGFibGU6DQo+ID4+DQo+ID4+IGphbWll QFg1MDAwLUxpbnV4OiQgcGluZyAxOTIuMTY4LjEuMQ0KPiA+PiBQSU5HIDE5Mi4xNjguMS4xICgx OTIuMTY4LjEuMSkgNTYoODQpIGJ5dGVzIG9mIGRhdGEuDQo+ID4+ICAgRnJvbSAxOTIuMTY4LjEu MjEgaWNtcF9zZXE9MSBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlDQo+ID4+ICAgRnJvbSAx OTIuMTY4LjEuMjEgaWNtcF9zZXE9MiBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlDQo+ID4+ ICAgRnJvbSAxOTIuMTY4LjEuMjEgaWNtcF9zZXE9MyBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hh YmxlDQo+ID4+IF5DDQo+ID4+IC0tLSAxOTIuMTY4LjEuMSBwaW5nIHN0YXRpc3RpY3MgLS0tDQo+ ID4+IDcgcGFja2V0cyB0cmFuc21pdHRlZCwgMCByZWNlaXZlZCwgKzMgZXJyb3JzLCAxMDAlIHBh Y2tldCBsb3NzLCB0aW1lDQo+ID4+IDYwNzdtcw0KPiA+Pg0KPiA+PiBJbiBvcmRlciB0byB0YWtl IGEgY2xvc2VyIGxvb2sgYXQgd2hhdCBpcyBnb2luZyBvbiBJIGluc3RhbGxlZA0KPiBXaXJlc2hh cmsNCj4gPj4gYm90aCBvbiBteSB0ZXN0IFg1MDAwLzIwIExpbnV4IGluc3RhbGwgKFVidW50dSAx Ni4wNC4zIExUUyksIGFuZCBvbg0KPiA+PiBhbm90aGVyIExpbnV4IGJveCBjb25uZWN0ZWQgdG8g dGhlIHNhbWUgbmV0d29yayBzd2l0Y2ggKGluIHRoaXMgY2FzZQ0KPiA+PiBhdCBJUCBhZGRyZXNz IDE5Mi4xNjguMS4yMTApDQo+ID4+DQo+ID4+IEluIHRoaXMgdGVzdCBJIHN0YXJ0IHRoZSBjYXB0 dXJlIG9uIGV0aDAgKFg1MDAwLzIwKSBiZWZvcmUgaXQgaXMgcHV0DQo+ID4+IG9ubGluZSwNCj4g Pj4gYW5kIGF0dGVtcHQgdG8gYnJpbmcgaXQgdXAgdXNpbmcgREhDUCB0byBvYnRhaW4gaXQncyBh ZGRyZXNzLg0KPiA+Pg0KPiA+PiBXaGF0IEkgZm91bmQgd2FzIHRoYXQgbmV0d29yayB0cmFmZmlj ICp3YXMqIGJlaW5nIGF0dGVtcHRlZCBvdmVyIGV0aDAuDQo+ID4+IEhlcmUgaXMgYSBwbGFpbiB0 ZXh0IGV4cG9ydCBvZiB0aGUgdHJhbnNtaXQgc2lkZSAodGhlIFg1MDAwLzIwKSB0aGF0DQo+ID4+ IHdhcyBjYXB0dXJlZCB1c2luZyBXaXJlc2hhcmsuDQo+ID4+DQo+ID4+IChUaGVyZSB3ZXJlIG1v cmUgbmV0d29yayBwYWNrZXRzIGJlaW5nIHNlbnQgZnJvbSB0aGUgWDUwMDAvMjAsDQo+ID4+ICAg wqBob3dldmVyLCBJIGFtIG9ubHkgc2hvd2luZyBESENQIHRyYWZmaWMgdG8gc2F2ZSBzcGFjZSBp biB0aGlzIHBvc3QpOg0KPiA+Pg0KPiA+PiAtLS0NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDC oMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0 aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoMKgwqAg MiAwLjA0MjI1OTg0M8KgwqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAy NTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5z YWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gPj4NCj4gPj4gRnJhbWUgMjogMzQyIGJ5dGVzIG9uIHdp cmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiA+PiBvbiBp bnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6 ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp DQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1 NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgs IERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0K PiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0aA0KPiA+ PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgMTYgMy44MzAwMDExNTLCoMKgwqAgMC4wLjAuMMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDC oMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+ID4+DQo+ID4+ IEZyYW1lIDE2OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1 cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBT cmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0 DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lv biA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdy YW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQ cm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKg wqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRp b24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgwqDCoCAyMSA5LjMw ODkxNDUzM8KgwqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1 LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9u IElEIDB4NjU1ZDkxZTgNCj4gPj4NCj4gPj4gRnJhbWUgMjE6IDM0MiBieXRlcyBvbiB3aXJlICgy NzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYgYml0cykNCj4gPj4gb24gaW50ZXJm YWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEw OjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+ PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1 LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3Qg UG9ydDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4g Tm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5m bw0KPiA+PiAgIMKgwqDCoMKgIDIzIDE4LjkwNjQwNTM0M8KgwqAgMC4wLjAuMMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERI Q1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+ID4+DQo+ID4+IEZyYW1l IDIzOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgy NzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENv bW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+ IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBT cmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJv dG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2Nv bCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKg wqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJv dG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgwqDCoCAyNSAzNi4zOTA5MjY0 NTDCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1 NSBESENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg2 NTVkOTFlOA0KPiA+Pg0KPiA+PiBGcmFtZSAyNTogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0 cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0K PiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6 MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+IEludGVy bmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1 NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2 Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKg wqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ ICAgwqDCoMKgwqAgMjYgNDQuMDQ4MzI4NDEywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNj b3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gPj4NCj4gPj4gRnJhbWUgMjY6IDM0 MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYgYml0 cykNCj4gPj4gb24gaW50ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3Jf MTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZm OmZmOmZmOmZmOmZmKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4w LjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwg U3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNj b3ZlcikNCj4gPj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNv dXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0K PiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoMKgIDMwIDQ0Ljg4OTA0OTIwM8KgwqAg MC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1AN Cj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDQyMWJhZGUz DQo+ID4+DQo+ID4+IEZyYW1lIDMwOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQy IGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0 aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERz dDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gSW50ZXJuZXQgUHJv dG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+ IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+ IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRp bWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgRGVzdGluYXRpb24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKg wqDCoCA0NCA0OC4yNTQ0OTUzMDTCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0g VHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiA+Pg0KPiA+PiBGcmFtZSA0NDogMzQyIGJ5dGVz IG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiA+ PiBvbiBpbnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMTox MSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6 ZmY6ZmYpDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBE c3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9y dDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0K PiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0 aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgNDkgNTQuMjk5MDUyNzMywqDCoCAwLjAuMC4w wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAz NDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gPj4N Cj4gPj4gRnJhbWUgNDk6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMg Y2FwdHVyZWQgKDI3MzYgYml0cykNCj4gPj4gb24gaW50ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQg SUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9h ZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBW ZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBE YXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0 cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDC oMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0 aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoMKgIDUx IDYyLjY3MjAwNzQ4MsKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1 LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2Fj dGlvbiBJRCAweDQyMWJhZGUzDQo+ID4+DQo+ID4+IEZyYW1lIDUxOiAzNDIgYnl0ZXMgb24gd2ly ZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGlu dGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4 MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikN Cj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1 LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwg RHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+ IEluZm8NCj4gPj4gICDCoMKgwqDCoCA1MiA3Ny40ODU4OTYyMDLCoMKgIDAuMC4wLjDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+ID4+IDM0MsKgwqDC oCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiA+Pg0KPiA+PiBG cmFtZSA1MjogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJl ZCAoMjczNiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3Jj OiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0K PiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24g NCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFt IFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJv dG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKg wqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9u IFByb3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgNTYgODkuODk1 MzA0MTUywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1 NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElE IDB4NWRmNDdjODQNCj4gPj4NCj4gPj4gRnJhbWUgNTY6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2 IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYgYml0cykNCj4gPj4gb24gaW50ZXJmYWNl IDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjEx OjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiBJ bnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1 NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9y dDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4gTm8u wqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0K PiA+PiAgIMKgwqDCoMKgIDcxIDkzLjgyODgzNzAwOMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1Ag RGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDVkZjQ3Yzg0DQo+ID4+DQo+ID4+IEZyYW1lIDcx OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2 IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENvbW1v ZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+IChm ZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6 IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9j b2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAo RGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDC oCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9j b2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgwqDCoCA3NCA5Ny45NDg0NTMxNTjC oMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBE SENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg1ZGY0 N2M4NA0KPiA+Pg0KPiA+PiBGcmFtZSA3NDogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyks IDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0KPiA+ PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEp LCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+IEludGVybmV0 IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0K PiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0K PiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+PiAtLS0NCj4gPj4NCj4gPj4g Tm93LCBvdmVyIG9uIHRoZSBleHRlcm5hbCBMaW51eCBtYWNoaW5lICgxOTIuMTY4LjEuMjEwKSwg SSBzZXR1cCBhDQo+ID4+IFdpcmVzaGFyayBjYXB0dXJlDQo+ID4+IHdoaWNoIGZpbHRlcmVkIGZv ciBhbnkgdHJhZmZpYyB0by9mcm9tIHRoZSBNQUMgYWRkcmVzcyBvZiB0aGUNCj4gWDUwMDAvMjAn cw0KPiA+PiBldGgwLCBpbiB0aGlzIGNhc2UNCj4gPj4gc2hvd24gYXMgQ29tbW9kb3JfMTE6MTE6 MTEgKDAwOjgwOjEwOjExOjExOjExKSBiZWxvdzoNCj4gPj4NCj4gPj4gVGhpcyBleHBvcnQgc2hv d3Mgb25seSB0aGUgREhDUCB0cmFmZmljIHNlZW4gZnJvbSBvdXRzaWRlIHRoZSBYNTAwMC8yMCwN Cj4gPj4gYW5kIGFzIHlvdSBjYW4gc2VlLCBhIG1hdGNoaW5nIHNldCBvZiBESENQIHJlcXVlc3Rz ICpkbyBpbiBmYWN0KiBtYWtlDQo+ID4+IGl0IHRvIHRoZSBvdXRzaWRlIG5ldHdvcmsuDQo+ID4+ DQo+ID4+IC0tLQ0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291 cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+ IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgMzkgNS42NzE3NjI1MDnCoMKgwqAg MC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1AN Cj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4 DQo+ID4+DQo+ID4+IEZyYW1lIDM5OiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQy IGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0 aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERz dDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgRGVz dGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIFNv dXJjZTogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKQ0KPiA+PiAgIMKgwqDC oCBUeXBlOiBJUHY0ICgweDA4MDApDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwg U3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFBy b3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9j b2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDC oMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFBy b3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgwqAgNzMgOS40NTE4OTU0 MDTCoMKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUu MjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAw eDY1NWQ5MWU4DQo+ID4+DQo+ID4+IEZyYW1lIDczOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBi aXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAw DQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMTox MToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDC oMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAg wqDCoMKgIFNvdXJjZTogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKQ0KPiA+ PiAgIMKgwqDCoCBUeXBlOiBJUHY0ICgweDA4MDApDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZl cnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERh dGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3Ry YXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKg wqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3Rp bmF0aW9uIFByb3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgIDE1NCAx NC45MTk5NDQ0ODDCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4y NTUuMjU1LjI1NSBESENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rp b24gSUQgMHg2NTVkOTFlOA0KPiA+Pg0KPiA+PiBGcmFtZSAxNTQ6IDM0MiBieXRlcyBvbiB3aXJl ICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYNCj4gYml0cykNCj4gPj4gb24g aW50ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAw OjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZm KQ0KPiA+PiAgIMKgwqDCoCBEZXN0aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpm ZikNCj4gPj4gICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6 MTE6MTEpDQo+ID4+ICAgwqDCoMKgIFR5cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4gSW50ZXJuZXQg UHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKg IFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDC oMKgwqAgMjY5IDI0LjQ5ODMzNTk5NsKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIg LSBUcmFuc2FjdGlvbiBJRCAweDY1NWQ5MWU4DQo+ID4+DQo+ID4+IEZyYW1lIDI2OTogMzQyIGJ5 dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNg0KPiBiaXRz KQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8x MToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6 ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIERlc3RpbmF0aW9uOiBCcm9hZGNhc3QgKGZmOmZm OmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBTb3VyY2U6IENvbW1vZG9yXzExOjExOjExICgw MDo4MDoxMDoxMToxMToxMSkNCj4gPj4gICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiA+ PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1 LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3Qg UG9ydDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4g Tm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5m bw0KPiA+PiAgIMKgwqDCoCA2MzAgNDEuOTQ4MDE4NjQ4wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhD UCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NjU1ZDkxZTgNCj4gPj4NCj4gPj4gRnJhbWUg NjMwOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgy NzM2DQo+IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6 IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2Fk Y2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIFNvdXJjZTogQ29tbW9kb3Jf MTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKQ0KPiA+PiAgIMKgwqDCoCBUeXBlOiBJUHY0ICgw eDA4MDApDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBE c3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9y dDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0K PiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0 aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoMKgIDcwMSA0OS41OTAyMTEyNjTCoMKgIDAuMC4wLjDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+ID4+IDM0 MsKgwqDCoCBESENQIERpc2NvdmVyIC0gVHJhbnNhY3Rpb24gSUQgMHg2NTVkOTFlOA0KPiA+Pg0K PiA+PiBGcmFtZSA3MDE6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMg Y2FwdHVyZWQgKDI3MzYNCj4gYml0cykNCj4gPj4gb24gaW50ZXJmYWNlIDANCj4gPj4gRXRoZXJu ZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBC cm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBEZXN0aW5h dGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgU291cmNl OiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ID4+ICAgwqDCoMKgIFR5 cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6 IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9j b2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAo RGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDC oCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9j b2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgwqAgNzA2IDUwLjQyOTI2NTkzOMKg wqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERI Q1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDQyMWJh ZGUzDQo+ID4+DQo+ID4+IEZyYW1lIDcwNjogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyks IDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNg0KPiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0K PiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6 MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDC oMKgIERlc3RpbmF0aW9uOiBCcm9hZGNhc3QgKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKg wqDCoCBTb3VyY2U6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4gPj4g ICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJz aW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRh Z3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0cmFw IFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKg wqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5h dGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoCA3NDQgNTMu Nzg4MDM1MzE3wqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1 LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9u IElEIDB4NDIxYmFkZTMNCj4gPj4NCj4gPj4gRnJhbWUgNzQ0OiAzNDIgYnl0ZXMgb24gd2lyZSAo MjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNhcHR1cmVkICgyNzM2DQo+IGJpdHMpDQo+ID4+IG9uIGlu dGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4 MDoxMDoxMToxMToxMSksIERzdDogQnJvYWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikN Cj4gPj4gICDCoMKgwqAgRGVzdGluYXRpb246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYp DQo+ID4+ICAgwqDCoMKgIFNvdXJjZTogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjEx OjExKQ0KPiA+PiAgIMKgwqDCoCBUeXBlOiBJUHY0ICgweDA4MDApDQo+ID4+IEludGVybmV0IFBy b3RvY29sIFZlcnNpb24gNCwgU3JjOiAwLjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+ PiBVc2VyIERhdGFncmFtIFByb3RvY29sLCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+ PiBCb290c3RyYXAgUHJvdG9jb2wgKERpc2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBU aW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgU291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIERlc3RpbmF0aW9uIFByb3RvY29sDQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDC oMKgIDc5NyA1OS44MjA1Njg2MTTCoMKgIDAuMC4wLjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDI1NS4yNTUuMjU1LjI1NSBESENQDQo+ID4+IDM0MsKgwqDCoCBESENQIERpc2NvdmVyIC0g VHJhbnNhY3Rpb24gSUQgMHg0MjFiYWRlMw0KPiA+Pg0KPiA+PiBGcmFtZSA3OTc6IDM0MiBieXRl cyBvbiB3aXJlICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYNCj4gYml0cykN Cj4gPj4gb24gaW50ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6 MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZm OmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBEZXN0aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpm ZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6 ODA6MTA6MTE6MTE6MTEpDQo+ID4+ICAgwqDCoMKgIFR5cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4g SW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4y NTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBv cnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5v LsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24gUHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8N Cj4gPj4gICDCoMKgwqAgODUyIDY4LjE3NjgzMzY4NsKgwqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1Ag RGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDQyMWJhZGUzDQo+ID4+DQo+ID4+IEZyYW1lIDg1 MjogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYgYml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjcz Ng0KPiBiaXRzKQ0KPiA+PiBvbiBpbnRlcmZhY2UgMA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBD b21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+ PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIERlc3RpbmF0aW9uOiBCcm9hZGNh c3QgKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBTb3VyY2U6IENvbW1vZG9yXzEx OjExOjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4gPj4gICDCoMKgwqAgVHlwZTogSVB2NCAoMHgw ODAwKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0 OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBEYXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6 IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4g Pj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDCoMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgN Cj4gPj4gSW5mbw0KPiA+PiAgIMKgwqDCoCA5OTAgODIuOTYxMjI0ODk1wqDCoCAwLjAuMC4wwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4yNTUgREhDUA0KPiA+PiAzNDLC oMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4NDIxYmFkZTMNCj4gPj4NCj4g Pj4gRnJhbWUgOTkwOiAzNDIgYnl0ZXMgb24gd2lyZSAoMjczNiBiaXRzKSwgMzQyIGJ5dGVzIGNh cHR1cmVkICgyNzM2DQo+IGJpdHMpDQo+ID4+IG9uIGludGVyZmFjZSAwDQo+ID4+IEV0aGVybmV0 IElJLCBTcmM6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSksIERzdDogQnJv YWRjYXN0DQo+ID4+IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAgRGVzdGluYXRp b246IEJyb2FkY2FzdCAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAgwqDCoMKgIFNvdXJjZTog Q29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKQ0KPiA+PiAgIMKgwqDCoCBUeXBl OiBJUHY0ICgweDA4MDApDQo+ID4+IEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNCwgU3JjOiAw LjAuMC4wLCBEc3Q6IDI1NS4yNTUuMjU1LjI1NQ0KPiA+PiBVc2VyIERhdGFncmFtIFByb3RvY29s LCBTcmMgUG9ydDogNjgsIERzdCBQb3J0OiA2Nw0KPiA+PiBCb290c3RyYXAgUHJvdG9jb2wgKERp c2NvdmVyKQ0KPiA+Pg0KPiA+PiBOby7CoMKgwqDCoCBUaW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAg U291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERlc3RpbmF0aW9uIFByb3RvY29s DQo+IExlbmd0aA0KPiA+PiBJbmZvDQo+ID4+ICAgwqDCoCAzODI3IDk1LjM0NTk2NDQxOMKgwqAg MC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1NS4yNTUuMjU1IERIQ1AN Cj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlvbiBJRCAweDVkZjQ3Yzg0 DQo+ID4+DQo+ID4+IEZyYW1lIDM4Mjc6IDM0MiBieXRlcyBvbiB3aXJlICgyNzM2IGJpdHMpLCAz NDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYNCj4gPj4gYml0cykgb24gaW50ZXJmYWNlIDANCj4gPj4g RXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgwOjEwOjExOjExOjExKSwg RHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAgIMKgwqDCoCBE ZXN0aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpmZikNCj4gPj4gICDCoMKgwqAg U291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6MTEpDQo+ID4+ICAgwqDC oMKgIFR5cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4gSW50ZXJuZXQgUHJvdG9jb2wgVmVyc2lvbiA0 LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+IFVzZXIgRGF0YWdyYW0g UHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+IEJvb3RzdHJhcCBQcm90 b2NvbCAoRGlzY292ZXIpDQo+ID4+DQo+ID4+IE5vLsKgwqDCoMKgIFRpbWXCoMKgwqDCoMKgwqDC oMKgwqDCoCBTb3VyY2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRGVzdGluYXRpb24g UHJvdG9jb2wNCj4gTGVuZ3RoDQo+ID4+IEluZm8NCj4gPj4gICDCoMKgIDM4ODcgOTkuMjcxNjY4 NTcywqDCoCAwLjAuMC4wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNTUuMjU1LjI1NS4y NTUgREhDUA0KPiA+PiAzNDLCoMKgwqAgREhDUCBEaXNjb3ZlciAtIFRyYW5zYWN0aW9uIElEIDB4 NWRmNDdjODQNCj4gPj4NCj4gPj4gRnJhbWUgMzg4NzogMzQyIGJ5dGVzIG9uIHdpcmUgKDI3MzYg Yml0cyksIDM0MiBieXRlcyBjYXB0dXJlZCAoMjczNg0KPiA+PiBiaXRzKSBvbiBpbnRlcmZhY2Ug MA0KPiA+PiBFdGhlcm5ldCBJSSwgU3JjOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6 MTE6MTEpLCBEc3Q6IEJyb2FkY2FzdA0KPiA+PiAoZmY6ZmY6ZmY6ZmY6ZmY6ZmYpDQo+ID4+ICAg wqDCoMKgIERlc3RpbmF0aW9uOiBCcm9hZGNhc3QgKGZmOmZmOmZmOmZmOmZmOmZmKQ0KPiA+PiAg IMKgwqDCoCBTb3VyY2U6IENvbW1vZG9yXzExOjExOjExICgwMDo4MDoxMDoxMToxMToxMSkNCj4g Pj4gICDCoMKgwqAgVHlwZTogSVB2NCAoMHgwODAwKQ0KPiA+PiBJbnRlcm5ldCBQcm90b2NvbCBW ZXJzaW9uIDQsIFNyYzogMC4wLjAuMCwgRHN0OiAyNTUuMjU1LjI1NS4yNTUNCj4gPj4gVXNlciBE YXRhZ3JhbSBQcm90b2NvbCwgU3JjIFBvcnQ6IDY4LCBEc3QgUG9ydDogNjcNCj4gPj4gQm9vdHN0 cmFwIFByb3RvY29sIChEaXNjb3ZlcikNCj4gPj4NCj4gPj4gTm8uwqDCoMKgwqAgVGltZcKgwqDC oMKgwqDCoMKgwqDCoMKgIFNvdXJjZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEZXN0 aW5hdGlvbiBQcm90b2NvbA0KPiBMZW5ndGgNCj4gPj4gSW5mbw0KPiA+PiAgIMKgwqAgMzk0MyAx MDMuMzgzMDcyNDI5wqAgMC4wLjAuMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjU1LjI1 NS4yNTUuMjU1IERIQ1ANCj4gPj4gMzQywqDCoMKgIERIQ1AgRGlzY292ZXIgLSBUcmFuc2FjdGlv biBJRCAweDVkZjQ3Yzg0DQo+ID4+DQo+ID4+IEZyYW1lIDM5NDM6IDM0MiBieXRlcyBvbiB3aXJl ICgyNzM2IGJpdHMpLCAzNDIgYnl0ZXMgY2FwdHVyZWQgKDI3MzYNCj4gPj4gYml0cykgb24gaW50 ZXJmYWNlIDANCj4gPj4gRXRoZXJuZXQgSUksIFNyYzogQ29tbW9kb3JfMTE6MTE6MTEgKDAwOjgw OjEwOjExOjExOjExKSwgRHN0OiBCcm9hZGNhc3QNCj4gPj4gKGZmOmZmOmZmOmZmOmZmOmZmKQ0K PiA+PiAgIMKgwqDCoCBEZXN0aW5hdGlvbjogQnJvYWRjYXN0IChmZjpmZjpmZjpmZjpmZjpmZikN Cj4gPj4gICDCoMKgwqAgU291cmNlOiBDb21tb2Rvcl8xMToxMToxMSAoMDA6ODA6MTA6MTE6MTE6 MTEpDQo+ID4+ICAgwqDCoMKgIFR5cGU6IElQdjQgKDB4MDgwMCkNCj4gPj4gSW50ZXJuZXQgUHJv dG9jb2wgVmVyc2lvbiA0LCBTcmM6IDAuMC4wLjAsIERzdDogMjU1LjI1NS4yNTUuMjU1DQo+ID4+ IFVzZXIgRGF0YWdyYW0gUHJvdG9jb2wsIFNyYyBQb3J0OiA2OCwgRHN0IFBvcnQ6IDY3DQo+ID4+ IEJvb3RzdHJhcCBQcm90b2NvbCAoRGlzY292ZXIpDQo+ID4+IC0tLQ0KPiA+Pg0KPiA+PiBUaGUg b2RkIHRoaW5nIGhlcmUgaXMgdGhhdCB3aGlsZSB0aGUgREhDUCByZXF1ZXN0cyB3ZXJlIGJyb2Fk Y2FzdCB0bw0KPiB0aGUNCj4gPj4gb3V0c2lkZSBuZXR3b3JrIChjb25maXJtaW5nIHRoYXQgYXQg bGVhc3QgdGhlIHRyYW5zbWl0IHRvIHRoZSBQSFkgaXMNCj4gPj4gd29ya2luZyksDQo+ID4+IEkg Y291bGQgc2VlIG5vIHJlc3BvbnNlcyBmcm9tIG15IG5ldHdvcmsncyBESENQIHNlcnZlciB0byBh bnN3ZXIgdGhlc2UNCj4gPj4gcmVxdWVzdHMuDQo+ID4+DQo+ID4+IEl0IGlzIG5vdCBhIHBoeXNp Y2FsIG5ldHdvcmtpbmcgb3Igcm91dGluZyBpc3N1ZSwgYXMgSSBhbHdheXMgZ2V0IGENCj4gPj4g c3VjY2Vzc2Z1bA0KPiA+PiBESENQIHJlc3BvbnNlIHRvIHRoZSBYNTAwMC8yMCB3aGVuIEkgZW5h YmxlIHRoZSBSZWFsdGVrIDgxNjkgaW50ZXJmYWNlDQo+ID4+IChhbHNvDQo+ID4+IGluc3RhbGxl ZCBbUENJZSBjYXJkXSBpbiB0aGUgWDUwMDAvMjApLg0KPiA+Pg0KPiA+PiBTaW5jZSBpbml0aWFs IG91dGdvaW5nIHRyYWZmaWMgKmFwcGVhcnMqIHRvIGJlIHdvcmtpbmcgZnJvbSB0aGUgRFBBQQ0K PiA+PiBFdGhlcm5ldA0KPiA+PiBvbiB0aGUgWDUwMDAvMjAsIGlzIGl0IHBvc3NpYmxlIHdlIGFy ZSBtaXNzaW5nIGFuIGludGVycnVwdCBtYXBwaW5nDQo+IGZyb20NCj4gPj4gdGhlDQo+ID4+IEZy YW1lIE1hbmFnZXIgdG8gY2F0Y2ggdGhlIHJlY2VpdmVkIGRhdGE/DQo+ID4+DQo+ID4+IEFueSBo ZWxwIHdvdWxkIGJlIGFwcHJlY2lhdGVkLiBUaGFua3MuDQo+ID4+DQo+ID4+IC0tDQo+ID4+IEJl c3QgUmVnYXJkcywNCj4gPj4NCj4gPj4gSmFtaWUgS3J1ZWdlcg0KPiA+PiBCSVRieUJJVCBTb2Z0 d2FyZSBHcm91cCBMTEMNCg0K ^ permalink raw reply [flat|nested] 3+ messages in thread
* PASEMI: PCI_SCAN_ALL_PCIE_DEVS 2018-01-15 10:44 ` Madalin-cristian Bucur @ 2018-02-26 23:11 ` Christian Zigotzky 0 siblings, 0 replies; 3+ messages in thread From: Christian Zigotzky @ 2018-02-26 23:11 UTC (permalink / raw) To: linuxppc-dev@lists.ozlabs.org; +Cc: Olof Johansson Hi All, Could you please add Olof's patch? --- arch/powerpc/platforms/pasemi/pci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/powerpc/platforms/pasemi/pci.c b/arch/powerpc/platforms/pasemi/pci.c index 5ff6108..ea54ed2 100644 --- a/arch/powerpc/platforms/pasemi/pci.c +++ b/arch/powerpc/platforms/pasemi/pci.c @@ -224,6 +224,8 @@ void __init pas_pci_init(void) return; } + pci_set_flags(PCI_SCAN_ALL_PCIE_DEVS); + for (np = NULL; (np = of_get_next_child(root, np)) != NULL;) if (np->name && !strcmp(np->name, "pxp") && !pas_add_bridge(np)) of_node_get(np); --- Thanks, Christian ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-03-14 7:48 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-03-12 5:21 PASEMI: PCI_SCAN_ALL_PCIE_DEVS Christian Zigotzky 2018-03-14 7:48 ` Christian Zigotzky -- strict thread matches above, loose matches on Subject: below -- 2018-01-10 15:56 DPAA Ethernet problems with mainstream Linux kernels Jamie Krueger 2018-01-12 14:22 ` Madalin-cristian Bucur 2018-01-12 16:35 ` Jamie Krueger 2018-01-15 10:44 ` Madalin-cristian Bucur 2018-02-26 23:11 ` PASEMI: PCI_SCAN_ALL_PCIE_DEVS Christian Zigotzky
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 NNTP newsgroup(s).