All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] eepro100: New patch series adds full GPXE support
@ 2010-02-14 16:15 Stefan Weil
  2010-02-14 16:16 ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Stefan Weil
                   ` (20 more replies)
  0 siblings, 21 replies; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:15 UTC (permalink / raw)
  To: QEMU Developers

These patches contain fixes, enhancements and improvements
for eepro100.

Even if some of these patches contain trivial changes which
seem to be optional, they help to synchronize my maintainer
version with the official QEMU version, so please apply them.

0001-eepro100-Fix-compiler-errors-from-debug-messages.patch
0002-eepro100-Add-missing-SCB-register-names.patch
0003-eepro100-Fix-PXE-boot.patch
0004-eepro100-Support-gpxe-boot-for-all-eepro100-devices.patch
0005-eepro100-Add-all-supported-devices-to-pci.c.patch (optional)
0006-eepro100-Add-TODO-list.patch
0007-eepro100-Update-copyright-notice.patch
0008-eepro100-Add-device-descriptions.patch
0009-eepro100-Use-symbolic-names-and-BIT-macros-in-binary.patch
0010-eepro100-Remove-old-unused-code.patch
0011-eepro100-Use-symbolic-names-for-bits-in-EEPROM-id.patch
0012-eepro100-Replace-variable-name-to-fix-a-compiler-war.patch
0013-eepro100-Support-RNR-interrupt.patch
0014-eepro100-Fix-CU-Start-command.patch
0015-eepro100-Prettify-code-no-functional-changes.patch
0016-eepro100-Use-tx.status.patch
0017-eepro100-New-function-for-reading-command-block.patch
0018-eepro100-Add-diagnose-command.patch
0019-eepro100-Remove-C-comments.patch
0020-eepro100-Keep-includes-sorted.patch

There still remain issues (incomplete endianess handling,
buggy transmit command) which will be addressed later.

Regards,
Stefan Weil

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

* [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
@ 2010-02-14 16:16 ` Stefan Weil
  2010-02-14 16:16   ` [Qemu-devel] [PATCH 02/20] eepro100: Add missing SCB register names Stefan Weil
  2010-02-19 21:05   ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Anthony Liguori
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 " Stefan Weil
                   ` (19 subsequent siblings)
  20 siblings, 2 replies; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

When debug output was enabled (by defining DEBUG_EEPRO100),
some debug messages resulted in a compiler error.

This is fixed here.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index b33dbb8..6580ca8 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -56,7 +56,9 @@
 #define KiB 1024
 
 /* Debug EEPRO100 card. */
-//~ #define DEBUG_EEPRO100
+#if 0
+# define DEBUG_EEPRO100
+#endif
 
 #ifdef DEBUG_EEPRO100
 #define logout(fmt, ...) fprintf(stderr, "EE100\t%-24s" fmt, __func__, ## __VA_ARGS__)
@@ -874,9 +876,8 @@ static void action_command(EEPRO100State *s)
         cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx));
         uint16_t status = le16_to_cpu(s->tx.status);
         uint16_t command = le16_to_cpu(s->tx.command);
-        logout
-            ("val=0x%02x (cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
-             val, status, command, s->tx.link);
+        logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
+               status, command, s->tx.link);
         bool bit_el = ((command & 0x8000) != 0);
         bool bit_s = ((command & 0x4000) != 0);
         bool bit_i = ((command & 0x2000) != 0);
@@ -891,7 +892,7 @@ static void action_command(EEPRO100State *s)
             break;
         case CmdIASetup:
             cpu_physical_memory_read(s->cb_address + 8, &s->conf.macaddr.a[0], 6);
-            TRACE(OTHER, logout("macaddr: %s\n", nic_dump(&s->macaddr[0], 6)));
+            TRACE(OTHER, logout("macaddr: %s\n", nic_dump(&s->conf.macaddr.a[0], 6)));
             break;
         case CmdConfigure:
             cpu_physical_memory_read(s->cb_address + 8, &s->configuration[0],
@@ -1875,7 +1876,7 @@ static int nic_init(PCIDevice *pci_dev, uint32_t device)
                            pci_mmio_map);
 
     qemu_macaddr_default_if_unset(&s->conf.macaddr);
-    logout("macaddr: %s\n", nic_dump(&s->macaddr[0], 6));
+    logout("macaddr: %s\n", nic_dump(&s->conf.macaddr.a[0], 6));
     assert(s->region[1] == 0);
 
     nic_reset(s);
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 02/20] eepro100: Add missing SCB register names
  2010-02-14 16:16 ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Stefan Weil
@ 2010-02-14 16:16   ` Stefan Weil
  2010-02-14 16:16     ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
  2010-02-19 21:05   ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Anthony Liguori
  1 sibling, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Some system control block registers were addressed
using their offset value. Use symbolic names now
and clean the documentation.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 6580ca8..124bc49 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -125,16 +125,20 @@
 /* Offsets to the various registers.
    All accesses need not be longword aligned. */
 enum speedo_offsets {
-    SCBStatus = 0,
+    SCBStatus = 0,              /* Status Word. */
     SCBAck = 1,
     SCBCmd = 2,                 /* Rx/Command Unit command and status. */
     SCBIntmask = 3,
     SCBPointer = 4,             /* General purpose pointer. */
     SCBPort = 8,                /* Misc. commands and operands.  */
-    SCBflash = 12, SCBeeprom = 14,      /* EEPROM and flash memory control. */
+    SCBflash = 12,              /* Flash memory control. */
+    SCBeeprom = 14,             /* EEPROM control. */
     SCBCtrlMDI = 16,            /* MDI interface control. */
     SCBEarlyRx = 20,            /* Early receive byte count. */
-    SCBFlow = 24,
+    SCBFlow = 24,               /* Flow Control. */
+    SCBpmdr = 27,               /* Power Management Driver. */
+    SCBgctrl = 28,              /* General Control. */
+    SCBgstat = 29,              /* General Status. */
 };
 
 /* A speedo3 transmit buffer descriptor with two buffers... */
@@ -1333,11 +1337,11 @@ static uint8_t eepro100_read1(EEPRO100State * s, uint32_t addr)
     case SCBeeprom:
         val = eepro100_read_eeprom(s);
         break;
-    case 0x1b:                 /* PMDR (power management driver register) */
+    case SCBpmdr:       /* Power Management Driver Register */
         val = 0;
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
-    case 0x1d:                 /* general status register */
+    case SCBgstat:      /* General Status Register */
         /* 100 Mbps full duplex, valid link */
         val = 0x07;
         TRACE(OTHER, logout("addr=General Status val=%02x\n", val));
@@ -1431,7 +1435,7 @@ static void eepro100_write1(EEPRO100State * s, uint32_t addr, uint8_t val)
     case SCBFlow:       /* does not exist on 82557 */
     case SCBFlow + 1:
     case SCBFlow + 2:
-    case SCBFlow + 3:
+    case SCBpmdr:       /* does not exist on 82557 */
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
     case SCBeeprom:
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot
  2010-02-14 16:16   ` [Qemu-devel] [PATCH 02/20] eepro100: Add missing SCB register names Stefan Weil
@ 2010-02-14 16:16     ` Stefan Weil
  2010-02-14 16:16       ` [Qemu-devel] [PATCH 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
  2010-03-02 18:43       ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
  0 siblings, 2 replies; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

The phy handling was wrong for PXE, GPXE boot:
GPXE's eepro100 driver did not detect a valid link.

This is fixed here.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 124bc49..994722d 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -20,7 +20,7 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  *
  * Tested features (i82559):
- *      PXE boot (i386) no valid link
+ *      PXE boot (i386) ok
  *      Linux networking (i386) ok
  *
  * Untested:
@@ -33,10 +33,6 @@
  * Open Source Software Developer Manual
  */
 
-#if defined(TARGET_I386)
-# warning "PXE boot still not working!"
-#endif
-
 #include <stddef.h>             /* offsetof */
 #include <stdbool.h>
 #include "hw.h"
@@ -243,6 +239,17 @@ typedef struct {
     bool has_extended_tcb_support;
 } EEPRO100State;
 
+/* Word indices in EEPROM. */
+typedef enum {
+    eeprom_cnfg_mdix  = 0x03,
+    eeprom_id         = 0x05,
+    eeprom_phy_id     = 0x06,
+    eeprom_vendor_id  = 0x0c,
+    eeprom_config_asf = 0x0d,
+    eeprom_device_id  = 0x23,
+    eeprom_smbus_addr = 0x90,
+} EEPROMOffset;
+
 /* Default values for MDI (PHY) registers */
 static const uint16_t eepro100_mdi_default[] = {
     /* MDI Registers 0 - 6, 7 */
@@ -632,9 +639,10 @@ static void nic_selective_reset(EEPRO100State * s)
     uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
     //~ eeprom93xx_reset(s->eeprom);
     memcpy(eeprom_contents, s->conf.macaddr.a, 6);
-    eeprom_contents[0xa] = 0x4000;
+    eeprom_contents[eeprom_id] = 0x4000;
     if (s->device == i82557B || s->device == i82557C)
         eeprom_contents[5] = 0x0100;
+    eeprom_contents[eeprom_phy_id] = 1;
     uint16_t sum = 0;
     for (i = 0; i < EEPROM_SIZE - 1; i++) {
         sum += eeprom_contents[i];
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 04/20] eepro100: Support gpxe boot for all eepro100 devices
  2010-02-14 16:16     ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
@ 2010-02-14 16:16       ` Stefan Weil
  2010-02-14 16:16         ` [Qemu-devel] [PATCH 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
  2010-03-02 18:43       ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
  1 sibling, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Only two boot ROM files are needed for all devices.

* Add these GPXE ROM files using new naming convention
  (as discussed on qemu-devel). Both files were created
  with http://rom-o-matic.net/, PCI vendor / device ids
  as in ROM filenames and option BANNER_TIMEOUT = 0.

* Remove old PXE ROM file for i82559er.
  It was replaced by gpxe-eepro100-80861209.rom.

* Update pc-bios/README (and sort entries).

Full support still needs additional eepro100 fixes.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c                      |   13 ++++++++++++-
 pc-bios/README                     |    4 ++--
 pc-bios/gpxe-eepro100-80861209.rom |  Bin 0 -> 56832 bytes
 pc-bios/gpxe-eepro100-80861229.rom |  Bin 0 -> 56832 bytes
 pc-bios/pxe-i82559er.bin           |  Bin 56832 -> 0 bytes
 5 files changed, 14 insertions(+), 3 deletions(-)
 create mode 100644 pc-bios/gpxe-eepro100-80861209.rom
 create mode 100644 pc-bios/gpxe-eepro100-80861229.rom
 delete mode 100644 pc-bios/pxe-i82559er.bin

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 994722d..179c544 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1975,6 +1975,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82550_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861209.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -1984,6 +1985,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82551_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861209.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -1993,6 +1995,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557a_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2002,6 +2005,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557b_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2011,6 +2015,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557c_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2020,6 +2025,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82558a_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2029,6 +2035,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82558b_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2038,6 +2045,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559a_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2047,6 +2055,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559b_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2056,6 +2065,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559c_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2065,7 +2075,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559er_init,
         .exit      = pci_nic_uninit,
-        .romfile   = "pxe-i82559er.bin",
+        .romfile   = "gpxe-eepro100-80861209.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2075,6 +2085,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82562_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861209.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
diff --git a/pc-bios/README b/pc-bios/README
index 0570922..91f0ef1 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -20,10 +20,10 @@
 - The PXE roms come from Rom-o-Matic gPXE 0.9.9 with BANNER_TIMEOUT=0
 
   e1000 8086:100E
-  pcnet32 1022:2000
+  eepro100 8086:1209, 8086:1229
   ns8390 1050:0940
+  pcnet32 1022:2000
   rtl8139 10ec:8139
-  eepro100 8086:1209
   virtio 1af4:1000
 
   http://rom-o-matic.net/
diff --git a/pc-bios/gpxe-eepro100-80861209.rom b/pc-bios/gpxe-eepro100-80861209.rom
new file mode 100644
index 0000000000000000000000000000000000000000..2ca59ec369fa3aa829aa64b80339dc9aaab9026f
GIT binary patch
literal 56832
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

literal 0
HcmV?d00001

diff --git a/pc-bios/gpxe-eepro100-80861229.rom b/pc-bios/gpxe-eepro100-80861229.rom
new file mode 100644
index 0000000000000000000000000000000000000000..9cf397e3de03c4b6441893cf07d9ea63a36a65c8
GIT binary patch
literal 56832
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

literal 0
HcmV?d00001

diff --git a/pc-bios/pxe-i82559er.bin b/pc-bios/pxe-i82559er.bin
deleted file mode 100644
index 2ca59ec369fa3aa829aa64b80339dc9aaab9026f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 56832
zcmZs?2V7F&+c13CpeU%QxY5)!cbRF9+*)Sg$UW1L+$pGKxlj`k+k2YrX=Tn*5mU>C
zS}BRUbr5HkTY2gKJkR@n@9+H%KW^^pUe|T5ec$J>=YEplIB*{LzporX6|e-zPTRc;
zb1<@i7=l3oAPIl~Ku*$shH8@&$q;cH(EASz01^N(@aJFM0`{+@(rC$BO-%ODsQXg(
zCMD5~lTu=U7;=CMpeJ6Il##JDBf~gDAK0_YdAq_C06?IBVC{zOhLxy)SR>Stxa+vP
zE7BUJLgsSAd#ITRgu%hh@WyliG=aAw4*;YJlDP3BtfU=;z$rcyZ;Jn74dm&2<rF_k
z?$SRTbkF?n^z99k|0cJ>iWWcttil+)0xRNyJ+K@REXAk<v<0rGsFrkC@o4LCRnky^
zGlGDKp;Y;j4oJHdFHNdK6O4nEfZ}P=xO<dvN)RQuUNq%I+g8ferR3THz&}RNr_8#|
z=5)m?AOPKmK=bGleV}3XAKqOsU6F+fpiVW1#YX6g)TIDM3%a0*rriLAiMvf;W=*9{
zx)hN`G(b6q%!J|YQmtXS;%YP?L^mw_TS5|6FB)>f<yQm$2c@Sced7N?$!}QwH=Ylr
zL{M;5NGL$z3}YyW<P;ddXctj%ui6;`TmuC7^fMMoi4`|gw~9w#Ddbo{Oc_c{8MdIC
zwtK!A571=1V}V%ce>Wo`bHaB_1!EYqQ@s8uXoWrK4`oh+$D#kIr?Bh{VHC4DF-|c9
zDVz~Z%<N4H)6NvuDy9KWi8SMz&HXoXF%JRm=(3(V68MkwWT0ZsIzj)Zv$V-<&P-%H
zd$R%ak2$i?h6Dh_LK}2oAQD;+6@f*N%i?x2v_T&R{()Sf!==Gd0Cx{phSG?vApso{
z68|)er1$@)eEK9K5<n8`g}6v010+XBA92mo6CiEh<!fdINRU(ZrKXacXeseVjwD(V
zDJm(EvOk8NvX2B98yf=>693d%eA$b?(qJsmA+6Dn{g2LA$Ui!xAq`hxU>Kx+*AO@i
z{G;<Oq@fH3?u1;SiRs)57*onJVHC0K5ym3pOxSzkzs3Fw>8^kHQsed~lm3~?{=^s(
zB_%20f8!M+N&v(QLLd!8FmM^5P<MK}_?C1te~9_t`4TuxVOfYpz!I|@OoW0rp{1W*
zwi}YEELaCAl@^)upB49I?2Dq)_9rDu02DupzdF)KT7&t`f|V_6QR+tU*JXubby+Ub
z|DUBopy3p%3{`x$R3kW<`WM;}92|_&5F0^QhZngL@?L?4G;4aVApBDc0NXR<L3!Xm
zjekfBmRuV0^1r?-0fAf!8F#(L9w;4-rj*44mzV!siKbX1;{n<qTp1;R`;QI(=OX*;
zDG<>RMF=+`t{w$cO4~@#;qUPkQt$Dh!2w+I!+bFVL7qrB7r>=(+VLP<ta9!6!WIw;
z6t*<A!$BAzF3H+B8wu6@Cg5X{c#^pHyQpF-SSBhOZUSLouSo0&PKyC;6!`hy0Iv!u
zFke(bs@)BMhee~yVvsHh6k|B9@!zD0MB>UN0Qk@EssH)?_`eC?!~Bsut_Lu_Pg5@A
z?&7W^)fJ?v0)&^JzXGa(gkU%DM74T=ShvH&0&$SS1rdcz@u!$Im2`@25H7aG)ffsp
z-;yU1i73p%K2b?~<FE(}0ZKX>K@sQ+h`Am>AumyIkh44yj?{#O;Ix{?nh|KA1`m{W
z))0YGUTIV5a4AR$5OtPx{tqM`s=X#2+M%d{!j*|#n0Ns(@+-{oP%ftl&UAt@qM*}7
zPVk&4IF3v4`e(a=Tyl*D5;PEVhT=u>2fqN6`L7g67ul>SX7+vnh0%(mFn&&pNeblR
zuE*Nr%A(8U0M0Pd=slEdbQmCWKxA~e91swUE93rCHnF_^If%x8#seb$-AfpkBKGks
zl!7@rvg8AW^Ak?VZM}{H05MZ=)e98PFF2*P@*m863nu^bRm=a?HY$!Tl)8390009;
zl<-nMrIzOg5jXvFbD*oJ{4^j^KM9nd7hB0oBt#6H1;kF<pIjr21OwLsDB=IQ#abLG
z)=P2N@S^Nlp_oljJcX#3n-mD24g=$Xls{t0Q0&1_fFjcb`U9zdDGU&nA}baZI;I#&
zaiuV(MKmu8^EJin4Y)-->J4c2ucXUR9KiMefi?flau9!VSAkivP#Ikiil11<G+SU+
zSBxr5c;X*A$ruVtox+%0p~&#Llu$|_CHViciS+0Sk>D;2SbmRR;=&a!2O&jM{A?Ri
z3aS<YRAQ9O_?6-y*;m?JI$Ao`Xgen=?Pj)kiM<myK$<MqZT4N-n+ib8L=)B3O$KIf
z%y424Yc@er_o4Vni%lktpC}T-DE=Mdu;h3AxEs<CwHPB3RnN&Srzn`|iuta-b_B&0
zYd6^&3oKGZ6WPnuhP~n_?*~mrUN#n~^AN{ekvUl+d74O+Juh4Aw}M8~G3v4Q8pR59
zKtrr&A4@q%|K*E-sPWZ{!<(bvT#Jn~h5yL^UyP@ei9~!+yaGk17fS*t<roX5Zid23
zXNCXr>y$_e|HIzND;6x7jVj4Tm#y=qSW+q*yiTtsg_A9=Z#TXX0}%oN??piY2865{
z=<a%E6dKWA_pt!7ob3zw_)&^nsBlpFw`+5brRAzgypz{XGF@8nWj_)Xpb;P%5IqWw
z6kAr{zraojg@jSUUydRbjVU|{#l#~E$RJ}h-IOv>wHkhtxlr#8fZ;$r84=jSv`bdZ
zsvn`u4_z*4FHiVq!}SB;wkXl7RX{9cRZDgCVnBswTuwx(CMQarGSn(nbcE$1hxP{Z
z;r92Glss|*I+$+!N6Xbv<92+J8@wpSvZ=zj%%QaUd2KU~LP~}g+c7xvRi)MVu!)i{
z#Lv6I$l%a=dayacKzB(VqTr8E|5?2%$^iby8&JmH741jkwAa#>KPG<70)qa_AC!79
zKX1$~OU|Hh^K<h5`6b49|4<?uPgmT9hPeVOlv?+SCvi!Nk=vOFL6k^oqhD+Td%8Ic
z9Z%3e?T%!zqP55CCMOhsb%^tlJhe!X0wThOl<@M1D_vI<E;e?7{feSR!=`8}q#T@1
zXV@vD06Grws533;4&psjHM(5Um1J_5H_ZjRM6>PZdm}_ozzNZEW9QDOy>+(#Vi_IM
z@t&wrq4YL2iE6))={q+Rz*GA!-0i#M6T=G8mM!HXvq$*zhqdvN(z+i-!Qp#DIxgFi
z{o-r>G}E<qb(g%oTc1N8g(ofb=v{Oy0%~^orQ}f1YxUJbGoe>LUXgl;dN0pigk28f
zqA7b8{CF7>R-re4*}+RXdAGKNO>Bi5x7)yd;yc8OU7b)6C0j~l5w_{})YX619{RK7
zpqvUtpsa&=X6W@4_ro0d%3syz)*eBiGF=pFUpRf$8lHNB<;$OJFk(TicVg*?5OkV3
zOLCxLAP9z`=o=_?rA9mRDX&ICIOJ%=oC)Wf#By^sznfB%iw7DiVBkH`Cyr3!%7?so
zP8Ksvl@h71gWt6A_lpZU3_N~LY<1uxkvLS@0yebAe6E%HFpRG5@7Iv;5SG!qW-Z;K
znuf?jQoLqwo(Kzfl26p&w{)&cL$)CiBGLP^QQ<rU9m&?sQ3bFx2|GXGsYE(-(a($G
zEn2LsS1H&Yi)!>^EZW;n$1TUNw`ZyAFAi3qBop@EgI)-~lrr_u;qil!1y3IudU0|u
zim5&DsW}c_a5T_SbVwjMB*FHD)`o?K70fv`@Dupe*LhB&6o=osJ_y(zIDB{Yk>{ak
zPb_$R4aJmaGOsT`vSBVUTJgDSlki`4ue|O$GKGHkgBR3Zgw`e0KL@YvR?=r2A=B~1
zW!`TT7M&X)99X!7Z7xU%w&~W^rXhFgzuQ~&r*V=5cGta9Krw%TRo3HQS~aM{k*P!c
zUffAnwA=WE2VZ@{;*<u+6~P3ek1ONLxMgriq?ovN;%Fa8MQEs1(brpXfHi_GmEJfz
zl{A&Rw14@E@S!aPL_N=0Dbj4JYJ1aW0RYd{9xiK&v&sNe4z3OcYc?5=4i)DD``Qgr
zm8cYhcugQIK6)rD-v9!&d>{@^yCnfM&%%wg{l8NK?SF~G|G7*au3q}jK8R#$Yz2{|
z(kl2O(f_+uk{9o$E>B#w*&<Fj;MYE)PD%c5&%<2;P(7YsQ9!@A7bf>tad~ZEcci1M
zuQ3V&xVr4}3G}%J0P^jLr2QtH(1vH*<{%JR6dAY<;2|1N$c~CTfbgVvCWNy4t6QKJ
z0Ebv48E6^G0LP)1DkM<<L#R9OKQ%GgqB+qez^8uL83G7x**=D4(_1i1vN&%rY!gil
z@tjPt@(8w*ITLEh^08;~M6zrAi8*nSD=A^fTE}!W#51_gxy#xv=Z>uotxu^B=KA^E
zh0{&9vjaY}gv2?GikQvb@Qo~2L*^_y`SX_5Nzp)y9(^D<jLY?5a#>Of(n49QKs0^1
zQPddefVGCw;bu)j91D}Xs6_u+^ZMFS_r9B%qO?8!F^qA1o3l2Si$XW7^3~uXfTd={
z+9Xs<MuW`j6Gl}7N-Q}H{7^CY?gD<mt|u{zWpTupUxv0s3Z(c?zdnLJyH?}s$KHvm
z8@$Y~t>JC@a?@FH8J9miFh4P+!fY<=;k?De3%WBTvPA^p`>%=fo0y$Cs3u!@4qZ{C
zQY%Uv$Q_j#?#NwI$DL_%*SWK4efnb;(mr%udr}MIO23pMypHF8gxN4KF$dRX#T&C|
z$~DC8Ao?v=xF$JtnvSYjQu-haVJ?6tugPU<i>l;<44#?A&7=}sX~eRXg1Ic*M>Rwn
zY+hB0*Sv9#C{!$y41mqTC8Z`N@@?GCXDsC2P{!p;CQTH4Upw}a(SpAl9(qJnU5|hB
znt6j|e}>u0m?SXiQ(37=67%(ha|X<>E3^0WTJ6VOUag7-T3vU$;0;``g)J1OE0j_;
z>?UJRDNh$Aj3Z^?T4?)XM|6=Z=BG2uJ-IO<zI2!W;ZT4k!Sao+NM25=b;U9kMYJGh
zyBViFqa`V7WtKWUOmkt$Tk5KAa>P2NZdo(q7dYZ^r#%l5p4TLlO-p8Dcr<hYpDwW|
z#Ij`b=c`|RRqqx``D0n$XlAr~QV;cLu)8pSW`OsAC>p3QysCH1ofV*$NteY{d8n|+
z?t={@h3pq#dw#E5;d{;-*8AL%c-)hjlAG+0>|KUg^XZ0bHC}+ohagn&+Gt2-cGX2l
z$_-wK^CE+==9=Kb<x7uJwGZta^V*54hO#`d`zgZ2Y$e7w9Os*)7xt1W68|lGnNMon
zstpu-VTvSmSbOmLZz=kHd2Jf?i4<ks6xG@)P#I%bv#sAEf2RVZu0*^qwwFDkxV)Jn
zQA@7Pk7a`3R|KW{z(^sXe#*8Nw|4S!=hXrpXxhAMETCd@TiMU^7ik=eptwd!Ib2~F
zRR7kQ>1o^S>eZ$N`!^o4j8Pn0^$f6F$3N1mV<~IZfjer7V)iY<!AeQoWZZqqf~s6U
zr2slKI3)35zR8M*%R>>OnQsmD#H|!gV68eW=biLB*>DKce&$F=ij$%QV`Rkf*iHiv
zr{_pKS<%-KHSyFmYR`URdmwJ)&WS=l;?A04a0Ml?sdA35D8U?p9dUwg$Xfst56?Rw
zx9Q~@CzSmb{Ontz3><|~tli!p+=?1pt69a;53o`VUGWpm27blWZb&M7>THX~P&3_$
z?Z0|uz-T-}t?Lh@Jr0io%kvVK(>QZ`?w&x-xuHn277+<5XZu)jY29wx1rsv$w>Mqk
zQw16da+{0~_COJX0<1pW`Q7cl3qrxWE%^xq+BW6HbQOyQQg*>lTS|>hkLYw)l^?jZ
zb;px_Bm!3*+0mof-w!(N{MOyvk$8pCT%Liyh5Or}!moO_V3kXQuWxfz-3U}<X09Sl
zOV+qx3=-vM&Q91?B&XzRu4;*uSD?NWA%y$Q=ITfWO<i3!X`46i|3hgqgycqqZi_c^
zxM|7`sU1@HIJ(`K|K;WVD!QjipEsuW1lh;hob}^XR|TIg#G{jrSFK(ACWIFB6dleA
zICeC+y*)i{vl)zxKw@g^8&<JoDv1;tE24f62Gw3{gGoM`z*v)Tz8o52t*6kROooZB
z&Htdm8}2#GL$|isld)~NzcTp?3DMu9+3pccwV-G@QBF3eVCXuKIA^~TLfb>uo*1sK
zdX05eXEa4vaW1|QGC0>0uE=~3Xm6HUS?QBAq;HUAaxQ3~f9v!yJn*6TGQ4GNRMeJg
zCxY0Mw+H(KVZ-hjjcj8rZ&^6U!;|26I>O3}KwGm%m$gLZG6c5C5Y$3YTafV%HhC3A
zXMXYvQtmFWuJ5r<jNoNZtUT^xjvVxX4<#6ONngfqyRMY-6VyDmm+=R7A-EadgN^sA
z=jaqJuze(ihu0?+cvjBXWJN3vwb5+k>a*rpiYzxiD@<>XHJmIPOrTCMm-K^oBQQw?
zg=%*1N*~BH5+y|D{=;++rQfm#Tsi|(A|vB-*D7yiVe9-xj!sNodcgbup4}|oSC%s(
zR~Z_7p(E<F3+ud1w^ik*k@5KnbgL-;(`5}U7TP*)!sFPHR1~{J&5^Nm=?l}WO>W;q
z7A(fmKdiU9Vzs&8jg`orDl~=1zfUIH`44B)J|)wUBIi#u;SPiwJn-bxo(_WZ$jrIH
z^n}(5!4w++d`!s!nfDw7Z2JI#>+N8{sbQmytq+3}m3NaXy{<Q<25cYQ@uxB|xVPi=
zIx9TgF*CyQ>GNij-D@;umV$g}tu`4nssF7zwk8~6MD1KtFRTqHrzol)dY3e1+!ffJ
z5t7M7G5wXdHcYiArzTnT&N<PHJhY3Kk5GdHy-u~BWX?!~b6)2yU*=tR{BiTOu)qZ0
z!Aj9f12?bQ4@_p1$-Q<nCu^!Q$9{_Zs)LIw_Ha8Afk~mHJex?H1dlXi^H8RI*BF|6
z>qQwUVl8MW8OpW1)6|sj^ebR_d1gn+_d{lF;9y}!mt`fJv8(QtVqRyD=>}}B!{4(*
zml9tBJ`3`HuCN^;<tXm~o&HbMgqP^OnvqX8dzkX8Zs}Q>OB;U2?%Z6P@u~w{EFUWg
z(G0t}rFZ&<hYq?7>y6lUc;;+4`oS7rf{Org^2vvfeizko3b=1P!hhJWNCLo*NZ}cU
zen)7m<0=%n4QYKKuiXam?rL6VU*?Csl8DbIPi^E=vK3|WUV7&>0l<cS?Zho<3W#A9
z9%8|6!nC>iRUTXZJE9Y8wJ_8vciLJ|e8(!xl@e&TH7jhnF>CyT`_?|)Co5aog>&Cp
zWTFmU0-sNo=0@I|H1-3deF<%Qh}a$#lb0+r;r3nw2jVg|#kxvrjUTXxHWoRkc13D^
zy2EciNO+BsB~)Sq307YkDjWjAbDO$pFeawgH>&LZQ4+;!(OYt!`;Go&Un{uev!9q5
z^)(^WgJ%9<p4jFTmLA!rAfsx8bU&#oRM%~2*|NQvGY0F`pXm}9sw8}*;>;NthV&D}
z7lXW$mXd0SO~VOy=A)dv?#JQpThG}9?}THK>8LoomDlpZ!}L^`-+><R+J{uigo4Ka
zz6U=aRNX#cc(#Ef)G&uD%r$!=az(3*GzjObW*RbAfO53zOBooF4vG6~WZBqULlDd$
z*VWYSe8KvQug~aGNbIQDLzy)~X-yB@-Friu2=mt-=!V`3&%vtYuS-!G<P`Qlzsfwm
zdTnOOsu{b??|cflFh431>emUCEH_!_u1}}SFs~8z!=06G9z@<93asB?bCVke=4_SC
z8ZHgLX73DY7bm;eL#?;fWe#7nxZvAueRE4q+qK!zfloSNhiDsGqw52@h$=;KOxHW*
zAD#)JsEYv`!c!zG<kUuoTVT>=bv|jZUE8u=j@C*fSC;G~)Fmh;)sn|^EDvjJt|j$Y
zs9ia$_XH^^sq^mVRViha9YF(kTO?0<$3pE3!7GwSe>BMwZ+|-1D3wU7&$?HO*t8w<
z@Ui-f3|LkE$-e+xscGZu(kla3W9mr3h{rVl;z`^pU3Ptmi@9xMI^Na@IhgoYkZNLE
zOW!14*HYGCd#dr*#81NCy4RB3wx`t<S8ZboW$RB!(xp;N9tnH)bq*rxy2qaN=<qY<
zzuCir>@CwItetF38?>{iWjz<aH&{85T24)&FZZeRJjUY{bYGr9y9v0DZ#nCY@l}p(
z%YEOtX7`P8i0GqXH+G=!GTGOWRXTL)$wcFl@`u};99bl~@L+09|L#v1JjoK39>3gq
zuP>DlOH>Y4El5uqO0u-1X)~dEIKxdc>w--|iK9}rTMTZ(YaP5d_UA$_$B%*X+aHI#
zI;Dqv8P0l?d#}JoRodbcj0=%^WV0>9pyZaPV$BQfSiLl2C2`v^fzfz_zk!<64;BG^
zk*~xEeJjM|w<4vDh=zyD7QXAb+9|BBd0P8xMt#0lC+mUE8px&^3geaSouM>T%BIdy
z_8<}_+*c0SWpgwjMWexX34HvJU?$qX&y|U2%gzb3a<xhE^@oLS8;L?qY&Uwf`zRsf
z^}>nwUaL|B8iBRTK3T8w`)yZ($>x_|dOQtCtlby=!@B6jlwk|iiWN+?U`gF{e4lV~
zDhw7l!ats?m_ZaQ9?KETplUi@Ys3d#tt5P;OaJMNvL1ZIeWvH|ooDfd#x{Gtw@HF{
z6<uEcxH4(_V&L=`b>yd^5rlDMJW%6JM?!9+yoLnx>+i?&U8mnlR&_ZZpQg!dI0QYA
z=_7KKV+^n8w^-sB-=?LZwO9DV6G!alXV{f^2^CuR#4U@T(;xa7oI{?xAa#|b-24Z>
zEw0@A6;by2QuIl!-}IcM7xQ$<+Pt`Up#^iXeziWl*kv3vEpu;cg~PV8cZ&`YAq1LX
zTJW3-fjNKab%w=r{%219$-1xbnu{Lb>Og4-y2b^R8U_Z3@0txInmomc*1Y|_5Fi;g
zOubAR`9sT;ajLlgU3+sOwT2OT8hrSIz3)%L8&!hD(cd}`o=(anZgzZ;Sa4KeSkxpl
zn9QxEJ+1>?wup~LPxTELr$4~hAd(fdSKQPV4BU^ckG#}<Z%sFWm_Y*fw=ApXRGAve
z7o2cb(sF*$kE_4JoDm4xkCXd{?<v{|CV#&r2%9q(f|vi)oh?VmIz`)f>~lmN-n2EE
z#iB90;wO)1@!>9nTmJXDiRpumnmhDOW{>JbiBRUZBBdFNlDNWtJhU{s5wblRSMU)c
zz=G`yUXGs}%eY^M@O#kr20kPfISGn^4YtEHY?bWM9t6S^V>;(nbD#|K%+b-!9WKbK
z`Yb7}yoP7*c!4)X-cg^16t>9DHZ3>K%;6f89z*81=|6<1Vn`9v)nSKVf)|{e{des<
zv-)ZqGU7~sPa@nEig=QNCruTE7bDY6(<JId_#uI6B%Z00+<g&F%r$wnYZ>-as96j>
zXAr;dE}}B*ZZA4PCHNlnZ(5TBROValtJ}sD`1Wi*+s*;0T4jXYn<5Rn9|Egs9N-qi
z?C4`#k#wEip7m+VK_r+P)fMBQO2j(VPdDFkeXHNTlszRp^hR_r!Tzcm%rTwO{3Dh6
zWA6Zs^cbBa%T|7oe8Ik>^QL40PAb?~cnsxrsY<2FvxkzaC>@QjTbuaCM~-}yLeMt|
zr5f8{h$wy)BM@sk$<eYjrqd9;{*zx|{^-((Zxc-y5jBn@!~{;K*+r1F!MQ`OrMP$U
zxgcIsaBI_}V^P+YPCq_2crk3>Fx#A9tJ~u?e>~HA2zlv*@yNQ%4N^uSkz*2DKk7x_
zgPu=xrLOriH9YCzPvz-ys>(!c!}4`u)zY31Q)urA@?n2@>xvv|zO{-jBWhadJsBOa
z-S^cM&QA=I5JbeN9=9Y`Ca>V_z2xt@8%?iP<mT}Y$U9LW2<l@V@4kc}Ir>0xqYx4F
z=+~lNm!DeBqA^`Q^e#U5nqq$DwBDMBR4<|!mUF5|!m-#BaLK1<##t&Dn#}06%eO)o
zsd9F6Ohz*1q&<THJ5`~hLW%T$5@SCkKTMaCtZw2w@Uu;@1r6>UOU}>Hzh8_(gMS&&
z>CuSSH*H0dDM?!@uLAILQ!6aD{Go5J%1ba=uLGtAxV!OEA8v!!p<Uf(O09@>OLOxy
zhcYC1Y$};d)z&;qQmsEN+2;G^W}3$}L&M|Nfe9HCA$*Q?TIxQ6WSWX%vHOxICLuN0
z;>b-W^F}Y0j0vPCP-pGR#5b5y?Xw^~U(;|R?CjORv^F1Wa&mfSvqBm2lDR)SAkX^v
zsq~6lH>3!DWt9x8bkhqV`A65yJkY|>{*>Rxk5@fXy3+mHiDqi_$H=1Jy*3e9egxA;
zLVB3h?)sJ7clUGn)utRf6WnRt=kvF>F(_>5$|FR!*9O^ye7go*95;q<fIpBiB5?Ke
z!S8~6@}rs{&!t4V(C5hBTl3<su+opi)HU^uLryOc=3GKn!XhY5iAOg-LQ$=ZeVG;m
zvOFh!RXB}j6nZrgueIB!*&An8RmMN5<=w|lzatDPH*z(pH4%6-fB8%QIY(WZeZY3H
z*@UIXv+2Y-xarI|TGQudJ#F2qM_t&i^S7$EqEuKDj0FkDwh_W?bj}G@g%I((lC+Ds
zddrXo{{Afzq2J$(xoMSYh}V9J?*Q9TtlxKTs;ux45&;pcLzjZ^`pb-E$V8vLik&ph
z3tgKJlZfBPkvN$VXQLD|;CkYsY2q<iN%Pk0GR*U9#RpJz)#+IK{PS20l7>UT<|Zrn
zstq_n*;T3|maTfH(mt2{1)j2F-%`2slCS=l_{;?XvCfi;vNlQeRahc7D>$P>4DZv=
zpG#V`r*9FT)X)*w2i4}TYB#6RocprRJ){Mcs<?_n{@eRZ@Yb;0LgX4e<qXTue7y|W
zSR*2T-3gR6q$nYXr=GEyAP2whjtMZdjE(Sz$Vpy@%+I)MI6x_TPho{p7Oq71cYcEo
zR|b#F7ht0uu=?C?wAH8d)MPB~$=Fs_;`!>qp}O;3M%{jv%M7A1$#E4dCq#d3P`u$W
z#~-FU?s7zwmabf@&yUQc8?BF)s6Ur{=X1jemDfaeytONJHr5mw#r&gGFFgV4^Sgy?
zdpQU9ODr+sKFB1hW43+Neq}lmp(3=-`w2@kn4VLp@3Duz2jS^b76l<{v|z<8Cz|K`
zZmfE7x1OGTt*nvEKO7n0o$l%o%jAVTPiC0ac`?`*1rMHcz*Z#DeMNAs(Zfia;mxYx
zrW2d0)1#{N|1zRN*0AhMn^#8h;?oB~!8*3hPQlfyUjo)!lAy7rq5*iw=Pe_bw|(<A
z8!IauCJ|N3)#zBmw%+e%P2ciP<l;Km+rNHkDOK6*SNm()D?d(0y1F;qFhz3XnIp#!
zb=p>5?jO7_-^%#f|5Rt8eI1C`)VQSJfv_r$u{ZBgD4qe=XC1ysY1c}#U&p<uF?cK{
z$9VI!Q9LaoC-Y;_2bXtqi)ojR?&*x*pS9xx%}Eww{H1T&(RAC$5y|0?)oLyuRL(n1
zuVaU48}Y1NcZjmtp6|St@a3@09G7gUFuNNqyB-^k7IM&?UB~iNe+ZVZf@yaSkuXD7
z&v$ztxX$9_88kY4?yxg^BQr(RaJ|)TdA$?Ynp7(rMyQ=*@@1ydR57ICC$8G~nTYW;
zJ&fT3-gHiDB8$@sx`wnBp7y_}K5M!8FzBka-_^2y>aeOGh~(H6OxXTX+<88p^G5J9
zEX4c(#(2(^7W-f_*R@q(aP?k>N!zT5`y%D_Qu?-=H&vVLV;Y?nawaE(PsO6CchA=j
zA^-BCaGvq2vB;k;@Hf&>80w>Do&UFE7H1x1m&`eZplQB;GS4_gbWX;y@4+O}cC-<Z
z^->}IA1h8$u8rT`@{5#nNhcZ<Dh(=N7Z_9cTCC96GMIl${IqMO>fQC4j_c2LBu<B%
zKAVTHNQoL)Sg3E7Fls$_w)oExavlKex=fup9ZNJBL79k8vws=ZN|Il=Y^6uj<0W5p
zrKCJuoY7x|Y2-dtX4Y|at7vx3L)2v6LHp@e{Wa!3&;|*uEbX2~jFw*cD(_$iBbO&o
z`H%1qhv1tY8y`58Y^Bo>Is!W~9f%TQ<C1j;k<_O7l%_X(>1DUjt)`5;T`TXq=1h@k
zR(gh}scp9?w{F(TO!k>(FD8e8h?6}$+2DIh4r(adg!|T(f0`xr%|AOy{SakuI-D`H
z+7%QSX-y6wz#QXE4ltHHl~PbhXb|;nXRD?*T8CL<79oi^Jui)Wm=WESW<SNnKNjL@
zgNs9ZV;QD!LF^MBt=i5(X*6xB0t(G2G6<gd`b15h?Gea)yLE&juYLW+1Om3EzRFWW
zFu#=PW=PjS-S6`r|KX8ph?g8|V6ya~ft?%8=2+%}PYd-(mAgNm6?lAtKEJ?QCq0o7
z5nKb2UEUCbwP39_cH$>EoJkntCj|4s^I&zdwqpfFy60}<7;Kf@6eLXrsVFVwaAKNK
zvm{uVWy)D@OpZI+HJ+bj;L2FrN1q)p;^MX}@wZ`IbJy_ewX>%Ea8=xl8=Bz<ily#t
zyr}n*Gp)HYIV>-gjOL8uF`ZWUsfOz4pUc`c_+k&@Gw!Yf%kfE(B06rz*IyS@1H;fs
z$<=H3^zpP0$=u+uT@!s>o3uYw9da(;1;csLP?td)UY)Z!Im*alhEVK8jx2K67*;oU
zad1#Y{018mjC-zwUc=cYW~csvYrdS`mHX3P1mw0J&|H|ih~s(Wej_aBCd74uJ8M)f
zF1)*DQIycab1huUWr*Ifr-pIah`7UW$QQT4!~K4tca4!`de_3bQAts=^Xyl~2!t~N
z;}pS_oe~WGhFc@)gW~rC>gux8Uw=1J+V&pMf(D!M18j){ipmzM>p@ff_fn>8SH->q
z+rRyustG^xvyO{|w2enG)XQGldd|<+!x30LFSvGv{Uph;?m-%(8BbO=+0SXI(M?%h
z%fat}0q8ua<xkp)$yziDkj0{<)92Iq3kU}oB7m6($2sISJI;?QtS}bg^k=>J5I2M@
zT1OBw)l}neTuumqNn>p~s;b@|^MO2Te7A}BhG^EL9C40Q_e8kUTLrR*j0So)5|RhZ
zt$cm)<{$OWEGv@H#c+I4UI1QNL0LM8EbM7}*4hX+t}5GhZ2y7;J%xF>smJyBw_Zip
zRKtB^8dj~jAGGXv{!_zhw)7H!^G!atMG=mfohjE;$~#;S4G3}_vA=rl!FrG8E7m3N
zx0E_=4-L4|S(W;?|FOk=s6G05Z>w;!bQ&h*EM+O%im*i#A>Vh$C)sNt9dbO}8J$;*
zc1w975$jVkl%*x@+vnHglk7GpSmJ(IkDgDblu4K;|A~wszDivmGbL}uO&MQ+95Rt?
z4WmjY-hD-+R*BBK#Mx^fIM+2CX4<(Jjtyyp_#XBq7rUVmwwWeg0ScSHur{A6Re7}E
zU;L_*`igH6Ye$nxWvC1R%G&crH(*#N8p-lsg02<xmG-k7@nePWkvRp7<N4B`eqil=
z)AU~A6xqcJYC}q#vgM%=tsD}Rofm;A|0b-Pc!ecE%caz!5z>yZ7>ncedk)D{rM{KN
zmnkJK==kYPF<N!6>G9#!&b_W*svdz8CL^yUw=No@bC;%h8gi#1c=QR)g2isivew8a
zMfm===1;W#TC#HcUo$m>?xEE*u{a6Ur_0q$Rn^=P-QlxUgYdZSh%xvE5@9=I)%yhK
z6$t=4n{&5QmZfuK(M>2~Zr(}j@f=kZb#!j&zQ(R2pJ4l&0Ho=kr$d3`qcEoTs~Q{1
z)Y%|4>^H$p;L%}DP<7DW^6w)Ri+)FoUMs9d)_oejhg8^oXet72f(A8~bZ0BzlXcDG
zKo4<;aU1knH_UH2Zv}Zl>QiPw_0uxDrk&l3$M++yNyP;YX(EW14qP{;N}{;%TWZtB
z$vNMjnVo6oGFugLx~;gkxygq@U&^Gt7j+L+=sLsBTjY$kJ^eC%m0Z41Hx+pBIwCn9
zUJ?}|exfV$`someyvqFWq_OWW!&Vbi8=c1$Gy)l*1Wq}s)UEaHJ?(c}V@}{>(W_N^
zs~X|8dS{028vJ<XOHMuHWLQr8GZ~hwGNN}w55*j-*$}MA56&hwzV`Zb!LtK#XRv3l
zvetd_1(~cQMEOY5YahKb2a&f*l>l*#3e!Hea<a9(!?>P<6DsXdosh|!`4X3r74%5c
zkT;D{sTo6%;E9Sx2;}HSh@13v1A^|V*<pFv!VJzMJj5wEplEtiOWlAC=0(C*g%!Js
z`#r3?{&hA7_TNjg^uK=F56cdc{)Ck~!GF4c2ak0`^v1`>aL=0xGqTFk#@`AfaWJ9g
zkWW~NMb2Ua$9+Pyk!tuuA;NIa-N1)mlu8=}4Ye8v7NA)et#F|g4ONexXkb<dVXPqd
z%<=362kX^kv=8-yx-wXddmq+mOx8QOPFB5NI+ZY9?er+L=7cZO-!NbQe8<Pk;rNxb
zEq%3oJ)HwF<bzW4A%19!jbUHc)*rbQB%0qu?F!q%vN^?~J@31kKEIw*J>-G*r>f|v
zs4z!|RUZr@B&f+bPBcQHe6q^!jjE?JEly1+*BMnkAl_2X;2%#?jL@UH8A-<@J3IA)
z&ffX%sQw$UenSzxBdn+#U@5T7PeIC?BaYb+{J<B-1H$%A9ao$)0K@ZV`zj4+mpYF#
zAK{agxT^f()AGtFfvQYzjw{w&<2uZ8<93o>hO$%U@t?~URKCyV24QMhExVMkV#T9x
zs0&zdf5`oOL&$b1L9AchjdnO8v}X?Jzh>JMUW8cm>zT1M+{^|cLsAZDife|t;a`qX
zupBTu!i~`e_biy8cf7ZFQSbYT>SS6Qp#^UFeORToVQ3GIy54i^$4$Y>ik|G`laGIX
zvv=N?uR15GSp25kY9WuMT4-O+<0TYsu|=F(PTL`r|M;f9V2kdvJ>oYr8?<zkIi_cn
zZYvxamWmQ;myP4e3y>W$7L~0R@Jg8Tx+Rx1B$vM13e1{_5oUAkZ%$Q2qpdb)%kzxd
zr|PM-rCWsRktIeWLZJkmxGzw6>hN=P_C#Qg-<uO0-HADKM!=0E$pq1aqDa#w6FQz3
z6Ekb(H?^^prZIkQ2M8mo%TjIDs}U4i-H(Rr9xC&SSUG!wNANTJ#V(`Ap$~*V<+w~^
z4?PHa{<6*GyUiaz&7emdHI@r#?QHOZb3E<*8|eut-rn!_5YBf;Ym=rNss5A^+&$U1
z6FSt0*78BTKFibUi$d@pLT%0Arv=K0dS=ZLbMK?)O|JQYxy5_<h&o8Co2&H^_im`;
z`S&N6<#()GABn$zos5XW;3r46qo?V%$zN|jCK>kH`0v+t&uA`0K3u2h?>JQwh0IHC
z>2R`R1L3(7ScZQ1Z>p@IXS;6dspO{9d(FQE4k6lU1oIdBt_{-}rcd(X>thRX$fWZc
z;G}{B0c`0h0o)c6w4wf?CHYL=tp&)@9P~%#$M5OqB63xm5`U{jrwDPP+}3q}%pYZ_
zT_TB0<1*_Dl83G)xfW_qO+`Lz!9?ABBflWMak4ts$``4WJkB~3`Z{iYP2=x3x}aar
zpAfvctUNCoZmES?|9J=&7+e9)>`T`aoE_xXEN%V(qFyTM?<mtKlO801CtuQVZ2Kn*
zC`lpiYacj}vsj=QM=(4V6MM}*swGcfw|JT!!nk*BU~LsbldCm3W0*obzY3+hu7;$;
z(rdG2yK2uMS(oP>K#4JVClZ+RrSL{mJ%og&rhcii8<lq5dCNhtPLz8=FW?c*llS3;
z)u>_EQ|~%x`RSma=#<|$Nd7oBoU8jGJvfVCwiaA>yyp1L;&f>cq79w1xxDyUO81oR
zV@XiU_*0v_vr&^rgNGVjXp-!7mGUf@6nuDx+GEij&7nu<snI4bWljwzo^m~5S!(Nl
zZ@$hB4%$?`3p<qF9YP96dtKW!JB8f)jOm5P=Z*s%*2J{P+aI)%j!c)5A>Pkgt<kWy
zj9`u5YE`<(J1<SI2=RWCdb5WKUy2s6xh?J6x6atZyzw^Emt->>!V?9yJD6VDLFYE0
zepz>K*JbrOnXZPNh4rlZxf3_2Lfnl`O>>Z;ryQlURTdJ4Ew+B@*yU#QsfeKa^!SS#
zIwns$oL_vhk9GW77f>rK-J^9S#r3DmOdU0pbJB{XA~{fZE&=-hC3_2vhkj7~Vv|%G
zCkI>Wd37+Dov&RX84DrAs>e#i+C=T{)3$fEkyOor)GHh<!T;W^T612#DpLvz?xI2g
ze2_%cm2m-88!hLJxhCUh8Z|(To1)6*kLhV2-I*e-PxtJ3(H|_^wil)|AMHut%d#(5
zD@fcmASAP6C0Aam84pk1%o&jZheJYjB9<2<Xr|fN_sVcgLiH4KRN2;{P|?;A`HrAM
zA6g3^mamU6{UeOCnx(yD&I%h*^ibimJ+yxN3t;ER*vBxK(W`s*j1NDi^p2Be@akSn
z!DTQ_X=7kLNA(Nym!<|4sbZAUzUA^TYG=1RG43lwE!S!O9cC}GI!2l>CIdh8URX4H
zRN=)?=nZ+Y7TZx)XGMhSM8!v_?EhM<RM;{SI1(<Usn6*WJly>e6_|nELX<l;usH}o
zBdNre)T!Vy6H_?NnQd>D+Vfep+3q+d64m)dV0p%eSwlEbuS1*sy1p4M@@0O_DzwUU
zBRS{ckBFZGQWBddOg3nnbbfo&+1h3w<>kyG-)#!u!&#nG%pxW4><!fKgZG?Q)4z-;
zRoJ{@G|PC4($KNMm!`28(<QI~JrB$eRJ63JLTY!XlHg`wQ1IW@L1}rYG4BTbbA|C<
z*ZsM@<ni?|Z^j}n4WYp=ElsL}f+1eFvQOq@9j5J*RQd~J`#Fc1+N29DKGfT2Ld<2A
zK^+Us$G$XH7WOu}ab`QRpmw)(`<_F{oz^n?nsw7x)@#aTp=oINW^H1b+8r_`KY>xL
zymNe{4gvRgty8VSG@~B7@etgUA7PxTt4v8xC-VoY@imri7^4u*0=$26&UL$pGmNOX
zD;*fl(H>>9xt61~&XD_Y6`N&tIun?GZ}T?5lAU1LO$6iy0CzOQDsszUJd)+Xn8ZIh
z*b)+6h9qgg-|b<QVyu-cZmizu@Ev~wfwgRV+DrhGHNK?A7?;}w)F|vT9vP(XZrM*m
zQEN>eP$!W0f2>(3fL2O|?sE^1e1j-;tH5xL-HVRRh)25T@pj)=MI!9|eFLbmrpACP
zIkX7AyLH^Re8>`UsADT0-uD!iAw`o!7FawK8cXLws75=FEj4v3zA%2JRQ0|(v+P5!
zEMAW)V-VK0@?awk7{DG>4_MNv9^CaIO%>%$r0cWTVbY+-XNdKl6mvmujr!-{&M?sx
zJweC(g$h!&$xg^6TgwrnYQbHt+qnGeh49T-(#yd*-Y_CFXWGTXxg~eSf+2OheozqX
zysH{+q-lx7cpE``KW~XJ-J>LjtghHp^w=A%?a0%N%H0jg-U7#HnfuWWr>{RXur;M%
zLGc*(bEfxSyjJhm+i-7dw5vSTh+~bfZ#Yu(;`%liRWIyZE?Mp2;KohNO!)3L`y>II
zT?8QPvlYzr@128ON(kUCcbZ1uPljYUp=ox^TO;f@ik*manz$<66m+XbL7UEz%Wk9c
zj_w157X@x)__#OKqFM<$yIXBcPxPHs(emkp5OxlB<;DRXXw})#Cfhs4E9v6~ao@9&
zw*<Tnf02O~N}Ij$WF{MC$z)rl5@-|5#rbv6gUz*=u6(0SU(27WFhLB|w32FI99;N)
z9zwte89Rq&Uw@5<IT6ypS2v>9mvJ|l+9fypah@Kneb*G6Id^4Rp@q~pwqp|5ynN}p
zV%vsq5DHWIe3y?*(tx+csDuoLF%0Q+DYkpggnmEviC{Qzw`P#-0C_7u+-Z2XfJ~Qn
z<Y=fCWN11_H@!re7aV$Z_+YPX)~6lq>z7dJD$NuY!Js68AtwRfK+(^wE)JA&f6XHP
z7z^gJ+y~qP$pjerUC{9ng$WjpsCRbIzF)~7KjMbBcH6s7BQH&IhiaRoyc^-kT#v+E
zn1U)DD|<{Mw?^g?)4v+m&@CyU)ua+5xFBLnZs_cEu~I8JFIVv*cfIO+S0HaW5v7L2
zL$<=@%FY{h%&D_>747o#%kZCv2QXjX{rHL?l=A3{sE&RSZyU^LO;M-_x?zRo4GHv>
z_|kz!(jKf%Q|c{;)&|#NWPXz|=!4TEREbnmRju8Lsfx@sCJGw>6h>f>4q~AdMeKT_
z4<D0Kgf85-?HC4+WoFWA9oBP|-w>Z^>BLE4-VoAtg@t7fP<aDE?uqfzFT-yt&vU&b
zTt&Q}Su9OBcfMOwTM~n~=XK`3%Q>|ghgVgYuFLo#I0fU8_+UoaAhzZG-o}F3b_<={
zZ(9~#uNjRszTu3ZF<-ZBU~;M}azARJ)8+V_(If}&tzE&?CQO-^wV{X3{h2`T4aJCK
zcT(%UCCe+}lH`g5?Aqt5zq4ywG2E?{<40xO#Q$H>K%^Yy#B{psa4*<2tjjbj|JqzF
z>y&2_mv#_u*5q>uZ!UikUZjv7F+!^|-H98zNR(lPa^yC7zz=hIr7<2J==+FQ9&zU{
zl___TDix8WoX7CZdO=7-sB5u~b^wtun1k)W6)KD~ns|3Tp#yuBMiFDO1%X$c^q}2I
zxK91%cKw{zf;U+*$!;s`3H`TE=A&CVYZ{t8HNjem!3H+=16k0$sb-EtgZ9cU)2t)5
zp5ry)cIT8;_8!|a{%Si*u8xm#+^9cet(^wbpR2z%F?az&liFOfVWUt2^4kKGw{=MZ
zt}!x+7DRMX!txNyqsxbn1x;6dUGgP5<r<W;RhW;ka*;o=nk2}cX?=RhaMJVX4H45I
zRP6VrLjfu6?m8#~ZXU~gf6?N}ASs|DTJs{0Wupx}Z(r1fiYPz3pd=h<b~Hyco{)5!
zUe#FP2EpnhBX%RknLQH~(^A2oh)N932F3{G9g&6e^Xdd&(9z}*Hxs+KgcA|3)FNQL
zg{1b^yPofHB9H#G8lCpP-5ukQ<h+&%O6++p8$QkO)A4_Oh`+)?hE0D66uL9#Oc7o9
z(U>f8#`d~7k!wLEKa^D7{<CGWV6jzsuS<3sDZUb)7je<n9Lc^VJwbdKi1z&ArUlME
zXv?<%o`xH_a+Uj@!sR_$E$mB>2J%2r@NgYg0wX`&3QHU3omh~ENH0T?l@R&8>27<~
zt1xok*r!wIio-X%zsh`w@;iNQxq=lhh2JMpcd)5^^p|U_Uy^~fh6#9nSV!X8!3+ax
zCBDwG(XCj<n^CGjW&C9xTu4%kI(Y7c;AmTkwkZTaWa93HpNPsoq8Lj%>fk}hQD>_7
zfYqCas281`SwogOePBuouP{?+u*qG~b?CXOLKQxP_abk~Rdb&w^%G(FRDp4SP0i~!
z-N8-fiH7$PtFI-DGWev<VrVNHVXN>A(Px2SDQ_rTr!%nq^!I3Q;mGF22Gjd%BOTQF
zl%ivhr`H3V47}O)!vhsAs(2n4pV2I3mbL{)u#*aTK#IV&ut)8QsO<sArt`O&MS;_e
z^o%+gW$WhiTlb^_II1D7K)oJ@zj6D}v50kFHe}681_lV#bCygBjVoScP33R>A?IY8
zl(V<dNPRs0z$rFaR7A$br8u!Z9lQ9*uc&P=Py#miTeoE}%p(5uS}-!mOFvbDlRZ9~
z@4g%yzzQShxo)XL>F=Xiw{V0f!hVAG?zs|ROhV~siSdN`?#9gf!}l&ubyB^oBLelf
zam7;SW@i4x+~tt{)FPhR|8(3sM6u^ea=yHw4PnnJjW1VMW(@Ua>HF=WMj0r4(H>?;
z;4yIe*Kkg5Fm`Ls>2V(7mCCll<LGABc)srlW{0aw;j2uC0qEm`z@Eu8iN;|>4u7vM
ze9pB2(U@fzavjzjrtYT~VII<TU)76GLs!fFfQ>}^kPk|{E*&b!KasZ1m0Wybs{Vm2
zIMDRAQ7Qd)&eWr~`qaA5(i?h9;V+}ub-YX+fm~;|;iQ7#5qIVRCo5`dohD5YJheTh
z-%dZRSW$<usq{K$H{pw+5I2{$3D^-b3v;|`(3w2ra(2vGau8VXX3z69IadY8cEuwO
zl~{|CO&|Hp%10^w`Qqwi&dS)PaDB)E0yNUAr)CE>Z{H(HMaev3IgPA)x>zN(RYvw=
zP~cIJS@X4_R6TgFjbPYwoo9p_Cdd<PP*Q@c#y7zgnsQYz$UjLcldwztoTU%@A2z?z
z-d*mZn9>wRNd7}m9M{`HJ3Iq-IGoV0x<Z!qi-pue$EiLiu1CF#a=Szm;8ku^PWdiu
zG>#`FX9bm%_cS@hN5-l3IYr=RWGm!yM+ZM&Hd@VN(ieXd*nSRVm3d@*XCB$5A&pHy
zQA0;XIy@nw6-u&qv}#Y8zpMcy$;~uxe{t6yEigHlCtE5DeKPm(!7WM9AoSO4aGz|l
zlk3Xezao+DS2<Nf+32f7>vR4Vs6=hgH81dJO3IALU7N+%N}F|0Ip#$fOw1lM-8e*d
zWbtWD@57w}ti#Z%IiUk7Qv{rre&6MDP=7g`)40SKYqM8yg<qjUlR857M4Dt-K+sO-
zS-tPA{Uh`4R2{1;TA>2JigQximL<I9g+9zFr0z0IT4iD0NRE&(_D8tSmz`c4v)smV
z&A#R?RFH9$Gl5n657FJNnp2ss8p7P%0?&FN<rv+hsPEQLmGR$eHcIKyW2B$WPa3WL
z(68PBl6QhG-cnxEDI|-&fmg-1w?F48vxjM@sYoV5uR5n|=4#_4;?U5{-Z$F`P&R})
zPpK`y?v)~IoYuMsUPY|VfI!Gfk*>TgZ`<7~^t+BWNcL$eO|#b;^wBAr<t${?KhT@e
z{%tlf2(xNSk)g^r4!w4SvYnxl2p92DS6NuF`2_wBTv7QpXS7H5gO=Ar2~E1k#QfL?
zL476_t=H*$@oVl<dEbnw9aodWI%H1|M)l$yU`WFBqmG^hV4o`uX<#*$!mm&$ao%gT
za)Vdu;?IXGnFV8uWBJI_36?f;F!S+-&lctW`3g*wz&EwcZTeT1%ngCNB(p<cwt6>E
z4MeG~J91zxPZt$&I5b3X5jc}^nnTLsL!^~sn@B&BZs0giTaJd4w;yl{3#fA_2MUjo
zH-fiaJ(h9n_|{SKw{^9A(ZWqzL55od!pdxSQo1k85VoOJA0)`6$*UfoUl#3#Q}qL<
zlGz^g-^{-|KlCBLyd)Q)y*`KXF=NU>*ZrPRg_B4`-hR8}Hau<}T<!dgbpL$)OF19!
zF4VczbY64|WAtk|wtd%wf_pKxU5|s5(fefhn_GUJi&A3cZ&1e_qV;GUFJ?_Yw#Qb_
z|75;qWD~~IUY@`)yQ>8c;ee0AmkoR0g>S(qJ^~^2Y<8byf3JhA5l`V&L`Wh&3;b0l
z5(U6yPoBG8a7#d_m46C$)JPqUQrT?$D=aX;VNoFiajVaU(7mC?x-1CWCc#n(7;=H_
zQYv{>vcIX{T$WQ_=aT7&%M-OKyo~-HSwvq^g%oxEjC@wH%wJANI2E=3bmR!oNcFoU
z+EM_wUMZYf?r83=FS~=;K9i%8JjY>nqMNNTU2ZG(YC1QVZ>bL_A5Tubw|NN<=Fa!u
z;(SBD>a~9_)1<o>qdoXMqW$hsmiz{2@aOs}4;J?7VH7GpN!Lzj!&rQK3oYD;Q5d-4
z(LXvb{NON}m5xn=)I7y5e95iT7Rt)4d2VXw9lMEXcCuPddCDBm32zCwUG}o20bh_a
zudoqgUyiLie|XEMI^Y_LDt%fmthvcg&9TY$U{=~XUe}FIiH{$O(-qzUwFQp(0a13H
zIi-7R=D2qyi(Q%`PDduU$FQEN)miz;y|k`0Hd^J3AsN3*M{_%aUi(b`FPhHtpAGlx
z<Jmg|5g|dW+N<`SL8;oic1vniHL;2&L5YaA-|lTxt5i#e*{Yb`rKQ!XqB;_>I;oZ0
z@4@{CTo0}%*Xvy8oX`8s+S(E9?uF4$u6{Y>ETczLFfNOT>^0x$(QAreWgFRm){YoX
z838uKCfmy)TYrF2iwRp+&yTZ??Ox*qbDp-<T7Y9Z3SP9BbTTal9_7fNQf5+IoU{{8
z<~0VkKaFm@ru(N=3-UrUfpy3`s2;ukA~p4;0?N;0PeuTvqLmIQ;JCzrMZ`gHYimFR
zOHS*WGG73BqgC7c*VWGEDstb}r(tK`yokKdB__574w3NcmtnQVy&z~2ez-uUcW4(i
zQtwwlSWxCdaAi2W5rk*`ml~K(-Tz0dv5*XHgZ~g;P}Zezc(*i|J8*6HEP6Y~%u}*J
z*i5L?p<^z3@rPTMIRQp(R&r1nx3DCgIC)gl305!+Vp%t4a;MzaAOp_PZs>cNl0EYl
zb(snJD3yau&ln~_7QNm8G;qdeO2i<%`gq&sUy7u@*uHq3I^j^W&7Mq##cJ(H8840r
z2z55aCPFRA2J3f{Z8=Vq!h<~4>7l7nwG+ZHOaBgu+~m*gu^x9n3luYC^vr-&2Slc$
z9>0B;Os8CO$nt1QWcJ3jes7(Rv4>eNh6Mt=rS8I^6y%hi&R+|Fjk=`E{M=ozJw@<Y
z29bI}!EZTe?T;(Q#nw`9>VA9K1NtOtMfU|aNo)InWYGW~@FC>pJp9~JDlbVR3wgY4
z(Snw~gCBM<AJ(q);XsHipvkDLD)F7`@Qv;X>8fNzHLjw<a4){&D(k<5@0A~qV_dWa
zq1dUL{RuyCwuj{R#3`mH1v;?^lpxw7YnwEzMX48_S$uvhH;pnoBT?9URG%uheP+FV
z+)#?UD~+Lh&&UUg=0OG)%#S3?Tz}yQ27j4)<W*PeMPEHR*v}=!B;QC!{Po)kYkJGr
z)*Z1_66mDIu$G;iuxZc#46XvuXE**F>!hbFRiw)5D__KR9HgZ9LD~YAqO;Iil*GeM
zIvyRl@^69i|4cRwI>IOqEL@teY~Xn(0~v~>9TzX!5#qEu3fQjYO~oOlC7LLR)Iyb7
zq-D9_OGl5>U1z@3_zy{nUh}B93}EX`*F21}bsw{J^jg}#f%ddbrW@F%(iajLc9K_z
zQH-`2!^bF2povX_5o+z}9YW8PXCR@j1C&+>--ZzT|A_4N)+0Ju@iX_e;VO<MgF&ot
zGwfEKN%{P<dV0hyOU5{Z`G@5=w>359ek~Sn1X5s%()r*>y(IlnXx5TGJ>{)i^J$)u
z^wX@+R<)(qt8Yhzrw}%-MHw(n{Rh5cy)0QL-Ijlk+}m8wJgRAxV2R9G3pIhv0;s6{
za${#^JSNUkiV&oWHRiJuEPfteSnnlu>wCl>pL8U5ti|E15nOqfcb?``U7Z0qngM?J
zOIuqE1RVO|-0!H9H4mk($`t+^NT_N#-U$5|m{1e=7k$rg!SihJQ-~ng^!YnCmGtJ1
zoJA{AS!nmrz`vLl`luD5un2H~Eb8b(U(_$m&CXIE!i_U_$0TQ2dWM*)Z$g3cE%TBj
z%p(X-D-YR$5g~6|ePFyYtiu9)RBA3#;&i3Vna$r!%(-wA*|EMhnJ3zhGx|~_?yk9%
z@!Ah_pv~C;r*jh^qde@nBjDff+Kz)g>ytSeXW2`Wi=i4pZ%zLA(zFBol3-%pmC#o1
zqBK`cq)-(aGPxGaN^`RvgrWh0*wphA`y3!F9e3mI>Ob2NBhgZWkW9_-tdx%iV6M-9
zQpMmhKS(JIo>Ey5q}cI=IJf%>Z%OSph3Ag%I8%p<a_rEe&sA{^c1tjPZj>*6m!i9y
z&Se>O_Ukfco0S=yA7o~gwhlLhedqvW?Bw?O*N&|5xC8BD@58p;jJ<O-F>5$1;udbM
zYUfW?e$ci*G21QP+QDBnLAsLYb}@w5fWaLvC}(q}LWycsm~t4++?N6x)$8`tvV>j)
z5vHow)R6J{1<=m?(9%T%poVZjf&#%{OD`Xl%(~6gk}N&Knm@vhG1;{L`(99MOu&>D
znMesNv~?E7eR~o1N!`^n2f~Mk$G+moe@F4oXBUdCPe=+Hv>*q3>SCzHA9#+R6s!<6
zkcdnKu;bK4yT1^}d*RaiJI+a7eZW{b$_Nle4pL25?n>B+H!YouBAJez+8w-O9&@S>
zkmpUhu4w-mGBH&(Bbs>sTw-+%2kG$&W%)*(U2fesrm}|%!1=-HgZYH3q6_ZaY|A5A
z%9=m7UD`AdzZ0m*JFGWu#Vx;j3~+t*+D(n81P3RUHPe;ub<8OOaWQv0mW&tDcIOPU
z355meZl(}dcnMqWz0_rPr6e}g$+T5#roTy75BTH3Ka>pv?g}u-E+Ge;!VSfs?f5I(
zN<%w${si~E9y428{4DrqxS4km0%~d`F-*z$hKcCj6~QM3?#Va09b>`#qCgnt%8-Tv
z39%^OGXNndJ=DdRFnGd7%AUu{gq8iB8;A3H6P9~cP8Z8??lI912(de`{+H%kNO}f^
za-Ex+Gk=3g4{vp%$Ur*%8h)GggWFu!ctc(35@OaUkLh+QSbHGp`2<R0LVHto>Iak+
zadv1@o8P0HQb;JaUQ1w5!1*%y%05R{*{C-~*w`w-5{GIT7@yb8hUhs~XbEYB>asf!
zJF-z(gV&_)3XX%#`oh?8U(E+<iS3^<$3p9aljGda*Jyk7(SUh&N>xxoxm}*5*vRbo
zQek#(F!|~QN6XT|k;Qk6LiQsF*e<?3^z2$e$<-=}L8gLtu!KAK_8PCr5tdPhpP)22
z(~$w}Upv}~QPIp6;{2~a^ukSq7m3+J&vsAb0;eFSDLe5iJSQoyhm#;bj4qIb;|JU*
zP$i#)Q1yr-8uk%MXf{q&^5)R}G@q0+vs8$k833)wAU=uec|pnxD|{_hi)i!vfp9D2
z<A^q2D|gOMU24iG1Og5ff)!h7MxxF{zax0Twz&D4Q@t)p#Lyjit#xE&H~@)QG|E3R
zMO)eCD3m_bnpCZgKX!!cD_1e)-^i6%FIm5Q)DG4x8_wbtp<LMj7|XUZmMHBABibOg
zFeU&km=D{AT;8rK0lcyk_{l#RIIBp|?Z%$oxws!Au+mTJk3@D`0O$zeV;enndY(08
zuI#2fa7e`uWHh279iKHHnRL^PKV>B|YGVtYMjc+ufIHg+c4mC%yy4Ht;JF%~0CU>I
z{ORLPb&^wt3{x->jNABibzSxo0Q(ROg%JTkT0Cl<maUv=%m$*lxhj3-ni!s=&DtpQ
z_RCFAyd#`w2(R2zc})FT2=!wrm8~kHCzs$94@4A~q+7a0v>)O5)dKJhkD3~?t&48)
z^6q~Cm#^S?=ys%KN{7qJlHcbO73Trwh;+3cFYB{8IqubYg`l>%j2xvct_#x3%=ZI1
z1hxi~*s8$a2xh-&bcEIqG|k%w2pkUSqP(XC7`-@=h9GBAl0DV{piU3aViMx6sPdcj
zVs#4|GQ=Y-6hqV(yZ*z6-f)$noD6t^yGGx)DTv2-b0k$7lzD5{R@D39!|jLeT=qxk
z-b2P+SEIY3@F3bli1#pE8~vJlMI6QFel85$CD{@TS;_P}X~{qE6LL(Gx&K%{!t7!G
zzP5BG-DNUeFAk^Q0$5<eQLWAjtu09awb+$8g~P4^KRB=lBFp2Xw1>?7uNej+3HB8c
zSWvyW0awz65(PFl>i`yot<x=*D4DyW@NO&SWJc}49CyVb#3sWiD`0C)3fDdGDO-}^
zoD<Z;`rNe&a&HZrVguD!AJem*<R6p&d+`gB<0CW`7fVk{{P9mWqC@2pLLn+s!<@%U
zb$`L(M!nI4vD~?0h4n?w_gR*$y15M4QzIZnsWAJVqbaVPzkMxh7U0ELK5EkbB|@gB
z*aa4=To$N)Y7VQk%T@g}P!M1#VonXmHA4_%E=58#7hi&z9%yk2xLxPgDUtgoa1q?m
zDJ58v5u_tt*TJSwu=~d%Y;NZpv0jhWc~P-h7QH6Uw+fA)!#l{04i1(2S}OnA?w(<q
zU}5euGcv-dzF?5nnssi>G4{#&P}k<+%G$ARgD=Zzc(|%t#ff(H-ODwv&;hiEJHmEf
zFubK(&<U&W@x2xo7ahtYove(NmppZi_Id(1mZxnP78R)ZEpg6>d69lV?bo4R&^fek
z<V{CG@l93hmh@w{T$&BUui`sx%4tLcjjs_{Jk9c5{^7jsaRTYNURnsg=Zt0E6;%pt
z5BA>W#@!&$r_;Og9=pB~Jd6Dh*wmck`a6PlfH@qNUnQx{PoeewQz+9+my}(c6}VN?
zWz69vr63k`e*>#9PqEdi3Q;70+z0Ep{Cm_NjEl~Wek^7khUkV?`}i^ZRn?b9Emqqc
zG`b&5&9``IAlc*ZA12*)BO+CR)q$YmQh<f27x~mba9ZC{m_6Tbx0bIZ2;NNPjD|eZ
zf)xAL3}ot#fTEw(8+hU@^@i${{2{p&Qg5ll3B!Od5ORE$K5@4qaM%y!AKJq5NbDEC
zi712g>B#<yXg)Krb8u@7tKgZ(X~ORwc#qN*-z4DSF7w@WhGLmvOj}GlP>+9|C^EX#
z^AV<D@=iJ&WNVO0QgX$hfsPQ*?r8_P76srr!EvHGm_rM*A9p7r$UbDeAzRuJ`P?O<
z)?dTBrzYbmtEJfMRWw;U`p3|#hTG7%UuAawna`-8Pq*<1R$rCD)m=ZD+e;4)u(v7y
zTgqw!KK)6{TvF2P7@W*qim18vS;4RYG0a*Es$Z;%A8Aw#ox6Uv!-`tnMh#B7!Om?=
z#fHUb|7Ipf8*331WV!Z^W@(%&(=0nkESN!Jcf(mqDW6&VvFZ+9I$q)>qE%=colViG
znQU1yEep{``k?g9gg3Ra(1sgSj1_;=#v8ZqoMfpx1r${`Evy7uuVM<aD2{WQQEGJG
zHakgnG~wQn@s=D92v~0yFvktm(yENsEQ-&PLCMndAx_Qn;}Z%dz+4VM-$k(jG5!Iv
z;vrc~2JSx?FMa5JZ9OiTB|;!lw04eryjgYJBmBjUP?PoYa3*@Hn4y+Z$)_~<0z`2y
z>B7}VDD~11l{SV|+1*Z~G<4RFAiT2xmvBQJ971^#l&>`_tQ(Urjy`pWTpu+3#hsir
zmI$Cj)zgJX09=9v#2p=!#ErCw$-7tegi0=<s<Os`M~V$#3cjQ^x5qC}qIMi3Z*@dE
z)KStVgfRu+o-zpwr8q)uYRiAPW~7gCujP7WZE<_aHMO6LzSA5iN8V=H^TETuG0~Mo
zz0EOgmd|svmlKRPp89E{|JDbImVOVzK1vZO5|$<y6pLk6ioGOprJ;|RqQ@LBoU@bu
zNp!EQZIIP!<8BFz2#;YtA>$6;_?dgyswWHTSPCFcblVz~Mn0)-n-OsCR6*>Dj35Q^
zTk+J;h?!mPs3Zs0QM0k@x07x_mX_hS*SF<#sS`5?zFW{Z=0R<eesRI_dv>!}h23y^
zX!v4n<+IGA7Zxj39U?=8@tRN0<qRl67G(u2wO$g;d%ac2R4G6RgjKa6l1;INZ^qM9
z9(sy1dEIN2pFe{D0L+iCHI>M2jEBmY_SmKFrD2&4V#HFRyJCr>-EP`!n%2Ckm|Tce
zGz}B!wl~Kwxf3o0(Wq{Db7Qx<YaSO$rkghJGX(&Wz;QcdfM6v%{>_WhSY*=7eE{r%
z>6j72CI!N^<DkzFTbm@Elo_p*>u%E9&@T)kQG^nrY*+Beov(LPv06IY#-a^6Go!X+
zEv<Q1m~g=U<WtWNB&b>cM6KL;W<a5+qjbu4?SB9n-tE9k3w;8@IgS%txmN89rTDU!
z;cd%aNM1<@={IR<(Ws6}H0Y$f3M{%?HD6lqFP!Nialn{IUk=g+4U5Xumfom%O1AC?
zJc@BCb0jR<F(W&B$DHWejW<m@K7-quO#~hZMzvU|X3jSqi9O0@42`qkI7BVSn3`A4
zd>$cuEh|@F6Z`6rUL!`gVG78Rb>iuPq^BQxS1+Jn1wg98)S$f2>Bn>&+u13KOU<;?
zrkYzpE!QfB;(Npu%nJ9WdfQr1yqTQwb}Ga=B5q#;?Y~>Hrb-cL>pbm}pJfoqU*{8r
z=2-{PkgM9jOwzvyh9+AG1WE1(Av0T&DKC%x5GF~$iKLtK$)l$7Xs9eq{bkGD#N@pa
z2qGPc95Ww#PxRj@NxYLW{(dYIgD%L}N5V?x6X#MAkrJkg64EV-!PUGB9Qu%K%iV98
zQtB(9ObHoc(fr)|mq<Kuk|l9~XnJNrW;N>&S|b!_de`jLYZYxt%J!Rp#PRo1>#7Pw
zq*_et-P_lQG7{T~R3PVXO5(T?nj~wio<@*3pW2jZLPVw$gG9smkrTOg(|2Hf#&V2A
zQ3WI?3xhtWW}I@I*^!FQ4Ah^xxmJLEO!9vMl=xyR$TI6RS+@I(mYq@m3*`G)yyZ!J
zCB8y_BThVD&_103IlO;&2W(@)cJ2`dAlr~m?eZfFx=1;f7sp}3+j0nGt;~h+{aMQg
z=;~TsRG6>~S6Se*EJXTVJs5O3Q^F;~cH;ZKio{=;NXPMg_OE{Jf>{z728Yi3{4&il
ziq79=E7O%V+4@MrlPu9r6m9R?r3~v@XkEjdL_R82UI$3n5$E$K->f4I4!v`AE>eAe
z<$LFv#I_t~wXU7A;NJV$d6U2B65H<uDoRV#{<581E<AS{*;zi2uUznoJ*-CnOm|7U
zOTAg&w~5~0^*dK5zAGXJ*Xey~Eu_mc%}TY)4EYFh_(JDlS*NbWRG4B{-6NE=L08`G
zCbe8NM5KBgecs{46&RuGK?)w#MN0q~Q<S)8V4Q!aEsk;DWs#^kH^px`hrNdZSsxmr
zh#ZDiqxy)O&Q<AQ8*{ig8*;~e<TxF^+f#Hj8w7_HF34n|v9P3sV7C!6K9Irb$X8pX
z9O4Tv{SOKX!yGP)9#Xr^GwzO^NV=PNpx765^q3axo-rNL&8FQ)KN(5|xjuN%q44Q*
zVS&M6wG3%Nf`<5m$LP0vAJ^58h`oV%sC?t@wOF72&OIQ3rI8bEdkn4WJ=iG2r9^$A
z{IN*#Jgng~>oMZY?04xg0~!S4VoW7e70F7t1#HKf7EXD9S}9ZSHCm}m*TNn^zI}ww
zn8Ni_Pr6;7*uMvcN3>ntN~nY*PGAvEkZUj}RN5D(Y<c;|x*8Y1bU%f;fn3ZH{&|8@
z%{%7oxiGT&J?S<(7n}^)T)m6X#{78?fDR?bsfe#gldi5}!*f<{CGE-dy2zR@w1-R4
zF;f3snx{el=iz?f3#cgC!FnEhgK4*Zq<W|ym=)q?|8hQc8t$4UMO-PCwT#=&hUpJ<
zf)sFGMu8C*5uj}@*~`=v=&v&{<YGLa3Fy}pGBj~$qrN{jH08*lz_E$Y?VGTY{~Y!W
zOsdBDJ`WJMNOU~3*ks7H%LZ2!mAz%q7x4EnauIv%A#ja%H!^X#TqX>`xor4iSl`(P
z154Q0qHBzMz8$rrW|qU)B_mv^p8<$Tw{1zVp->$;=Yz*~#}oDX5Ig}k*jKyj;!rR-
z!WSG14GnEqRu4ZfCzgxk9dSi{Csgi{BSy;GgpfdkJO+QT@cq$O-<W<#b`jFLy>5#6
z`b_=_pAjRy(!T}+`vI9~^i_aEk-9{cCE)VyhNoIcBR#Q;^8Pna!F|JEN9$Fw^1rVP
z>_g{A@k%yOW%`u0&9Zjp9DtCZE2mXui%5VbWjfZ_N|ZUs)(4*5QGAmj!Bmgq%0^J!
z%n$^Kzw{8d>-W7c!=<nf-A~gW5!reHeKzG!p^}T^DSUGzxe!TlwUa59{_*KfdT<H*
zdfDGj0F~v8=rV*DB)xg`@~9yl3h&=m`RMME$*PX6KKjX=V&ZrJ)wr}Z+{O^tVd<MP
z8WiBO;}f$mx+W`AAW*nMHEl0}0Es*gRM1>~G537ZQzNmoz51n2*{*0oyn)~Prnv&L
z#<ZLMr3%hDQZ@7(s6%4Gv65?HBYpNjKwg0tUU8pCaJJKYl-oGdx?B*&866oQO_7Fk
zaoWl``8abqXHO$-t~^-rMy=&vGzV(@_m{bfDN5|pY4t2alZRKPpWoW)&BizqwV&yI
zbGEX?RE>7|4xDZ&_FSzV-3AV-(f_=$0kMMe4?=5TMz3w<o5&A-@;%MU1#}ha88yh4
zUl*|{0kgWN6sLWyrz3h}KvxvwJ*Ko3o;T1bD=_dToqOa6KvdJptx+2QmW~h4ILDNy
z-{c0e*5c>;5Kk;sm~5}i=O;as;GVlp?1@(%7{7kA1Hk<sg6;7seTcGt?bLMbF5WI-
z>*=yaH+aee!PMpU(zmyr{{q|w!*&Uf@AqUAjKZR)JzzY_gZb~KN4x=hbTVR!C;NxR
zk0uq0o~CbbvoSTLPS<qr$Y*=Q>`<%qrA^~HsIx8_0T{%3#pExD)c`{#!55lf^^SoA
zH))+F1C_^`S;Tk7p?bSkM(1Ih`k+K^5{8?B+byBJurnJm-I95E038t^O)X!?(Pjl+
z(h^DMs#VE~`?kN`Tk3WIC4(UtqPD|I7K{z}kM;gumQy)=lJ%r4Y{N9F(ZyFQ?Kt9E
ztS(J<*@gC7CJ?jvowG+>&+a*Jye6)hqPPrFk}b|YbC`6AKm83MtVxP*gPMZF*U$*r
z)>@Kr!%7okx2Mo;YeHjTX|5=8{D9jxBu0>>&vV^zJd6>?2PdoJjt-4Jrz(Lt*pj*G
zkiH3?h3KglVVFNsu7<rfa(8Eq2{p?;fND}Ulx5zVm}nv~vEdP8O=qFcOyD&R_oThG
zxqdW`S45#ZoqIex2XT@%rlN+DFj#N(GoIaJXI?l+d#E*bS3QW0XAM%>BQ7ICTNtqH
zh`!z()ctDJ=QcO*eW(L(clfsJ$Y*dUzl>`MPsC#gA>q9}8onEe_URN}F1S<Tg(1*#
z)(zKa3}S?~lt#>m>;}T8+=%^P!=RA*Gcc&5YN@kHgl-EQOBq2RprzjJdy#nZS!e9E
z@iN1olDQhTV7X)x9)PxSQjbASjGzVvLBL>w8wObF#1RiF^qF1VMd7Atl?9QwPU@)z
z@owWVt(&VKp<F64LRYDD03i(v$jq7<K=JAe2fh#10(b%BuXjxt4u#!%;vl*U32FeG
zX2rZR0_RrtN-0@8+4*YCuO^j+R`Y8JOp@ub)wes{O$99yxGYe%Tj)Rn6gnHl^nl3^
zI7)ye*$yehgQW?6(voay{6w)E1N_(q7_5>muu3+qFA^)D-^>01AHN3>>ST}-p4Z~z
z(@RmeeTPw-<@i)U<6oY0s1>Npv*x+VnMHY1&>w)!o>!MqWCfoNphCp;x)*feGZm9;
z74VX@!#kFE?Js;uYX2kHW2n4V24wA@;4#)TF}#!XMG=Mahd}(Vq$wI#E6%veY*F9~
zjxo_exGjkEZ<+DvS-<ubG6F`IY6ioZU6RAIW^`olp_BX*;JV~2n~MbyFiiVHAshi8
zUF*5(hG{Dv){)gLDBUG7;3gTc-mLbmbo2Fa3V>K%S3JQE8Oo4Nc}WW`j9V@aesI`V
zu)6qDntA#xtOvK6Mv!sk9a3n=r48*?02$hJyo0EdwpGVU`~l<wdyUJ;r!30LhhbvF
zyfP<{?Hlt9C0h_3W(#Jhg3ec4Gp{f&X=#JL|3e;AI*R@D;uK9fJh536C7VRORCjqw
z6|lp+837ChkPv^{JtUa^2WCAmC0%Z*z;lT#Q3r1S(iRE|1>`$h{ml5y;|X?<jwQ7q
zA<=jchYAiz7b?V#HSa$-)J;w4k#NF!F)2-a9{F5k`NWv?nGWDjYjm}?*1B%8#RcNJ
z!a9L#t*e#<IDg;$wscQZY&q>^M2-|Q2b`eX<-*YC?$+}nebCT)$58nYIGW-7;k^vO
z3lZz#0pGpj(##RviYQ;xND16WBcfBR!iuK?z-PoT?3|DT@)Z+b(vCtm4Bj_hl-KhI
z7mD@uFoJUABcSlxrdZ6<q=ngdNFC0KEmK6UYYa_boCl$$d$s`CV)2*9O2lx%0Pen&
z*?A2QoA(x!OYV}n|L|j`c^u61krMR?RRUmKP_G@m=MYQf?PY$EvKd_}1Dg@gRfP5-
zvhfi~qmXX>&Nozy_Sh&V!YD80gF2g@O&eWQZD@76ty0mec`H~O-aTy34|cweqip#F
z65Ct}Ykxwi%->H19Aw<1=0YFNS-)}o5Xz63Id^2I0`HiG*#lz;YZmrY7=RRb?L}lm
z)HaAJ@V|Gu;y6ot)P0*4ewCh0*9YR0_q5Fso9YzPbnW*1yo+$F92E6W?q6}LftHi%
zAaqGuse|s5tZ7Y=R2|TPc3hh1r0PDGFsMVK&xS!RV9o&71;tCYC1&voxLTFViQQ4L
z3i!LK5@Fq!Z~G|tPL^8~Uv%y(zoAfoSEg3&s0peHuJB74K;KIO`spDwdiko}>&gVJ
zhO;<f@)OMU1RsNS1M9x7c~MewKV}w!2-bI{7#@f0NqGnsXg|%wa(6;#@4lke5j#ZA
z+ArO)N+Eca$GPWsGHqBf5cM5dJCj?Z<m^c%y$9hIX5b%_aaW~yIbz@@&(<0TSVX&0
zX&J{^eJ6)Q6hl?WkM!UdXc5Ob&`>RpT@#1fT*=;XP=2>qz4*7{`ADHbGY9cWOR>O3
z1FRmjJG6=7CWa-BRAkrMw2=*jv8hvq!(I6?A>@`v(EMTdTc%EB5R+1BV|62QiG=1V
zEL;ob;$1|diktoF6R=6Hx0#<4_^Jm*8h0C4(VYnUt|xgDEG$=+8|VgC@hdp+s{f4t
zNj#O#tZJ$GOhOjM>um~|oNwdodFc#XZP3^?TCdaF+jU*>Oq)lQ@n?GW0-J*s_mu`$
z9We)@f)MX;e~aB#*eM{vPLdR-Hftz<qA)hkj1rl9Fh4?_KT!winL+N6p-$DwHpacf
z-d#`+*R}y2DEBc1(B=b-pX`yHadB@nx@AFg=R?ovWD05E-Oq*6Mib))`C&xCf&$5A
zo<08IA_Dc5c%v|;{F6n}VyMu<=+-$cH=*7+){lj^b)HTXgG*Z#gvOe@@=-S}V`Z|i
zc{An`Kn8cHM9TalV%Ghr6)2kR4C|!k`I3JY6|<Lqh2NA8N(&%MIEkMH%^?|`^heF-
zsB;%Ng>g4IzioO-Qk6kf>h&P+EYLaW1HE>vLsI`}pi5;k4ib&hYF_Hjey!3e?E*E=
zr(Te@7!-~4CZ9HxJXNu-<_{Gbn6*BnBHmwmEyRJ=hBopo@2qWiCcg&)P7415-%7Ee
zz>xqPct!q8S$snTS^Jp+UUO&B2-q3th1-_;?A?#pi5)jM%3shgd0y2OvnP`xKi0Wr
zx?=UH{&wK`Pxh3bLAEObV{}Ix7(R#jg!a^5_@~ttRBwCPn=0tk1iJ5fqPG(~fJIB)
zE>&}!qWf}wIJVMUeVqAu4(4N-Cd#T{3JzyvsH!ALK_5_7Rk|6=dF(W$e9W5ci!3zr
z>af`Ly(|KUy#OPpgF-y|KnFT5h1bk<xo|CrSMQ&ik-A`|qg9&Qw%6XhQ8Q&_NvDjJ
zJC}7>(6_?GUB&r`ELO$hCL8sgCy%#%^wWOqi`0_lGP+4BMyU^syx6;rV!dc@33_`F
z{~fqI-BaG&<ob80Wb=exT3jp+eSui$_3hf`8J98_ZCeCAG7B#mlCd4+&^(lC`?z>k
zlxAyiWj?aMNHq&(i<BAMYde*Bv(D&&?M|ut0M^2Vr&miZ0|rXpz&=kF{Lf7=0K+m5
zX#*MAv+*{Bk0J>4VfLsf5v7SiE1Xx_4X30{A*=1syt7K+<?e{EC-!;jbjv3WmRmP=
zbbBJ$Pk2-RjBk)AB0Dm|{z{}7h+#Visem232BSO<RC0_$14a+X*!2V69?LkK`86PN
z3HSJF9Pp$7<U8226Q1oWpZj|;D?**Mx{W?xb@J{)?e$R7(8^osj!=6uK}6}0n&hoy
zMLp4IX6AT9p)4H}y<xd3Jv2Ar>;|c^k!fq40+{w5*h5PKWcPaG+E+>p3TnjS>i2HO
z_asIYJLNu|+n4l|F9f-821VdswTc}ZJ%4)|K?$|Y&sxB%$W)Rhb%XOQj1nu+XV}cy
z*M9)V$-%p}ZPXkEL6o^DZa5+iQSazj{**Nm2eJreKp(hPN(?#pT=Wg%>WB10r{pds
z5qZU2r0=td{ToML{lB%K;^^E~$h%i}HrBYbqh1N|L8<%T{<{w9+H=}2TK(X^cqq<+
ztI_6ORbacIZv%XqZW&SDvZDQ*^PPHB1={UbxvJ{fJ4$0@-o)riwrW2OZR{=|P{1kn
zTI__+jd9EZ+KdushjL_<t1To2iv{jD-;ck628kY_H8dqlQEkkkOSA6|^<|np?m<M`
z_{rGDwqS$zZFtz2(=&a=HrSr4HI@B0z>E!GaluV3;`kq5KYy_-<f-fu1*i*uparXM
zd*>xLOXFt0Wk6R+4tEVpJ#fsM!`$rdY{ZZ|YS&NzmgoZr@Ba2fHzJ<^@RaO(1y<LH
z5=b>@uO#2$?F1_r1`e)R0dio2zRAF&pdrpMdu0G9`nGDrz(au12vky8rpKVmh<Vc5
zQ;~z~)C@QJuRo(|)DD5nA&PVqnFL8Rj*C89=NG}+zB3>xl@zE#4dH*2nj$pgQibO@
zLpq*-6Z;e=O3Kcl{W!xHdyT5nXW#@{x+j4L?pW<S6Bpu0!G!4i6qM}<>b$DN>1p=c
zBLQ)5epo)sG~^5x+P=VM+km7+Heq}L7&nb=iO>oJCj3f+w<8c!Ex5J!Z&qbJN>NkD
zCC~_<WznIGJ^Scu{X~!+wQvAtwVA=s9Nj-|G=Q<gE)OU(mYOaA=Oh84H=lPHYE=5$
z1w~Cg>|mLXz&rCq5|GYB^Dqbvaelx?JA4>yVp{Xc#)+)@-;27Qd1qJlL3|;U+otqq
zVQEIW>&)qIYNp48fb~u(vtcFvXAl@yIIUcKtNO}!BuE6ybdf3OK3aE>A-HA1n1%Zt
zqo|d)Jxs;wr6@mv@-m<cP#`?2noZ*2i=XxMqFV&!5;1LzrPoE{B*$7g&VGITr9Yql
zE~a9Y2O&6=OJNVhB4d#&@H=5iw#ixsw4vItA@t5}=LMZgKV*;Ls<uwhv`W*G__f@8
zR9ygTZA2mCtG{pkB@+$VNKSiwCeT_uw68U0_>AU^@pz%3$VwLBu}8;;RsrzrpOJ^>
z#cMY(PDlw(9o`SRd<wCUG}@*F{5;i_IN(p?x<9<3riy$c=_`2K@dI~?BF&Y<_K4U1
z^pSOW9?OOQ<g#QEIuMYQKd>9;nJ46~5NKXkt7~<fA?UWd=vDgQ)u2-d_WnlPz1j>j
zCkm*_aXUt_G3BTq#y)AT8@_i-I^o>~{?IboSYeraE*HauzrWDpHAFd=sbs5%c+F;t
z3?#2V+#Fq0CwJVf)0gBZ<6YwQ(nhFjF8>%rppNl;Q$u9~5UwN$zm*#USi=4Gkq*3C
z??}a_pOO6oFaq2wGL}hk-FC#bE%^n3J6nR;m-8~M-moq*_jknrpu5;sFXge_h^tMw
zAnf{dCFf8ERc-t1%uYbk2u1Q--LC3SW`a720*R6-|Kq<OnIpVizt&gu^adn9ORv5y
zwp;pT=r)X;y@mKD4$ykl_*v@ybMad0XKLDwO;Z&NpqxE1j;5O_ccW*Dt%37{zlvT%
z>jU`s%h1D)hLzIlT~LLEu=|1=!kK~z9)8JcE$@Tj8L3d?ZXJ6H#1kXnsO2{~HYJB&
z`xmt6&m&*!;&&XUN|}MW@2YZ2VM8@ndeT81C!5;wZE7Q`3iNb2f7iPvV=^A3z28nn
zp;ne(^H(i+p1{3GCog@6&!Ca?;q8uDAGDPsvz?vzju#bBQ*OYIrvr7mM5|NK@h!~!
zo9i{<@m20Q=KdEc=G|#%m@r0(x&#FGZ?FD|C(IJ65o+K_7YT58C=Po?Wp1f>(?Cd9
zCUVHFN<fz~FudD^wED?tLA)22&g~Tq72Mi?joq~a=vJ8L>30t|!C0{j{N%fekF7h$
z?}x@*px9RlJI9;?xiU?-8;a8JDFK4n(_}R$P(9~G_iUl$;mHu%B{#C}@T7UbDRgx)
zVg`7siDH7Mn@*k7|8L`HadEEK9x7PT3=m3e7$jJQ%vpp|Py68ad{A#a-tuw9`c3CS
zurAXQJqfE<dnC}Y88Ddx?y$^PJ7TgG_FM$-r>`joHghZx$3jG!5p>lC*ELEAGPxHO
zXP^5gxI04Dp#bxicTa|Z+QgX{2p+zCzLmBx`|yQy@Vj7h)je%aV22fG?9$C?`5`#l
zFpFGNw_3^g7y$qTlG))v30m~WY(Lrrgl%foo+<bHjU-P|*HT~dGlG(7=r_a624dua
z**#7#_CL=U{zPypz5aVa<~|muT5nNf);1FGRhDAM@c!E~Q4NQqiez0irXasL`<*%5
zv|fT)Xu0M?HJcK^qdk@ROa8~0*822H+#%Q;sHPF!=oq6jQti4@>KPbS)lOqo#%!ex
zl=j+}%a2Qsi;T3#_4~KfUl)S9YWC1hVp4|pz8>3A{egiu;_MV!MJ%AjX*dx<_k}ut
z4RRW;kTk8p7J74~a-~vI!R?r+bYLgEZrlw@qdJ^f-7B1WZaDz1u&X$XIx_|R<f5yO
zOwtloQ#k|T87HQdHT~bx^5Sdn`@-ULykKAgutpt{iexg+(>wdRG<0&0rOrEwlE8C&
zzlaF3`bVTX&QGX!QXbok*r0Ef=AW}*88Whbq5HfTgl*E(6p{g$U?fM>5*g=xP^fj0
zvGzG{C9jp1l7Mh35&AipJZfycQ6uQJ-2PSbx8pg=8}sum!PV+Fns&YB4<Y8NErb9~
z(>^Q{20kMmt~+1YbN%f#1rGDV9xruZXjdWj<c+B*x|TE$J=gHmJ=pNtWPMbnDu%VG
z<=R(m<l6jB<1fLy{+o?X5$Z4oecy*2KKR#tyTZf2s#95NJ)%IayD3rfouj(_u*j8b
z`|pO~PA^k{_OlgDFU5@(lk*ZGrh)#je!@uM0yoQ6hIi@~^S0{)mCM*=X75yO+ZB#L
zG%$#WDe9NfiX|VDaRa{nVmDh`chbp6wW{v!66!*tFYq8DG~j{jh}N#Xf`)BaKwRKy
zw4^mEJ>~S$mm21~E?MYcVDjmULzLnEx>AJWON=u2Mvm;~!_t9!X5AdM1QJke9X|fG
z`rcJw=nC+h#wzjU!%Tjkg+}f-!f~`#WX+64AuI|fO}_k)Q0;abOE~o>Od1Z{8iEM)
zNQrHZ_c&4ol3O$&c%Rm3->I(9SzpH;f3wuIhS|xvNLztHoG<Q%eogK)NiUt|^^qsO
z(p%A4QVg+m6#g3SjB(clL6wK>ZVqBkO;vPHfFnWTp^<ENjXB%{H?E?Fh&U0N*_poG
zQbf^ZzJH}CGV?n)Yc??)^J*Rd*aSQkoIol2Ps~@ti%``{<hOz`T;4Fa_k;I~k7K2~
zu|IVSt%if?YzOM(+Gy`Zt}B?yJMABWFeG;+5ruUi5X~VAs#II;#UonGtpB-LX;a<7
z7f6D_s)n4+JQVh?`*NM#hkQGQ!I9NVQ@y8lwj+F|);I|0TQ2du5F(XSR_EnsKHd)M
zlREJcIiO-*>YFu)?Qq<$%wdBrMwxhGwLg#PHX$!FzA-NvoL$=7y?P~*^43Vo(E2d4
zzAzV2L+L@6fViNsIDiy$H($5x1nO-4y@)4}`$ewH#eQ~M-TFbNA8J7kxzjdI3imjW
zhp9*YSoWtNsk(YRRBMMAd`Kk(IJ?w$O9{VV^Y0}f1wFdzS?!`H#8kFo4-_r#7=YM2
z)raSe8ftg_xs93p02y$#Kd-{flM<t}5)JR5dCml>3VHrr07vjB>r3_YJ6hNWlv+jh
z^;E$cbq_5|=C6O}*^(%&jB9Qtw2yZS%re_%q_2d9QXge}*PdD^ditCofTiyEO==J@
zeC!}}RA%e8Ob5Xpu4wJSjmYVgfRWVWO4u4imAon-ALtGgxNSVp^?Y8YJajo`EWFw?
zTJkpLzs>?t=sl6oaoy$jD#J0_j}?~`gQT);czWo3NQ|JRk1i8r_ck2?tkSi1(#+@d
zKoI5!_(ER>Dp)ZHep%ZtWfo3qM=mAz?q=M`$o9Wps%+28-382JeJXC|VkwCtU2YhJ
zbjI+>5ZD=^J#a%_>Ve<=BI$aL6N256F5maGIwuMKDYR;T@C&&MkpNg6*-{4hS(en~
zYy{+5^WGk)`7X>?=n(s;0O<W~O?=^gi~E8RNVK=Q0xyZc423RryfF(Tt6py69C|Y3
zxxBEJu#u$+Z>ilDx8A*f4;Ar)3D2dV_(=f`9{C@gIkOCz_2wCUDI@9A67RPcHB<|Y
zQ4cAlW<04eL<O!X_dRYX;!B-TQ3$wmCJj>X&hlr{ua8OzT_bYjhklbr4B64wlrBO#
z*9U5wJ@3*bNmz~0Hym4y$%GcpPDnqC5WPn_TJVroSzsfU#RI>4NXgsbAQ#cdek{@N
z!hL1Xs5#2K`^~+-3GES;L6>ZQaZ<09VYTFj6|9}-u_I8a?S-4*mbM2I$JY!PT8<{V
z$Tx0Vex?48n@C)O)R9U4GaQ5yc~<rc^vjlqF>^Rb%Q7kV*k0coSxI-_8vRj@m(krH
zbhKdQtH7_XdYil8HNFPBQ>4C>QVs4-&22;EO6g8*g-5d&TZ~I1U0nSYO|+NhGx<k+
zrD=_VssI6eZ8^DoN5n(~Yb}!A!1-YRVW`+@?`y){SNjZhw-z=JY0K`j$ec~nD?>vf
zu%Vo>sbCD!irwi^#oo_`C|H>=WZ;A(r+BMH^=2Gj8nW%RCvNoc6a>1G@u_WN@-I<(
z$gLy#ekUnLJ;F|Ju&Yk3bG6RkY?8{~5s{Jq&C|1+gxh%kWF;wlJ>WN+)CRh<V{^>R
zZxMN+)Av7!{>vjyZKsB05>{U@<=^|zrGvH+hXNN%#Os$K`CH1H_~6HcNdh$)3i;FS
z>v^EZiO<kfRqbRv!XDt_kX~ZIf&X?uB+DHDAGm)wk0Z`kf=ruZ{{sXqIhGr=RaS3P
zi<5kN6x&N6M@Q+Uvee6h3$5sOt1zHgsNS~F_HFXd@?39RyPigX?0X<yHGbRtXW#{c
zu=}}kgD#k>h+P@?m7aq<#R2?G0DRm<U@G{oau6Q^@X}%R2Q{$A3>dC?he|`ORcD5Z
zMRfC<2mYl2tvt(|eOG>$MT|ow^aXlWAO<TpQSTHF@BgPuX-1|;How71m%?Zj>}DTn
z2Hs~}`mGelwdr`u^AP6hIzhWq-9cak2V~`>b&%?NpGSj`Y@V7e!3>-Hj5zu{C%uS(
z9h6TG>lH-s_wW_5`2GVI%R<QF3-hRkf8E<;hZ|_Tf~Jk?y#-JXHwv=`ol6TU3&134
z524S_emHA2*giNohPBi&#hIL(tE<JjlQuD+kGSMgI1G21z3hzL8F{=wy=VKmp;XQ%
zyAA8Fu;wrvC)BNS>WEZmX}HZJ_aUEYUeS+i99<GH;a(^<T&n3f@cB{epSK=urd#kc
zx$UcYDEXId?eRmx<C;~K9<GCq<A`P|14gXf;#NAX$#$70(+ojIJo!GhrF8J8^}KBg
zCFm`;Pa5Fk1NXyoSk`8Xs#UTc{rg5;J17eOyHS;>R*sPkQnXWuBeTM;Dmp_xditxZ
z3@sP41D6KmP#$_*d3QaLtn>(ll7jxM%Z{%9L$dnE`2J6!O;YjqzgO6u!H*W=aO+UI
z#?oO>m9NIf<+W5SbP!19c%qtyj#WL*`NjRp-(P1s{>2d@`z78PBiu#Pw}lG0k9*zY
zE0QV?Tb%Sz+(uDV1AA=AIo-cDxtiQ4L1B>DL%?BT|K|mn9{>#+`cf2`?s0q!&<#Ov
zdg@horjE*w^+JT(`Mvh*3VJjBs5Xy#I{$z$bGq~ImqEXdqiDT75tu=jt!Jp=0f=~N
zqXr;_DwvR`2&g75>iy}RZ1ip7w^A2%JxY2+Es3AtUx8?ObkW6iGkB)XLpkQgEcv%)
zh*(0yh<Y_5;ApELV7Ty5jt8#zAmuZw@naI$aBe(}Pn7y-=9d|05By#GA{G1e`zuAG
zm7_6ywM3GWu$|P2R1rMEa9+L#ud9>-Wu2%3)B8c)&MEz!e@yqv-qk2<qvAqmjNW=N
zag+nPe-x8?)4o%_!WgbzO~}xv$wbNDkrZ4-rK@{(CzTcBQNxSbLKEqS_GwWB{{5k$
zeHNl=B#8%U{Z6@17Sr^-V!5j}ajS@StlLxTl84mQ$1P=3(g-_heUBJIGV{KO#U&j*
z_dhrMi(G%J6LU=U6J~<a!~bFR>+-r-d;-A+JbaoMq_ySzh5pyxzmwXTF*o}&|8-F7
zL4<G?PKXp{-b>AYs=DT3<ccf(jaV-X2)^)h>tuiYs6Q#--(2ApbPU%;Yee;HO;eC#
zD#z)Q*3{p$sXGUyc)Of~jZ|GiT>m_fw%RV$r?fpPImZbe;r-&mhSS_hz$enFwT=~J
zU3Hi+BIqy!)WlYp>?G;;9Ozg>H5D$jt2O<c5If(0x-e&3&+usqf(J3&n}G4ho@{PD
zW;iteBbn&B>_4m)4sTJrv(^M&z})$_fSTGEzq1NjZvrheuXM)dHYNM*t!6R)4%m%3
z<KJT1<w|>ZEl~J|rOX*e`mY_G0{Mrjfe#-k-B>lF&{5J&j@;JSNNfhoFUIB?7UH!>
zml@v^WB*cB$~fu1?knM;1DvRbGSJRr@WN~ee3+E^=vS||eGunIiC_J#;*0Mj4Xt^x
z(RB}#dWj;Ud=JB7g<Xry>2Sx9c~wcB4bY0|wtlDA=iDAjLFJwZ3T8Pgs;J&)iol(k
zmkNeoKXA6e)Tg=1y#Kk=m@3t9vRpga$@HEpYV+`s5F3ANW_$1Bm#dub8l%?`bk09(
zy=;B=+5*Er1@KO7kqW+=4{Hiqaf5yN?u%y=T0i-2)OLKwOU}WZtlsA>Nd8pZ&Q<n(
zHZ3@>%#`rIl8w*T<^$kaef;T)Hv+XN$_L%EfJ!4RumVKVn^^wi2nmBLz*t9hWV<!1
z2zWE2J3a>Eij8%QEVA9*5{ltRLbV%qXfa@v(-t@X(>lCCh;F!Ar<^RUr_Pw-wZq0=
zTe<{*(n6h75>2`wo1zP0cMBb*T|xy(IHgVf3_cEDq@Ov8_!O1yi>T^--MgiQQEU4&
z(_8z}0C;i8wL3vUT}=wG%k{bp?b2tdNyT6R18>HCOHIdz>1=<TeDt9dT{fTg)kq&7
zAUFn2KH*-a<JsZ8O@5aAtOw!^c?Oyf_wMo0nwk>~Y-VS1_F~@Fh4CF(KM+<)L)DGY
zQySSRav|F`!n_OfH*YH#RKxOC2VuXx_#!j?GRXFh{9|>ya7QQgK&`SPh6ff{x>`=A
zouoGZn($O0^z)zbQNky_o37Pn-e5WRfJBP4+3pql$I0q>@E2+30;wpmSTmlY*7?#~
zCL9;<{(*VidkLJoZfo3)`sDiF7g*Ts=-7K}#(#BnXl(t3ccv@6*+1yv6V1JIg6FZ%
zN<$zjga4J@;(%XU4S~T%xY+=v-^x8ecU$nIDUn8S`Z3ksXheh@0L_5BbW?lV)DR{1
zt>*kPdM755K6q~KsuC4_)_BU_*9~PU;F>)RO~3V(4lqx=Ci+W80(wAcgD#)JN2<*~
z3H)x>-97Tn@X*YDKeS^6ZIS>RGJsDcWCJ_2eFov}oy|nz8EPrKtIg$x+CVt$@wz3Z
zP-?Ct+#vRi%V(in8ABOJuyPLiRyd&G_>1sy)6!kg?>E;~yo{=>1&G28DzQ4mb)Gvr
zca-_2y-|PDKHs`%X%YDWSB5D14QSS7OBli(J%0dxERO6YTdv6%AP4{;+7}@$vv?cY
zwZO6N6j+V-`Kuvr$=tdRE3dPIZ$SdesZ(jlk2`h35FODTc>t77Nmzt-lT>+}{=^tl
zcI4jp$5VqRbjoCZ7xHCzQqvZ0_jv*SyvV753qgU*$^k^${F$<xMCwv7*W3PCq(GYz
z1U_qNeE)b=%-f4ij;Yr%<;<MH=}m+jJC2&OTO?VnXB3+6GB{W!9|OSKr}@!G$}sSw
zo|ss^V}+VJT3YH14N-}fgI(%{8c`5I8@dTbG3mwK!A3y=mZgM>z-#}Ck>&kw9i4%X
zZtd<KJ0s>B0O9uQvI_N<whV>N=OW~iqYaA9AUyCm5mPRnSQNpz5t#a=)a~9L)c;;(
z@9XiZY~f2g$_)^2SsMqp@RnV*>-q#k_uxafTs>sUaKWWYdU?!MYla*)<QOBFPWq}X
zK90sIiw4mROs`kJW?rF9D{l?nf9yZ<*`zGpTWGoq*<X~c?A&3bbQ_UY$DGst5e!SN
z=$498@aV?brW-B7U&c2oq%+_^!9`RvR_)rJZ|7*G?TyjYn4lw)Os4^B@sC|a;U@q@
z+)spEhO2M=OYc~nZ2$Y+KD-?mHQayC{8|V9G@Peg2=XxAguXcm@b2H-O_l~k=l;$0
zlfBjJ$X*5-BEr3S{{qe-m%&ornu8kQKewwIg+-jgf1jR_`*A&gDx^c{_O<*qC2mZ&
zB8K}?hj@;Kl~KEdd9i$)&5v6~Z#(UspT|Eu*H8Tdzw>LQD`xto2*X^xNz)xu<~g14
zIq>(i3mcB=z#!*LF!2c2z7#+OLiQLK4X?!YS{A?l`&i~E@T64^RB-t^3$VNl6C8^I
z3plWdDPE7?m2Vs`a#}=E<w-ZW;CNIsAiJo&@l>L5HvxqI?^N@!NxkGn%yC8nzsU+r
z6u^vTsR%EhBvC7U*H^u}-&+K%i)XWW`Jk!Yy6l4-kaM(|E5Aq$CYxpBXA=dH%u(L*
z%5+&a3~24R2c22rb^96j-Zy@NZih&xtN)r!L-;TKV0?dnlN+jzK*Lsaac4$Od`XgD
zS)e1f{bJ0C)HST@fWz$R2dGR_U}j+;IPP~Z?9G>V*T^DhiX9V-F2bjHI%>Lx({?*C
zZR)<^L^5U{YT0-7_o6@9q!2e&f+mj|&l``&($nx<ORn+fz2;7w4_b%ntiT0Q6oLJ$
z=obU}hK;W3Bran{z-7e;dk(Fmh7h}Y#^neRsAX%ZDf7n8HiOxxuCiJ&YSL_0E!o&A
zsC%1$oQ{6`T=;1>@wVmgbsuN-eY6X%{8leSxVmxo_<Y2@tzLQRSCrH_W<&?tNlFV)
zQ8w*)uj9~rLL)|jAmhA)w8R-}b2Tkbd<1k(Sv$`@x@sq(in3cjr)I9wE7zlgM;F};
zpFQ|OanZ9UL2?t9Cjz-Rhhoc6Mbb^UlyyFHdXg@RoTQbRHc#m9`3!%pJ;V|1VEoZY
z1A6v423QU=ewrJV!asd(v6@|(x5PPmSdATA9*u5r81ijC>*(OA^GEx!ms5#j{xcTt
zmPKhm`@Dpc_7@@@?DfQJZO*uRz|j(g0P9tuBc47>wpAxEhp=9r0_=9qqP9T%ZBry)
z7KjCG6G%E)_An4uFB$XN9i%NF0W~)dlD5#Zdkh6Mo(FkYj?vr6juEduE~0Os{ZBFm
zSy$Zx2Car0-sA{U_V<-kDq{yAM8J&hDEjPqUvT$-!fx1ccE|GWwq##3qhZ?aF`dW2
zwI30^vg2YoUXWBDl<Y|Cya3_|`@Z`R^=_Dt@(v8Hz5E51;QSGY8?Kp4r6k*G@S=eX
z^8f&eF?c@-ET_0}3X1zbiq6HI>G%KRJKJX180I|Zvnc07ZEVP?%{ixpBq6aOlre`L
znkb!5LkBq&CC73;b)HfdiRds!=qve9{QUlf_jTRx>vi9+=kxJE$o+#ugW`8d%4#nA
z{7s|1Q~Y9V!*c|G5JNHpj7BgIh_8&$iPbd_mlKuy5^Oftcew`)i)<)A7@+>&`*)m1
zc0_X|EYBGJWG``h&l2UkFRcbjPHc!tf_<I$mC|%1R-z$qZmO20VVUcu25nTe`v+#$
z&Ejer4!EzMqU-u5`;|SrPyTym7aBNV*vpwc8s4X{@z`*Zy%wi)vHN4W@>xt(9rpQ?
zyinpVPvB_7y(;LbF)opA6DM~<nX(*rW0&tLq$+e*vc!#9JpNjuh7}wnJ9|rmGDPZT
zqM4^`YqpCEcGg;fl6`qK*32NX8lRfm?jq7P>P2K_DgI&hX&#Q_TWHP~{JR1Mdc{@a
z=3w@Z^9)Eo-yRKEEDd@Evl<PoLH>f*!oHfRJlu~ba`8H?^F2Pb#CW{HHPcJCarFm-
z)IEWa>LRvKQiqCjpN<_>cxuIsN#8-2Zq2}2b^)e(AZOMvN*_EiZ=Hu_J@3ZjlL;!o
z1JlF4-|{cj@8m^*UVgu@?zn?y=y=fti37D?56}A{ax_J&(&eNZmP2ouYJ%CH8N039
zH`#Fa4m(CRa%%@#G6|ttC3xhE3mJ)FAN=?yj$w+jvjyh}7ILBW5o5=J6Uq(Mw@qJv
zZIA?6e?hiyPpOCB3rb5}hAXv~my1=k(bf`~E|2D{YYgTU#?~cF@SFGX#&$hvO6+iW
z7QUtYUoRsQc!z?T?Vg_xdXzWYw#SZ7VF{n=CVlR_`=%8HG&@~?!!i|=V^!;q{h6l7
zvrayGx0|Qk*rYr%D7ZK9iCR{H)+Xp3J}l`#Ftv);F3<aDild`Dd`MrO?N>r!#i<gj
z!F~-mb<yU3<*Kk^Jhs~?3f%{`?6%*Ju{_(gQ_}DBz}lJJe^CsEkU^}DeAfH)-3U9b
zMGKpUcz@Mk&0HMEp3-KTMY0KRICygPK3t{#CVfs6{Eu2erpenD@kx~#GC7S>ecOm6
zv8t&~jR7gQ3HYDC!g!xU=Dr-5%G8v|V=E6M+Fx!looAvYq^iD&bcd@zLM^xPrqvno
z)I@4fA<Vm?;<1Q%^2h9FBg6zn#up+jg?^HF10_j7DmOo)Cb8pFN5O+v8gIGLYR2NX
zVD%!<hy7u&Mave{XY&uRSb+JPr*(|-T-J_j@_)d?)otT6dAaVSVby@GlThmHS~>%4
ze|GCz7K8)jYy}QGY9Dz45=%Rp(~yD(P_D<amU!X?s9-^b2s)FqE<s;R>u&8Zmp!VB
z<YCbns0(Xyr}c%pXvTWnr@fdLFFt5UBoM{OO#0v_*`e-Tx?=-Z0rdsSPq5K+wN#+u
z#k`Q@68G61z`TXDI?YtNs)nG@o8&fKVAB2tL1eB9XKhuI=|1+;$;UWm4Lf|^$#57V
zwe1ESc#8#-seKMP<%cn~4nauHpf4g54VQ*ecAFE%K3$Bj2oBuJUJj7S*oNCqqBaLy
zH_d0im69eMgH<+xee~nrn(q-4Sc$YjkHmH)e;>pQeyq;oS=v3T*owzynggC$nbPxM
z#1adfIU`irdK0nBa{zoI`#19&h?d2C9gJXkv^dxK`R-84>iz>Adl}QSeuVCNP$J?t
zC~@PNjl>^eUdG(yzl07X-1G9EO=gcd>-YbNX5uRbkRa12yxEteFJcvzhnba`81vg}
zsnXyZ^!O@$7J6{%OW|9NVMXguW6M8<!x~ZmuL>g5A-3Q1w>v5oc7=t7qW}}?{Ii3{
zqT0J%^`fr7ou0Y}kfXPXE_ss`FOH3L*a@bGIo7o;Bhmnzongju18gjGwtnPVk9?!b
zu$R&kq7<fucWb*O%9Cb90*r5oO10yqu1&XgN!KXVE9{pBC5><h0tP5bg>qvEcHe_s
zU;XA^99iH|78hK|{%-hwS(D$TQY_dGTcC4lULX#@`(h2=wSEdKs6zKQIk_Ku$Mua%
zzU&z)-9jwf3amW9>i=X@K6XF-oa7N8S6$&v&)42Oot3Pe@{hhw({WVyLMvYFeY`aB
z58*Fok*y!Z^_EOhUk1KllrFR965MI{BR2y|&YqLJY=PFoqxyt@X7z8V{n|VKcV?ST
zx^r=6%_Xn<PeA=E_K$YxFnJ$7^?x;P3CR^OuYJl5=AS3>t|aHPzsSXGXC+fF)Z&Zc
z&Xqi}VClnSSqaV&)&ub~5EB<)?AK8DF3@cQgv6!XO%JQ8V{U{jc-xh!p2|g^Q^M!)
z5n$WBZ(JXEt4gH;U-p4(D#&!ZwazHmrpW_>ke76vpUeL4Zf-GQIZGKQhok$i8o_Ku
zmEM&chTxH<dI2kHmbfqcWU~Ko#D+rK;@(G(PA+c@wMfpMRwLUrglA@DaRPMmLv>pI
z;d(cpUrPp(%n$&f1U#FR{h<A>Q(3xZ##FQKA5>QwT%R-D#r`h12a(E>MOs+Y-q8v<
zf3K~7ANfhU7mKtDhgmpxFYfTGmi6P&P$_5D#vOP-GGUoXKuOELHWW42rNb?u12`T;
zy)06;Yk}zGiPSQnW@;A<xJYw<^!Qq^XlV*KA%5Fe0M&VgUzO0lGK2r+3}c+s0eleL
zZu*#i@J>dR(zBkr@v5CLLKa%-e9ys7vCSAKZ555^K|G&eQE(g=WaD^JIctIQofR17
zB83`vCrJE;=(vIcm(pz#s!r@jaELZba90U#xOw#9^FCp;QS<_8@Ihi0w$<nOn7!!f
zY(w>0A~!&htVn51p3>F4u#6Jr?7g!0i?aZePf%;$)T!dLqh_KCrS=hXR+@IQmwejq
zw=V^GV~q-wncv~^MeFr0@*~d3FJ$Sd&^#AZxyX%PYZNwa7i%XOPB8wr!<J)WkH<=n
zyDCTuu$sozSL^y6DrBFof*^XhtkCYkgVVFOO`!+LmeldhA+-i+rbZKpB@h^6lMHr)
zE*!q~pX51sxRkn$g8GIUv|Ty$xj<v4`v=0d$r+4rH905wAUCIvIg7IU@9}@iVpQh{
z`Y+hkTy$e#)VvQE4!{H?|AZY2Cc|To#Ij))-e%SpT3sKsZoQHxl?$)~hCI&OKqTKV
z5T>%Ga+>cT_^TkxnELBx3A|blD&HmvIWPNrofabX<jbt<*?zN(_T`T-^8tdssLkci
zBhK1Ok?qZ`N3$7nH+DmkX3HTl!K$e{kY?y9b_A{Cf>9S?Ln3|>k0<?8QU$Dt6i7PV
z4J~2Yu#tbo`9jWFfaCRB)|LnJKlpl7^!hC~y*R%5*=QsL9pTOeb;UYh>gSz_DkCEc
zatUHFEO@!NbL7EJz-eXnPtT{c+$3Kdgct4}rqi>c!gV}EC-G8(?%o+nT91<#lCg{c
z?mK5s!c~=jWSOQh6&=y9Q4x!%uz|TE(u~@<ELIXVPbfcz9j~-RMpz1EUF7QgFZo_T
zCd)%irtClK9y_@reQjiybB8l-xDvxieR5*BN@aXNecN^a4L*vJk%!i<V#ZJv14JDl
za#_CLjNBo=vAz0QF`i1D&8mYGL&6RYOx%zib>V2rFaNV>!8+Chw@~cc!39?;c7(Zr
zIt65z1O8pN-TIZCQAYC-Rraa5TSA4D*%f<AoRQPkWod#p)b-t7YH#e@q-Y5-5f>b+
z$nkR>KX7w_sv_y-0@bo7O3OI@^n&hVAN2{v0q6Ms(m$ctj+MFpdBQ?kH&D8#Au3Rf
zVY&)Kf$8eH(!hYf!ip{|yeB6|8?WR0XnT{y74?|mI6HZ5)WKj7pNq4i13Ls-w%j+X
zMgp5=s-IM7F0cpq9Gs2eoeDbHSlgTzk-bXyDqo6_26wMv7ynE{c@NoyO1bAgkar8Q
z8j9>ZzLzU18gsmP++GR__KT1Ql#BlLNK$D;*(`bb_~-k1VfFwJ4V<dUkGvN+r)ZTt
z{crLPdyyki2y?BTUh}{jET`2^T4we1_*jQTimidr7{7Z05M!+f1ByUNi84rATa4l^
z^EAb4!v~xrZ+WOH-FvUNIYID9Ht4JuYuKf`DcVt%>mbR2-qJj`(nILok-qaTgIn*L
z6DvR7DnKY|`>61OR>TgVhdX*AXO~)ns}k^kE)b7XZf>4er2=if35Bc*2$g^*T;eF~
zH#jwC^mz9mo^xD^j}o-dBa5@8QP9{M;t$j}iU%HJ@A;v}V5{S{mSx==-qN_-5B*L0
z_3~y}@~WZ1sIbtF`p=DeWbU)|Zf+&Jn@eR5>koUn<RtM6F$pzqCj$pr=iIXYa6{5T
z<4uB8Qp!9q?3exlz{z;A%i4y^IcQ(=UvLu2qU+>q-D(gz<c`&6;yc5kPk&RT($smc
zW>%al7o-BIFs{=kd|08Jdfx#pZgqa&X3woI^X*)yqMU7N`{&f_PS+YRnegHPr98l(
z2o+#qVmYQ;2Mh<<+(eouK*8ody`t1+<p$34iFE_QXBZzieZqZdx4(PujR#<BKJ+#O
z0tPWc87F{>;GNfkMN4<4idS6U$E+azP$C@zt)-mK5w`ay-pQ}pEN7_nXlo9+IVrpQ
z(5Iv1saE=wB(|FRm;Q;lX-xYuT?p_11lU%cS*RX)S--{KCk|ylVjOGU74TJVMD%z9
z9Sqz-RTA(BXJ1C%R=%UFpd+%r*XXL}CE0OoB9Ut@#z3}C<er?`I-2WDl{Ko8y~NKj
zB+pQNr;XI3NYTsp0&=J~&FSj%Qz8|de>3Oi=7pBm&mvDZ$-<{esbht1RqkhAv>54%
z`r>UsfIDA`TO^-T6CXdt$(q|x?U#zK890&r0;qP?G3l<O2y%L`$W&WkP`I0=O2FKz
zzZmiEH0VH(3>thOaSCUgXVkkoDitVjzd@3jdV_J&WLy%>G7#wOza$OfHA?9KKG=3(
zYLE9Ma|@id_r?QtKG}+F;1Cv69+DSgcj!dLNhT5Wq*RS9{dZf*B~62)+P<}g1!x>+
zs_?esC(#RqZ<I*eDb1O!SJIYypGH2qlU(PSpq;q%(fH+`u~%avXoZ5l-E!*FH<8aM
zl$<bNhD&!(dDvoiM0L^;?LzQlHfT)+ns8_2P4_KHA^_>$pJfS<o0`r1cFXLQ8`4_-
zdmAg->WlB4b-0r$@1{HVl>{P$RjAU-^Ybs62k$C=igQM{<0}a4SyH9+c)TGgeBkMC
z?LG5h;cKGNDLrms@|I*@!9pyt4I-YA(F>EnP4Nn|@h43qO9yZ8)58MS*-O<&;a6SQ
z0^R7<uR_>(Q7^1lX74_rH?pPq-wQc$0n0Oj*|j&0uHiI<CPb4CjA%|TROX|l{hb=+
z^B@n(=3vU>vUYs`%$Abhlqx^@QB=83K*RMP$6hGQVm0pk*xK^0uJD&iuX}+XOZHN@
zGWri~yQy~ZE!|42Mu>IV6$kH1#5n4_5oA8u7a#q(%^|j2-gN<<VdJw6<_ajcgaSVI
zzyWp?0;%N@r}@X}zhYUO2~MY`#oySEFt;bzz*XECV}N^6U99Td`J0yRkQ92^+9d{z
zj`8G0TtfE`%(I`hx|u+g@Xq%@D^+n)IrFf2&u@7tW4DgDoS#Xnfe)c5U@7bel{c)4
z;Y6<Q=^mwHm>JO{!o-E2kif}Ex-sKIiJJ|W&6ucE3)%lHyCV74sB;`wklq!?mofA)
z-S$u(bt0&!CQ~<)2BafMr(5NP$0FBA%jVnCi=DXkh;3%pQ5O|;_EH|SVHbVtS#^ow
zpNUicLv?by9KsUmS3v0exvNHCzjnU+_l%4)mY0?(BR&K@;>p3a!v<>HK>yrzLueZ;
zUiN`7V;HPEpK=jzFhaUi_(wo$6n)a{5uRcU?IhS#-PU)d+_W)B*0_@moX$@c<xhC`
zPwajjBTB7c_g6{@0EEbJJ+i5<u~Y^50O??X*YN$`x}$2Bl<Jvz&YnG!i%o<sxf^3d
z^ckr^5Wdy!xy4XpnkM-B<FM2PNXlIUuMM9wlJcqwfuLh`B4YFUB7{wrMGZLr1^ECW
z<WFl-{?JA-jCsn2=5kH+!R$R#Yz<{ksvfME!jy{;-A$EfC>YsRT21n9(pGnkM8W%O
z%e8x;%zAj%C5w+pCvWT#N8~y`lVBJ*C^Wk}A1kSK)YZ$c>O*)+FsIANvx#0HrN){;
zp<z<^GZPa1VUp4@+<*d<D)*V`?pJe=!TW|dMSVPlU96%3jl*?`K}fjZ@v>|;cYlIU
zf&%;bSFI{#jko0`(D27g{~U&t&uo2w8z*}?BvaB96l5f}IuvkiI41<{fcQX)Q*t?J
z|G^I(jwsTc>uFp+imExN6~R~J{St#C*hjto0)|oZul(bIH#stZ>6yPASobljq~AZ_
zh^#f2xMz2e%&g%G|HrB!iAhkGyeK9?+qnx=hU=5avjxx`ekzSgjWp<!?p4!$1`!9=
z6J)Gm?p)6!7QC!D<>Z6F(69Zwh<6z4NypJ}`_LBX$md~M%Ut#N)jkj%x!Rz3%+JfY
z`u`hY{J8CV{vDD5d*R5~J#*t<b7`WnpFtA!Q<Z<s+)L6aPb8Ig#Q~fkDm=KlPZWEw
z9a#E^SVipr{pj*TPGZ_D&Ium-q@x(!=h0F&IuA9~zPYovqwBJ=D?@AJHda;DXdnru
z2qS?M-31TCr$*t<09CJ6HYj0`U%W=XdqHp+k10$?H}yAVuo!I>Elxoo^m;p1$){nb
z=H48KztW82;l)$^t}4#hT=+E^lw3OoC;vcV_tcvqTOjyD#D--e%ld|>!u`2>^KwPV
zb&0IkZ>WD>3|oG?#a!E77p{K>Bn-(EJy37<|0R+sb|QRb9K9wR2pS3<MyVnQG;{^J
z53g|D=q#bEiW2Ad!rB2Yg?E)633LHG)04``8vun!+zjD;GpY);otIYy)dTjq{tz2-
z$ZH15fH76QeGSSKt&nR{v#$UKG@z*%7<7!-itYjSI9T)OpvaWrc_1F7`aU!9^&UmY
z-H>7hv4MoyCxiLUt=_@egt7ZZpJbYH*Q?M6tG;}Lw?A}AgVn&mdKhiFJ8<cFo7wW4
zPZF|I!&O$TPJ6AoxK_y%N8K^Q!A0g#(W~IYF+hM}L$LGFkdXg!z0g`)k|sm}s4FZ!
ztw`$Ocz2jsKMX+dg{T^+zoij<Y0@O*ga_0|Kh^kNLy7VwS^q;T;x?7S-%Hm+A9PC2
zZjL02{K&z^i-40yxqRr;?VD9mZ}Oufy*q$QiryI)wOr$_&B9b;e*s-q6`uNCHIgtC
zT*XJG9j!LZqk+M+iYa^K*qGT_gAe|<>S19YnC(yvXwPX^2UD#lRmolE^a>4Edw5JF
zx4+HQjwT&0CkdsKgOdzoqfW+;?)f8gaq`{T=TObJr7tbEUI)Z(b7|||O`-RaC2XBP
zp*m^cHn8g4sVD3;=Up5?@5>O62u;N$&(AE`UtbA(UO$sOufSKAKVU6ZZ<E$~p%#Ny
ze=LkG`IaAP6EiyYcJ^G1R5{5-){aamIh22JN#@1e&NU|eyOa*7yC+Dc!WKsPFy=?R
zM>$w~x#=7iZyB((WfYPr!u;|a?U;+I30eACoY3sx-X8MkzYsT@!Pfw*!Y1N07zILx
z=5!h$sr={rK{aW{QCIYs-Ko1O4LusfzO7J)9A5mLW6%M|!S&BVBj6*X%=cHS4SJCf
zEXrkk?X~M%gRWd#t@_(f+pY~B)HwI+ot7$Y5o<R(8xB<DQ$ipaG+QmrfCgjqk;oLP
z8uJDheAwS@!xjJiY*g=;n*R2Y%KWY>M0shTP87W70i(f__=9_5&o00P&X{|~i1nn<
zx$7cQ(p4NAE*aAESbJiZeUfH&3_l!};V5WbYd~YVvm-(9Q1i?^ZHj_bg-#j%F2GN$
zHIAwLN$b;3(8V9UqCn!owrkgAWn9~#suo>0dCu+%cka3Ob$aW$yPM#u+|4Cjl5yEO
z%c57`wP*i6t0YQ-yhj~u^-yih%B9yn**Cr5A_-hFkKj10-bXC)s29ox{4_Us!LyMS
z$m{y#pWOO)j@cc_F=G7dm{PPWA(6Hb18kQ5Kwh}fl08Q{0+KY~RgEKF)AxXw3i~Bh
z%2}n;Ka;lC%BK-6hj!k2O9N5ncSE!x9SK2P7!3WY@oVUNIF<-(vgMwtcyU+cDFsV?
zq5D_l_=@MUq2FZBOTYmQaA>R(|A8rTkWDCGQ=0tsTCBSyo=R$#5k5z0*cwg*D8Zfj
z27?$OjhA_i`C2%?POpF5E#~{~ZwT%sw4s>&8SX<m0|F_S@BWOh$Q|VWGH>18s)B81
z2xNW_Ftj-zHr1hapIOMpMH>@7Bd@&l*2h0zR)bRTT&i?#)!EWotPIelJNLUyZoN$k
zK3ev4<2C3*gw=k6+>`fctprX~-|c%Pv!uRm(0b_*?xUyZ{tsSD?}L-)9yfI{Re-Q3
zho!QA=W>}kHW?lgvfYduuQbsNF8**#jM&fb74sZ(*;RU;z-EpxAMK7Q;Dd_Z;J9kS
zhB4+P;}+S4uWdIGOkR5z^fn-Kg%_zb58uv0)JdPP&RPUKLtue8>Y@s9h9)x7+mAsX
z9kUjR%Lb8ji`@JH&I%Wh1n0P98Kj_d&s4$aPA0RHBSn4-fp!|?j%a>AJR#ue@BPVV
zc+`NYRJKNkjnLE~kgftEFhw)39>L{>+83t5^MRvIN_)icKhslSqH05fgvA0EW&DD*
zUNu;~%W#e20%yY@h~CHhX5fXQnQQmh$v0|G<^{u{HtbHKW@bVH8|vUk*94wEihq)9
z=-5+(1)3Ec0?PRhW&8@1f5chx`z5^HLvPSs7TuH3KI8a{A}aS6T@DtNhS@zU92K#>
zX^(Z%I*jQDz~UH;Ukcs0BIh43ANTe9*_y4bJWvW1+@iv4Z^(%EX!9qg&?Q~^z~`Em
z%LP5L+R2fUJQ>NhQ%w19Y8ioH$FbHgR`93l_9?H<^In3k9&AM${!bgWz|-2b@t-+8
z1N!tdXcL%0Pubp^(h3=IiUwmQ!&C3~TL>8;v$`8%`&fpSa|5=F8iRa-t_Le8wmpq5
z*AzW`XB%z!zkiBNIoY;YTN+|8w~zWytl`GUJ_))qljuN(fi+rkeYzGko6a!gw(w8<
z;<)*b`?hCi!PCgj9q%Id54P)u_n0C>bLlGMKH4gQWq9R(O~6tkl==S(9gIPWPk&0N
z*ybTxxB>qD@@%18MvFIAX+aAbu2ho;A`HIlc`Cb{`fhilH(*IYvH{elp`8vZNWHAI
zqFW43+`*VoDN1d2l?ZcEDJ2U*z!pLm3*e<<Z(c929{iB2kr{)?y=ZV@%_;;`L^}Wx
z7b<+MvWwOB-S7jRgDD(&vbFULa==>nzkS1NA}fL#TBa66hnZeVav7vQ!S49$-a-Pm
zlrUa4r=JQIC@bRs$9U}}cNAbknfLnP!#w7ntR5+cp)ZT=@)(GSuII+nu4tskLT`IL
zq*Z3?qoAxUY{#LDgNo^{IMlgmfSXqImA79@%`v>2hh)5v6;E5OwQbE9G0>@9g`wDE
zIje-dKU+(Ue*E!+?u53UM&<<TAOV+(vK_4ivc|F0-+r=pdY*zPaTny*o*eUEn%@0M
z?ZB$r-U$#kv{nr<uEIviU#=1z@KG-at%y|7+L7p;_)Uv*1e8wvp6K$1p^N_gf@j&L
z5I>SP{^1`oTND$@5aaY!mzr}!wT`^g)N^qUNA@0ZxQQ(zr;ObEr#GIuzDu{xP1QUJ
zPD@n#m~vFj-7Rt>IlpT^^|S%58~fwXGqWa}$YW2#$6qL1;kf>9v+-lX#-opiwCwk$
zplLhe0l@2$e*kf48wD%NxPx3LNU){tkBDb`QMp?Nt*%D_Y(1B0e{xjK+?31_mTF8N
zPw~3G?B?K<_HrL{c~F@E(AQ?GSOkOfffLO8`X#~cI(P{_4kB6JA3B^{Ui704PwJjy
zl(^s~8_|&lLz6p}cU9<<I1$|(iNAcdrWtT7EBJL<1FQwr!RrES`LL9M;dtH$t({~&
zqz7=I!ut8Ie&z%CXVQijfelv3!Lfy?2+Xc>?~JagW4|dni|j`RKmdT9R-=ghEW&c}
z4W<f4r%mj1O2`w=m@$Np?>YV%vox_{`BqahqVFNn357m(n?peUN@oCo_|qu3{iVO&
zD_wmD-6Erct1<zPOb)PR0<K=k!5T|}#ES2o-^=`{a~W0)kpBJ2{hTfAz&Tv|L%Mnq
z)EM?t)YN=oKqjxxyk$>2=xcOeutSA-=$7KbBKVb7sG~g>k0@oq<=cF<BK(i`8~p&Q
zEvbart)+)Q9U^-0KR}8`MkP@9;4<5eW`=k;&`d~$gWotos();ddkb{CP5Lt)s#re<
z3_h4uyC?e5WFzlbQp{oQas<+WJo;(HXV+HO&i?KY@HEDi^NXk)E<z`$Q_vKtpyMcg
zzQ-eXT4n=G&e_bJ14T-yy8Y^4{HL*_&mu!LUDA5<*&CU*{y3G!MC3aKNWeeDI5j)?
z@wxwI3&YyKWdm<_t(>sg_qpJQvtpzB9qzX;o*_kuivMymrx8#TrZ9W7_P%6Kx0Hm!
zC6sYQ3Wdo%czxTUNXskcgKrQTjN<@Rxm8~z+uoyyYC_uYkoPQV^CIucg$8XA^OxG$
zd<EdduFcVv-SdwtT;-6*7w!LAT<POhav%~cXU(^A0Or$bIcCdRbHB9$zDn>tl17@n
zn=r6*ARl#6*)j_}zXo>3Y2K-*q@P-4E~U-y9T(HhIOnJoytH1q(#b)B&Wjh`#q(W4
z+}fwp@$BRHapTjn=rXrBdw2`<e~}1I!GaD~D*({aTdYRUg<#=^?Ag#wh3*oqzl|*U
z$*M6bgh!a%OS(HoDEGlkKjVlZn>TRmfnWh4uQt2Fy52Ky=y`R(C!?X|$q2Tx-E+FM
zSmpHrqof$+Wbr|JM|=8DV7wYOh*>IY7^HKGJS7TxnTztA##3oz(R*qmEelFId>i%z
zC2|e0{a|IdE<d2W%^<<HDLbkn*J;(rhisuW04sYsyTwHHt=vudFOS?iKLQF!!`cjp
z<fq8jyRG}`T^S?ROsG&JtsPVO392BHxjLma-5L$jNcOg#-psKpj+u5-EWh?{(ezT+
z-ua&hu2mVdyyO>>rZ_Py7p-tWtOXW@y`aof{wPq^2_h-dXf?lU8}03yw<ae?w-m>y
z8uz<26q=Z5cA|;5qhv0s%D}tHgUa<Ewyz}?*UFU-b|$K*-ELhkf(Kv+oza1%@})@V
zjVieRj4`llP04VndwL-YYttj15%B6wwvzl+g##s)ce!!=N`~BRUA<d?>FAAgguD28
zoodciKwO@7X+fKeb*JU*?m#Ky_7(3=t653VA7{pbmD4SqPIt8=$b)K+Z-sY_QzU@u
zopOqDE@7;<m&Uc<M`fm~^dHza`aOt!qp(Yc4}N|WQpmpw5Eibo^gkB(EqdywDKa`*
zC*`>p`qF)^PD3o6qrXc2MsQYhW8HJ=|EEZR;74n<%xm4CkLsi;3^t2hwa*_M#&a$o
zl-@x`%|^e&9P5G~A~-7SnWem&>3ewnv4iUL>Gh-h8^hQfs2ukJX7?=_H_?NB?oH|C
zFL3lw?u-o2Eu-7*O!b&(pk!dVY#Q-X`zW_4l#&Zgyhq7C=>t{2s1?^5NxG2}@ezj8
z&b#Cj2ftCTkJQQVRs%+yK0y8C7Ko}L{_d<!-V-HyJ?pAJ2E#rB{TfUHNMWjOTgI<+
z-}UU^6-tU;?{`T99IVjJ4L54;BXZWHvH63<ih@<Ba;(Iv%a$jEeSW~*fJ0PafgI6!
zZPbx;sE-(D8)Hm8|6W$v#NGc=-kwEIDM^l2MVyODVIKERkc-}sAj{CHO{OLoU?Shh
z%%Xy>#$q_a-R587wcL<-9Ae)^!<Lo@S>|y(&tO&Srfg-QQ3NFONbvpYv&OqDeJctv
zBW!_P7ri^en&<Ad!^^{hJQ2%TC%I#H#@4^ltHw$Vy8UpoABiCmunj%EMr~7aiQK(K
z25IM6&YO!f{fDv5S^1TRlhMY>jJl-DuB7@0t0k4J$Na^zB0~<K@e=9bT|fqKDvZTk
zz%I%7Z$k(5(Q@&?HmiPvIk=9TL9JZr$HF!Y@JpRbJt1I+^ATeymQw|2yx@DHf!vZZ
zH=LB|rbuZ-O#8<u`oTLvy8|$Rj~7LYl3-VUbs6@)nSv4WiZ|<FxL*S~2HM>A<c0qy
zBqa1`UY$1J&YW6qn~$zg3;CZ{llf6K%oAAdsX?-iRFqq1be>-{m-vq561gTtJeJ5|
zyz~dN{6LKL)6lUsY@oi<1*C!0)WE6>2yJ4L1`Dzb&{92DB%$i$MhTU>dYIWmN54v0
z$TO8yfkkqdPFzcX`B}up17Cy!hNex%UUrY_KrbAR21xj+>}KyMGf3Uq3gBfW%gSpw
z++&3Mox+UED$5?|i)3Iz8Z(oF-J<kQYe?hdTPh?FvT9}^<sTfZVtL>&a9!bQgC{*N
zim+%YRpO9!FJ9rlHpkMv<$jn>NX8oclx{~6Q4<y4ib(uuhWCx}Z8LTlOjDbbni!N&
z`~rL+_n)r0{sc}*0aO2@eW(vXk0<A5k`~9+I_VY+Sultu0Xxq8sqjmtqsHNUwvtDH
zkvg-wPCeUJ2=l5kSE%@$Fxcc_YDw2K_4kX+R^1xOtu(sUQeUuj0@@OImFeDa!yyvb
zsAj+0NF+EOaxMt%zW{rnTyw9^Q1Cx$m&;$BG*nv|VT%UxkX=UL`ig~9&r6eqYWYS0
zDfy-ty9@o#KvzXoH5hNwr-$U)u`04G%fL`{Du+>FML9Xr0Fj!47wq2W+9!|*80mud
z2*O0W7iB(;eXp0`f}|RuheeqRa&Ir!Jmk3<{BMQ(47BX#1}Chyor5mB;o7j1OWN}F
zp+OD1)A6-DJ_kFp&!BHSFLlpR(NQ|?B`LWoOJm)w!!2g8XsLAhLcfen#$(ap%Ja>a
z*3#Rg#(Ltam?}8GWo1*o{PcnovlC~ond?ec!L9bTC7ojD1=UqDW*{^$u=UuaWdieL
zmu5WsQ2hs1ODMd1V{02`(x1KuX7t$dWFsie=^N-+R8Yd^lPz+KayQt{+bAA8-I$^`
zyv`r*Y5zo*6~i~rg+MMOUd+%|dXn-#`xe7(?b-BCm82Kqr`%Y#IOZp)IPn0OweKWi
z4U^#CT`%)U3`ZAHhC7paK{~#zCWOD!b6<+256`N%dD*XRC;3cXO9#|myTc>Y7SBo#
z<3^lGlM%0Bm+QBa5l7<ruBmU>xLD{?w+kdO3B@ecfDkhWwc--W?j6*2>RTDy7LP%@
z>Ha^UbZ@1qLk`F0TwQ90tN8&-<oxm!d0*WK#)M?@bDHEcE_z!sjPD|s;p5MjM!K1r
zJ#&5P!if5UJ+x_@rv?3e_o)o_snfOYm05+`$<lNB#G8wcW}!YV$oO2!ZC@={HRFm=
zE7g0(&&nL5vx@;Px<+SJT@HNl8k9)N%65U~dp;8$8DvK8<M}c7-lXn`sP@3MF>a{P
zt3~hE3ut$#Cj~XP60QV7dO5{jDi8LcY$}v0kD<8@?{|kvEhd}@&!1uE70BM9`uC)h
zmM_G5(LLw=@VO>S?5Z9gH+<rgh5-@Y+=wgIG_j!(o~jss3A-xYwk;NZdYI?7&fItl
z2gxZn20q)txlv=4V@+620-UFtrN2^aO1lqr$e`bL)iK)XsuN1s&2RTAkX@<e?;_kU
zV6tA=pT2v*Jcr%XxDtX_f3^z^Vp`<2WRc^ZTok=olRB6;RgP>6IyF%+7nsuW@1*Gn
zgo2^TcD6#>9^9XTLrmv>5@8-xRjt|eg3ajdQ}Bxwu*maXj0g2>E1()4m_Miubg((T
z(dX<+epV2ovi&ysOaUYk@yO5d+8<qR0^WRny4>b;I0J7>A0UGu$C^L?rhoRIY!j`W
z`+3)1^AQspkJ)k1G3yrJy>M@vP`j+5o>O-inPFwyhd+6zw<D1KQEw$z+FN(_!!<I9
zyF&~*FN_SP?8gn<;#?6<<Du?1>hINDakZyh^^cs^jrub6G}xFMhX#VX^`N7Q<X;9A
z@<czF1SDy%=-N;bEp+m+vt*vK4CS8a11yp2ZR}RkKte>OPi~3^PR#@G8)n=HQftWE
zDaX^CYPu2!=oTGNKN9oNT?<Zk?mQLJYe5y2!@^A3?BPZtWTvs2yy+8Svvr!`qqzMV
z*aN%b@}z3GBdlV>+WD6#4*L4C)qlG|qm~Ui7rw<Kl(8R8hxUS{^pE}7k-A#Rl6<vk
zS*nd5H_tFZT8*QN`X8+sR&8bnqhZw&fp-G3wP7KzaA&u+VpV5@eNC*ap-=ec#BU(q
zk@9NH^4^h7jmGN2k)<CFXDDD+l7nCl9Jpo;L!)`>wxSoM#=<G^QQP43Yq_kzf&k6}
z@jgMxWM`V;+yw@y04_nW;s72~oF+*Y*0vR8-tho`)>ueOgmh2<m{^i(8*{}My1ezJ
zlp!z_+6|>b*@3pUEk}1m2#iT?(kSLB-3L|`$|Lso?<^a~ub2V*x0pu?e9@$N`G=ZO
z_588Do5Q97T@(V+u_TO~aPNO$-Y8|qZ<wHEGv_b*dAeUVprQM>f}@-g3z+Cm)K0pc
zw-s7t;@|;E(Q&X(!C$RpcYH}faDyE};OVkz*{ytI+vA2mvsY2X`6NE4hc00LZT&)|
z;TYi>rLG6od@qNLaQ!Z(jPNo(`CIvqYa#vbpbmlJ_bTNQE2<$C__!KA0H-s$8xF%f
z7<`bsui_LU3)vugr~Ge9qN$<<lDq9&^0QMUcB@=aQ#VovfXpBo0g6iot-T&q20Is!
z?bb`ZJ$<!nI{~6Y$^(xxM@Z(D6=)i|8rK4xo$-SzqDCjME$7f)fVrZI&XN!V>2HrB
z>Hf0?)0}rKPwELmcui-kFZ(C+yF_ZM>cXd)z(jb%nK&&~mckXb+5@rV!KgC{Mjy&*
zj0W1eU02{2+Lf-{<|s?^ap41P4s)fk#ocpgn1>PEfKK-rD(-HH)xXJZIpTO<shgiP
za^y)TS|b#5H}C!+N1Dx2!+xZz&gMtAm;DxFr3ldgT&4@ag}|6LN;>xM=p<-M=hWa^
zQMU*^rI9;jmY0KzqfEgBhz_)$sHI2dZ9osuLh_MI#jXZSh&v7DQOWsU<y7KGb&<;7
zspCdTK3(DZZQhYrou^&#pJN=0+FwpjaH)!~d1#q3S*BUt*^U(NIr;&`mAzgCHmbao
zhTzmWMAE-H!(=YTk-a_gbh)4^7|$;$AjRNwT6?&w!@ZQgZglPz7_QiUBlY0Ji+8mm
z)>g$|Kaz9*T^^|B&lDJM%94!iH0ry*NPO(*{?ck8KZ09Xn3dc#=fh~^r4_6`UklKe
zZlQC#WxaFb_1>kOg&8l!H=ny6kDmF`R*1N-gBx;bUfR>cd@d1dC!on_JXb>9?n9_d
zx#O<3Nj+L`3qEFYp7B^C9Ya%)l+A0)($)zL?KSaFtoVHMzjk~VTRAwbIEioM{QMDf
zXzI8zr|=Kf<)P*H0kE(giS$N4G-u)Ef2ZTpRvg*Q(>hz7-0dVD>b(^Ni&L;os*(!R
zOmsIKUJP2f`xq^{a=T5($@mcqGD2Hor0mr6i#e}@*L1;y@sMjqBISShPwX{Rzz}@Y
z)(tDE`!ByQAli(zr#PQ<{L#s^ZAjQW`xe!<Is?m01$<Ri2_7rNjsQrNZdz%z?NTMT
zQctVq{+GThucgx1RBY|Z7e;{HhF}>lNq=Cf`}U&5(zi1ra?e4ZvWIkU+6Pf8*G?i<
z1#4%=t?uHoK8TwKRc`{9V83T=wj4Uoykmh}2`=iB-Lk=PM7FAqMOg#u4Io5>z9C!C
zf&T<Kg{8@C`nphROz#D_y~R*-E8^i}%GXjQp!;W@5afuiU%F!loHhLu4anh{XTD`j
zVUSl3sf%u0b*TqWr^U$AmaQ0Bj6^2idu|Xt4gXCjk+6mcL>q!WcQe$lrv_EyT2+w%
zd6()Ks2dc;A<}4$m2O4D%F<4<<#{pCFUQiSDFL-ALGb5YX)+IzLus-^gRn1LkqKpp
zEQAA2vOJ1WLplcUHz~)b`|Y<3GGXRMhcXVe!!?%Kf9{-s8-<y?u9`!#J7wI!<8{&g
zlMu-V!7*WOMlrPkziOh)1!r?(4Dc-PV2L4_sG!Kgg_6n8Y4(p+g8_40kEvn0yc6!Y
zDh-IORfhfB@zPW>6U{S{0vzkY5k!JRfOw(a=c0k)B}sG4lPN@vyf!2UNnad<VQ11J
zs-_S}=sDGru5icsgo0RQ)eCGP1}?mQV;+b;>=39b1mG+2_bvYIO}V5Av$|U8nqh9{
z!1aGT3@&9qr(7Jn_y@>*3(&3$L{SLb$mPzFhwF`|I-IQgfAhx~)kSL|I@vkQ&h4df
zzsCGqPAEN-cT$8wL)L>yiR&VQd`5ib*j%LLSNQBserC<Q?q6V^$~;(5wT9KR)*c2}
z#tn9t$=|nY0~W)!_8!&*E%QnP#3kNvyN|jCW7LI@JXI&BBAhGn=v!`>4?Z~&Z^XsP
zDz|__G9bwF>4p`$($BKCO*NHq<svGsY)}^mCwF#V-r8zKUyBW`&{lDdcUG+_xati&
zuCb}iR!0~1)K^00Tp%j%;-Luv6v4;5RSWzri|3j>;1BTWi_R7T&2Ebd`2PN{k7WJ~
zBc4sU@U(_wusm6Bf9Q)z@3ZPtcw1gL!f+0kkmnPC(xao)CmC~j8!vdMiDZ!Q@Iv+Y
zGFJ+>g~bA~q6x4U81huO=kb?nFWjduqgQ90gMI*CPs>cJl~QTPj!B;pYT(~>fo<J9
z{BxCbUuIox8igVWG<}pm{k3?5K&U*ULIZ*|pIfPR^+wBph>TNLQ9z}=R|o2VD?n}X
z;**+JZ6YXglK|iR)OIN(&3|W=I#t`X5f_Y}{JD*O1lV_cDF~rcYIt<?lRtt15Mvx;
zTD9n7o1sC{$~?F^&T}W!)OveUyq;fawQVzajGp=POO<jiaLO8B?+zD@$8lNdYLaR)
zmsm*$z0A<&m({HeaPqf6!6?*RiBT|RWEGE{dBt@n2RC{{JDG2oKlXHR3^z&cz#Wjg
zLzuCv>519p_o)7MKOdk|(vUzfAbWa^J=-HbJmbFyV1>FV>dg0kqCXWetCX_=tQb%1
zU1l2@{${aX6pA$&PL_y~9VKRC%{F~=zj_JGMbOrs^f5|dRU!WQcQ0T`IWqQx9=MvR
z5tdKt?<%N}7_)t2(e-#&A;fqm<fzCZn6#c2)GPNMpe!kcDF~DW)XCB1us@f;WC$2s
zIo=d{y85VuH(JdYK*=|tWgDNoCp*z?x0D+D!W-*i>@N+7x|}-Kv8ot5%(K+JBhW(J
zu&CyF4f<r+hGb!e(H%REC^VO9m1EZ~GWmIc_oh3^@X7=~Yn^9rJg<6EADfbYqyPW)
zEPll|LP8ca4~Dm)A86bZA8+%2Z<9~+&r$251xXSc@j-&ap7bC}nUgq)MuVJ`tcrOi
zmd{-`xX^6lPYcVDk(Q*{xx88!Pf}182O!*WRuZQm3XcgZrmiw(o~}v;@&W^bW2*}n
z0Wh20n^-kPeZB<{YgdKp6V%0+RQON53VB^AFLyB<!QcNxN(w@-a~}y<(Uyqoi%1++
zxg&Y0Ls;`-zt|Rk<qc&*J_s1F0x|_|64F%Ozn13}kpi?aaaL<d5}6_^X_t`IUK#aM
z{7lS!a97+^oP5oOk&;UADM=jF1|Y@XTVGgFP!Wl})3Bc_Tz{<oTKN$~lCh}Tf(!6{
z*HAp^+5dvGHP&3lb<*Fko?M`fhqlJ;c5aS4f~fOCx@w6+W-e0$sud4(8xCJ&gdTs<
zKeh{0x|NdzCYoLvxa3lP^(o=@+;a(CF<NaG)}$$G9}TM}hFa=ugkw#QYu%x4r9k4&
z$4JltPvQx2w^m~5rNE8!K5PrBmm0@c_S7eyokELeMq8M7_flxB<=u%(o?YHop~)$%
z0mBd6(~^pOcR_W(MR$tUnCuc)j+qr4TQuz7f4?g|!Z%Aa5l5PP*6oDJAP?td@51tZ
zN1$&oNs?F%M{PT$SB6WR;_BD3SVNgSsYrHPZY_HJYll;*x!rJztQIx}Y4lcwzGNr5
z^D4d<?Z8y;cln#b<`v3#8an-v>mJwBmCn7U!&hQDLwL(m`}2{(^{G1c0RDC%xlT(Q
zNty!OkYjZLyW}4}30>({7!z4C?15IA0L3VZ+uc|$5i}+7Ce{#~TBMdrw48#F-a0uf
zya-NR%PF_-6&VI^Z8jb~P!as@JL7947#dRr=x7fp6JZqXgekM3M(8tccNk703kYfX
zdfq7%kfSCU-T1w*WFhz0j=ZsQ=8{~xT*6|v0~Bi(D<S|ZrLv{Dk3&_JJ&7R6<coQT
z@~{3hz(K9Hq#VRfYXLA*a6e@B@q6E;s^czkU6i2!1O?QUHw>?X=XTd}-~T=Wi+j5R
z)x;n~F^6cfd&OUMWr(P^UkS4%f3h|=yyxqOzsHDv!Y98+ioR`ON>n57e}YFTZfd&k
zl#x07^{nou{Qj&TaMdBu_p`8lrXaUBU`6L2`I1%buP?`au-Rhr5j(zxh&Rj5@5=_E
zyV`*wg}7JULq&4tVL7p=I3R&r)&I#JV`AwSE20aPNsTQ0b;9EjA@sdA?(fx~ECVlD
z`4)h8oDv*xGkdq1OmkPG8L0*LO*q&(EuDcsv2>(G4k9|%#mQ8M$co~hG-3?fmlJwB
z<5Y2J!ITZ0O-oJ*UayTp^!97Pw;bU1M_e+}ffrnqtad3qMShJzMihBF?GQ4`ZMXl|
zS+y0ImuHzz8GakrHa6(8<q6D|3~%My)_iQZvWk@A2_D^p*Fqik#SRj&CYeUT)sFGD
zW?WWJzzU7{*<#8K4hG6mAyeFfFdjZi3Ie0~bR*uS%WhuiWk$n<hju<<0Mi^L4H`&n
zN!_yv+N9%TbSU{Kq0q<&?QEb>GbL*{NUm3B5-A;OgKp6A4hbwo8z---eU@*pkPHG8
z1H+uDhvBwb_Pa@~^T@W*m`NO|oxijsht7@Q=mSKjySUjx;;}frP=}KaH(@2(t+%<6
zIZQ2_AZKMNLlXp9Y>B;KNZQCbi2Xy+;ZPM=6g}=<v`kh;bK-vnP+NJESvpKWrIA4R
zUjx}^rXgBknl21gED7-PSXEPi{Pi|V$^C!?n+c{J!iYEDYc$OkqyvrR5yfOeP&%k*
zi-D<y;hzMz3y&E}{Pr)fGL|y@J}ut|%#KUatX?|dP(s%~bEC^yJ90^45tx>T_q`qA
zw*?TPSO)8pS-+DF+HQp$hLkyrYAWdZyYuTdtB-RdY_1pz+rs0<8wLM+ou4Wb4g!1E
z-2+@aAPKyg0oJT|5bt80T{$7}F;cF7r)oFYKT5y}CEFq39s(2VjH+fNlYYPc#wd(>
z`P0S@dtKz~7~KKg-VC#fBqQ4I3_)CjmOIee>~jwRGtHX&^yas=b_)kC>gt1sTKakz
zUMVS}qM_4HDLY5rwi&qYR04d`>xnvnRW>L-`QU>#2rhP0{ts>P-A~XlXtT;x_+NtA
zIS8!XxZk+CAl$wapo&Sz0559J9n>|B?70w49(LTowGCCyTu4CE$&TGpl|W4sOs5QU
zY-@Po(qafh552-V*Hn(o<?3}aeLi8Uqa0o_HxWg@^Y^ANF#$lo3Q_kQW=?H?H}Bj9
zAC&0jjC-F>t@CW>Aj4L5<B=Bd3myo?Qy#yX_0Urqk;)!d-Lq4Wy$xgLRD8B@|CzmO
z)!74>0zIyiJHWicKUy{Mz=L8+0vJYq9B>5<`jY$=?B^SdZ1?)7i|uxWH~pIfReA(#
z?2ge*Y2sb8R}52jwwKPM3XYS1E{&d-M!#4<P8Z-6kzd3LKp$^vf{b|er^0!Babwr^
zcieg$mUjY3BKGdlqQOPcpilR@m{*|e!VAgQfj?I=uxr(Dz!X$_!uNgd^wfVI`7HVV
zk2+<BsM9k3PhiM$qYF;&ovkwLufDSind*_HPc@r>FM+YiiuNeYelQ%FOejC&Z)qs9
z8=A1%PR7_65002!04b*!x^_ot0Geq*DgBA^{y+htk20#f%f6~O8sgq7D;LG{5v{TF
zKYnm%JiZ!UO=Mfa2XTOVpU!aBd(U^7(8qg4LOeY{e$04zdk_X!|8ml$htyRfHD4GO
zhD%~pH4%2dcPttVe*!S2cqg*&e@Pcg<Uw?DP5s5_BQoE2H#wAH(i6A|mFna*uCU=l
z>`8>xN3K+T9kI44|I)muRgS9N1cv;bg50jYEzDQ606H45$n*4Rwn^{nDiy_-B%neR
zG(!R@SqOjcyYTzo-fG@Rm5d)tCZU4Td^0X!>AgGFk(=h$)P01HD~}Vt8k6*QTt80j
zp2m#xqeq`0d=XbwZ-m<#c6EKdX1BZlYyffCVMD$Bnq9;U-1=SI(Va(*k}ZMKeU)1(
z70JJtVh9L@cD5T!S<4MloHB4nfGhtpp2yX({xF@8aLT&F2TrKsHj}^g*6<Q^O=G(@
z_}>vhnAyv*BX4~gzOVbzk92tp_EC%ntn<Q~kkIEjQsww7@O4N?sBKN+t=B$~TFRum
z59Enj{)^lmXu6`jR2uDp3l1t1N~~ktk7mOrd6^(hTQ<nCWDagWO(;_gP1%9GLHHu)
z9NIfdwcJ@q<{P(}cFEkf1K#gW`cDwSXYSd*Ahx-+OW`;KOdWycHB(^?Pz}KsxR#p4
z8qV-J=3UJja%}}0C)@=;%rZLc7Uaf{*ZB@vnnlqNfK!dWDCyaB9g~X9>7wgfTYs*C
zPs!|W<J#@CE?Val^R<`7R~`S=MHv>rUd_F*dzJ2~2A*z0WtL^Z-I|^M1RSc8jNMIU
zQ&#{0Gs#H!T;#!V)x0J}8YbYCY?!<}T6xEyQv^+j7eTHc4xW*+$=A2S1_QxT=^|Oe
z8=%mJ=R0hElFBs&c!-Y2$_4&@Ysvn}{?qM2JkvBsSFvNK<s>ms;hA`YE4Nd&^ea?H
z&Il}WLg8RbJG=Fiw)TFF1&YOK)>{`$41+bg`M&zW%Ddr{Nni}63*RD$N(sx&;NhNe
zH9jvSGU6;c5?Z8=F8m83fobz%TDc5uIP#uCO;gjy&F17|Q{Zw4Ix0PY7q`iNE>`2O
zmUrVpZm?KO2fni|^2BBFF0aslEq0IHT-v1A_=@Y!#<;|~^kej(+S~%gu+KpuAh%Em
z{a*T?13sy62Pe2hN@>fBjZ)49U@q{YGToI}OuGcolONH*QlA-(;c){mIR>jeWw>Gf
zRkn{|r*&;6Vy<CFOum}v?ZQl@7Qk|gCTzC5;q4ZLML*Hs#;&nk*%Js5cuIltUiJEI
z{)dpf)J@2e4So#WDT;9QwA%u94~WxKl~3CJFIAG;+RTqV_6{f7t?}ld8WcKhZtC#&
z-$=tXuk`uXNE#L<MU%27Sxuew5bNd6oB?@>HfcBbBAxaA6IYo^c3JlZqN1#W#VB1N
zIzur(HMb8BRPk3uywj6tlf%bFyW6bEa?myjaV1qh1{t-loMaUl6hH1E9=B!GAVeUm
zo7afk6Q?#cNVIk{&7GdEy%>diGe|@!`=v9ztM57vS@7}zB{DG&0nS6m^1w21GDHTL
zE)S>z&+%CGr|R9wopGM>{g+k(AbXe`;*@B5S>f+)H%@ZrD0__&*a<@F|6hCO{nb?V
z{rwwmk{faZp|^m99;Aidg%GM#=@J8kBqTtZqyQoa(p1Dcjs=}T;bR+6Kn*Guih{_9
zAV|R2m>CrXtPDD1$v5*aJU>6@m%Z0|pL_0IXRWi&xqI!iU-iI!%~c+<>bdGhZ==)?
zL-X~Ny|cTUn)v)b8xOw<YeT8<v(`#RZ`g@2*E@HzX)A~C*hh^zSggBFtJ+(&IsZb$
zcwR4zd4p9NU+=Xk{QzzoCSzV>9Y4#7W^x0l<1i8qLmf;nwq~ma_;2BP>L=FUi$&Ef
z{VjjxjNXES(7-j!s|7W`jworz|9Qod#20Kx-8|@VDkmjA=i~apIu{YD1Glzjz-gD+
z$@1+VNa62VbosYpe>Z?aC0`K7u-vs#agshw09<R-HE#%2)gG*@xLMbUiqkoc3jTqw
ze-pO1Rru%TNj)URx~IkkFf{R47!zXckuat)5OLpKBTcy9ttkQ>6nhC<_{K7_2{1DI
zmZaf0U8?uK|IId|vuT_PyZ#*}osZs(%W(^<xg#$VuT{UZZJB&KoR-k2#NDaBR5^qg
z+p&t99a(hztV&UuTJ=>WNi^|KLmniST5VsDN_1zQf7MISs(zu0QQX(asmfgKgY%c3
zTX2AG%%jIkNxgTb5cf}m2fdRtR&SWd_{4vf9{Q<c-R)n$KfsmQMC(CBpMT_7FVr7i
zQtR;GLfvunV4TSIa@zXu1JktwDEm$8mP!h%k~8)r9~@Qn-|Jb{E{d2ndAh@>%7a0;
zdu2A-Eti{PTAESyuX3sSi)6J+i+pJNzqLx^Tkqfvi~7~Cl-AV2x#~WhadT62Ey+wM
zTCf7^l%-pxx{J-bAMMbHzL~WWcC1t>&nk6>h`rB`wm<=QQ<9})WHTW$1T3>2@he1>
z?bwoZWixqx{`-%KBue}6z>?wk*0h`Ns?H=Ad41Z1F~9T`)w-oo<@n_c<#C=;0VW4}
z%LrXp%lq}Linf3JFb`H5g|u`%p>O{##Ry6hz_dckg&V*zFd#VAb6Xg~`Yjv|x9>M=
z^71o{pf3|-6JR{Xu?m{lZM~Z&Y$}^xVCcPlM;QA)x{!n(TZj>!Gke_oWXB)dbWmQ~
zk`P@VyuMYexY@5NQmHB}8zWv|sx~j3m176Gb=}-Y`ZUvOR?y#wCkXqJw3db!+Nubl
zHCf#Gm%4Zz^TnxOy7bdh?vBgMl)F)TMuEUwJ(nO*qfU9V0tTTV8!L{elnpCL{1TS%
z>JxA=&PAOawoX5{Mk_PbI0MdtRKB_Q=((0mIFy*HlSCFFmwNJa@Mr`IgaG-*63{yC
zo|WE~h&Ud?!Hb@vc)#FWng^a9il6izNB>&`E_~Bf9OM05V-a2N1jm7aO0W3*n-gZW
z1P4glbM#y?xTo%f=Zzn#a|^I56bw?rsNoTjQPDALW8>lz5>=`W%t%UVT6#w2`Yc8s
zlf};Ga8;_Ce-{)M@m7SQjm2V#R8~@2wu$WS;pye=<Lh^>0$A~PQuF^18VC(gl|xQi
zzNkp=8J<^)h_-LXuD?+q#`@3WH~+nQs3A%}l6)F*AoBanp{j!OpTirwXlm7Xzhc97
zYu!CX`!^o?zKdFR(h74iCeLowO6Y}9wXEt}mz8aQc3A$JuH!bHVi2xT{qp$Cov)Lx
zUf!FtnudI1)qMsVv>q-m8DvGEUjKRKOY6IDvl>Fqj=0r-_^ZX((dw0r4c3ffe4O8l
z@8NH5w4J&CG&VQ3cSUrwU!}Ts^TtqRGwEN4<8SK7@1{@|+akuNW?vkhS3jzJ`DOD7
zOLltut#E6{<%6o#)KfM;{pR1Y|J$Hi&B<o(`yIEtV)>nFf?ivfSb19b{H5~`11h5R
zxH`D1{;-6tl_{USKL%XyeV|yqcd~vNr)vZfL-tsrG_?(ou#U08?a)dz7H{}Zr`we6
z8a<UA%T)u2Nm7N#&dBr%L=cg|VimK+VnD!_@EPr27a8Ir1F<v@Pt*xlJiflAoFV1m
zI1CB9gi%I{OcNBT2726HmI#1=?C8|gq(>B~gexpAxcNlhv&pVNC@>5QC}0vofT)Pn
zAF8f*L_0BpNOE^2YhlyG>|z%Rhb@rY&-$uxY;z;K`Xh`<(L&3jjw@ng2(P}O&6P-&
z<V@kYI3aTbKm{cME^$AmAIXs%2|!ZZ3{OY_Sc0#a3quf*F4G|Mh%DidOsV7-cuDfZ
z0^Hmj-N<&#M@tW;&B7!>yrPqv*xG`|+35*Tg0<qm701$wuJyfQ-iWLW%<U-e;2ToD
zmzL&q_19k~6vY7HC5$s{N-k4hB<T*D>!I=M1gt3!SC3L+Bu+~R*99jR7_eCd8N3eu
zQe9aClgTD&JKNYl#`48M30B{#R|#_l#^|J9+enTEE<_=xqv)YLq+sQwGT8a;fKZv~
zYR~pB7P^zkUNHirXEIe!fn7vIQgUKEk;!F8OZoOT+)QWw@#p#4UGX}ctyyBYE^oGr
zU8e0#EBxPzUS6Nk9a-gNzDmfhAciOTdHQ*gJw$#5`Em;xXFO0Uat<Q~bI9e&wLKS$
ziGKzP+1yOmi}u~q+9jV&E~VRqwW_fkF}T_eKCMU+p(So*5llLahXi9D{%FrVeja|2
zj3+EOfj{qJ<e}wZrT^dZ6Z=@{`}i{b0{>ccY4c!9v>AEMnuj|znOdxs^K;l`Skuqj
zeIp;D8GQ}*XBYSScx#o?3GMgLd?*<5F!ovOLvPCTwwSwVw+MQBkjYv$8I<IN7!v+}
zLkUrctV6u_bsg)bQ}w8_Vunb>N2QFM@Je29$!ImKbSnwK5^-3{P@Ocg|2;!|El*f`
z9Isg0F()p2z<2!H(12jKq0@t$GA2B8TOf?3V-t}Av9tERPT|F&_24Rww3wmQIw4;X
z3%7<Pq*q7}Jd*K<K16GZwLX^h*xK2g^&wrxZdx_dem%!Ls*M;Fvot+n!N?zDuYvg!
zBIQbsq%2|0jU?m#TQ`3G?FmJ6BW2ZW_ZYvwK!ho)4%d1x?acXwb%jXg%`V0o91hjA
zK{gwZLIc8yJdp6~UMkehFFKhPJzH|DXj5S4?)OA#b9gj0iO2NpaILq?-jFw<E-L`j
zd7=VZ;apgACtb@G_z7#bucy1ltDViNrYU{&)-VMIM&TbsP6x88c~6XM=b~a8mSn>G
z7M}16@LE5Awy5iZ5Y5zw?2f!#d(T1*3~y`RaprlzqsV&%0qFbk(J5u}NA?6$`i$)s
zRz+ShEXNSt#V3mHV21elZE<;W9lgV$O$|;w9xWikn;pDT^qpBjk_rkoO4+{=*ep{F
zC)VWn8upJmt<f+Mno&GrM#<!AW{CIiC5q#w*XR>F8j0eJnLBZg{)xH5+22f0(_94d
zc<#H+E-s0*le-Eiv60<fI<ylpJTN_v$bBZt-^L#i%rUtetvNcEpK}jt2w7H6S(0LB
zzL$|>5eLV6%2ix{m9WDm87dJ&yNv(5&WAFoAv4>%W`M|O6fwwaRJ~7XANWOg11bxz
zbB`^eo#8ui3bG<u4}U+f=jS}$Q?c38Rn1yg+<}xbeMV_ObaS45H8G}m&H4PUtk`M!
z?|!{CMgtzW1u1(?sm{+8Hh#gu(RuW~RRsc8dO|R!Z6?f4mkUUYm2E_q?&W`^wMvFw
z|7p)+q3PW8)~-Z7ri&<>yt9hQO>oY4=}Z?HyHgT8>kjRZTiFKYSt?=#^@BP%c*FxS
zGkxiH(k(Har5W@HryblbT?0&*e1251UFnhzL{wo@#P0C7U)dATV?quQp!)D!sDwr`
zvw`2jG6zgDFV*j%s|qAJAkV;yh9R^Pi*GH->jX^%8ZA&G8bjviIX!uc#07eSUid_)
zN&cesGf{cf-$c``m24+AJAPbBHJqo4J_75Svug*pc&Xy0*cjUahLHf%`Dsrl;TX|8
ztS?)ZAaoTLuj1?rHIB78%YNB8HCuc6=P(qh#=^f8|2WAJkW7Tt&FGeAmL8vMpPI?o
zUg2DGIX~&Ni((Fu|D@hEL|8PO&!}d-ZgRP0w1>8gEIm#i&JDbz$5MF%1}wlL#~H(-
z7C4sB#KNhoaq9zM_teaQK-BFUv%&~;awZB#ryVQrf9_BoVXzvQqlAjA%4*8Q*P860
zO(uC|68)o(?tgzvN5v&l!Xv^pPXMa{-^;_(nr~bS_M$LE4EKUE_mrD1r^IB_%Dsyp
zDt|BVx2C!KS0cNel}*+(ibgm!(&aC~XqcxV*%whL%PO1@TnYyElspBrulZlq0?7Eh
zO)=(|lPwH!2dQPKRjQ}l!^zA%iB?!*V(O<so9k}`@uo2eVKJxcyvaWRiZFthhc%qL
zg00gtd~f$mQN7pOhjDw)k#0LXwr%n+Loe@ACN~Nb4Y=&nQ>>pQ+RmMO=8)B^sAp?(
zk!uBu6$+<vcV~uBzaWL05|io!SKV{CpGxZNwx2uQrZwr=ME~atbER)?hg2dQc9aMH
ze(7Q1T9<Q9Y(iZ+&B&!Kap8I9gNA_e%+wb<ijM*o<so;1H|XF5IbJcDPJT~ZJ%?N$
zU^-t?oY;TFo}Uv~bQgz~vN69v-_qB`(*20G<v<01G_gVdE@b{dWHt7^e64vQ$o_p8
zS_mZCc0htgjo6xkZY6EN9(KoC6&1;;p|Vv1;eidD?bN=hW7WmhFEGu{>0trP4K{N|
zGr?}db{6}{)vS>{QbP5)T&68H0t>uDcG1x8e9|q0r`X+cVl~mPY@wLRE>|wKHAimY
zmz1;3ZCh(}D?NSqT*)T(jbe}A!g;S<lR3$MKsm*RN84MQ9Ma+=lCuf&^kLX0(~igO
zADp-`09ZBc<Q2Ja@7{kp;fH#8#8Kw%gWj5H4}T4Hy691;CO1W6D7lgCM9s%}`Pb~W
z1LlIr6t|M!^Y$Rc%ihigxhBht&c#n^axDv!Faaat-TAciiPLtO0H1Qv6urO<nW<}1
zz&3bNX(8DQNpkPY_9z7zwvKBzAmidPW1lOXlD7vED9K4{NbUoX4+D^#FWMpz)4sK|
zjKyVkBrnu`qsAv)-MKe=k#UPcMFu6up=1OKs;W~$N()DCIQtlqvaAKJC90UxFJu?8
z{~6bwfV70zgv5-5j{ce0!Dvbn()lpY)b%!(;cHx+;BVAeM@p2Wa<v0zwBu4Fj;XD|
z2?|{ojYR#(_^g$#Oq*cqgd9q+H<n}BXpvxqO%5iP8pMPJ)i|@L(d4JD*h|fpu9D!!
zU+s8G^YCp9onyRY4|+?|=hWc!?Bw_XSEg*2?x`h*gB;83V870$E-f98Rbd;&2C_Dh
z%EQOQ-ODT8Jhgz#XDr?FSXZH+yy3Efn*bYz=FYw%U2*$nE^|L{FaPaIQg~WpVsYoT
zYSF-2`fh>0Nkp-H1?ag}+&bHU;`!A&yw4B=1w5C?Zes4K2L0YJJD-wbkAC+2fU#^$
z8%Wk6T8pB6cqT8cbrMYWjiTIvClnoZQr_BNVB|L1pD@q?Q4`uqf1)HGrn_tA>2_@z
zx%8#}*E24{o%<W@ynV1l$v<dcTR%WG9v%L!%b-5#^Ex6X_-hD|Y{X_Q^`vNzHOt<t
zaiPX!&G^Lxy4oeC9S_g8Be9&uoep=zfl5w1E_GorzO;+Ug4X_$jmm02V2;+?2%aCg
zlIPe_OF`ZH-Z7QMu{8un`7Cb$OS$NctFLq+V>M2_3?MkEi#EBE$umKwYp53WRKjuV
z>-n{{Z;5^2sr>NU*nc0c)j4B}M)n5c^6j^Y*YL1_Mc^5SM|6@{6t>RHsM^?Z!c})>
zcL0%XtVIN-ia*@edPgF>u)IA)O1VPBU1aMlq?c;Dp!o%Wzi3L7dWPaLafP4hAYr!X
zQ=J}dw|g<xG1nw8LEhF86`bim`kUK3bXI~6(pVcUeI}R;s>!9W`+!Jvk1g(>T^6bx
z>QY~V<pqkPyi=d5SuuF^-neDHu^=v(*%8rv>@+*JP|H2<*}+c96koI~F>a~8es4WN
zz+t~=tP@h*PEb-Qas5#O!+WW(DdJT(nLR|~<rZJWe^kZ4h=3nP2i{6Sn>d}E^tvar
zx(3?r-ROjRzK?EWy!%+CWgt-4>k8FtgT^n3kW9f3l)>*HXKeuR7BZlHzz@9)VdqWt
z0Db^`<(&$F@V&l=vwMMXYT1Z*&3tyTF7X-Rl(B-gRbEqLmA6ye2raUkPcru=nR5=I
z;K*K^%j&XC9-!6JC<C{@bAgXvLO)h{DF3&WKkoptwoC0muZkSf&%_7A^;M2Kp0miE
zJ9on5=kAe_L)Iy<$7j!-JA<N7HeUMPYGJ39kDD5kyK`r-U%3B&HZC9~@ISjDs4)0H
zTe_xx-LC(f^*?FqnVOoG9d$TCGFLmN9lK&|SuEbll_<EMt~DcOjU?$zlsq%srhXm!
z)piBh<0JexV!UJ$WG^0JGadD&;AuOL9o@hX*Vi(1h7rPcM*zA4;jAXj+Rg-@902mv
zvuRyyVFCfb>2)6)Q-ct|XH@sOH_siI(O`vSH#;|OZ7akV#zoj|tFoojNZLkP0V5ah
zfWIxy=AV1KCgawc2F8Bl={j-jSTQwsdiB?x!3ZE?|6lF>p+%ZenY9&i)6QcJPNHHk
za4Eg|HS3@;y0!^?HI_Ydf7kAxo1zv&KtlWL8%}I6AD}H8%L93G+!|1y2u(FRsr%5K
z@u2T7Im5s7F1|{LBY=mFUr2=nERj6#gn~pho|~TPH)_-Ae0Cn}Ij{Ij+~5MVgn*|9
zEZa<LFCsLMNDR`~0yCJNGdPcXoL2*?0R85>PEIW+UxR+%G(IkJjtD?d6YIZaJOl79
z|7bqyeE-$s>iYYkp!ymr2fime_#I4DG=#uMr`_yZjFue^F+M!NJ*ZG-!h5(ssXg53
zLzj=HrA^{UJBvWK_TGW-bEjS|%s*<4pX3D+R-Qr!oQ~@$OlQ2#R6Qw&V(<eqQu-C>
z3%(!P{5T|d-=X)lA6^mS7kY#59vU9RdRzVc20GXMR`%C>(C6<{2u~e{$MS;Ij3scB
z=iJqvrK@K8n&O;~;Mph#>&iXn7W5xEDD}_#YoPk*4WZA>s<OEnh#=y+06|~xIHkBF
zfDGh@$Ec!8USLby<B^AawGbd0!etA3Rd`*epfKwBQB@S?3&{JN@D<2?b;PLTU(SzD
z;QjB<W-k1%;rpp8-Xk=m*YxT;GZX|ERQ&?%(~|iu^*PCu+Y-))KFgE62k9l#C%JJ5
zI1NH!vQ@=&2?Tnwq4V!<bUgKadO`Ws0HzznYMiJ3Ri$5I)+Tm<4Z<84x8=ojt^*Zz
zt%B`I=1BkDhtFvar`uA&yU>i*p&5kX<JC4d$?+F9$e>*NL}yNjP@<*d?G{ct=$^l)
zKTZiXpSV~MF#I<;5qfc6*G<s4b?gH4%i>LF;pzIp1eZV;XxJ_BJ~SyEJ((NfXb|-j
zTE4V!ggx(b;!k`kq_=wVr02vz4>h}MliT^uf~&3zHPG{mnB8+w{n#hpyM7HUl#Lo+
z5_CDf)d{KtS9Lp&$`HmHh9)-F@-F95Q=*lQqaI4jfS}aXSP0e3M7-4$e#ym{iHZBG
zz)1H$fp+HI4Oi=fHeG^R;9>b7y#<d~LIU$e{E<gLm0Ns=&?KFxz#h;0X1i=57ta{i
zFleQ{kyx4qd2x*cWew$iRnX0#UA`R3QDX)FZgAv9$ULqedc1!sT(J&WP6PkB@SU#c
z)SaxM9RpoX{q~$UDTOY9SG?Wu<4d@MK(}oD1y6+~=S}4p7xX-zxO3ek+`Eg<eVw{L
z1&F$qelQJC-j^~Hw*=;bDU@vJ>s8s485%(Q0#AWyM`&%z)`C~JQpEX|$G2Eoop~d-
z$T&R&{{dQfmcJPkl!1=JnP~Ki^YE~M+hX1N7Qg_=QEneY(WiNSn`&Lijln_hap^G-
zW0Qo}6XG5Vl;dC(j^&SE<&<NkERijqjO`3Zfd4?$KKQwu69PVl@lVL`;pPBR@7F+%
zVInmKP@g4b$XsQ8Y7SNNgwluO$A-Qz_v!VW6ie2h+5(4OKYgy~$k;0ww-faW2|qZx
zcy-VQhQGDzEpL_9Xd!J5!C0I4PpGf3t_^JB`Bsar@G{SaSfE#iZ~xQG5-=_TVG|DH
zp{-KO+iaMQcaq+lt;gVTR(P}pY<yK4P^f=@widx93TaNiB}Z$)2+YJoW3qURRrzXn
zH(Ysp5xN}4Q^VjmJbIzURM#~p7k}fNY1=|b9=`CV7?x>0nceK3gTVWL4hCByqz=9N
zYd|+$uTi{xrb25P_Qm(P#lTtksta__{t@`0*G-=Uzf4Xdylfe-4!`F2z6*HOj@Q8;
zXl%IH+p;*b$FLT^1#ZBjq@#={Kf%p-=nQ;5!{T8B9s|<89({NVCkXu_%$RxgE&oHr
zvvGacdB(4&06poOXYvf}tQuKoR9QrP%TpXX<?HPAIdjA_4UW7_m}{N@TIn$DA&@wC
z#4KRmZDU-1Yoku?{E?Hdq0Q{V^-eKB-Ps}%18NKYFC`BEs*vgs;{R{|&ol6U6G~~$

-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 05/20] eepro100: Add all supported devices to pci.c
  2010-02-14 16:16       ` [Qemu-devel] [PATCH 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
@ 2010-02-14 16:16         ` Stefan Weil
  2010-02-14 16:16           ` [Qemu-devel] [PATCH 06/20] eepro100: Add TODO list Stefan Weil
  2010-02-21 17:00           ` [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c Michael S. Tsirkin
  0 siblings, 2 replies; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

All eepro100 devices work with drivers which
only use basic features.

They were tested with gpxe boot.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/pci.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/hw/pci.c b/hw/pci.c
index eb2043e..1ba3f92 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -1436,9 +1436,18 @@ void do_pci_info(Monitor *mon, QObject **ret_data)
 
 static const char * const pci_nic_models[] = {
     "ne2k_pci",
+    "i82550",
     "i82551",
+    "i82557a",
     "i82557b",
+    "i82557c",
+    "i82558a",
+    "i82558b",
+    "i82559a",
+    "i82559b",
+    "i82559c",
     "i82559er",
+    "i82562",
     "rtl8139",
     "e1000",
     "pcnet",
@@ -1448,9 +1457,18 @@ static const char * const pci_nic_models[] = {
 
 static const char * const pci_nic_names[] = {
     "ne2k_pci",
+    "i82550",
     "i82551",
+    "i82557a",
     "i82557b",
+    "i82557c",
+    "i82558a",
+    "i82558b",
+    "i82559a",
+    "i82559b",
+    "i82559c",
     "i82559er",
+    "i82562",
     "rtl8139",
     "e1000",
     "pcnet",
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 06/20] eepro100: Add TODO list
  2010-02-14 16:16         ` [Qemu-devel] [PATCH 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
@ 2010-02-14 16:16           ` Stefan Weil
  2010-02-14 16:16             ` [Qemu-devel] [PATCH 07/20] eepro100: Update copyright notice Stefan Weil
  2010-02-21 17:00           ` [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c Michael S. Tsirkin
  1 sibling, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 179c544..b93667a 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -31,6 +31,14 @@
  *
  * Intel 8255x 10/100 Mbps Ethernet Controller Family
  * Open Source Software Developer Manual
+ *
+ * TODO:
+ *      * PHY emulation should be separated from nic emulation.
+ *        Most nic emulations could share the same phy code.
+ *      * i82550 is untested. It is programmed like the i82559.
+ *      * i82562 is untested. It is programmed like the i82559.
+ *      * Power management (i82558 and later) is not implemented.
+ *      * Wake-on-LAN is not implemented.
  */
 
 #include <stddef.h>             /* offsetof */
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 07/20] eepro100: Update copyright notice
  2010-02-14 16:16           ` [Qemu-devel] [PATCH 06/20] eepro100: Add TODO list Stefan Weil
@ 2010-02-14 16:16             ` Stefan Weil
  2010-02-14 16:16               ` [Qemu-devel] [PATCH 08/20] eepro100: Add device descriptions Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index b93667a..3e2f008 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1,15 +1,15 @@
 /*
  * QEMU i8255x (PRO100) emulation
  *
- * Copyright (c) 2006-2007 Stefan Weil
+ * Copyright (C) 2006-2010 Stefan Weil
  *
  * Portions of the code are copies from grub / etherboot eepro100.c
  * and linux e100.c.
  *
- * This program is free software; you can redistribute it and/or modify
+ * 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.
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) version 3 or any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,7 +17,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * Tested features (i82559):
  *      PXE boot (i386) ok
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 08/20] eepro100: Add device descriptions
  2010-02-14 16:16             ` [Qemu-devel] [PATCH 07/20] eepro100: Update copyright notice Stefan Weil
@ 2010-02-14 16:16               ` Stefan Weil
  2010-02-14 16:16                 ` [Qemu-devel] [PATCH 09/20] eepro100: Use symbolic names and BIT macros in binary operations Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Add descriptions for all devices.
These descriptions are shown when users call
		qemu -device ?

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 3e2f008..031fe69 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1980,6 +1980,7 @@ static int pci_i82562_init(PCIDevice *pci_dev)
 static PCIDeviceInfo eepro100_info[] = {
     {
         .qdev.name = "i82550",
+        .qdev.desc = "Intel i82550 Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82550_init,
         .exit      = pci_nic_uninit,
@@ -1990,6 +1991,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82551",
+        .qdev.desc = "Intel i82551 Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82551_init,
         .exit      = pci_nic_uninit,
@@ -2000,6 +2002,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82557a",
+        .qdev.desc = "Intel i82557A Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557a_init,
         .exit      = pci_nic_uninit,
@@ -2010,6 +2013,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82557b",
+        .qdev.desc = "Intel i82557B Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557b_init,
         .exit      = pci_nic_uninit,
@@ -2020,6 +2024,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82557c",
+        .qdev.desc = "Intel i82557C Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557c_init,
         .exit      = pci_nic_uninit,
@@ -2030,6 +2035,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82558a",
+        .qdev.desc = "Intel i82558A Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82558a_init,
         .exit      = pci_nic_uninit,
@@ -2040,6 +2046,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82558b",
+        .qdev.desc = "Intel i82558B Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82558b_init,
         .exit      = pci_nic_uninit,
@@ -2050,6 +2057,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82559a",
+        .qdev.desc = "Intel i82559A Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559a_init,
         .exit      = pci_nic_uninit,
@@ -2060,6 +2068,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82559b",
+        .qdev.desc = "Intel i82559B Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559b_init,
         .exit      = pci_nic_uninit,
@@ -2070,6 +2079,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82559c",
+        .qdev.desc = "Intel i82559C Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559c_init,
         .exit      = pci_nic_uninit,
@@ -2080,6 +2090,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82559er",
+        .qdev.desc = "Intel i82559ER Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559er_init,
         .exit      = pci_nic_uninit,
@@ -2090,6 +2101,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82562",
+        .qdev.desc = "Intel i82562 Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82562_init,
         .exit      = pci_nic_uninit,
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 09/20] eepro100: Use symbolic names and BIT macros in binary operations
  2010-02-14 16:16               ` [Qemu-devel] [PATCH 08/20] eepro100: Add device descriptions Stefan Weil
@ 2010-02-14 16:16                 ` Stefan Weil
  2010-02-14 16:16                   ` [Qemu-devel] [PATCH 10/20] eepro100: Remove old unused code Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Instead of magic numbers like 0x8000, symbolic names are used
for the SCB command and status bits.

There are too many configuration bits to use symbolic names
there, too. Using the BIT macro is a little help when comparing
code and documentation.

For the same reason, some other constants were replaced by
the BITS macro.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   52 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 33 insertions(+), 19 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 031fe69..1ce2cd1 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -172,6 +172,20 @@ typedef struct {
     char packet[MAX_ETH_FRAME_SIZE + 4];
 } eepro100_rx_t;
 
+typedef enum {
+    COMMAND_EL = BIT(15),
+    COMMAND_S = BIT(14),
+    COMMAND_I = BIT(13),
+    COMMAND_NC = BIT(4),
+    COMMAND_SF = BIT(3),
+    COMMAND_CMD = BITS(2, 0),
+} scb_command_bit;
+
+typedef enum {
+    STATUS_C = BIT(15),
+    STATUS_OK = BIT(13),
+} scb_status_bit;
+
 typedef struct {
     uint32_t tx_good_frames, tx_max_collisions, tx_late_collisions,
         tx_underruns, tx_lost_crs, tx_deferred, tx_single_collisions,
@@ -753,22 +767,22 @@ enum commands {
 
 static cu_state_t get_cu_state(EEPRO100State * s)
 {
-    return ((s->mem[SCBStatus] >> 6) & 0x03);
+    return ((s->mem[SCBStatus] & BITS(7, 6)) >> 6);
 }
 
 static void set_cu_state(EEPRO100State * s, cu_state_t state)
 {
-    s->mem[SCBStatus] = (s->mem[SCBStatus] & 0x3f) + (state << 6);
+    s->mem[SCBStatus] = (s->mem[SCBStatus] & ~BITS(7, 6)) + (state << 6);
 }
 
 static ru_state_t get_ru_state(EEPRO100State * s)
 {
-    return ((s->mem[SCBStatus] >> 2) & 0x0f);
+    return ((s->mem[SCBStatus] & BITS(5, 2)) >> 2);
 }
 
 static void set_ru_state(EEPRO100State * s, ru_state_t state)
 {
-    s->mem[SCBStatus] = (s->mem[SCBStatus] & 0xc3) + (state << 2);
+    s->mem[SCBStatus] = (s->mem[SCBStatus] & ~BITS(5, 2)) + (state << 2);
 }
 
 static void dump_statistics(EEPRO100State * s)
@@ -898,13 +912,13 @@ static void action_command(EEPRO100State *s)
         uint16_t command = le16_to_cpu(s->tx.command);
         logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
                status, command, s->tx.link);
-        bool bit_el = ((command & 0x8000) != 0);
-        bool bit_s = ((command & 0x4000) != 0);
-        bool bit_i = ((command & 0x2000) != 0);
-        bool bit_nc = ((command & 0x0010) != 0);
+        bool bit_el = ((command & COMMAND_EL) != 0);
+        bool bit_s = ((command & COMMAND_S) != 0);
+        bool bit_i = ((command & COMMAND_I) != 0);
+        bool bit_nc = ((command & COMMAND_NC) != 0);
         bool success = true;
-        //~ bool bit_sf = ((command & 0x0008) != 0);
-        uint16_t cmd = command & 0x0007;
+        //~ bool bit_sf = ((command & COMMAND_SF) != 0);
+        uint16_t cmd = command & COMMAND_CMD;
         s->cu_offset = le32_to_cpu(s->tx.link);
         switch (cmd) {
         case CmdNOp:
@@ -941,7 +955,7 @@ static void action_command(EEPRO100State *s)
             break;
         }
         /* Write new status. */
-        stw_phys(s->cb_address, status | 0x8000 | (success ? 0x2000 : 0));
+        stw_phys(s->cb_address, status | STATUS_C | (success ? STATUS_OK : 0));
         if (bit_i) {
             /* CU completed action. */
             eepro100_cx_interrupt(s);
@@ -1684,13 +1698,13 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
         /* CSMA is disabled. */
         logout("%p received while CSMA is disabled\n", s);
         return -1;
-    } else if (size < 64 && (s->configuration[7] & 1)) {
+    } else if (size < 64 && (s->configuration[7] & BIT(0))) {
         /* Short frame and configuration byte 7/0 (discard short receive) set:
          * Short frame is discarded */
         logout("%p received short frame (%zu byte)\n", s, size);
         s->statistics.rx_short_frame_errors++;
         //~ return -1;
-    } else if ((size > MAX_ETH_FRAME_SIZE + 4) && !(s->configuration[18] & 8)) {
+    } else if ((size > MAX_ETH_FRAME_SIZE + 4) && !(s->configuration[18] & BIT(3))) {
         /* Long frame and configuration byte 18/3 (long receive ok) not set:
          * Long frames are discarded. */
         logout("%p received long frame (%zu byte), ignored\n", s, size);
@@ -1713,7 +1727,7 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
           assert(mcast_idx < 64);
           if (s->mult[mcast_idx >> 3] & (1 << (mcast_idx & 7))) {
             /* Multicast frame is allowed in hash table. */
-          } else if (s->configuration[15] & 1) {
+          } else if (s->configuration[15] & BIT(0)) {
               /* Promiscuous: receive all. */
               rfd_status |= 0x0004;
           } else {
@@ -1723,7 +1737,7 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
         }
         /* TODO: Next not for promiscuous mode? */
         rfd_status |= 0x0002;
-    } else if (s->configuration[15] & 1) {
+    } else if (s->configuration[15] & BIT(0)) {
         /* Promiscuous: receive all. */
         TRACE(RXTX, logout("%p received frame in promiscuous mode, len=%zu\n", s, size));
         rfd_status |= 0x0004;
@@ -1764,23 +1778,23 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
     /* Early receive interrupt not supported. */
     //~ eepro100_er_interrupt(s);
     /* Receive CRC Transfer not supported. */
-    if (s->configuration[18] & 4) {
+    if (s->configuration[18] & BIT(2)) {
         missing("Receive CRC Transfer");
         return -1;
     }
     /* TODO: check stripping enable bit. */
-    //~ assert(!(s->configuration[17] & 1));
+    //~ assert(!(s->configuration[17] & BIT(0)));
     cpu_physical_memory_write(s->ru_base + s->ru_offset +
                               offsetof(eepro100_rx_t, packet), buf, size);
     s->statistics.rx_good_frames++;
     eepro100_fr_interrupt(s);
     s->ru_offset = le32_to_cpu(rx.link);
-    if (rfd_command & 0x8000) {
+    if (rfd_command & COMMAND_EL) {
         /* EL bit is set, so this was the last frame. */
         logout("receive: Running out of frames\n");
         set_ru_state(s, ru_suspended);
     }
-    if (rfd_command & 0x4000) {
+    if (rfd_command & COMMAND_S) {
         /* S bit is set. */
         set_ru_state(s, ru_suspended);
     }
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 10/20] eepro100: Remove old unused code
  2010-02-14 16:16                 ` [Qemu-devel] [PATCH 09/20] eepro100: Use symbolic names and BIT macros in binary operations Stefan Weil
@ 2010-02-14 16:16                   ` Stefan Weil
  2010-02-14 16:16                     ` [Qemu-devel] [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

This code is no longer needed.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   18 ------------------
 1 files changed, 0 insertions(+), 18 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 1ce2cd1..c647322 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -469,24 +469,6 @@ static void pci_reset(EEPRO100State * s)
     PCI_CONFIG_8(PCI_LATENCY_TIMER, 0x20);   // latency timer = 32 clocks
     /* PCI Header Type */
     /* BIST (built-in self test) */
-#if defined(TARGET_I386)
-// !!! workaround for buggy bios
-//~ #define PCI_BASE_ADDRESS_MEM_PREFETCH 0
-#endif
-#if 0
-    /* PCI Base Address Registers */
-    /* CSR Memory Mapped Base Address */
-    PCI_CONFIG_32(PCI_BASE_ADDRESS_0,
-                  PCI_BASE_ADDRESS_SPACE_MEMORY |
-                  PCI_BASE_ADDRESS_MEM_PREFETCH);
-    /* CSR I/O Mapped Base Address */
-    PCI_CONFIG_32(PCI_BASE_ADDRESS_1, PCI_BASE_ADDRESS_SPACE_IO);
-#if 0
-    /* Flash Memory Mapped Base Address */
-    PCI_CONFIG_32(PCI_BASE_ADDRESS_2,
-                  0xfffe0000 | PCI_BASE_ADDRESS_SPACE_MEMORY);
-#endif
-#endif
     /* Expansion ROM Base Address (depends on boot disable!!!) */
     /* TODO: not needed, set when BAR is registered */
     PCI_CONFIG_32(PCI_ROM_ADDRESS, PCI_BASE_ADDRESS_SPACE_MEMORY);
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id
  2010-02-14 16:16                   ` [Qemu-devel] [PATCH 10/20] eepro100: Remove old unused code Stefan Weil
@ 2010-02-14 16:16                     ` Stefan Weil
  2010-02-14 16:16                       ` [Qemu-devel] [PATCH 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
                                         ` (2 more replies)
  0 siblings, 3 replies; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index c647322..01bcd6d 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -272,6 +272,21 @@ typedef enum {
     eeprom_smbus_addr = 0x90,
 } EEPROMOffset;
 
+/* Bit values for EEPROM ID word. */
+typedef enum {
+    eeprom_id_mdm = BIT(0),     /* Modem */
+    eeprom_id_stb = BIT(1),     /* Standby Enable */
+    eeprom_id_wmr = BIT(2),     /* ??? */
+    eeprom_id_wol = BIT(5),     /* Wake on LAN */
+    eeprom_id_dpd = BIT(6),     /* Deep Power Down */
+    eeprom_id_alt = BIT(7),     /* */
+    /* BITS(10, 8) device revision */
+    eeprom_id_bd = BIT(11),     /* boot disable */
+    eeprom_id_id = BIT(13),     /* id bit */
+    /* BITS(15, 14) signature */
+    eeprom_id_valid = BIT(14),  /* signature for valid eeprom */
+} eeprom_id_bit;
+
 /* Default values for MDI (PHY) registers */
 static const uint16_t eepro100_mdi_default[] = {
     /* MDI Registers 0 - 6, 7 */
@@ -643,7 +658,7 @@ static void nic_selective_reset(EEPRO100State * s)
     uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
     //~ eeprom93xx_reset(s->eeprom);
     memcpy(eeprom_contents, s->conf.macaddr.a, 6);
-    eeprom_contents[eeprom_id] = 0x4000;
+    eeprom_contents[eeprom_id] = eeprom_id_valid;
     if (s->device == i82557B || s->device == i82557C)
         eeprom_contents[5] = 0x0100;
     eeprom_contents[eeprom_phy_id] = 1;
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 12/20] eepro100: Replace variable name to fix a compiler warning
  2010-02-14 16:16                     ` [Qemu-devel] [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
@ 2010-02-14 16:16                       ` Stefan Weil
  2010-02-14 16:16                         ` [Qemu-devel] [PATCH 13/20] eepro100: Support RNR interrupt Stefan Weil
  2010-02-21 17:05                       ` [Qemu-devel] Re: [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Michael S. Tsirkin
  2010-03-02 18:42                       ` [Qemu-devel] " Stefan Weil
  2 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

When compiling with -Wshadow, gcc gives a warning
which is fixed by renaming stat -> status.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 01bcd6d..b5bd05b 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -392,14 +392,14 @@ static void eepro100_acknowledge(EEPRO100State * s)
     }
 }
 
-static void eepro100_interrupt(EEPRO100State * s, uint8_t stat)
+static void eepro100_interrupt(EEPRO100State * s, uint8_t status)
 {
     uint8_t mask = ~s->mem[SCBIntmask];
-    s->mem[SCBAck] |= stat;
-    stat = s->scb_stat = s->mem[SCBAck];
-    stat &= (mask | 0x0f);
-    //~ stat &= (~s->mem[SCBIntmask] | 0x0xf);
-    if (stat && (mask & 0x01)) {
+    s->mem[SCBAck] |= status;
+    status = s->scb_stat = s->mem[SCBAck];
+    status &= (mask | 0x0f);
+    //~ status &= (~s->mem[SCBIntmask] | 0x0xf);
+    if (status && (mask & 0x01)) {
         /* SCB mask and SCB Bit M do not disable interrupt. */
         enable_interrupt(s);
     } else if (s->int_stat) {
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 13/20] eepro100: Support RNR interrupt
  2010-02-14 16:16                       ` [Qemu-devel] [PATCH 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
@ 2010-02-14 16:16                         ` Stefan Weil
  2010-02-14 16:16                           ` [Qemu-devel] [PATCH 14/20] eepro100: Fix CU Start command Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

The RNR interrupt is triggered under these conditions:

* the RU is not ready to receive a frame due to missing resources
* the RU is ready and a RU abort command was requested

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index b5bd05b..37176cd 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -120,7 +120,7 @@
 #define  RU_NOP         0x0000
 #define  RX_START       0x0001
 #define  RX_RESUME      0x0002
-#define  RX_ABORT       0x0004
+#define  RU_ABORT       0x0004
 #define  RX_ADDR_LOAD   0x0006
 #define  RX_RESUMENR    0x0007
 #define INT_MASK        0x0100
@@ -426,13 +426,11 @@ static void eepro100_fr_interrupt(EEPRO100State * s)
     eepro100_interrupt(s, 0x40);
 }
 
-#if 0
 static void eepro100_rnr_interrupt(EEPRO100State * s)
 {
     /* RU is not ready. */
     eepro100_interrupt(s, 0x10);
 }
-#endif
 
 static void eepro100_mdi_interrupt(EEPRO100State * s)
 {
@@ -1065,6 +1063,13 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
         }
         set_ru_state(s, ru_ready);
         break;
+    case RU_ABORT:
+        /* RU abort. */
+        if (get_ru_state(s) == ru_ready) {
+            eepro100_rnr_interrupt(s);
+        }
+        set_ru_state(s, ru_idle);
+        break;
     case RX_ADDR_LOAD:
         /* Load RU base. */
         TRACE(OTHER, logout("val=0x%02x (RU base address)\n", val));
@@ -1747,6 +1752,8 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
     if (get_ru_state(s) != ru_ready) {
         /* No resources available. */
         logout("no resources, state=%u\n", get_ru_state(s));
+        /* TODO: RNR interrupt only at first failed frame? */
+        eepro100_rnr_interrupt(s);
         s->statistics.rx_resource_errors++;
         //~ assert(!"no resources");
         return -1;
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 14/20] eepro100: Fix CU Start command
  2010-02-14 16:16                         ` [Qemu-devel] [PATCH 13/20] eepro100: Support RNR interrupt Stefan Weil
@ 2010-02-14 16:16                           ` Stefan Weil
  2010-02-14 16:16                             ` [Qemu-devel] [PATCH 15/20] eepro100: Prettify code (no functional changes) Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

CU Start is allowed when the CU is in the idle or suspended state.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 37176cd..8a139f7 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -976,17 +976,17 @@ static void action_command(EEPRO100State *s)
 
 static void eepro100_cu_command(EEPRO100State * s, uint8_t val)
 {
+    cu_state_t cu_state;
     switch (val) {
     case CU_NOP:
         /* No operation. */
         break;
     case CU_START:
-        if (get_cu_state(s) != cu_idle) {
-            /* Intel documentation says that CU must be idle for the CU
-             * start command. Intel driver for Linux also starts the CU
-             * from suspended state. */
-            logout("CU state is %u, should be %u\n", get_cu_state(s), cu_idle);
-            //~ assert(!"wrong CU state");
+        cu_state = get_cu_state(s);
+        if (cu_state != cu_idle && cu_state != cu_suspended) {
+            /* Intel documentation says that CU must be idle or suspended
+             * for the CU start command. */
+            logout("unexpected CU state is %u\n", cu_state);
         }
         set_cu_state(s, cu_active);
         s->cu_offset = s->pointer;
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 15/20] eepro100: Prettify code (no functional changes)
  2010-02-14 16:16                           ` [Qemu-devel] [PATCH 14/20] eepro100: Fix CU Start command Stefan Weil
@ 2010-02-14 16:16                             ` Stefan Weil
  2010-02-14 16:16                               ` [Qemu-devel] [PATCH 16/20] eepro100: Use tx.status Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

* Fix indentation.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 8a139f7..368a9d6 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -188,11 +188,11 @@ typedef enum {
 
 typedef struct {
     uint32_t tx_good_frames, tx_max_collisions, tx_late_collisions,
-        tx_underruns, tx_lost_crs, tx_deferred, tx_single_collisions,
-        tx_multiple_collisions, tx_total_collisions;
+             tx_underruns, tx_lost_crs, tx_deferred, tx_single_collisions,
+             tx_multiple_collisions, tx_total_collisions;
     uint32_t rx_good_frames, rx_crc_errors, rx_alignment_errors,
-        rx_resource_errors, rx_overrun_errors, rx_cdt_errors,
-        rx_short_frame_errors;
+             rx_resource_errors, rx_overrun_errors, rx_cdt_errors,
+             rx_short_frame_errors;
     uint32_t fc_xmt_pause, fc_rcv_pause, fc_rcv_unsupported;
     uint16_t xmt_tco_frames, rcv_tco_frames;
     /* TODO: i82559 has six reserved statistics but a total of 24 dwords. */
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 16/20] eepro100: Use tx.status
  2010-02-14 16:16                             ` [Qemu-devel] [PATCH 15/20] eepro100: Prettify code (no functional changes) Stefan Weil
@ 2010-02-14 16:16                               ` Stefan Weil
  2010-02-14 16:16                                 ` [Qemu-devel] [PATCH 17/20] eepro100: New function for reading command block Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

There is no need for a local variable "status".
Using tx.status makes it clearer which status
is addressed.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 368a9d6..ebf0f7d 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -903,10 +903,10 @@ static void action_command(EEPRO100State *s)
     for (;;) {
         s->cb_address = s->cu_base + s->cu_offset;
         cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx));
-        uint16_t status = le16_to_cpu(s->tx.status);
         uint16_t command = le16_to_cpu(s->tx.command);
+        s->tx.status = le16_to_cpu(s->tx.status);
         logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
-               status, command, s->tx.link);
+               s->tx.status, command, s->tx.link);
         bool bit_el = ((command & COMMAND_EL) != 0);
         bool bit_s = ((command & COMMAND_S) != 0);
         bool bit_i = ((command & COMMAND_I) != 0);
@@ -950,7 +950,7 @@ static void action_command(EEPRO100State *s)
             break;
         }
         /* Write new status. */
-        stw_phys(s->cb_address, status | STATUS_C | (success ? STATUS_OK : 0));
+        stw_phys(s->cb_address, s->tx.status | STATUS_C | (success ? STATUS_OK : 0));
         if (bit_i) {
             /* CU completed action. */
             eepro100_cx_interrupt(s);
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 17/20] eepro100: New function for reading command block
  2010-02-14 16:16                               ` [Qemu-devel] [PATCH 16/20] eepro100: Use tx.status Stefan Weil
@ 2010-02-14 16:16                                 ` Stefan Weil
  2010-02-14 16:16                                   ` [Qemu-devel] [PATCH 18/20] eepro100: Add diagnose command Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Move code which reads the command block to the
new function read_cb. The patch also fixes some
endianess issues related to the command block
and moves declarations of local variables to
the beginning of the block.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   42 ++++++++++++++++++++++++++++--------------
 1 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index ebf0f7d..43595eb 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -798,6 +798,16 @@ static void dump_statistics(EEPRO100State * s)
     //~ missing("CU dump statistical counters");
 }
 
+static void read_cb(EEPRO100State *s)
+{
+    cpu_physical_memory_read(s->cb_address, (uint8_t *) &s->tx, sizeof(s->tx));
+    s->tx.status = le16_to_cpu(s->tx.status);
+    s->tx.command = le16_to_cpu(s->tx.command);
+    s->tx.link = le32_to_cpu(s->tx.link);
+    s->tx.tbd_array_addr = le32_to_cpu(s->tx.tbd_array_addr);
+    s->tx.tcb_bytes = le16_to_cpu(s->tx.tcb_bytes);
+}
+
 static void tx_command(EEPRO100State *s)
 {
     uint32_t tbd_array = le32_to_cpu(s->tx.tbd_array_addr);
@@ -901,21 +911,25 @@ static void set_multicast_list(EEPRO100State *s)
 static void action_command(EEPRO100State *s)
 {
     for (;;) {
-        s->cb_address = s->cu_base + s->cu_offset;
-        cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx));
-        uint16_t command = le16_to_cpu(s->tx.command);
-        s->tx.status = le16_to_cpu(s->tx.status);
-        logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
-               s->tx.status, command, s->tx.link);
-        bool bit_el = ((command & COMMAND_EL) != 0);
-        bool bit_s = ((command & COMMAND_S) != 0);
-        bool bit_i = ((command & COMMAND_I) != 0);
-        bool bit_nc = ((command & COMMAND_NC) != 0);
+        bool bit_el;
+        bool bit_s;
+        bool bit_i;
+        bool bit_nc;
         bool success = true;
-        //~ bool bit_sf = ((command & COMMAND_SF) != 0);
-        uint16_t cmd = command & COMMAND_CMD;
-        s->cu_offset = le32_to_cpu(s->tx.link);
-        switch (cmd) {
+        s->cb_address = s->cu_base + s->cu_offset;
+        read_cb(s);
+        bit_el = ((s->tx.command & COMMAND_EL) != 0);
+        bit_s = ((s->tx.command & COMMAND_S) != 0);
+        bit_i = ((s->tx.command & COMMAND_I) != 0);
+        bit_nc = ((s->tx.command & COMMAND_NC) != 0);
+#if 0
+        bool bit_sf = ((s->tx.command & COMMAND_SF) != 0);
+#endif
+        s->cu_offset = s->tx.link;
+        TRACE(OTHER,
+              logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
+                     s->tx.status, s->tx.command, s->tx.link));
+        switch (s->tx.command & COMMAND_CMD) {
         case CmdNOp:
             /* Do nothing. */
             break;
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 18/20] eepro100: Add diagnose command
  2010-02-14 16:16                                 ` [Qemu-devel] [PATCH 17/20] eepro100: New function for reading command block Stefan Weil
@ 2010-02-14 16:16                                   ` Stefan Weil
  2010-02-14 16:16                                     ` [Qemu-devel] [PATCH 19/20] eepro100: Remove C++ comments Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

Real hardware would run an internal self-test.
The emulation just returns a passed status.

Original patch was from Reimar Döffinger, thanks.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 43595eb..1ac89ef 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -958,6 +958,11 @@ static void action_command(EEPRO100State *s)
             /* Starting with offset 8, the command contains
              * 64 dwords microcode which we just ignore here. */
             break;
+        case CmdDiagnose:
+            TRACE(OTHER, logout("diagnose\n"));
+            /* Make sure error flag is not set. */
+            s->tx.status = 0;
+            break;
         default:
             missing("undefined command");
             success = false;
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 19/20] eepro100: Remove C++ comments
  2010-02-14 16:16                                   ` [Qemu-devel] [PATCH 18/20] eepro100: Add diagnose command Stefan Weil
@ 2010-02-14 16:16                                     ` Stefan Weil
  2010-02-14 16:16                                       ` [Qemu-devel] [PATCH 20/20] eepro100: Keep includes sorted Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

C++ comments are unwanted, so this is fixed here.

* Replace C++ comments by C comments.
* Put code which was deactivated by a C++ comment in #if 0...#endif.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |  185 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 126 insertions(+), 59 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 1ac89ef..0f5fffa 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -154,11 +154,13 @@ typedef struct {
     uint16_t tcb_bytes;         /* transmit command block byte count (in lower 14 bits */
     uint8_t tx_threshold;       /* transmit threshold */
     uint8_t tbd_count;          /* TBD number */
-    //~ /* This constitutes two "TBD" entries: hdr and data */
-    //~ uint32_t tx_buf_addr0;  /* void *, header of frame to be transmitted.  */
-    //~ int32_t  tx_buf_size0;  /* Length of Tx hdr. */
-    //~ uint32_t tx_buf_addr1;  /* void *, data to be transmitted.  */
-    //~ int32_t  tx_buf_size1;  /* Length of Tx data. */
+#if 0
+    /* This constitutes two "TBD" entries: hdr and data */
+    uint32_t tx_buf_addr0;  /* void *, header of frame to be transmitted.  */
+    int32_t  tx_buf_size0;  /* Length of Tx hdr. */
+    uint32_t tx_buf_addr1;  /* void *, data to be transmitted.  */
+    int32_t  tx_buf_size1;  /* Length of Tx data. */
+#endif
 } eepro100_tx_t;
 
 /* Receive frame descriptor. */
@@ -398,7 +400,9 @@ static void eepro100_interrupt(EEPRO100State * s, uint8_t status)
     s->mem[SCBAck] |= status;
     status = s->scb_stat = s->mem[SCBAck];
     status &= (mask | 0x0f);
-    //~ status &= (~s->mem[SCBIntmask] | 0x0xf);
+#if 0
+    status &= (~s->mem[SCBIntmask] | 0x0xf);
+#endif
     if (status && (mask & 0x01)) {
         /* SCB mask and SCB Bit M do not disable interrupt. */
         enable_interrupt(s);
@@ -477,9 +481,11 @@ static void pci_reset(EEPRO100State * s)
     pci_config_set_class(pci_conf, PCI_CLASS_NETWORK_ETHERNET);
     /* PCI Cache Line Size */
     /* check cache line size!!! */
-    //~ PCI_CONFIG_8(0x0c, 0x00);
+#if 0
+    PCI_CONFIG_8(0x0c, 0x00);
+#endif
     /* PCI Latency Timer */
-    PCI_CONFIG_8(PCI_LATENCY_TIMER, 0x20);   // latency timer = 32 clocks
+    PCI_CONFIG_8(PCI_LATENCY_TIMER, 0x20);   /* latency timer = 32 clocks */
     /* PCI Header Type */
     /* BIST (built-in self test) */
     /* Expansion ROM Base Address (depends on boot disable!!!) */
@@ -492,7 +498,7 @@ static void pci_reset(EEPRO100State * s)
     /* Interrupt Line */
     /* Interrupt Pin */
     /* TODO: RST# value should be 0 */
-    PCI_CONFIG_8(PCI_INTERRUPT_PIN, 1);      // interrupt pin 0
+    PCI_CONFIG_8(PCI_INTERRUPT_PIN, 1);      /* interrupt pin 0 */
     /* Minimum Grant */
     PCI_CONFIG_8(PCI_MIN_GNT, 0x08);
     /* Maximum Latency */
@@ -500,20 +506,20 @@ static void pci_reset(EEPRO100State * s)
 
     switch (device) {
     case i82550:
-        // TODO: check device id.
+        /* TODO: check device id. */
         pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
         /* Revision ID: 0x0c, 0x0d, 0x0e. */
         PCI_CONFIG_8(PCI_REVISION_ID, 0x0e);
-        // TODO: check size of statistical counters.
+        /* TODO: check size of statistical counters. */
         s->stats_size = 80;
-        // TODO: check extended tcb support.
+        /* TODO: check extended tcb support. */
         s->has_extended_tcb_support = 1;
         break;
     case i82551:
         pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
         /* Revision ID: 0x0f, 0x10. */
         PCI_CONFIG_8(PCI_REVISION_ID, 0x0f);
-        // TODO: check size of statistical counters.
+        /* TODO: check size of statistical counters. */
         s->stats_size = 80;
         s->has_extended_tcb_support = 1;
         break;
@@ -572,7 +578,7 @@ static void pci_reset(EEPRO100State * s)
         PCI_CONFIG_16(PCI_STATUS, PCI_STATUS_DEVSEL_MEDIUM |
                                   PCI_STATUS_FAST_BACK | PCI_STATUS_CAP_LIST);
         PCI_CONFIG_8(PCI_REVISION_ID, 0x08);
-        // TODO: Windows wants revision id 0x0c.
+        /* TODO: Windows wants revision id 0x0c. */
         PCI_CONFIG_8(PCI_REVISION_ID, 0x0c);
 #if EEPROM_SIZE > 0
         PCI_CONFIG_16(PCI_SUBSYSTEM_VENDOR_ID, 0x8086);
@@ -590,7 +596,7 @@ static void pci_reset(EEPRO100State * s)
         s->has_extended_tcb_support = 1;
         break;
     case i82562:
-        // TODO: check device id.
+        /* TODO: check device id. */
         pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
         /* TODO: wrong revision id. */
         PCI_CONFIG_8(PCI_REVISION_ID, 0x0e);
@@ -637,14 +643,16 @@ static void pci_reset(EEPRO100State * s)
 
 #if EEPROM_SIZE > 0
     if (device == i82557C || device == i82558B || device == i82559C) {
-        // TODO: get vendor id from EEPROM for i82557C or later.
-        // TODO: get device id from EEPROM for i82557C or later.
-        // TODO: status bit 4 can be disabled by EEPROM for i82558, i82559.
-        // TODO: header type is determined by EEPROM for i82559.
-        // TODO: get subsystem id from EEPROM for i82557C or later.
-        // TODO: get subsystem vendor id from EEPROM for i82557C or later.
-        // TODO: exp. rom baddr depends on a bit in EEPROM for i82558 or later.
-        // TODO: capability pointer depends on EEPROM for i82558.
+        /*
+        TODO: get vendor id from EEPROM for i82557C or later.
+        TODO: get device id from EEPROM for i82557C or later.
+        TODO: status bit 4 can be disabled by EEPROM for i82558, i82559.
+        TODO: header type is determined by EEPROM for i82559.
+        TODO: get subsystem id from EEPROM for i82557C or later.
+        TODO: get subsystem vendor id from EEPROM for i82557C or later.
+        TODO: exp. rom baddr depends on a bit in EEPROM for i82558 or later.
+        TODO: capability pointer depends on EEPROM for i82558.
+        */
         logout("Get device id and revision from EEPROM!!!\n");
     }
 #endif /* EEPROM_SIZE > 0 */
@@ -654,7 +662,9 @@ static void nic_selective_reset(EEPRO100State * s)
 {
     size_t i;
     uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
-    //~ eeprom93xx_reset(s->eeprom);
+#if 0
+    eeprom93xx_reset(s->eeprom);
+#endif
     memcpy(eeprom_contents, s->conf.macaddr.a, 6);
     eeprom_contents[eeprom_id] = eeprom_id_valid;
     if (s->device == i82557B || s->device == i82557C)
@@ -738,7 +748,7 @@ static void eepro100_write_status(EEPRO100State * s, uint16_t val)
 static uint16_t eepro100_read_command(EEPRO100State * s)
 {
     uint16_t val = 0xffff;
-    //~ TRACE(OTHER, logout("val=0x%04x\n", val));
+    TRACE(OTHER, logout("val=0x%04x\n", val));
     return val;
 }
 #endif
@@ -793,9 +803,11 @@ static void dump_statistics(EEPRO100State * s)
     stl_le_phys(s->statsaddr + 36, s->statistics.rx_good_frames);
     stl_le_phys(s->statsaddr + 48, s->statistics.rx_resource_errors);
     stl_le_phys(s->statsaddr + 60, s->statistics.rx_short_frame_errors);
-    //~ stw_le_phys(s->statsaddr + 76, s->statistics.xmt_tco_frames);
-    //~ stw_le_phys(s->statsaddr + 78, s->statistics.rcv_tco_frames);
-    //~ missing("CU dump statistical counters");
+#if 0
+    stw_le_phys(s->statsaddr + 76, s->statistics.xmt_tco_frames);
+    stw_le_phys(s->statsaddr + 78, s->statistics.rcv_tco_frames);
+    missing("CU dump statistical counters");
+#endif
 }
 
 static void read_cb(EEPRO100State *s)
@@ -832,7 +844,9 @@ static void tx_command(EEPRO100State *s)
     while (size < tcb_bytes) {
         uint32_t tx_buffer_address = ldl_phys(tbd_address);
         uint16_t tx_buffer_size = lduw_phys(tbd_address + 4);
-        //~ uint16_t tx_buffer_el = lduw_phys(tbd_address + 6);
+#if 0
+        uint16_t tx_buffer_el = lduw_phys(tbd_address + 6);
+#endif
         tbd_address += 8;
         TRACE(RXTX, logout
             ("TBD (simplified mode): buffer address 0x%08x, size 0x%04x\n",
@@ -889,7 +903,9 @@ static void tx_command(EEPRO100State *s)
     s->statistics.tx_good_frames++;
     /* Transmit with bad status would raise an CX/TNO interrupt.
      * (82557 only). Emulation never has bad status. */
-    //~ eepro100_cx_interrupt(s);
+#if 0
+    eepro100_cx_interrupt(s);
+#endif
 }
 
 static void set_multicast_list(EEPRO100State *s)
@@ -1016,7 +1032,9 @@ static void eepro100_cu_command(EEPRO100State * s, uint8_t val)
             logout("bad CU resume from CU state %u\n", get_cu_state(s));
             /* Workaround for bad Linux eepro100 driver which resumes
              * from idle state. */
-            //~ missing("cu resume");
+#if 0
+            missing("cu resume");
+#endif
             set_cu_state(s, cu_suspended);
         }
         if (get_cu_state(s) == cu_suspended) {
@@ -1067,7 +1085,9 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
         /* RU start. */
         if (get_ru_state(s) != ru_idle) {
             logout("RU state is %u, should be %u\n", get_ru_state(s), ru_idle);
-            //~ assert(!"wrong RU state");
+#if 0
+            assert(!"wrong RU state");
+#endif
         }
         set_ru_state(s, ru_ready);
         s->ru_offset = s->pointer;
@@ -1078,7 +1098,9 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
         if (get_ru_state(s) != ru_suspended) {
             logout("RU state is %u, should be %u\n", get_ru_state(s),
                    ru_suspended);
-            //~ assert(!"wrong RU state");
+#if 0
+            assert(!"wrong RU state");
+#endif
         }
         set_ru_state(s, ru_ready);
         break;
@@ -1140,7 +1162,9 @@ static void eepro100_write_eeprom(eeprom_t * eeprom, uint8_t val)
     TRACE(EEPROM, logout("val=0x%02x\n", val));
 
     /* mask unwriteable bits */
-    //~ val = SET_MASKED(val, 0x31, eeprom->value);
+#if 0
+    val = SET_MASKED(val, 0x31, eeprom->value);
+#endif
 
     int eecs = ((val & EEPROM_CS) != 0);
     int eesk = ((val & EEPROM_SK) != 0);
@@ -1222,7 +1246,9 @@ static void eepro100_write_mdi(EEPRO100State * s, uint32_t val)
           val, raiseint, mdi_op_name[opcode], phy, reg2name(reg), data));
     if (phy != 1) {
         /* Unsupported PHY address. */
-        //~ logout("phy must be 1 but is %u\n", phy);
+#if 0
+        logout("phy must be 1 but is %u\n", phy);
+#endif
         data = 0;
     } else if (opcode != 1 && opcode != 2) {
         /* Unsupported opcode. */
@@ -1368,16 +1394,22 @@ static uint8_t eepro100_read1(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-        //~ val = eepro100_read_status(s);
+#if 0
+        val = eepro100_read_status(s);
+#endif
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
     case SCBAck:
-        //~ val = eepro100_read_status(s);
+#if 0
+        val = eepro100_read_status(s);
+#endif
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
     case SCBCmd:
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
-        //~ val = eepro100_read_command(s);
+#if 0
+        val = eepro100_read_command(s);
+#endif
         break;
     case SCBIntmask:
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
@@ -1413,7 +1445,9 @@ static uint16_t eepro100_read2(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-        //~ val = eepro100_read_status(s);
+#if 0
+        val = eepro100_read_status(s);
+#endif
     case SCBCmd:
         TRACE(OTHER, logout("addr=%s val=0x%04x\n", regname(addr), val));
         break;
@@ -1437,11 +1471,15 @@ static uint32_t eepro100_read4(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-        //~ val = eepro100_read_status(s);
+#if 0
+        val = eepro100_read_status(s);
+#endif
         TRACE(OTHER, logout("addr=%s val=0x%08x\n", regname(addr), val));
         break;
     case SCBPointer:
-        //~ val = eepro100_read_pointer(s);
+#if 0
+        val = eepro100_read_pointer(s);
+#endif
         TRACE(OTHER, logout("addr=%s val=0x%08x\n", regname(addr), val));
         break;
     case SCBPort:
@@ -1468,7 +1506,9 @@ static void eepro100_write1(EEPRO100State * s, uint32_t addr, uint8_t val)
 
     switch (addr) {
     case SCBStatus:
-        //~ eepro100_write_status(s, val);
+#if 0
+        eepro100_write_status(s, val);
+#endif
         break;
     case SCBAck:
         eepro100_acknowledge(s);
@@ -1508,7 +1548,9 @@ static void eepro100_write2(EEPRO100State * s, uint32_t addr, uint16_t val)
 
     switch (addr) {
     case SCBStatus:
-        //~ eepro100_write_status(s, val);
+#if 0
+        eepro100_write_status(s, val);
+#endif
         eepro100_acknowledge(s);
         break;
     case SCBCmd:
@@ -1556,7 +1598,9 @@ static void eepro100_write4(EEPRO100State * s, uint32_t addr, uint32_t val)
 static uint32_t ioport_read1(void *opaque, uint32_t addr)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s\n", regname(addr));
+#if 0
+    logout("addr=%s\n", regname(addr));
+#endif
     return eepro100_read1(s, addr - s->region[1]);
 }
 
@@ -1575,7 +1619,9 @@ static uint32_t ioport_read4(void *opaque, uint32_t addr)
 static void ioport_write1(void *opaque, uint32_t addr, uint32_t val)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
+#if 0
+    logout("addr=%s val=0x%02x\n", regname(addr), val);
+#endif
     eepro100_write1(s, addr - s->region[1], val);
 }
 
@@ -1623,42 +1669,54 @@ static void pci_map(PCIDevice * pci_dev, int region_num,
 static void pci_mmio_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
+#if 0
+    logout("addr=%s val=0x%02x\n", regname(addr), val);
+#endif
     eepro100_write1(s, addr, val);
 }
 
 static void pci_mmio_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
+#if 0
+    logout("addr=%s val=0x%02x\n", regname(addr), val);
+#endif
     eepro100_write2(s, addr, val);
 }
 
 static void pci_mmio_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
+#if 0
+    logout("addr=%s val=0x%02x\n", regname(addr), val);
+#endif
     eepro100_write4(s, addr, val);
 }
 
 static uint32_t pci_mmio_readb(void *opaque, target_phys_addr_t addr)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s\n", regname(addr));
+#if 0
+    logout("addr=%s\n", regname(addr));
+#endif
     return eepro100_read1(s, addr);
 }
 
 static uint32_t pci_mmio_readw(void *opaque, target_phys_addr_t addr)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s\n", regname(addr));
+#if 0
+    logout("addr=%s\n", regname(addr));
+#endif
     return eepro100_read2(s, addr);
 }
 
 static uint32_t pci_mmio_readl(void *opaque, target_phys_addr_t addr)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s\n", regname(addr));
+#if 0
+    logout("addr=%s\n", regname(addr));
+#endif
     return eepro100_read4(s, addr);
 }
 
@@ -1695,7 +1753,9 @@ static int nic_can_receive(VLANClientState *nc)
     EEPRO100State *s = DO_UPCAST(NICState, nc, nc)->opaque;
     TRACE(RXTX, logout("%p\n", s));
     return get_ru_state(s) == ru_ready;
-    //~ return !eepro100_buffer_full(s);
+#if 0
+    return !eepro100_buffer_full(s);
+#endif
 }
 
 static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size)
@@ -1724,13 +1784,15 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
          * Short frame is discarded */
         logout("%p received short frame (%zu byte)\n", s, size);
         s->statistics.rx_short_frame_errors++;
-        //~ return -1;
+#if 0
+        return -1;
+#endif
     } else if ((size > MAX_ETH_FRAME_SIZE + 4) && !(s->configuration[18] & BIT(3))) {
         /* Long frame and configuration byte 18/3 (long receive ok) not set:
          * Long frames are discarded. */
         logout("%p received long frame (%zu byte), ignored\n", s, size);
         return -1;
-    } else if (memcmp(buf, s->conf.macaddr.a, 6) == 0) {       // !!!
+    } else if (memcmp(buf, s->conf.macaddr.a, 6) == 0) {       /* !!! */
         /* Frame matches individual address. */
         /* TODO: check configuration byte 15/4 (ignore U/L). */
         TRACE(RXTX, logout("%p received frame for me, len=%zu\n", s, size));
@@ -1774,11 +1836,12 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
         /* TODO: RNR interrupt only at first failed frame? */
         eepro100_rnr_interrupt(s);
         s->statistics.rx_resource_errors++;
-        //~ assert(!"no resources");
+#if 0
+        assert(!"no resources");
+#endif
         return -1;
     }
-    //~ !!!
-//~ $3 = {status = 0x0, command = 0xc000, link = 0x2d220, rx_buf_addr = 0x207dc, count = 0x0, size = 0x5f8, packet = {0x0 <repeats 1518 times>}}
+    /* !!! */
     eepro100_rx_t rx;
     cpu_physical_memory_read(s->ru_base + s->ru_offset, (uint8_t *) & rx,
                              offsetof(eepro100_rx_t, packet));
@@ -1799,14 +1862,18 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
              rfd_status);
     stw_phys(s->ru_base + s->ru_offset + offsetof(eepro100_rx_t, count), size);
     /* Early receive interrupt not supported. */
-    //~ eepro100_er_interrupt(s);
+#if 0
+    eepro100_er_interrupt(s);
+#endif
     /* Receive CRC Transfer not supported. */
     if (s->configuration[18] & BIT(2)) {
         missing("Receive CRC Transfer");
         return -1;
     }
     /* TODO: check stripping enable bit. */
-    //~ assert(!(s->configuration[17] & BIT(0)));
+#if 0
+    assert(!(s->configuration[17] & BIT(0)));
+#endif
     cpu_physical_memory_write(s->ru_base + s->ru_offset +
                               offsetof(eepro100_rx_t, packet), buf, size);
     s->statistics.rx_good_frames++;
-- 
1.6.6.1

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

* [Qemu-devel] [PATCH 20/20] eepro100: Keep includes sorted
  2010-02-14 16:16                                     ` [Qemu-devel] [PATCH 19/20] eepro100: Remove C++ comments Stefan Weil
@ 2010-02-14 16:16                                       ` Stefan Weil
  0 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-02-14 16:16 UTC (permalink / raw)
  To: QEMU Developers

I always try to keep standard includes sorted
and add a comment why they are there (so they
can be removed when they are no longer needed).

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 0f5fffa..3bd8bd3 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -41,8 +41,8 @@
  *      * Wake-on-LAN is not implemented.
  */
 
+#include <stdbool.h>            /* bool */
 #include <stddef.h>             /* offsetof */
-#include <stdbool.h>
 #include "hw.h"
 #include "pci.h"
 #include "net.h"
-- 
1.6.6.1

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

* Re: [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages
  2010-02-14 16:16 ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Stefan Weil
  2010-02-14 16:16   ` [Qemu-devel] [PATCH 02/20] eepro100: Add missing SCB register names Stefan Weil
@ 2010-02-19 21:05   ` Anthony Liguori
  2010-03-01 17:54     ` Stefan Weil
  1 sibling, 1 reply; 62+ messages in thread
From: Anthony Liguori @ 2010-02-19 21:05 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers, Michael S. Tsirkin

On 02/14/2010 10:16 AM, Stefan Weil wrote:
> When debug output was enabled (by defining DEBUG_EEPRO100),
> some debug messages resulted in a compiler error.
>
> This is fixed here.
>
> Signed-off-by: Stefan Weil<weil@mail.berlios.de>
>    

Michael,

Can you take these through your tree?

Regards,

Anthony Liguori

> ---
>   hw/eepro100.c |   13 +++++++------
>   1 files changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/hw/eepro100.c b/hw/eepro100.c
> index b33dbb8..6580ca8 100644
> --- a/hw/eepro100.c
> +++ b/hw/eepro100.c
> @@ -56,7 +56,9 @@
>   #define KiB 1024
>
>   /* Debug EEPRO100 card. */
> -//~ #define DEBUG_EEPRO100
> +#if 0
> +# define DEBUG_EEPRO100
> +#endif
>
>   #ifdef DEBUG_EEPRO100
>   #define logout(fmt, ...) fprintf(stderr, "EE100\t%-24s" fmt, __func__, ## __VA_ARGS__)
> @@ -874,9 +876,8 @@ static void action_command(EEPRO100State *s)
>           cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx));
>           uint16_t status = le16_to_cpu(s->tx.status);
>           uint16_t command = le16_to_cpu(s->tx.command);
> -        logout
> -            ("val=0x%02x (cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
> -             val, status, command, s->tx.link);
> +        logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
> +               status, command, s->tx.link);
>           bool bit_el = ((command&  0x8000) != 0);
>           bool bit_s = ((command&  0x4000) != 0);
>           bool bit_i = ((command&  0x2000) != 0);
> @@ -891,7 +892,7 @@ static void action_command(EEPRO100State *s)
>               break;
>           case CmdIASetup:
>               cpu_physical_memory_read(s->cb_address + 8,&s->conf.macaddr.a[0], 6);
> -            TRACE(OTHER, logout("macaddr: %s\n", nic_dump(&s->macaddr[0], 6)));
> +            TRACE(OTHER, logout("macaddr: %s\n", nic_dump(&s->conf.macaddr.a[0], 6)));
>               break;
>           case CmdConfigure:
>               cpu_physical_memory_read(s->cb_address + 8,&s->configuration[0],
> @@ -1875,7 +1876,7 @@ static int nic_init(PCIDevice *pci_dev, uint32_t device)
>                              pci_mmio_map);
>
>       qemu_macaddr_default_if_unset(&s->conf.macaddr);
> -    logout("macaddr: %s\n", nic_dump(&s->macaddr[0], 6));
> +    logout("macaddr: %s\n", nic_dump(&s->conf.macaddr.a[0], 6));
>       assert(s->region[1] == 0);
>
>       nic_reset(s);
>    

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

* [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c
  2010-02-14 16:16         ` [Qemu-devel] [PATCH 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
  2010-02-14 16:16           ` [Qemu-devel] [PATCH 06/20] eepro100: Add TODO list Stefan Weil
@ 2010-02-21 17:00           ` Michael S. Tsirkin
  2010-02-21 21:08             ` Stefan Weil
  1 sibling, 1 reply; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-02-21 17:00 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

On Sun, Feb 14, 2010 at 05:16:14PM +0100, Stefan Weil wrote:
> All eepro100 devices work with drivers which
> only use basic features.
> 
> They were tested with gpxe boot.
> 
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> ---
>  hw/pci.c |   18 ++++++++++++++++++
>  1 files changed, 18 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/pci.c b/hw/pci.c
> index eb2043e..1ba3f92 100644
> --- a/hw/pci.c
> +++ b/hw/pci.c
> @@ -1436,9 +1436,18 @@ void do_pci_info(Monitor *mon, QObject **ret_data)
>  
>  static const char * const pci_nic_models[] = {
>      "ne2k_pci",
> +    "i82550",
>      "i82551",
> +    "i82557a",
>      "i82557b",
> +    "i82557c",
> +    "i82558a",
> +    "i82558b",
> +    "i82559a",
> +    "i82559b",
> +    "i82559c",
>      "i82559er",
> +    "i82562",
>      "rtl8139",
>      "e1000",
>      "pcnet",
> @@ -1448,9 +1457,18 @@ static const char * const pci_nic_models[] = {
>  
>  static const char * const pci_nic_names[] = {
>      "ne2k_pci",
> +    "i82550",
>      "i82551",
> +    "i82557a",
>      "i82557b",
> +    "i82557c",
> +    "i82558a",
> +    "i82558b",
> +    "i82559a",
> +    "i82559b",
> +    "i82559c",
>      "i82559er",
> +    "i82562",
>      "rtl8139",
>      "e1000",
>      "pcnet",

One wonders: would it be cleaner to have a single eepro100 device
with specific model as qdev option?

-- 
MST

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

* [Qemu-devel] Re: [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id
  2010-02-14 16:16                     ` [Qemu-devel] [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
  2010-02-14 16:16                       ` [Qemu-devel] [PATCH 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
@ 2010-02-21 17:05                       ` Michael S. Tsirkin
  2010-02-21 21:38                         ` Stefan Weil
  2010-03-02 18:42                       ` [Qemu-devel] " Stefan Weil
  2 siblings, 1 reply; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-02-21 17:05 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

On Sun, Feb 14, 2010 at 05:16:20PM +0100, Stefan Weil wrote:
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> ---
>  hw/eepro100.c |   17 ++++++++++++++++-
>  1 files changed, 16 insertions(+), 1 deletions(-)
> 
> diff --git a/hw/eepro100.c b/hw/eepro100.c
> index c647322..01bcd6d 100644
> --- a/hw/eepro100.c
> +++ b/hw/eepro100.c
> @@ -272,6 +272,21 @@ typedef enum {
>      eeprom_smbus_addr = 0x90,
>  } EEPROMOffset;
>  
> +/* Bit values for EEPROM ID word. */
> +typedef enum {
> +    eeprom_id_mdm = BIT(0),     /* Modem */
> +    eeprom_id_stb = BIT(1),     /* Standby Enable */
> +    eeprom_id_wmr = BIT(2),     /* ??? */
> +    eeprom_id_wol = BIT(5),     /* Wake on LAN */
> +    eeprom_id_dpd = BIT(6),     /* Deep Power Down */
> +    eeprom_id_alt = BIT(7),     /* */
> +    /* BITS(10, 8) device revision */
> +    eeprom_id_bd = BIT(11),     /* boot disable */
> +    eeprom_id_id = BIT(13),     /* id bit */
> +    /* BITS(15, 14) signature */
> +    eeprom_id_valid = BIT(14),  /* signature for valid eeprom */
> +} eeprom_id_bit;

The type name is unused - don't add it?
Can constants be upper case?


> +
>  /* Default values for MDI (PHY) registers */
>  static const uint16_t eepro100_mdi_default[] = {
>      /* MDI Registers 0 - 6, 7 */
> @@ -643,7 +658,7 @@ static void nic_selective_reset(EEPRO100State * s)
>      uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
>      //~ eeprom93xx_reset(s->eeprom);
>      memcpy(eeprom_contents, s->conf.macaddr.a, 6);
> -    eeprom_contents[eeprom_id] = 0x4000;
> +    eeprom_contents[eeprom_id] = eeprom_id_valid;
>      if (s->device == i82557B || s->device == i82557C)
>          eeprom_contents[5] = 0x0100;
>      eeprom_contents[eeprom_phy_id] = 1;
> -- 
> 1.6.6.1
> 
> 

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

* [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c
  2010-02-21 17:00           ` [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c Michael S. Tsirkin
@ 2010-02-21 21:08             ` Stefan Weil
  2010-03-03 11:51               ` Michael S. Tsirkin
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-21 21:08 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: QEMU Developers

Michael S. Tsirkin schrieb:
> On Sun, Feb 14, 2010 at 05:16:14PM +0100, Stefan Weil wrote:
>   
>> All eepro100 devices work with drivers which
>> only use basic features.
>>
>> They were tested with gpxe boot.
>>
>> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
>> ---
>>  hw/pci.c |   18 ++++++++++++++++++
>>  1 files changed, 18 insertions(+), 0 deletions(-)
>>
>> diff --git a/hw/pci.c b/hw/pci.c
>> index eb2043e..1ba3f92 100644
>> --- a/hw/pci.c
>> +++ b/hw/pci.c
>> @@ -1436,9 +1436,18 @@ void do_pci_info(Monitor *mon, QObject **ret_data)
>>  
>>  static const char * const pci_nic_models[] = {
>>      "ne2k_pci",
>> +    "i82550",
>>      "i82551",
>> +    "i82557a",
>>      "i82557b",
>> +    "i82557c",
>> +    "i82558a",
>> +    "i82558b",
>> +    "i82559a",
>> +    "i82559b",
>> +    "i82559c",
>>      "i82559er",
>> +    "i82562",
>>      "rtl8139",
>>      "e1000",
>>      "pcnet",
>> @@ -1448,9 +1457,18 @@ static const char * const pci_nic_models[] = {
>>  
>>  static const char * const pci_nic_names[] = {
>>      "ne2k_pci",
>> +    "i82550",
>>      "i82551",
>> +    "i82557a",
>>      "i82557b",
>> +    "i82557c",
>> +    "i82558a",
>> +    "i82558b",
>> +    "i82559a",
>> +    "i82559b",
>> +    "i82559c",
>>      "i82559er",
>> +    "i82562",
>>      "rtl8139",
>>      "e1000",
>>      "pcnet",
>>     
>
> One wonders: would it be cleaner to have a single eepro100 device
> with specific model as qdev option?

Technically that would be possible, too.
You could even have a single pci ethernet device and
specify vendor and device id as qdev options.

I prefer the "official" device names which are also
used in the Intel documentation. eepro100 or e100
are marketing names (more of them exist).

Please note that this patch was marked as optional.
The arrays pci_nic_names and pci_nic_models are
not really needed, and as soon as the table of available
nics is automatically derived from the device information,
all variants of i825xx are supported automatically.

Regards
Stefan Weil

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

* [Qemu-devel] Re: [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id
  2010-02-21 17:05                       ` [Qemu-devel] Re: [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Michael S. Tsirkin
@ 2010-02-21 21:38                         ` Stefan Weil
  2010-02-22  9:00                           ` Michael S. Tsirkin
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-02-21 21:38 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: QEMU Developers

Michael S. Tsirkin schrieb:
> On Sun, Feb 14, 2010 at 05:16:20PM +0100, Stefan Weil wrote:
>> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
>> ---
>> hw/eepro100.c | 17 ++++++++++++++++-
>> 1 files changed, 16 insertions(+), 1 deletions(-)
>>
>> diff --git a/hw/eepro100.c b/hw/eepro100.c
>> index c647322..01bcd6d 100644
>> --- a/hw/eepro100.c
>> +++ b/hw/eepro100.c
>> @@ -272,6 +272,21 @@ typedef enum {
>> eeprom_smbus_addr = 0x90,
>> } EEPROMOffset;
>>
>> +/* Bit values for EEPROM ID word. */
>> +typedef enum {
>> + eeprom_id_mdm = BIT(0), /* Modem */
>> + eeprom_id_stb = BIT(1), /* Standby Enable */
>> + eeprom_id_wmr = BIT(2), /* ??? */
>> + eeprom_id_wol = BIT(5), /* Wake on LAN */
>> + eeprom_id_dpd = BIT(6), /* Deep Power Down */
>> + eeprom_id_alt = BIT(7), /* */
>> + /* BITS(10, 8) device revision */
>> + eeprom_id_bd = BIT(11), /* boot disable */
>> + eeprom_id_id = BIT(13), /* id bit */
>> + /* BITS(15, 14) signature */
>> + eeprom_id_valid = BIT(14), /* signature for valid eeprom */
>> +} eeprom_id_bit;
>
> The type name is unused - don't add it?

Maybe it will be used some day?
Adding a type name now makes the code more uniform
and avoids two deltas when it is used.

There are a lot of symbolic names which are unused
today, for example most of above enum values.
This is common practice.

> Can constants be upper case?

Of course they can. Is this a QEMU coding convention?
I did not see a hint in CODING_STYLE.

If it is the coding style: UPPER_CASE or CamelCase?
Will it be required for all future modifications
of QEMU code?

>
>
>> +
>> /* Default values for MDI (PHY) registers */
>> static const uint16_t eepro100_mdi_default[] = {
>> /* MDI Registers 0 - 6, 7 */
>> @@ -643,7 +658,7 @@ static void nic_selective_reset(EEPRO100State * s)
>> uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
>> //~ eeprom93xx_reset(s->eeprom);
>> memcpy(eeprom_contents, s->conf.macaddr.a, 6);
>> - eeprom_contents[eeprom_id] = 0x4000;
>> + eeprom_contents[eeprom_id] = eeprom_id_valid;
>> if (s->device == i82557B || s->device == i82557C)
>> eeprom_contents[5] = 0x0100;
>> eeprom_contents[eeprom_phy_id] = 1;
>> -- 
>> 1.6.6.1
>>
>>

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

* [Qemu-devel] Re: [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id
  2010-02-21 21:38                         ` Stefan Weil
@ 2010-02-22  9:00                           ` Michael S. Tsirkin
  0 siblings, 0 replies; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-02-22  9:00 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

On Sun, Feb 21, 2010 at 10:38:02PM +0100, Stefan Weil wrote:
> Michael S. Tsirkin schrieb:
> > On Sun, Feb 14, 2010 at 05:16:20PM +0100, Stefan Weil wrote:
> >> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> >> ---
> >> hw/eepro100.c | 17 ++++++++++++++++-
> >> 1 files changed, 16 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/hw/eepro100.c b/hw/eepro100.c
> >> index c647322..01bcd6d 100644
> >> --- a/hw/eepro100.c
> >> +++ b/hw/eepro100.c
> >> @@ -272,6 +272,21 @@ typedef enum {
> >> eeprom_smbus_addr = 0x90,
> >> } EEPROMOffset;
> >>
> >> +/* Bit values for EEPROM ID word. */
> >> +typedef enum {
> >> + eeprom_id_mdm = BIT(0), /* Modem */
> >> + eeprom_id_stb = BIT(1), /* Standby Enable */
> >> + eeprom_id_wmr = BIT(2), /* ??? */
> >> + eeprom_id_wol = BIT(5), /* Wake on LAN */
> >> + eeprom_id_dpd = BIT(6), /* Deep Power Down */
> >> + eeprom_id_alt = BIT(7), /* */
> >> + /* BITS(10, 8) device revision */
> >> + eeprom_id_bd = BIT(11), /* boot disable */
> >> + eeprom_id_id = BIT(13), /* id bit */
> >> + /* BITS(15, 14) signature */
> >> + eeprom_id_valid = BIT(14), /* signature for valid eeprom */
> >> +} eeprom_id_bit;
> >
> > The type name is unused - don't add it?
> 
> Maybe it will be used some day?
> Adding a type name now makes the code more uniform
> and avoids two deltas when it is used.
> 
> There are a lot of symbolic names which are unused
> today, for example most of above enum values.
> This is common practice.
> 
> > Can constants be upper case?
> 
> Of course they can. Is this a QEMU coding convention?
> I did not see a hint in CODING_STYLE.
> 
> If it is the coding style: UPPER_CASE or CamelCase?

UPPER_CASE

> Will it be required for all future modifications
> of QEMU code?
> 
> >
> >
> >> +
> >> /* Default values for MDI (PHY) registers */
> >> static const uint16_t eepro100_mdi_default[] = {
> >> /* MDI Registers 0 - 6, 7 */
> >> @@ -643,7 +658,7 @@ static void nic_selective_reset(EEPRO100State * s)
> >> uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
> >> //~ eeprom93xx_reset(s->eeprom);
> >> memcpy(eeprom_contents, s->conf.macaddr.a, 6);
> >> - eeprom_contents[eeprom_id] = 0x4000;
> >> + eeprom_contents[eeprom_id] = eeprom_id_valid;
> >> if (s->device == i82557B || s->device == i82557C)
> >> eeprom_contents[5] = 0x0100;
> >> eeprom_contents[eeprom_phy_id] = 1;
> >> -- 
> >> 1.6.6.1
> >>
> >>

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

* Re: [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages
  2010-02-19 21:05   ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Anthony Liguori
@ 2010-03-01 17:54     ` Stefan Weil
  0 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-01 17:54 UTC (permalink / raw)
  To: Anthony Liguori, Michael S. Tsirkin; +Cc: QEMU Developers

Anthony Liguori schrieb:
> On 02/14/2010 10:16 AM, Stefan Weil wrote:
>> When debug output was enabled (by defining DEBUG_EEPRO100),
>> some debug messages resulted in a compiler error.
>>
>> This is fixed here.
>>
>> Signed-off-by: Stefan Weil<weil@mail.berlios.de>
>>    
>
> Michael,
>
> Can you take these through your tree?
>
> Regards,
>
> Anthony Liguori

Up to now, I got feedback for 2 of these 20 patches:

[PATCH 05/20] eepro100: Add all supported devices to pci.c
    Michael asked whether it would be cleaner to have a single
    eepro100 device with specific model as qdev option.
    As long as there are no more opinions on this topic,
    I suggest to omit this single patch.

[PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id
    Michael had two points: an unused type name and enum members
    which were written in lower_case instead of UPPER_CASE.

If there are no other open topics, I suggest to commit the patch
series as it is (optionally without 05/20). Upper / lower case can be
fixed later when this new rule is added to the style guide.

Regards,

Stefan Weil

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

* [Qemu-devel] [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id
  2010-02-14 16:16                     ` [Qemu-devel] [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
  2010-02-14 16:16                       ` [Qemu-devel] [PATCH 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
  2010-02-21 17:05                       ` [Qemu-devel] Re: [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Michael S. Tsirkin
@ 2010-03-02 18:42                       ` Stefan Weil
  2 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 18:42 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

V2 - Use UPPER_CASE for enum values

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index c2ff569..2a871b8 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -272,6 +272,21 @@ typedef enum {
     EEPROM_SMBUS_ADDR = 0x90,
 } EEPROMOffset;
 
+/* Bit values for EEPROM ID word. */
+typedef enum {
+    EEPROM_ID_MDM = BIT(0),     /* Modem */
+    EEPROM_ID_STB = BIT(1),     /* Standby Enable */
+    EEPROM_ID_WMR = BIT(2),     /* ??? */
+    EEPROM_ID_WOL = BIT(5),     /* Wake on LAN */
+    EEPROM_ID_DPD = BIT(6),     /* Deep Power Down */
+    EEPROM_ID_ALT = BIT(7),     /* */
+    /* BITS(10, 8) device revision */
+    EEPROM_ID_BD = BIT(11),     /* boot disable */
+    EEPROM_ID_ID = BIT(13),     /* id bit */
+    /* BITS(15, 14) signature */
+    EEPROM_ID_VALID = BIT(14),  /* signature for valid eeprom */
+} eeprom_id_bit;
+
 /* Default values for MDI (PHY) registers */
 static const uint16_t eepro100_mdi_default[] = {
     /* MDI Registers 0 - 6, 7 */
@@ -643,7 +658,7 @@ static void nic_selective_reset(EEPRO100State * s)
     uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
     //~ eeprom93xx_reset(s->eeprom);
     memcpy(eeprom_contents, s->conf.macaddr.a, 6);
-    eeprom_contents[EEPROM_ID] = 0x4000;
+    eeprom_contents[EEPROM_ID] = EEPROM_ID_VALID;
     if (s->device == i82557B || s->device == i82557C)
         eeprom_contents[5] = 0x0100;
     eeprom_contents[EEPROM_PHY_ID] = 1;
-- 
1.7.0

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

* [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot
  2010-02-14 16:16     ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
  2010-02-14 16:16       ` [Qemu-devel] [PATCH 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
@ 2010-03-02 18:43       ` Stefan Weil
  2010-03-02 20:04         ` [Qemu-devel] " Michael S. Tsirkin
  1 sibling, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 18:43 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

The phy handling was wrong for PXE, GPXE boot:
GPXE's eepro100 driver did not detect a valid link.

This is fixed here.

V2 - Use UPPER_CASE for enum values

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 124bc49..f6764cc 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -20,7 +20,7 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  *
  * Tested features (i82559):
- *      PXE boot (i386) no valid link
+ *      PXE boot (i386) ok
  *      Linux networking (i386) ok
  *
  * Untested:
@@ -33,10 +33,6 @@
  * Open Source Software Developer Manual
  */
 
-#if defined(TARGET_I386)
-# warning "PXE boot still not working!"
-#endif
-
 #include <stddef.h>             /* offsetof */
 #include <stdbool.h>
 #include "hw.h"
@@ -243,6 +239,17 @@ typedef struct {
     bool has_extended_tcb_support;
 } EEPRO100State;
 
+/* Word indices in EEPROM. */
+typedef enum {
+    EEPROM_CNFG_MDIX  = 0x03,
+    EEPROM_ID         = 0x05,
+    EEPROM_PHY_ID     = 0x06,
+    EEPROM_VENDOR_ID  = 0x0c,
+    EEPROM_CONFIG_ASF = 0x0d,
+    EEPROM_DEVICE_ID  = 0x23,
+    EEPROM_SMBUS_ADDR = 0x90,
+} EEPROMOffset;
+
 /* Default values for MDI (PHY) registers */
 static const uint16_t eepro100_mdi_default[] = {
     /* MDI Registers 0 - 6, 7 */
@@ -632,9 +639,10 @@ static void nic_selective_reset(EEPRO100State * s)
     uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
     //~ eeprom93xx_reset(s->eeprom);
     memcpy(eeprom_contents, s->conf.macaddr.a, 6);
-    eeprom_contents[0xa] = 0x4000;
+    eeprom_contents[EEPROM_ID] = 0x4000;
     if (s->device == i82557B || s->device == i82557C)
         eeprom_contents[5] = 0x0100;
+    eeprom_contents[EEPROM_PHY_ID] = 1;
     uint16_t sum = 0;
     for (i = 0; i < EEPROM_SIZE - 1; i++) {
         sum += eeprom_contents[i];
-- 
1.7.0

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

* [Qemu-devel] Re: [PATCH 03/20] eepro100: Fix PXE boot
  2010-03-02 18:43       ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
@ 2010-03-02 20:04         ` Michael S. Tsirkin
  0 siblings, 0 replies; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-03-02 20:04 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

On Tue, Mar 02, 2010 at 07:43:36PM +0100, Stefan Weil wrote:
> The phy handling was wrong for PXE, GPXE boot:
> GPXE's eepro100 driver did not detect a valid link.
> 
> This is fixed here.
> 
> V2 - Use UPPER_CASE for enum values
> 
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>

Please repost the whole series, using prefix PATCHv3
and Cc me.

Thanks!

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

* [Qemu-devel] [PATCHv3 01/20] eepro100: Fix compiler errors from debug messages
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
  2010-02-14 16:16 ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-03 11:52   ` [Qemu-devel] " Michael S. Tsirkin
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 02/20] eepro100: Add missing SCB register names Stefan Weil
                   ` (18 subsequent siblings)
  20 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

When debug output was enabled (by defining DEBUG_EEPRO100),
some debug messages resulted in a compiler error.

This is fixed here.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index b33dbb8..6580ca8 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -56,7 +56,9 @@
 #define KiB 1024
 
 /* Debug EEPRO100 card. */
-//~ #define DEBUG_EEPRO100
+#if 0
+# define DEBUG_EEPRO100
+#endif
 
 #ifdef DEBUG_EEPRO100
 #define logout(fmt, ...) fprintf(stderr, "EE100\t%-24s" fmt, __func__, ## __VA_ARGS__)
@@ -874,9 +876,8 @@ static void action_command(EEPRO100State *s)
         cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx));
         uint16_t status = le16_to_cpu(s->tx.status);
         uint16_t command = le16_to_cpu(s->tx.command);
-        logout
-            ("val=0x%02x (cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
-             val, status, command, s->tx.link);
+        logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
+               status, command, s->tx.link);
         bool bit_el = ((command & 0x8000) != 0);
         bool bit_s = ((command & 0x4000) != 0);
         bool bit_i = ((command & 0x2000) != 0);
@@ -891,7 +892,7 @@ static void action_command(EEPRO100State *s)
             break;
         case CmdIASetup:
             cpu_physical_memory_read(s->cb_address + 8, &s->conf.macaddr.a[0], 6);
-            TRACE(OTHER, logout("macaddr: %s\n", nic_dump(&s->macaddr[0], 6)));
+            TRACE(OTHER, logout("macaddr: %s\n", nic_dump(&s->conf.macaddr.a[0], 6)));
             break;
         case CmdConfigure:
             cpu_physical_memory_read(s->cb_address + 8, &s->configuration[0],
@@ -1875,7 +1876,7 @@ static int nic_init(PCIDevice *pci_dev, uint32_t device)
                            pci_mmio_map);
 
     qemu_macaddr_default_if_unset(&s->conf.macaddr);
-    logout("macaddr: %s\n", nic_dump(&s->macaddr[0], 6));
+    logout("macaddr: %s\n", nic_dump(&s->conf.macaddr.a[0], 6));
     assert(s->region[1] == 0);
 
     nic_reset(s);
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 02/20] eepro100: Add missing SCB register names
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
  2010-02-14 16:16 ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 " Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 03/20] eepro100: Fix PXE boot Stefan Weil
                   ` (17 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

Some system control block registers were addressed
using their offset value. Use symbolic names now
and clean the documentation.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 6580ca8..124bc49 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -125,16 +125,20 @@
 /* Offsets to the various registers.
    All accesses need not be longword aligned. */
 enum speedo_offsets {
-    SCBStatus = 0,
+    SCBStatus = 0,              /* Status Word. */
     SCBAck = 1,
     SCBCmd = 2,                 /* Rx/Command Unit command and status. */
     SCBIntmask = 3,
     SCBPointer = 4,             /* General purpose pointer. */
     SCBPort = 8,                /* Misc. commands and operands.  */
-    SCBflash = 12, SCBeeprom = 14,      /* EEPROM and flash memory control. */
+    SCBflash = 12,              /* Flash memory control. */
+    SCBeeprom = 14,             /* EEPROM control. */
     SCBCtrlMDI = 16,            /* MDI interface control. */
     SCBEarlyRx = 20,            /* Early receive byte count. */
-    SCBFlow = 24,
+    SCBFlow = 24,               /* Flow Control. */
+    SCBpmdr = 27,               /* Power Management Driver. */
+    SCBgctrl = 28,              /* General Control. */
+    SCBgstat = 29,              /* General Status. */
 };
 
 /* A speedo3 transmit buffer descriptor with two buffers... */
@@ -1333,11 +1337,11 @@ static uint8_t eepro100_read1(EEPRO100State * s, uint32_t addr)
     case SCBeeprom:
         val = eepro100_read_eeprom(s);
         break;
-    case 0x1b:                 /* PMDR (power management driver register) */
+    case SCBpmdr:       /* Power Management Driver Register */
         val = 0;
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
-    case 0x1d:                 /* general status register */
+    case SCBgstat:      /* General Status Register */
         /* 100 Mbps full duplex, valid link */
         val = 0x07;
         TRACE(OTHER, logout("addr=General Status val=%02x\n", val));
@@ -1431,7 +1435,7 @@ static void eepro100_write1(EEPRO100State * s, uint32_t addr, uint8_t val)
     case SCBFlow:       /* does not exist on 82557 */
     case SCBFlow + 1:
     case SCBFlow + 2:
-    case SCBFlow + 3:
+    case SCBpmdr:       /* does not exist on 82557 */
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
     case SCBeeprom:
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 03/20] eepro100: Fix PXE boot
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (2 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 02/20] eepro100: Add missing SCB register names Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
                   ` (16 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

The phy handling was wrong for PXE, GPXE boot:
GPXE's eepro100 driver did not detect a valid link.

This is fixed here.

V2 - Use UPPER_CASE for enum values

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 124bc49..f6764cc 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -20,7 +20,7 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  *
  * Tested features (i82559):
- *      PXE boot (i386) no valid link
+ *      PXE boot (i386) ok
  *      Linux networking (i386) ok
  *
  * Untested:
@@ -33,10 +33,6 @@
  * Open Source Software Developer Manual
  */
 
-#if defined(TARGET_I386)
-# warning "PXE boot still not working!"
-#endif
-
 #include <stddef.h>             /* offsetof */
 #include <stdbool.h>
 #include "hw.h"
@@ -243,6 +239,17 @@ typedef struct {
     bool has_extended_tcb_support;
 } EEPRO100State;
 
+/* Word indices in EEPROM. */
+typedef enum {
+    EEPROM_CNFG_MDIX  = 0x03,
+    EEPROM_ID         = 0x05,
+    EEPROM_PHY_ID     = 0x06,
+    EEPROM_VENDOR_ID  = 0x0c,
+    EEPROM_CONFIG_ASF = 0x0d,
+    EEPROM_DEVICE_ID  = 0x23,
+    EEPROM_SMBUS_ADDR = 0x90,
+} EEPROMOffset;
+
 /* Default values for MDI (PHY) registers */
 static const uint16_t eepro100_mdi_default[] = {
     /* MDI Registers 0 - 6, 7 */
@@ -632,9 +639,10 @@ static void nic_selective_reset(EEPRO100State * s)
     uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
     //~ eeprom93xx_reset(s->eeprom);
     memcpy(eeprom_contents, s->conf.macaddr.a, 6);
-    eeprom_contents[0xa] = 0x4000;
+    eeprom_contents[EEPROM_ID] = 0x4000;
     if (s->device == i82557B || s->device == i82557C)
         eeprom_contents[5] = 0x0100;
+    eeprom_contents[EEPROM_PHY_ID] = 1;
     uint16_t sum = 0;
     for (i = 0; i < EEPROM_SIZE - 1; i++) {
         sum += eeprom_contents[i];
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 04/20] eepro100: Support gpxe boot for all eepro100 devices
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (3 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 03/20] eepro100: Fix PXE boot Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
                   ` (15 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

Only two boot ROM files are needed for all devices.

* Add these GPXE ROM files using new naming convention
  (as discussed on qemu-devel). Both files were created
  with http://rom-o-matic.net/, PCI vendor / device ids
  as in ROM filenames and option BANNER_TIMEOUT = 0.

* Remove old PXE ROM file for i82559er.
  It was replaced by gpxe-eepro100-80861209.rom.

* Update pc-bios/README (and sort entries).

Full support still needs additional eepro100 fixes.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c                      |   13 ++++++++++++-
 pc-bios/README                     |    4 ++--
 pc-bios/gpxe-eepro100-80861209.rom |  Bin 0 -> 56832 bytes
 pc-bios/gpxe-eepro100-80861229.rom |  Bin 0 -> 56832 bytes
 pc-bios/pxe-i82559er.bin           |  Bin 56832 -> 0 bytes
 5 files changed, 14 insertions(+), 3 deletions(-)
 create mode 100644 pc-bios/gpxe-eepro100-80861209.rom
 create mode 100644 pc-bios/gpxe-eepro100-80861229.rom
 delete mode 100644 pc-bios/pxe-i82559er.bin

diff --git a/hw/eepro100.c b/hw/eepro100.c
index f6764cc..c072e90 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1975,6 +1975,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82550_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861209.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -1984,6 +1985,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82551_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861209.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -1993,6 +1995,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557a_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2002,6 +2005,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557b_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2011,6 +2015,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557c_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2020,6 +2025,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82558a_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2029,6 +2035,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82558b_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2038,6 +2045,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559a_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2047,6 +2055,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559b_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2056,6 +2065,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559c_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861229.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2065,7 +2075,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559er_init,
         .exit      = pci_nic_uninit,
-        .romfile   = "pxe-i82559er.bin",
+        .romfile   = "gpxe-eepro100-80861209.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
@@ -2075,6 +2085,7 @@ static PCIDeviceInfo eepro100_info[] = {
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82562_init,
         .exit      = pci_nic_uninit,
+        .romfile   = "gpxe-eepro100-80861209.rom",
         .qdev.props = (Property[]) {
             DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
             DEFINE_PROP_END_OF_LIST(),
diff --git a/pc-bios/README b/pc-bios/README
index ee68723..2fc48ed 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -20,10 +20,10 @@
 - The PXE roms come from Rom-o-Matic gPXE 0.9.9 with BANNER_TIMEOUT=0
 
   e1000 8086:100E
-  pcnet32 1022:2000
+  eepro100 8086:1209, 8086:1229
   ns8390 1050:0940
+  pcnet32 1022:2000
   rtl8139 10ec:8139
-  eepro100 8086:1209
   virtio 1af4:1000
 
   http://rom-o-matic.net/
diff --git a/pc-bios/gpxe-eepro100-80861209.rom b/pc-bios/gpxe-eepro100-80861209.rom
new file mode 100644
index 0000000000000000000000000000000000000000..2ca59ec369fa3aa829aa64b80339dc9aaab9026f
GIT binary patch
literal 56832
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

literal 0
HcmV?d00001

diff --git a/pc-bios/gpxe-eepro100-80861229.rom b/pc-bios/gpxe-eepro100-80861229.rom
new file mode 100644
index 0000000000000000000000000000000000000000..9cf397e3de03c4b6441893cf07d9ea63a36a65c8
GIT binary patch
literal 56832
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

literal 0
HcmV?d00001

diff --git a/pc-bios/pxe-i82559er.bin b/pc-bios/pxe-i82559er.bin
deleted file mode 100644
index 2ca59ec369fa3aa829aa64b80339dc9aaab9026f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 56832
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

-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 05/20] eepro100: Add all supported devices to pci.c
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (4 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 06/20] eepro100: Add TODO list Stefan Weil
                   ` (14 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

All eepro100 devices work with drivers which
only use basic features.

They were tested with gpxe boot.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/pci.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/hw/pci.c b/hw/pci.c
index eb2043e..1ba3f92 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -1436,9 +1436,18 @@ void do_pci_info(Monitor *mon, QObject **ret_data)
 
 static const char * const pci_nic_models[] = {
     "ne2k_pci",
+    "i82550",
     "i82551",
+    "i82557a",
     "i82557b",
+    "i82557c",
+    "i82558a",
+    "i82558b",
+    "i82559a",
+    "i82559b",
+    "i82559c",
     "i82559er",
+    "i82562",
     "rtl8139",
     "e1000",
     "pcnet",
@@ -1448,9 +1457,18 @@ static const char * const pci_nic_models[] = {
 
 static const char * const pci_nic_names[] = {
     "ne2k_pci",
+    "i82550",
     "i82551",
+    "i82557a",
     "i82557b",
+    "i82557c",
+    "i82558a",
+    "i82558b",
+    "i82559a",
+    "i82559b",
+    "i82559c",
     "i82559er",
+    "i82562",
     "rtl8139",
     "e1000",
     "pcnet",
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 06/20] eepro100: Add TODO list
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (5 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 07/20] eepro100: Update copyright notice Stefan Weil
                   ` (13 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index c072e90..8ee4087 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -31,6 +31,14 @@
  *
  * Intel 8255x 10/100 Mbps Ethernet Controller Family
  * Open Source Software Developer Manual
+ *
+ * TODO:
+ *      * PHY emulation should be separated from nic emulation.
+ *        Most nic emulations could share the same phy code.
+ *      * i82550 is untested. It is programmed like the i82559.
+ *      * i82562 is untested. It is programmed like the i82559.
+ *      * Power management (i82558 and later) is not implemented.
+ *      * Wake-on-LAN is not implemented.
  */
 
 #include <stddef.h>             /* offsetof */
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 07/20] eepro100: Update copyright notice
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (6 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 06/20] eepro100: Add TODO list Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 08/20] eepro100: Add device descriptions Stefan Weil
                   ` (12 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 8ee4087..6c11209 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1,15 +1,15 @@
 /*
  * QEMU i8255x (PRO100) emulation
  *
- * Copyright (c) 2006-2007 Stefan Weil
+ * Copyright (C) 2006-2010 Stefan Weil
  *
  * Portions of the code are copies from grub / etherboot eepro100.c
  * and linux e100.c.
  *
- * This program is free software; you can redistribute it and/or modify
+ * 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.
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) version 3 or any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,7 +17,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * Tested features (i82559):
  *      PXE boot (i386) ok
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 08/20] eepro100: Add device descriptions
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (7 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 07/20] eepro100: Update copyright notice Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-03 11:49   ` [Qemu-devel] " Michael S. Tsirkin
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 09/20] eepro100: Use symbolic names and BIT macros in binary operations Stefan Weil
                   ` (11 subsequent siblings)
  20 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

Add descriptions for all devices.
These descriptions are shown when users call
		qemu -device ?

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 6c11209..d5d3abc 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1980,6 +1980,7 @@ static int pci_i82562_init(PCIDevice *pci_dev)
 static PCIDeviceInfo eepro100_info[] = {
     {
         .qdev.name = "i82550",
+        .qdev.desc = "Intel i82550 Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82550_init,
         .exit      = pci_nic_uninit,
@@ -1990,6 +1991,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82551",
+        .qdev.desc = "Intel i82551 Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82551_init,
         .exit      = pci_nic_uninit,
@@ -2000,6 +2002,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82557a",
+        .qdev.desc = "Intel i82557A Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557a_init,
         .exit      = pci_nic_uninit,
@@ -2010,6 +2013,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82557b",
+        .qdev.desc = "Intel i82557B Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557b_init,
         .exit      = pci_nic_uninit,
@@ -2020,6 +2024,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82557c",
+        .qdev.desc = "Intel i82557C Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82557c_init,
         .exit      = pci_nic_uninit,
@@ -2030,6 +2035,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82558a",
+        .qdev.desc = "Intel i82558A Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82558a_init,
         .exit      = pci_nic_uninit,
@@ -2040,6 +2046,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82558b",
+        .qdev.desc = "Intel i82558B Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82558b_init,
         .exit      = pci_nic_uninit,
@@ -2050,6 +2057,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82559a",
+        .qdev.desc = "Intel i82559A Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559a_init,
         .exit      = pci_nic_uninit,
@@ -2060,6 +2068,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82559b",
+        .qdev.desc = "Intel i82559B Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559b_init,
         .exit      = pci_nic_uninit,
@@ -2070,6 +2079,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82559c",
+        .qdev.desc = "Intel i82559C Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559c_init,
         .exit      = pci_nic_uninit,
@@ -2080,6 +2090,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82559er",
+        .qdev.desc = "Intel i82559ER Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82559er_init,
         .exit      = pci_nic_uninit,
@@ -2090,6 +2101,7 @@ static PCIDeviceInfo eepro100_info[] = {
         },
     },{
         .qdev.name = "i82562",
+        .qdev.desc = "Intel i82562 Ethernet",
         .qdev.size = sizeof(EEPRO100State),
         .init      = pci_i82562_init,
         .exit      = pci_nic_uninit,
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 09/20] eepro100: Use symbolic names and BIT macros in binary operations
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (8 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 08/20] eepro100: Add device descriptions Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 10/20] eepro100: Remove old unused code Stefan Weil
                   ` (10 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

Instead of magic numbers like 0x8000, symbolic names are used
for the SCB command and status bits.

There are too many configuration bits to use symbolic names
there, too. Using the BIT macro is a little help when comparing
code and documentation.

For the same reason, some other constants were replaced by
the BITS macro.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   52 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 33 insertions(+), 19 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index d5d3abc..a58c640 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -172,6 +172,20 @@ typedef struct {
     char packet[MAX_ETH_FRAME_SIZE + 4];
 } eepro100_rx_t;
 
+typedef enum {
+    COMMAND_EL = BIT(15),
+    COMMAND_S = BIT(14),
+    COMMAND_I = BIT(13),
+    COMMAND_NC = BIT(4),
+    COMMAND_SF = BIT(3),
+    COMMAND_CMD = BITS(2, 0),
+} scb_command_bit;
+
+typedef enum {
+    STATUS_C = BIT(15),
+    STATUS_OK = BIT(13),
+} scb_status_bit;
+
 typedef struct {
     uint32_t tx_good_frames, tx_max_collisions, tx_late_collisions,
         tx_underruns, tx_lost_crs, tx_deferred, tx_single_collisions,
@@ -753,22 +767,22 @@ enum commands {
 
 static cu_state_t get_cu_state(EEPRO100State * s)
 {
-    return ((s->mem[SCBStatus] >> 6) & 0x03);
+    return ((s->mem[SCBStatus] & BITS(7, 6)) >> 6);
 }
 
 static void set_cu_state(EEPRO100State * s, cu_state_t state)
 {
-    s->mem[SCBStatus] = (s->mem[SCBStatus] & 0x3f) + (state << 6);
+    s->mem[SCBStatus] = (s->mem[SCBStatus] & ~BITS(7, 6)) + (state << 6);
 }
 
 static ru_state_t get_ru_state(EEPRO100State * s)
 {
-    return ((s->mem[SCBStatus] >> 2) & 0x0f);
+    return ((s->mem[SCBStatus] & BITS(5, 2)) >> 2);
 }
 
 static void set_ru_state(EEPRO100State * s, ru_state_t state)
 {
-    s->mem[SCBStatus] = (s->mem[SCBStatus] & 0xc3) + (state << 2);
+    s->mem[SCBStatus] = (s->mem[SCBStatus] & ~BITS(5, 2)) + (state << 2);
 }
 
 static void dump_statistics(EEPRO100State * s)
@@ -898,13 +912,13 @@ static void action_command(EEPRO100State *s)
         uint16_t command = le16_to_cpu(s->tx.command);
         logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
                status, command, s->tx.link);
-        bool bit_el = ((command & 0x8000) != 0);
-        bool bit_s = ((command & 0x4000) != 0);
-        bool bit_i = ((command & 0x2000) != 0);
-        bool bit_nc = ((command & 0x0010) != 0);
+        bool bit_el = ((command & COMMAND_EL) != 0);
+        bool bit_s = ((command & COMMAND_S) != 0);
+        bool bit_i = ((command & COMMAND_I) != 0);
+        bool bit_nc = ((command & COMMAND_NC) != 0);
         bool success = true;
-        //~ bool bit_sf = ((command & 0x0008) != 0);
-        uint16_t cmd = command & 0x0007;
+        //~ bool bit_sf = ((command & COMMAND_SF) != 0);
+        uint16_t cmd = command & COMMAND_CMD;
         s->cu_offset = le32_to_cpu(s->tx.link);
         switch (cmd) {
         case CmdNOp:
@@ -941,7 +955,7 @@ static void action_command(EEPRO100State *s)
             break;
         }
         /* Write new status. */
-        stw_phys(s->cb_address, status | 0x8000 | (success ? 0x2000 : 0));
+        stw_phys(s->cb_address, status | STATUS_C | (success ? STATUS_OK : 0));
         if (bit_i) {
             /* CU completed action. */
             eepro100_cx_interrupt(s);
@@ -1684,13 +1698,13 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
         /* CSMA is disabled. */
         logout("%p received while CSMA is disabled\n", s);
         return -1;
-    } else if (size < 64 && (s->configuration[7] & 1)) {
+    } else if (size < 64 && (s->configuration[7] & BIT(0))) {
         /* Short frame and configuration byte 7/0 (discard short receive) set:
          * Short frame is discarded */
         logout("%p received short frame (%zu byte)\n", s, size);
         s->statistics.rx_short_frame_errors++;
         //~ return -1;
-    } else if ((size > MAX_ETH_FRAME_SIZE + 4) && !(s->configuration[18] & 8)) {
+    } else if ((size > MAX_ETH_FRAME_SIZE + 4) && !(s->configuration[18] & BIT(3))) {
         /* Long frame and configuration byte 18/3 (long receive ok) not set:
          * Long frames are discarded. */
         logout("%p received long frame (%zu byte), ignored\n", s, size);
@@ -1713,7 +1727,7 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
           assert(mcast_idx < 64);
           if (s->mult[mcast_idx >> 3] & (1 << (mcast_idx & 7))) {
             /* Multicast frame is allowed in hash table. */
-          } else if (s->configuration[15] & 1) {
+          } else if (s->configuration[15] & BIT(0)) {
               /* Promiscuous: receive all. */
               rfd_status |= 0x0004;
           } else {
@@ -1723,7 +1737,7 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
         }
         /* TODO: Next not for promiscuous mode? */
         rfd_status |= 0x0002;
-    } else if (s->configuration[15] & 1) {
+    } else if (s->configuration[15] & BIT(0)) {
         /* Promiscuous: receive all. */
         TRACE(RXTX, logout("%p received frame in promiscuous mode, len=%zu\n", s, size));
         rfd_status |= 0x0004;
@@ -1764,23 +1778,23 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
     /* Early receive interrupt not supported. */
     //~ eepro100_er_interrupt(s);
     /* Receive CRC Transfer not supported. */
-    if (s->configuration[18] & 4) {
+    if (s->configuration[18] & BIT(2)) {
         missing("Receive CRC Transfer");
         return -1;
     }
     /* TODO: check stripping enable bit. */
-    //~ assert(!(s->configuration[17] & 1));
+    //~ assert(!(s->configuration[17] & BIT(0)));
     cpu_physical_memory_write(s->ru_base + s->ru_offset +
                               offsetof(eepro100_rx_t, packet), buf, size);
     s->statistics.rx_good_frames++;
     eepro100_fr_interrupt(s);
     s->ru_offset = le32_to_cpu(rx.link);
-    if (rfd_command & 0x8000) {
+    if (rfd_command & COMMAND_EL) {
         /* EL bit is set, so this was the last frame. */
         logout("receive: Running out of frames\n");
         set_ru_state(s, ru_suspended);
     }
-    if (rfd_command & 0x4000) {
+    if (rfd_command & COMMAND_S) {
         /* S bit is set. */
         set_ru_state(s, ru_suspended);
     }
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 10/20] eepro100: Remove old unused code
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (9 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 09/20] eepro100: Use symbolic names and BIT macros in binary operations Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
                   ` (9 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

This code is no longer needed.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   18 ------------------
 1 files changed, 0 insertions(+), 18 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index a58c640..c2ff569 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -469,24 +469,6 @@ static void pci_reset(EEPRO100State * s)
     PCI_CONFIG_8(PCI_LATENCY_TIMER, 0x20);   // latency timer = 32 clocks
     /* PCI Header Type */
     /* BIST (built-in self test) */
-#if defined(TARGET_I386)
-// !!! workaround for buggy bios
-//~ #define PCI_BASE_ADDRESS_MEM_PREFETCH 0
-#endif
-#if 0
-    /* PCI Base Address Registers */
-    /* CSR Memory Mapped Base Address */
-    PCI_CONFIG_32(PCI_BASE_ADDRESS_0,
-                  PCI_BASE_ADDRESS_SPACE_MEMORY |
-                  PCI_BASE_ADDRESS_MEM_PREFETCH);
-    /* CSR I/O Mapped Base Address */
-    PCI_CONFIG_32(PCI_BASE_ADDRESS_1, PCI_BASE_ADDRESS_SPACE_IO);
-#if 0
-    /* Flash Memory Mapped Base Address */
-    PCI_CONFIG_32(PCI_BASE_ADDRESS_2,
-                  0xfffe0000 | PCI_BASE_ADDRESS_SPACE_MEMORY);
-#endif
-#endif
     /* Expansion ROM Base Address (depends on boot disable!!!) */
     /* TODO: not needed, set when BAR is registered */
     PCI_CONFIG_32(PCI_ROM_ADDRESS, PCI_BASE_ADDRESS_SPACE_MEMORY);
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 11/20] eepro100: Use symbolic names for bits in EEPROM id
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (10 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 10/20] eepro100: Remove old unused code Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
                   ` (8 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

V2 - Use UPPER_CASE for enum values

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index c2ff569..2a871b8 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -272,6 +272,21 @@ typedef enum {
     EEPROM_SMBUS_ADDR = 0x90,
 } EEPROMOffset;
 
+/* Bit values for EEPROM ID word. */
+typedef enum {
+    EEPROM_ID_MDM = BIT(0),     /* Modem */
+    EEPROM_ID_STB = BIT(1),     /* Standby Enable */
+    EEPROM_ID_WMR = BIT(2),     /* ??? */
+    EEPROM_ID_WOL = BIT(5),     /* Wake on LAN */
+    EEPROM_ID_DPD = BIT(6),     /* Deep Power Down */
+    EEPROM_ID_ALT = BIT(7),     /* */
+    /* BITS(10, 8) device revision */
+    EEPROM_ID_BD = BIT(11),     /* boot disable */
+    EEPROM_ID_ID = BIT(13),     /* id bit */
+    /* BITS(15, 14) signature */
+    EEPROM_ID_VALID = BIT(14),  /* signature for valid eeprom */
+} eeprom_id_bit;
+
 /* Default values for MDI (PHY) registers */
 static const uint16_t eepro100_mdi_default[] = {
     /* MDI Registers 0 - 6, 7 */
@@ -643,7 +658,7 @@ static void nic_selective_reset(EEPRO100State * s)
     uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
     //~ eeprom93xx_reset(s->eeprom);
     memcpy(eeprom_contents, s->conf.macaddr.a, 6);
-    eeprom_contents[EEPROM_ID] = 0x4000;
+    eeprom_contents[EEPROM_ID] = EEPROM_ID_VALID;
     if (s->device == i82557B || s->device == i82557C)
         eeprom_contents[5] = 0x0100;
     eeprom_contents[EEPROM_PHY_ID] = 1;
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 12/20] eepro100: Replace variable name to fix a compiler warning
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (11 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 13/20] eepro100: Support RNR interrupt Stefan Weil
                   ` (7 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

When compiling with -Wshadow, gcc gives a warning
which is fixed by renaming stat -> status.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 2a871b8..7eaa876 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -392,14 +392,14 @@ static void eepro100_acknowledge(EEPRO100State * s)
     }
 }
 
-static void eepro100_interrupt(EEPRO100State * s, uint8_t stat)
+static void eepro100_interrupt(EEPRO100State * s, uint8_t status)
 {
     uint8_t mask = ~s->mem[SCBIntmask];
-    s->mem[SCBAck] |= stat;
-    stat = s->scb_stat = s->mem[SCBAck];
-    stat &= (mask | 0x0f);
-    //~ stat &= (~s->mem[SCBIntmask] | 0x0xf);
-    if (stat && (mask & 0x01)) {
+    s->mem[SCBAck] |= status;
+    status = s->scb_stat = s->mem[SCBAck];
+    status &= (mask | 0x0f);
+    //~ status &= (~s->mem[SCBIntmask] | 0x0xf);
+    if (status && (mask & 0x01)) {
         /* SCB mask and SCB Bit M do not disable interrupt. */
         enable_interrupt(s);
     } else if (s->int_stat) {
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 13/20] eepro100: Support RNR interrupt
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (12 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 14/20] eepro100: Fix CU Start command Stefan Weil
                   ` (6 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

The RNR interrupt is triggered under these conditions:

* the RU is not ready to receive a frame due to missing resources
* the RU is ready and a RU abort command was requested

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 7eaa876..40d8db5 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -120,7 +120,7 @@
 #define  RU_NOP         0x0000
 #define  RX_START       0x0001
 #define  RX_RESUME      0x0002
-#define  RX_ABORT       0x0004
+#define  RU_ABORT       0x0004
 #define  RX_ADDR_LOAD   0x0006
 #define  RX_RESUMENR    0x0007
 #define INT_MASK        0x0100
@@ -426,13 +426,11 @@ static void eepro100_fr_interrupt(EEPRO100State * s)
     eepro100_interrupt(s, 0x40);
 }
 
-#if 0
 static void eepro100_rnr_interrupt(EEPRO100State * s)
 {
     /* RU is not ready. */
     eepro100_interrupt(s, 0x10);
 }
-#endif
 
 static void eepro100_mdi_interrupt(EEPRO100State * s)
 {
@@ -1065,6 +1063,13 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
         }
         set_ru_state(s, ru_ready);
         break;
+    case RU_ABORT:
+        /* RU abort. */
+        if (get_ru_state(s) == ru_ready) {
+            eepro100_rnr_interrupt(s);
+        }
+        set_ru_state(s, ru_idle);
+        break;
     case RX_ADDR_LOAD:
         /* Load RU base. */
         TRACE(OTHER, logout("val=0x%02x (RU base address)\n", val));
@@ -1747,6 +1752,8 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
     if (get_ru_state(s) != ru_ready) {
         /* No resources available. */
         logout("no resources, state=%u\n", get_ru_state(s));
+        /* TODO: RNR interrupt only at first failed frame? */
+        eepro100_rnr_interrupt(s);
         s->statistics.rx_resource_errors++;
         //~ assert(!"no resources");
         return -1;
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 14/20] eepro100: Fix CU Start command
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (13 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 13/20] eepro100: Support RNR interrupt Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 15/20] eepro100: Prettify code (no functional changes) Stefan Weil
                   ` (5 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

CU Start is allowed when the CU is in the idle or suspended state.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 40d8db5..a9bf7a0 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -976,17 +976,17 @@ static void action_command(EEPRO100State *s)
 
 static void eepro100_cu_command(EEPRO100State * s, uint8_t val)
 {
+    cu_state_t cu_state;
     switch (val) {
     case CU_NOP:
         /* No operation. */
         break;
     case CU_START:
-        if (get_cu_state(s) != cu_idle) {
-            /* Intel documentation says that CU must be idle for the CU
-             * start command. Intel driver for Linux also starts the CU
-             * from suspended state. */
-            logout("CU state is %u, should be %u\n", get_cu_state(s), cu_idle);
-            //~ assert(!"wrong CU state");
+        cu_state = get_cu_state(s);
+        if (cu_state != cu_idle && cu_state != cu_suspended) {
+            /* Intel documentation says that CU must be idle or suspended
+             * for the CU start command. */
+            logout("unexpected CU state is %u\n", cu_state);
         }
         set_cu_state(s, cu_active);
         s->cu_offset = s->pointer;
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 15/20] eepro100: Prettify code (no functional changes)
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (14 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 14/20] eepro100: Fix CU Start command Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 16/20] eepro100: Use tx.status Stefan Weil
                   ` (4 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

* Fix indentation.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index a9bf7a0..cf4e0ac 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -188,11 +188,11 @@ typedef enum {
 
 typedef struct {
     uint32_t tx_good_frames, tx_max_collisions, tx_late_collisions,
-        tx_underruns, tx_lost_crs, tx_deferred, tx_single_collisions,
-        tx_multiple_collisions, tx_total_collisions;
+             tx_underruns, tx_lost_crs, tx_deferred, tx_single_collisions,
+             tx_multiple_collisions, tx_total_collisions;
     uint32_t rx_good_frames, rx_crc_errors, rx_alignment_errors,
-        rx_resource_errors, rx_overrun_errors, rx_cdt_errors,
-        rx_short_frame_errors;
+             rx_resource_errors, rx_overrun_errors, rx_cdt_errors,
+             rx_short_frame_errors;
     uint32_t fc_xmt_pause, fc_rcv_pause, fc_rcv_unsupported;
     uint16_t xmt_tco_frames, rcv_tco_frames;
     /* TODO: i82559 has six reserved statistics but a total of 24 dwords. */
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 16/20] eepro100: Use tx.status
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (15 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 15/20] eepro100: Prettify code (no functional changes) Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 17/20] eepro100: New function for reading command block Stefan Weil
                   ` (3 subsequent siblings)
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

There is no need for a local variable "status".
Using tx.status makes it clearer which status
is addressed.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index cf4e0ac..f5aa306 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -903,10 +903,10 @@ static void action_command(EEPRO100State *s)
     for (;;) {
         s->cb_address = s->cu_base + s->cu_offset;
         cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx));
-        uint16_t status = le16_to_cpu(s->tx.status);
         uint16_t command = le16_to_cpu(s->tx.command);
+        s->tx.status = le16_to_cpu(s->tx.status);
         logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
-               status, command, s->tx.link);
+               s->tx.status, command, s->tx.link);
         bool bit_el = ((command & COMMAND_EL) != 0);
         bool bit_s = ((command & COMMAND_S) != 0);
         bool bit_i = ((command & COMMAND_I) != 0);
@@ -950,7 +950,7 @@ static void action_command(EEPRO100State *s)
             break;
         }
         /* Write new status. */
-        stw_phys(s->cb_address, status | STATUS_C | (success ? STATUS_OK : 0));
+        stw_phys(s->cb_address, s->tx.status | STATUS_C | (success ? STATUS_OK : 0));
         if (bit_i) {
             /* CU completed action. */
             eepro100_cx_interrupt(s);
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 17/20] eepro100: New function for reading command block
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (16 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 16/20] eepro100: Use tx.status Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-03 11:44   ` [Qemu-devel] " Michael S. Tsirkin
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 18/20] eepro100: Add diagnose command Stefan Weil
                   ` (2 subsequent siblings)
  20 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

Move code which reads the command block to the
new function read_cb. The patch also fixes some
endianess issues related to the command block
and moves declarations of local variables to
the beginning of the block.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   42 ++++++++++++++++++++++++++++--------------
 1 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index f5aa306..e10ce62 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -798,6 +798,16 @@ static void dump_statistics(EEPRO100State * s)
     //~ missing("CU dump statistical counters");
 }
 
+static void read_cb(EEPRO100State *s)
+{
+    cpu_physical_memory_read(s->cb_address, (uint8_t *) &s->tx, sizeof(s->tx));
+    s->tx.status = le16_to_cpu(s->tx.status);
+    s->tx.command = le16_to_cpu(s->tx.command);
+    s->tx.link = le32_to_cpu(s->tx.link);
+    s->tx.tbd_array_addr = le32_to_cpu(s->tx.tbd_array_addr);
+    s->tx.tcb_bytes = le16_to_cpu(s->tx.tcb_bytes);
+}
+
 static void tx_command(EEPRO100State *s)
 {
     uint32_t tbd_array = le32_to_cpu(s->tx.tbd_array_addr);
@@ -901,21 +911,25 @@ static void set_multicast_list(EEPRO100State *s)
 static void action_command(EEPRO100State *s)
 {
     for (;;) {
-        s->cb_address = s->cu_base + s->cu_offset;
-        cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx));
-        uint16_t command = le16_to_cpu(s->tx.command);
-        s->tx.status = le16_to_cpu(s->tx.status);
-        logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
-               s->tx.status, command, s->tx.link);
-        bool bit_el = ((command & COMMAND_EL) != 0);
-        bool bit_s = ((command & COMMAND_S) != 0);
-        bool bit_i = ((command & COMMAND_I) != 0);
-        bool bit_nc = ((command & COMMAND_NC) != 0);
+        bool bit_el;
+        bool bit_s;
+        bool bit_i;
+        bool bit_nc;
         bool success = true;
-        //~ bool bit_sf = ((command & COMMAND_SF) != 0);
-        uint16_t cmd = command & COMMAND_CMD;
-        s->cu_offset = le32_to_cpu(s->tx.link);
-        switch (cmd) {
+        s->cb_address = s->cu_base + s->cu_offset;
+        read_cb(s);
+        bit_el = ((s->tx.command & COMMAND_EL) != 0);
+        bit_s = ((s->tx.command & COMMAND_S) != 0);
+        bit_i = ((s->tx.command & COMMAND_I) != 0);
+        bit_nc = ((s->tx.command & COMMAND_NC) != 0);
+#if 0
+        bool bit_sf = ((s->tx.command & COMMAND_SF) != 0);
+#endif
+        s->cu_offset = s->tx.link;
+        TRACE(OTHER,
+              logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
+                     s->tx.status, s->tx.command, s->tx.link));
+        switch (s->tx.command & COMMAND_CMD) {
         case CmdNOp:
             /* Do nothing. */
             break;
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 18/20] eepro100: Add diagnose command
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (17 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 17/20] eepro100: New function for reading command block Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 19/20] eepro100: Remove C++ comments Stefan Weil
  2010-03-02 21:38 ` [Qemu-devel] [PATCHv3 20/20] eepro100: Keep includes sorted Stefan Weil
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

Real hardware would run an internal self-test.
The emulation just returns a passed status.

Original patch was from Reimar Döffinger, thanks.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index e10ce62..0f07b70 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -958,6 +958,11 @@ static void action_command(EEPRO100State *s)
             /* Starting with offset 8, the command contains
              * 64 dwords microcode which we just ignore here. */
             break;
+        case CmdDiagnose:
+            TRACE(OTHER, logout("diagnose\n"));
+            /* Make sure error flag is not set. */
+            s->tx.status = 0;
+            break;
         default:
             missing("undefined command");
             success = false;
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 19/20] eepro100: Remove C++ comments
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (18 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 18/20] eepro100: Add diagnose command Stefan Weil
@ 2010-03-02 21:37 ` Stefan Weil
  2010-03-03 11:47   ` [Qemu-devel] " Michael S. Tsirkin
  2010-03-02 21:38 ` [Qemu-devel] [PATCHv3 20/20] eepro100: Keep includes sorted Stefan Weil
  20 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:37 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

C++ comments are unwanted, so this is fixed here.

* Replace C++ comments by C comments.
* Put code which was deactivated by a C++ comment in #if 0...#endif.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |  185 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 126 insertions(+), 59 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 0f07b70..43a9060 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -154,11 +154,13 @@ typedef struct {
     uint16_t tcb_bytes;         /* transmit command block byte count (in lower 14 bits */
     uint8_t tx_threshold;       /* transmit threshold */
     uint8_t tbd_count;          /* TBD number */
-    //~ /* This constitutes two "TBD" entries: hdr and data */
-    //~ uint32_t tx_buf_addr0;  /* void *, header of frame to be transmitted.  */
-    //~ int32_t  tx_buf_size0;  /* Length of Tx hdr. */
-    //~ uint32_t tx_buf_addr1;  /* void *, data to be transmitted.  */
-    //~ int32_t  tx_buf_size1;  /* Length of Tx data. */
+#if 0
+    /* This constitutes two "TBD" entries: hdr and data */
+    uint32_t tx_buf_addr0;  /* void *, header of frame to be transmitted.  */
+    int32_t  tx_buf_size0;  /* Length of Tx hdr. */
+    uint32_t tx_buf_addr1;  /* void *, data to be transmitted.  */
+    int32_t  tx_buf_size1;  /* Length of Tx data. */
+#endif
 } eepro100_tx_t;
 
 /* Receive frame descriptor. */
@@ -398,7 +400,9 @@ static void eepro100_interrupt(EEPRO100State * s, uint8_t status)
     s->mem[SCBAck] |= status;
     status = s->scb_stat = s->mem[SCBAck];
     status &= (mask | 0x0f);
-    //~ status &= (~s->mem[SCBIntmask] | 0x0xf);
+#if 0
+    status &= (~s->mem[SCBIntmask] | 0x0xf);
+#endif
     if (status && (mask & 0x01)) {
         /* SCB mask and SCB Bit M do not disable interrupt. */
         enable_interrupt(s);
@@ -477,9 +481,11 @@ static void pci_reset(EEPRO100State * s)
     pci_config_set_class(pci_conf, PCI_CLASS_NETWORK_ETHERNET);
     /* PCI Cache Line Size */
     /* check cache line size!!! */
-    //~ PCI_CONFIG_8(0x0c, 0x00);
+#if 0
+    PCI_CONFIG_8(0x0c, 0x00);
+#endif
     /* PCI Latency Timer */
-    PCI_CONFIG_8(PCI_LATENCY_TIMER, 0x20);   // latency timer = 32 clocks
+    PCI_CONFIG_8(PCI_LATENCY_TIMER, 0x20);   /* latency timer = 32 clocks */
     /* PCI Header Type */
     /* BIST (built-in self test) */
     /* Expansion ROM Base Address (depends on boot disable!!!) */
@@ -492,7 +498,7 @@ static void pci_reset(EEPRO100State * s)
     /* Interrupt Line */
     /* Interrupt Pin */
     /* TODO: RST# value should be 0 */
-    PCI_CONFIG_8(PCI_INTERRUPT_PIN, 1);      // interrupt pin 0
+    PCI_CONFIG_8(PCI_INTERRUPT_PIN, 1);      /* interrupt pin 0 */
     /* Minimum Grant */
     PCI_CONFIG_8(PCI_MIN_GNT, 0x08);
     /* Maximum Latency */
@@ -500,20 +506,20 @@ static void pci_reset(EEPRO100State * s)
 
     switch (device) {
     case i82550:
-        // TODO: check device id.
+        /* TODO: check device id. */
         pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
         /* Revision ID: 0x0c, 0x0d, 0x0e. */
         PCI_CONFIG_8(PCI_REVISION_ID, 0x0e);
-        // TODO: check size of statistical counters.
+        /* TODO: check size of statistical counters. */
         s->stats_size = 80;
-        // TODO: check extended tcb support.
+        /* TODO: check extended tcb support. */
         s->has_extended_tcb_support = 1;
         break;
     case i82551:
         pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
         /* Revision ID: 0x0f, 0x10. */
         PCI_CONFIG_8(PCI_REVISION_ID, 0x0f);
-        // TODO: check size of statistical counters.
+        /* TODO: check size of statistical counters. */
         s->stats_size = 80;
         s->has_extended_tcb_support = 1;
         break;
@@ -572,7 +578,7 @@ static void pci_reset(EEPRO100State * s)
         PCI_CONFIG_16(PCI_STATUS, PCI_STATUS_DEVSEL_MEDIUM |
                                   PCI_STATUS_FAST_BACK | PCI_STATUS_CAP_LIST);
         PCI_CONFIG_8(PCI_REVISION_ID, 0x08);
-        // TODO: Windows wants revision id 0x0c.
+        /* TODO: Windows wants revision id 0x0c. */
         PCI_CONFIG_8(PCI_REVISION_ID, 0x0c);
 #if EEPROM_SIZE > 0
         PCI_CONFIG_16(PCI_SUBSYSTEM_VENDOR_ID, 0x8086);
@@ -590,7 +596,7 @@ static void pci_reset(EEPRO100State * s)
         s->has_extended_tcb_support = 1;
         break;
     case i82562:
-        // TODO: check device id.
+        /* TODO: check device id. */
         pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
         /* TODO: wrong revision id. */
         PCI_CONFIG_8(PCI_REVISION_ID, 0x0e);
@@ -637,14 +643,16 @@ static void pci_reset(EEPRO100State * s)
 
 #if EEPROM_SIZE > 0
     if (device == i82557C || device == i82558B || device == i82559C) {
-        // TODO: get vendor id from EEPROM for i82557C or later.
-        // TODO: get device id from EEPROM for i82557C or later.
-        // TODO: status bit 4 can be disabled by EEPROM for i82558, i82559.
-        // TODO: header type is determined by EEPROM for i82559.
-        // TODO: get subsystem id from EEPROM for i82557C or later.
-        // TODO: get subsystem vendor id from EEPROM for i82557C or later.
-        // TODO: exp. rom baddr depends on a bit in EEPROM for i82558 or later.
-        // TODO: capability pointer depends on EEPROM for i82558.
+        /*
+        TODO: get vendor id from EEPROM for i82557C or later.
+        TODO: get device id from EEPROM for i82557C or later.
+        TODO: status bit 4 can be disabled by EEPROM for i82558, i82559.
+        TODO: header type is determined by EEPROM for i82559.
+        TODO: get subsystem id from EEPROM for i82557C or later.
+        TODO: get subsystem vendor id from EEPROM for i82557C or later.
+        TODO: exp. rom baddr depends on a bit in EEPROM for i82558 or later.
+        TODO: capability pointer depends on EEPROM for i82558.
+        */
         logout("Get device id and revision from EEPROM!!!\n");
     }
 #endif /* EEPROM_SIZE > 0 */
@@ -654,7 +662,9 @@ static void nic_selective_reset(EEPRO100State * s)
 {
     size_t i;
     uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
-    //~ eeprom93xx_reset(s->eeprom);
+#if 0
+    eeprom93xx_reset(s->eeprom);
+#endif
     memcpy(eeprom_contents, s->conf.macaddr.a, 6);
     eeprom_contents[EEPROM_ID] = EEPROM_ID_VALID;
     if (s->device == i82557B || s->device == i82557C)
@@ -738,7 +748,7 @@ static void eepro100_write_status(EEPRO100State * s, uint16_t val)
 static uint16_t eepro100_read_command(EEPRO100State * s)
 {
     uint16_t val = 0xffff;
-    //~ TRACE(OTHER, logout("val=0x%04x\n", val));
+    TRACE(OTHER, logout("val=0x%04x\n", val));
     return val;
 }
 #endif
@@ -793,9 +803,11 @@ static void dump_statistics(EEPRO100State * s)
     stl_le_phys(s->statsaddr + 36, s->statistics.rx_good_frames);
     stl_le_phys(s->statsaddr + 48, s->statistics.rx_resource_errors);
     stl_le_phys(s->statsaddr + 60, s->statistics.rx_short_frame_errors);
-    //~ stw_le_phys(s->statsaddr + 76, s->statistics.xmt_tco_frames);
-    //~ stw_le_phys(s->statsaddr + 78, s->statistics.rcv_tco_frames);
-    //~ missing("CU dump statistical counters");
+#if 0
+    stw_le_phys(s->statsaddr + 76, s->statistics.xmt_tco_frames);
+    stw_le_phys(s->statsaddr + 78, s->statistics.rcv_tco_frames);
+    missing("CU dump statistical counters");
+#endif
 }
 
 static void read_cb(EEPRO100State *s)
@@ -832,7 +844,9 @@ static void tx_command(EEPRO100State *s)
     while (size < tcb_bytes) {
         uint32_t tx_buffer_address = ldl_phys(tbd_address);
         uint16_t tx_buffer_size = lduw_phys(tbd_address + 4);
-        //~ uint16_t tx_buffer_el = lduw_phys(tbd_address + 6);
+#if 0
+        uint16_t tx_buffer_el = lduw_phys(tbd_address + 6);
+#endif
         tbd_address += 8;
         TRACE(RXTX, logout
             ("TBD (simplified mode): buffer address 0x%08x, size 0x%04x\n",
@@ -889,7 +903,9 @@ static void tx_command(EEPRO100State *s)
     s->statistics.tx_good_frames++;
     /* Transmit with bad status would raise an CX/TNO interrupt.
      * (82557 only). Emulation never has bad status. */
-    //~ eepro100_cx_interrupt(s);
+#if 0
+    eepro100_cx_interrupt(s);
+#endif
 }
 
 static void set_multicast_list(EEPRO100State *s)
@@ -1016,7 +1032,9 @@ static void eepro100_cu_command(EEPRO100State * s, uint8_t val)
             logout("bad CU resume from CU state %u\n", get_cu_state(s));
             /* Workaround for bad Linux eepro100 driver which resumes
              * from idle state. */
-            //~ missing("cu resume");
+#if 0
+            missing("cu resume");
+#endif
             set_cu_state(s, cu_suspended);
         }
         if (get_cu_state(s) == cu_suspended) {
@@ -1067,7 +1085,9 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
         /* RU start. */
         if (get_ru_state(s) != ru_idle) {
             logout("RU state is %u, should be %u\n", get_ru_state(s), ru_idle);
-            //~ assert(!"wrong RU state");
+#if 0
+            assert(!"wrong RU state");
+#endif
         }
         set_ru_state(s, ru_ready);
         s->ru_offset = s->pointer;
@@ -1078,7 +1098,9 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
         if (get_ru_state(s) != ru_suspended) {
             logout("RU state is %u, should be %u\n", get_ru_state(s),
                    ru_suspended);
-            //~ assert(!"wrong RU state");
+#if 0
+            assert(!"wrong RU state");
+#endif
         }
         set_ru_state(s, ru_ready);
         break;
@@ -1140,7 +1162,9 @@ static void eepro100_write_eeprom(eeprom_t * eeprom, uint8_t val)
     TRACE(EEPROM, logout("val=0x%02x\n", val));
 
     /* mask unwriteable bits */
-    //~ val = SET_MASKED(val, 0x31, eeprom->value);
+#if 0
+    val = SET_MASKED(val, 0x31, eeprom->value);
+#endif
 
     int eecs = ((val & EEPROM_CS) != 0);
     int eesk = ((val & EEPROM_SK) != 0);
@@ -1222,7 +1246,9 @@ static void eepro100_write_mdi(EEPRO100State * s, uint32_t val)
           val, raiseint, mdi_op_name[opcode], phy, reg2name(reg), data));
     if (phy != 1) {
         /* Unsupported PHY address. */
-        //~ logout("phy must be 1 but is %u\n", phy);
+#if 0
+        logout("phy must be 1 but is %u\n", phy);
+#endif
         data = 0;
     } else if (opcode != 1 && opcode != 2) {
         /* Unsupported opcode. */
@@ -1368,16 +1394,22 @@ static uint8_t eepro100_read1(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-        //~ val = eepro100_read_status(s);
+#if 0
+        val = eepro100_read_status(s);
+#endif
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
     case SCBAck:
-        //~ val = eepro100_read_status(s);
+#if 0
+        val = eepro100_read_status(s);
+#endif
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
     case SCBCmd:
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
-        //~ val = eepro100_read_command(s);
+#if 0
+        val = eepro100_read_command(s);
+#endif
         break;
     case SCBIntmask:
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
@@ -1413,7 +1445,9 @@ static uint16_t eepro100_read2(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-        //~ val = eepro100_read_status(s);
+#if 0
+        val = eepro100_read_status(s);
+#endif
     case SCBCmd:
         TRACE(OTHER, logout("addr=%s val=0x%04x\n", regname(addr), val));
         break;
@@ -1437,11 +1471,15 @@ static uint32_t eepro100_read4(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-        //~ val = eepro100_read_status(s);
+#if 0
+        val = eepro100_read_status(s);
+#endif
         TRACE(OTHER, logout("addr=%s val=0x%08x\n", regname(addr), val));
         break;
     case SCBPointer:
-        //~ val = eepro100_read_pointer(s);
+#if 0
+        val = eepro100_read_pointer(s);
+#endif
         TRACE(OTHER, logout("addr=%s val=0x%08x\n", regname(addr), val));
         break;
     case SCBPort:
@@ -1468,7 +1506,9 @@ static void eepro100_write1(EEPRO100State * s, uint32_t addr, uint8_t val)
 
     switch (addr) {
     case SCBStatus:
-        //~ eepro100_write_status(s, val);
+#if 0
+        eepro100_write_status(s, val);
+#endif
         break;
     case SCBAck:
         eepro100_acknowledge(s);
@@ -1508,7 +1548,9 @@ static void eepro100_write2(EEPRO100State * s, uint32_t addr, uint16_t val)
 
     switch (addr) {
     case SCBStatus:
-        //~ eepro100_write_status(s, val);
+#if 0
+        eepro100_write_status(s, val);
+#endif
         eepro100_acknowledge(s);
         break;
     case SCBCmd:
@@ -1556,7 +1598,9 @@ static void eepro100_write4(EEPRO100State * s, uint32_t addr, uint32_t val)
 static uint32_t ioport_read1(void *opaque, uint32_t addr)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s\n", regname(addr));
+#if 0
+    logout("addr=%s\n", regname(addr));
+#endif
     return eepro100_read1(s, addr - s->region[1]);
 }
 
@@ -1575,7 +1619,9 @@ static uint32_t ioport_read4(void *opaque, uint32_t addr)
 static void ioport_write1(void *opaque, uint32_t addr, uint32_t val)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
+#if 0
+    logout("addr=%s val=0x%02x\n", regname(addr), val);
+#endif
     eepro100_write1(s, addr - s->region[1], val);
 }
 
@@ -1623,42 +1669,54 @@ static void pci_map(PCIDevice * pci_dev, int region_num,
 static void pci_mmio_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
+#if 0
+    logout("addr=%s val=0x%02x\n", regname(addr), val);
+#endif
     eepro100_write1(s, addr, val);
 }
 
 static void pci_mmio_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
+#if 0
+    logout("addr=%s val=0x%02x\n", regname(addr), val);
+#endif
     eepro100_write2(s, addr, val);
 }
 
 static void pci_mmio_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
+#if 0
+    logout("addr=%s val=0x%02x\n", regname(addr), val);
+#endif
     eepro100_write4(s, addr, val);
 }
 
 static uint32_t pci_mmio_readb(void *opaque, target_phys_addr_t addr)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s\n", regname(addr));
+#if 0
+    logout("addr=%s\n", regname(addr));
+#endif
     return eepro100_read1(s, addr);
 }
 
 static uint32_t pci_mmio_readw(void *opaque, target_phys_addr_t addr)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s\n", regname(addr));
+#if 0
+    logout("addr=%s\n", regname(addr));
+#endif
     return eepro100_read2(s, addr);
 }
 
 static uint32_t pci_mmio_readl(void *opaque, target_phys_addr_t addr)
 {
     EEPRO100State *s = opaque;
-    //~ logout("addr=%s\n", regname(addr));
+#if 0
+    logout("addr=%s\n", regname(addr));
+#endif
     return eepro100_read4(s, addr);
 }
 
@@ -1695,7 +1753,9 @@ static int nic_can_receive(VLANClientState *nc)
     EEPRO100State *s = DO_UPCAST(NICState, nc, nc)->opaque;
     TRACE(RXTX, logout("%p\n", s));
     return get_ru_state(s) == ru_ready;
-    //~ return !eepro100_buffer_full(s);
+#if 0
+    return !eepro100_buffer_full(s);
+#endif
 }
 
 static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size)
@@ -1724,13 +1784,15 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
          * Short frame is discarded */
         logout("%p received short frame (%zu byte)\n", s, size);
         s->statistics.rx_short_frame_errors++;
-        //~ return -1;
+#if 0
+        return -1;
+#endif
     } else if ((size > MAX_ETH_FRAME_SIZE + 4) && !(s->configuration[18] & BIT(3))) {
         /* Long frame and configuration byte 18/3 (long receive ok) not set:
          * Long frames are discarded. */
         logout("%p received long frame (%zu byte), ignored\n", s, size);
         return -1;
-    } else if (memcmp(buf, s->conf.macaddr.a, 6) == 0) {       // !!!
+    } else if (memcmp(buf, s->conf.macaddr.a, 6) == 0) {       /* !!! */
         /* Frame matches individual address. */
         /* TODO: check configuration byte 15/4 (ignore U/L). */
         TRACE(RXTX, logout("%p received frame for me, len=%zu\n", s, size));
@@ -1774,11 +1836,12 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
         /* TODO: RNR interrupt only at first failed frame? */
         eepro100_rnr_interrupt(s);
         s->statistics.rx_resource_errors++;
-        //~ assert(!"no resources");
+#if 0
+        assert(!"no resources");
+#endif
         return -1;
     }
-    //~ !!!
-//~ $3 = {status = 0x0, command = 0xc000, link = 0x2d220, rx_buf_addr = 0x207dc, count = 0x0, size = 0x5f8, packet = {0x0 <repeats 1518 times>}}
+    /* !!! */
     eepro100_rx_t rx;
     cpu_physical_memory_read(s->ru_base + s->ru_offset, (uint8_t *) & rx,
                              offsetof(eepro100_rx_t, packet));
@@ -1799,14 +1862,18 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
              rfd_status);
     stw_phys(s->ru_base + s->ru_offset + offsetof(eepro100_rx_t, count), size);
     /* Early receive interrupt not supported. */
-    //~ eepro100_er_interrupt(s);
+#if 0
+    eepro100_er_interrupt(s);
+#endif
     /* Receive CRC Transfer not supported. */
     if (s->configuration[18] & BIT(2)) {
         missing("Receive CRC Transfer");
         return -1;
     }
     /* TODO: check stripping enable bit. */
-    //~ assert(!(s->configuration[17] & BIT(0)));
+#if 0
+    assert(!(s->configuration[17] & BIT(0)));
+#endif
     cpu_physical_memory_write(s->ru_base + s->ru_offset +
                               offsetof(eepro100_rx_t, packet), buf, size);
     s->statistics.rx_good_frames++;
-- 
1.7.0

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

* [Qemu-devel] [PATCHv3 20/20] eepro100: Keep includes sorted
  2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
                   ` (19 preceding siblings ...)
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 19/20] eepro100: Remove C++ comments Stefan Weil
@ 2010-03-02 21:38 ` Stefan Weil
  20 siblings, 0 replies; 62+ messages in thread
From: Stefan Weil @ 2010-03-02 21:38 UTC (permalink / raw)
  To: QEMU Developers; +Cc: mst

I always try to keep standard includes sorted
and add a comment why they are there (so they
can be removed when they are no longer needed).

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 43a9060..45ab497 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -41,8 +41,8 @@
  *      * Wake-on-LAN is not implemented.
  */
 
+#include <stdbool.h>            /* bool */
 #include <stddef.h>             /* offsetof */
-#include <stdbool.h>
 #include "hw.h"
 #include "pci.h"
 #include "net.h"
-- 
1.7.0

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

* [Qemu-devel] Re: [PATCHv3 17/20] eepro100: New function for reading command block
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 17/20] eepro100: New function for reading command block Stefan Weil
@ 2010-03-03 11:44   ` Michael S. Tsirkin
  0 siblings, 0 replies; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-03-03 11:44 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

On Tue, Mar 02, 2010 at 10:37:57PM +0100, Stefan Weil wrote:
> Move code which reads the command block to the
> new function read_cb. The patch also fixes some
> endianess issues related to the command block
> and moves declarations of local variables to
> the beginning of the block.
> 
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> ---
>  hw/eepro100.c |   42 ++++++++++++++++++++++++++++--------------
>  1 files changed, 28 insertions(+), 14 deletions(-)
> 
> diff --git a/hw/eepro100.c b/hw/eepro100.c
> index f5aa306..e10ce62 100644
> --- a/hw/eepro100.c
> +++ b/hw/eepro100.c
> @@ -798,6 +798,16 @@ static void dump_statistics(EEPRO100State * s)
>      //~ missing("CU dump statistical counters");
>  }
>  
> +static void read_cb(EEPRO100State *s)
> +{
> +    cpu_physical_memory_read(s->cb_address, (uint8_t *) &s->tx, sizeof(s->tx));
> +    s->tx.status = le16_to_cpu(s->tx.status);
> +    s->tx.command = le16_to_cpu(s->tx.command);
> +    s->tx.link = le32_to_cpu(s->tx.link);
> +    s->tx.tbd_array_addr = le32_to_cpu(s->tx.tbd_array_addr);
> +    s->tx.tcb_bytes = le16_to_cpu(s->tx.tcb_bytes);
> +}
> +
>  static void tx_command(EEPRO100State *s)
>  {
>      uint32_t tbd_array = le32_to_cpu(s->tx.tbd_array_addr);
> @@ -901,21 +911,25 @@ static void set_multicast_list(EEPRO100State *s)
>  static void action_command(EEPRO100State *s)
>  {
>      for (;;) {
> -        s->cb_address = s->cu_base + s->cu_offset;
> -        cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx));
> -        uint16_t command = le16_to_cpu(s->tx.command);
> -        s->tx.status = le16_to_cpu(s->tx.status);
> -        logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
> -               s->tx.status, command, s->tx.link);
> -        bool bit_el = ((command & COMMAND_EL) != 0);
> -        bool bit_s = ((command & COMMAND_S) != 0);
> -        bool bit_i = ((command & COMMAND_I) != 0);
> -        bool bit_nc = ((command & COMMAND_NC) != 0);
> +        bool bit_el;
> +        bool bit_s;
> +        bool bit_i;
> +        bool bit_nc;
>          bool success = true;
> -        //~ bool bit_sf = ((command & COMMAND_SF) != 0);
> -        uint16_t cmd = command & COMMAND_CMD;
> -        s->cu_offset = le32_to_cpu(s->tx.link);
> -        switch (cmd) {
> +        s->cb_address = s->cu_base + s->cu_offset;
> +        read_cb(s);
> +        bit_el = ((s->tx.command & COMMAND_EL) != 0);
> +        bit_s = ((s->tx.command & COMMAND_S) != 0);
> +        bit_i = ((s->tx.command & COMMAND_I) != 0);
> +        bit_nc = ((s->tx.command & COMMAND_NC) != 0);

() is never needed around the assigned value.  this can be fixed
separately though.  AFAIK you also do not need != : values are coersed
by assignment to bool correctly.
Again, can be fixed separately.

> +#if 0
> +        bool bit_sf = ((s->tx.command & COMMAND_SF) != 0);
> +#endif

Is the above likely to be useful?

> +        s->cu_offset = s->tx.link;
> +        TRACE(OTHER,
> +              logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n",
> +                     s->tx.status, s->tx.command, s->tx.link));
> +        switch (s->tx.command & COMMAND_CMD) {
>          case CmdNOp:
>              /* Do nothing. */
>              break;
> -- 
> 1.7.0

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

* [Qemu-devel] Re: [PATCHv3 19/20] eepro100: Remove C++ comments
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 19/20] eepro100: Remove C++ comments Stefan Weil
@ 2010-03-03 11:47   ` Michael S. Tsirkin
  2010-03-03 19:15     ` Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-03-03 11:47 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

On Tue, Mar 02, 2010 at 10:37:59PM +0100, Stefan Weil wrote:
> C++ comments are unwanted, so this is fixed here.
> 
> * Replace C++ comments by C comments.
> * Put code which was deactivated by a C++ comment in #if 0...#endif.
> 
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>


It would be nice to add some documentation to commented
blocks, explaining why we still keep them around
and what happens if they are uncommented.

> ---
>  hw/eepro100.c |  185 +++++++++++++++++++++++++++++++++++++++------------------
>  1 files changed, 126 insertions(+), 59 deletions(-)
> 
> diff --git a/hw/eepro100.c b/hw/eepro100.c
> index 0f07b70..43a9060 100644
> --- a/hw/eepro100.c
> +++ b/hw/eepro100.c
> @@ -154,11 +154,13 @@ typedef struct {
>      uint16_t tcb_bytes;         /* transmit command block byte count (in lower 14 bits */
>      uint8_t tx_threshold;       /* transmit threshold */
>      uint8_t tbd_count;          /* TBD number */
> -    //~ /* This constitutes two "TBD" entries: hdr and data */
> -    //~ uint32_t tx_buf_addr0;  /* void *, header of frame to be transmitted.  */
> -    //~ int32_t  tx_buf_size0;  /* Length of Tx hdr. */
> -    //~ uint32_t tx_buf_addr1;  /* void *, data to be transmitted.  */
> -    //~ int32_t  tx_buf_size1;  /* Length of Tx data. */
> +#if 0
> +    /* This constitutes two "TBD" entries: hdr and data */
> +    uint32_t tx_buf_addr0;  /* void *, header of frame to be transmitted.  */
> +    int32_t  tx_buf_size0;  /* Length of Tx hdr. */
> +    uint32_t tx_buf_addr1;  /* void *, data to be transmitted.  */
> +    int32_t  tx_buf_size1;  /* Length of Tx data. */
> +#endif

Is it likely we'll uncomment this at some point?
I note that you now use sizeof this structure: will
adding these fields break anything?

>  } eepro100_tx_t;
>  
>  /* Receive frame descriptor. */
> @@ -398,7 +400,9 @@ static void eepro100_interrupt(EEPRO100State * s, uint8_t status)
>      s->mem[SCBAck] |= status;
>      status = s->scb_stat = s->mem[SCBAck];
>      status &= (mask | 0x0f);
> -    //~ status &= (~s->mem[SCBIntmask] | 0x0xf);
> +#if 0
> +    status &= (~s->mem[SCBIntmask] | 0x0xf);
> +#endif
>      if (status && (mask & 0x01)) {
>          /* SCB mask and SCB Bit M do not disable interrupt. */
>          enable_interrupt(s);
> @@ -477,9 +481,11 @@ static void pci_reset(EEPRO100State * s)
>      pci_config_set_class(pci_conf, PCI_CLASS_NETWORK_ETHERNET);
>      /* PCI Cache Line Size */
>      /* check cache line size!!! */
> -    //~ PCI_CONFIG_8(0x0c, 0x00);
> +#if 0
> +    PCI_CONFIG_8(0x0c, 0x00);
> +#endif

It's safe to kill the above, 0 is the default anyway.

>      /* PCI Latency Timer */
> -    PCI_CONFIG_8(PCI_LATENCY_TIMER, 0x20);   // latency timer = 32 clocks
> +    PCI_CONFIG_8(PCI_LATENCY_TIMER, 0x20);   /* latency timer = 32 clocks */
>      /* PCI Header Type */
>      /* BIST (built-in self test) */
>      /* Expansion ROM Base Address (depends on boot disable!!!) */
> @@ -492,7 +498,7 @@ static void pci_reset(EEPRO100State * s)
>      /* Interrupt Line */
>      /* Interrupt Pin */
>      /* TODO: RST# value should be 0 */
> -    PCI_CONFIG_8(PCI_INTERRUPT_PIN, 1);      // interrupt pin 0
> +    PCI_CONFIG_8(PCI_INTERRUPT_PIN, 1);      /* interrupt pin 0 */
>      /* Minimum Grant */
>      PCI_CONFIG_8(PCI_MIN_GNT, 0x08);
>      /* Maximum Latency */
> @@ -500,20 +506,20 @@ static void pci_reset(EEPRO100State * s)
>  
>      switch (device) {
>      case i82550:
> -        // TODO: check device id.
> +        /* TODO: check device id. */
>          pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
>          /* Revision ID: 0x0c, 0x0d, 0x0e. */
>          PCI_CONFIG_8(PCI_REVISION_ID, 0x0e);
> -        // TODO: check size of statistical counters.
> +        /* TODO: check size of statistical counters. */
>          s->stats_size = 80;
> -        // TODO: check extended tcb support.
> +        /* TODO: check extended tcb support. */
>          s->has_extended_tcb_support = 1;
>          break;
>      case i82551:
>          pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
>          /* Revision ID: 0x0f, 0x10. */
>          PCI_CONFIG_8(PCI_REVISION_ID, 0x0f);
> -        // TODO: check size of statistical counters.
> +        /* TODO: check size of statistical counters. */
>          s->stats_size = 80;
>          s->has_extended_tcb_support = 1;
>          break;
> @@ -572,7 +578,7 @@ static void pci_reset(EEPRO100State * s)
>          PCI_CONFIG_16(PCI_STATUS, PCI_STATUS_DEVSEL_MEDIUM |
>                                    PCI_STATUS_FAST_BACK | PCI_STATUS_CAP_LIST);
>          PCI_CONFIG_8(PCI_REVISION_ID, 0x08);
> -        // TODO: Windows wants revision id 0x0c.
> +        /* TODO: Windows wants revision id 0x0c. */
>          PCI_CONFIG_8(PCI_REVISION_ID, 0x0c);
>  #if EEPROM_SIZE > 0
>          PCI_CONFIG_16(PCI_SUBSYSTEM_VENDOR_ID, 0x8086);
> @@ -590,7 +596,7 @@ static void pci_reset(EEPRO100State * s)
>          s->has_extended_tcb_support = 1;
>          break;
>      case i82562:
> -        // TODO: check device id.
> +        /* TODO: check device id. */
>          pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_INTEL_82551IT);
>          /* TODO: wrong revision id. */
>          PCI_CONFIG_8(PCI_REVISION_ID, 0x0e);
> @@ -637,14 +643,16 @@ static void pci_reset(EEPRO100State * s)
>  
>  #if EEPROM_SIZE > 0
>      if (device == i82557C || device == i82558B || device == i82559C) {
> -        // TODO: get vendor id from EEPROM for i82557C or later.
> -        // TODO: get device id from EEPROM for i82557C or later.
> -        // TODO: status bit 4 can be disabled by EEPROM for i82558, i82559.
> -        // TODO: header type is determined by EEPROM for i82559.
> -        // TODO: get subsystem id from EEPROM for i82557C or later.
> -        // TODO: get subsystem vendor id from EEPROM for i82557C or later.
> -        // TODO: exp. rom baddr depends on a bit in EEPROM for i82558 or later.
> -        // TODO: capability pointer depends on EEPROM for i82558.
> +        /*
> +        TODO: get vendor id from EEPROM for i82557C or later.
> +        TODO: get device id from EEPROM for i82557C or later.
> +        TODO: status bit 4 can be disabled by EEPROM for i82558, i82559.
> +        TODO: header type is determined by EEPROM for i82559.
> +        TODO: get subsystem id from EEPROM for i82557C or later.
> +        TODO: get subsystem vendor id from EEPROM for i82557C or later.
> +        TODO: exp. rom baddr depends on a bit in EEPROM for i82558 or later.
> +        TODO: capability pointer depends on EEPROM for i82558.
> +        */
>          logout("Get device id and revision from EEPROM!!!\n");
>      }
>  #endif /* EEPROM_SIZE > 0 */
> @@ -654,7 +662,9 @@ static void nic_selective_reset(EEPRO100State * s)
>  {
>      size_t i;
>      uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom);
> -    //~ eeprom93xx_reset(s->eeprom);
> +#if 0
> +    eeprom93xx_reset(s->eeprom);
> +#endif
>      memcpy(eeprom_contents, s->conf.macaddr.a, 6);
>      eeprom_contents[EEPROM_ID] = EEPROM_ID_VALID;
>      if (s->device == i82557B || s->device == i82557C)
> @@ -738,7 +748,7 @@ static void eepro100_write_status(EEPRO100State * s, uint16_t val)
>  static uint16_t eepro100_read_command(EEPRO100State * s)
>  {
>      uint16_t val = 0xffff;
> -    //~ TRACE(OTHER, logout("val=0x%04x\n", val));
> +    TRACE(OTHER, logout("val=0x%04x\n", val));
>      return val;
>  }
>  #endif
> @@ -793,9 +803,11 @@ static void dump_statistics(EEPRO100State * s)
>      stl_le_phys(s->statsaddr + 36, s->statistics.rx_good_frames);
>      stl_le_phys(s->statsaddr + 48, s->statistics.rx_resource_errors);
>      stl_le_phys(s->statsaddr + 60, s->statistics.rx_short_frame_errors);
> -    //~ stw_le_phys(s->statsaddr + 76, s->statistics.xmt_tco_frames);
> -    //~ stw_le_phys(s->statsaddr + 78, s->statistics.rcv_tco_frames);
> -    //~ missing("CU dump statistical counters");
> +#if 0
> +    stw_le_phys(s->statsaddr + 76, s->statistics.xmt_tco_frames);
> +    stw_le_phys(s->statsaddr + 78, s->statistics.rcv_tco_frames);
> +    missing("CU dump statistical counters");
> +#endif
>  }
>  
>  static void read_cb(EEPRO100State *s)
> @@ -832,7 +844,9 @@ static void tx_command(EEPRO100State *s)
>      while (size < tcb_bytes) {
>          uint32_t tx_buffer_address = ldl_phys(tbd_address);
>          uint16_t tx_buffer_size = lduw_phys(tbd_address + 4);
> -        //~ uint16_t tx_buffer_el = lduw_phys(tbd_address + 6);
> +#if 0
> +        uint16_t tx_buffer_el = lduw_phys(tbd_address + 6);
> +#endif
>          tbd_address += 8;
>          TRACE(RXTX, logout
>              ("TBD (simplified mode): buffer address 0x%08x, size 0x%04x\n",
> @@ -889,7 +903,9 @@ static void tx_command(EEPRO100State *s)
>      s->statistics.tx_good_frames++;
>      /* Transmit with bad status would raise an CX/TNO interrupt.
>       * (82557 only). Emulation never has bad status. */
> -    //~ eepro100_cx_interrupt(s);
> +#if 0
> +    eepro100_cx_interrupt(s);
> +#endif
>  }
>  
>  static void set_multicast_list(EEPRO100State *s)
> @@ -1016,7 +1032,9 @@ static void eepro100_cu_command(EEPRO100State * s, uint8_t val)
>              logout("bad CU resume from CU state %u\n", get_cu_state(s));
>              /* Workaround for bad Linux eepro100 driver which resumes
>               * from idle state. */
> -            //~ missing("cu resume");
> +#if 0
> +            missing("cu resume");
> +#endif
>              set_cu_state(s, cu_suspended);
>          }
>          if (get_cu_state(s) == cu_suspended) {
> @@ -1067,7 +1085,9 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
>          /* RU start. */
>          if (get_ru_state(s) != ru_idle) {
>              logout("RU state is %u, should be %u\n", get_ru_state(s), ru_idle);
> -            //~ assert(!"wrong RU state");
> +#if 0
> +            assert(!"wrong RU state");
> +#endif
>          }
>          set_ru_state(s, ru_ready);
>          s->ru_offset = s->pointer;
> @@ -1078,7 +1098,9 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
>          if (get_ru_state(s) != ru_suspended) {
>              logout("RU state is %u, should be %u\n", get_ru_state(s),
>                     ru_suspended);
> -            //~ assert(!"wrong RU state");
> +#if 0
> +            assert(!"wrong RU state");
> +#endif
>          }
>          set_ru_state(s, ru_ready);
>          break;
> @@ -1140,7 +1162,9 @@ static void eepro100_write_eeprom(eeprom_t * eeprom, uint8_t val)
>      TRACE(EEPROM, logout("val=0x%02x\n", val));
>  
>      /* mask unwriteable bits */
> -    //~ val = SET_MASKED(val, 0x31, eeprom->value);
> +#if 0
> +    val = SET_MASKED(val, 0x31, eeprom->value);
> +#endif
>  
>      int eecs = ((val & EEPROM_CS) != 0);
>      int eesk = ((val & EEPROM_SK) != 0);
> @@ -1222,7 +1246,9 @@ static void eepro100_write_mdi(EEPRO100State * s, uint32_t val)
>            val, raiseint, mdi_op_name[opcode], phy, reg2name(reg), data));
>      if (phy != 1) {
>          /* Unsupported PHY address. */
> -        //~ logout("phy must be 1 but is %u\n", phy);
> +#if 0
> +        logout("phy must be 1 but is %u\n", phy);
> +#endif
>          data = 0;
>      } else if (opcode != 1 && opcode != 2) {
>          /* Unsupported opcode. */
> @@ -1368,16 +1394,22 @@ static uint8_t eepro100_read1(EEPRO100State * s, uint32_t addr)
>  
>      switch (addr) {
>      case SCBStatus:
> -        //~ val = eepro100_read_status(s);
> +#if 0
> +        val = eepro100_read_status(s);
> +#endif
>          TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
>          break;
>      case SCBAck:
> -        //~ val = eepro100_read_status(s);
> +#if 0
> +        val = eepro100_read_status(s);
> +#endif
>          TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
>          break;
>      case SCBCmd:
>          TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
> -        //~ val = eepro100_read_command(s);
> +#if 0
> +        val = eepro100_read_command(s);
> +#endif
>          break;
>      case SCBIntmask:
>          TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
> @@ -1413,7 +1445,9 @@ static uint16_t eepro100_read2(EEPRO100State * s, uint32_t addr)
>  
>      switch (addr) {
>      case SCBStatus:
> -        //~ val = eepro100_read_status(s);
> +#if 0
> +        val = eepro100_read_status(s);
> +#endif
>      case SCBCmd:
>          TRACE(OTHER, logout("addr=%s val=0x%04x\n", regname(addr), val));
>          break;
> @@ -1437,11 +1471,15 @@ static uint32_t eepro100_read4(EEPRO100State * s, uint32_t addr)
>  
>      switch (addr) {
>      case SCBStatus:
> -        //~ val = eepro100_read_status(s);
> +#if 0
> +        val = eepro100_read_status(s);
> +#endif
>          TRACE(OTHER, logout("addr=%s val=0x%08x\n", regname(addr), val));
>          break;
>      case SCBPointer:
> -        //~ val = eepro100_read_pointer(s);
> +#if 0
> +        val = eepro100_read_pointer(s);
> +#endif
>          TRACE(OTHER, logout("addr=%s val=0x%08x\n", regname(addr), val));
>          break;
>      case SCBPort:
> @@ -1468,7 +1506,9 @@ static void eepro100_write1(EEPRO100State * s, uint32_t addr, uint8_t val)
>  
>      switch (addr) {
>      case SCBStatus:
> -        //~ eepro100_write_status(s, val);
> +#if 0
> +        eepro100_write_status(s, val);
> +#endif
>          break;
>      case SCBAck:
>          eepro100_acknowledge(s);
> @@ -1508,7 +1548,9 @@ static void eepro100_write2(EEPRO100State * s, uint32_t addr, uint16_t val)
>  
>      switch (addr) {
>      case SCBStatus:
> -        //~ eepro100_write_status(s, val);
> +#if 0
> +        eepro100_write_status(s, val);
> +#endif
>          eepro100_acknowledge(s);
>          break;
>      case SCBCmd:
> @@ -1556,7 +1598,9 @@ static void eepro100_write4(EEPRO100State * s, uint32_t addr, uint32_t val)
>  static uint32_t ioport_read1(void *opaque, uint32_t addr)
>  {
>      EEPRO100State *s = opaque;
> -    //~ logout("addr=%s\n", regname(addr));
> +#if 0
> +    logout("addr=%s\n", regname(addr));
> +#endif
>      return eepro100_read1(s, addr - s->region[1]);
>  }
>  
> @@ -1575,7 +1619,9 @@ static uint32_t ioport_read4(void *opaque, uint32_t addr)
>  static void ioport_write1(void *opaque, uint32_t addr, uint32_t val)
>  {
>      EEPRO100State *s = opaque;
> -    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
> +#if 0
> +    logout("addr=%s val=0x%02x\n", regname(addr), val);
> +#endif
>      eepro100_write1(s, addr - s->region[1], val);
>  }
>  
> @@ -1623,42 +1669,54 @@ static void pci_map(PCIDevice * pci_dev, int region_num,
>  static void pci_mmio_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
>  {
>      EEPRO100State *s = opaque;
> -    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
> +#if 0
> +    logout("addr=%s val=0x%02x\n", regname(addr), val);
> +#endif
>      eepro100_write1(s, addr, val);
>  }
>  
>  static void pci_mmio_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
>  {
>      EEPRO100State *s = opaque;
> -    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
> +#if 0
> +    logout("addr=%s val=0x%02x\n", regname(addr), val);
> +#endif
>      eepro100_write2(s, addr, val);
>  }
>  
>  static void pci_mmio_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
>  {
>      EEPRO100State *s = opaque;
> -    //~ logout("addr=%s val=0x%02x\n", regname(addr), val);
> +#if 0
> +    logout("addr=%s val=0x%02x\n", regname(addr), val);
> +#endif
>      eepro100_write4(s, addr, val);
>  }
>  
>  static uint32_t pci_mmio_readb(void *opaque, target_phys_addr_t addr)
>  {
>      EEPRO100State *s = opaque;
> -    //~ logout("addr=%s\n", regname(addr));
> +#if 0
> +    logout("addr=%s\n", regname(addr));
> +#endif
>      return eepro100_read1(s, addr);
>  }
>  
>  static uint32_t pci_mmio_readw(void *opaque, target_phys_addr_t addr)
>  {
>      EEPRO100State *s = opaque;
> -    //~ logout("addr=%s\n", regname(addr));
> +#if 0
> +    logout("addr=%s\n", regname(addr));
> +#endif
>      return eepro100_read2(s, addr);
>  }
>  
>  static uint32_t pci_mmio_readl(void *opaque, target_phys_addr_t addr)
>  {
>      EEPRO100State *s = opaque;
> -    //~ logout("addr=%s\n", regname(addr));
> +#if 0
> +    logout("addr=%s\n", regname(addr));
> +#endif
>      return eepro100_read4(s, addr);
>  }
>  
> @@ -1695,7 +1753,9 @@ static int nic_can_receive(VLANClientState *nc)
>      EEPRO100State *s = DO_UPCAST(NICState, nc, nc)->opaque;
>      TRACE(RXTX, logout("%p\n", s));
>      return get_ru_state(s) == ru_ready;
> -    //~ return !eepro100_buffer_full(s);
> +#if 0
> +    return !eepro100_buffer_full(s);
> +#endif
>  }
>  
>  static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size)
> @@ -1724,13 +1784,15 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
>           * Short frame is discarded */
>          logout("%p received short frame (%zu byte)\n", s, size);
>          s->statistics.rx_short_frame_errors++;
> -        //~ return -1;
> +#if 0
> +        return -1;
> +#endif
>      } else if ((size > MAX_ETH_FRAME_SIZE + 4) && !(s->configuration[18] & BIT(3))) {
>          /* Long frame and configuration byte 18/3 (long receive ok) not set:
>           * Long frames are discarded. */
>          logout("%p received long frame (%zu byte), ignored\n", s, size);
>          return -1;
> -    } else if (memcmp(buf, s->conf.macaddr.a, 6) == 0) {       // !!!
> +    } else if (memcmp(buf, s->conf.macaddr.a, 6) == 0) {       /* !!! */
>          /* Frame matches individual address. */
>          /* TODO: check configuration byte 15/4 (ignore U/L). */
>          TRACE(RXTX, logout("%p received frame for me, len=%zu\n", s, size));
> @@ -1774,11 +1836,12 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
>          /* TODO: RNR interrupt only at first failed frame? */
>          eepro100_rnr_interrupt(s);
>          s->statistics.rx_resource_errors++;
> -        //~ assert(!"no resources");
> +#if 0
> +        assert(!"no resources");
> +#endif
>          return -1;
>      }
> -    //~ !!!
> -//~ $3 = {status = 0x0, command = 0xc000, link = 0x2d220, rx_buf_addr = 0x207dc, count = 0x0, size = 0x5f8, packet = {0x0 <repeats 1518 times>}}
> +    /* !!! */
>      eepro100_rx_t rx;
>      cpu_physical_memory_read(s->ru_base + s->ru_offset, (uint8_t *) & rx,
>                               offsetof(eepro100_rx_t, packet));
> @@ -1799,14 +1862,18 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
>               rfd_status);
>      stw_phys(s->ru_base + s->ru_offset + offsetof(eepro100_rx_t, count), size);
>      /* Early receive interrupt not supported. */
> -    //~ eepro100_er_interrupt(s);
> +#if 0
> +    eepro100_er_interrupt(s);
> +#endif
>      /* Receive CRC Transfer not supported. */
>      if (s->configuration[18] & BIT(2)) {
>          missing("Receive CRC Transfer");
>          return -1;
>      }
>      /* TODO: check stripping enable bit. */
> -    //~ assert(!(s->configuration[17] & BIT(0)));
> +#if 0
> +    assert(!(s->configuration[17] & BIT(0)));
> +#endif
>      cpu_physical_memory_write(s->ru_base + s->ru_offset +
>                                offsetof(eepro100_rx_t, packet), buf, size);
>      s->statistics.rx_good_frames++;
> -- 
> 1.7.0

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

* [Qemu-devel] Re: [PATCHv3 08/20] eepro100: Add device descriptions
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 08/20] eepro100: Add device descriptions Stefan Weil
@ 2010-03-03 11:49   ` Michael S. Tsirkin
  0 siblings, 0 replies; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-03-03 11:49 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

On Tue, Mar 02, 2010 at 10:37:48PM +0100, Stefan Weil wrote:
> Add descriptions for all devices.
> These descriptions are shown when users call
> 		qemu -device ?
> 
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>

I still think descriptive names should also mention eepro100.

> ---
>  hw/eepro100.c |   12 ++++++++++++
>  1 files changed, 12 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/eepro100.c b/hw/eepro100.c
> index 6c11209..d5d3abc 100644
> --- a/hw/eepro100.c
> +++ b/hw/eepro100.c
> @@ -1980,6 +1980,7 @@ static int pci_i82562_init(PCIDevice *pci_dev)
>  static PCIDeviceInfo eepro100_info[] = {
>      {
>          .qdev.name = "i82550",
> +        .qdev.desc = "Intel i82550 Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82550_init,
>          .exit      = pci_nic_uninit,
> @@ -1990,6 +1991,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82551",
> +        .qdev.desc = "Intel i82551 Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82551_init,
>          .exit      = pci_nic_uninit,
> @@ -2000,6 +2002,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82557a",
> +        .qdev.desc = "Intel i82557A Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82557a_init,
>          .exit      = pci_nic_uninit,
> @@ -2010,6 +2013,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82557b",
> +        .qdev.desc = "Intel i82557B Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82557b_init,
>          .exit      = pci_nic_uninit,
> @@ -2020,6 +2024,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82557c",
> +        .qdev.desc = "Intel i82557C Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82557c_init,
>          .exit      = pci_nic_uninit,
> @@ -2030,6 +2035,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82558a",
> +        .qdev.desc = "Intel i82558A Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82558a_init,
>          .exit      = pci_nic_uninit,
> @@ -2040,6 +2046,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82558b",
> +        .qdev.desc = "Intel i82558B Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82558b_init,
>          .exit      = pci_nic_uninit,
> @@ -2050,6 +2057,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82559a",
> +        .qdev.desc = "Intel i82559A Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82559a_init,
>          .exit      = pci_nic_uninit,
> @@ -2060,6 +2068,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82559b",
> +        .qdev.desc = "Intel i82559B Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82559b_init,
>          .exit      = pci_nic_uninit,
> @@ -2070,6 +2079,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82559c",
> +        .qdev.desc = "Intel i82559C Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82559c_init,
>          .exit      = pci_nic_uninit,
> @@ -2080,6 +2090,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82559er",
> +        .qdev.desc = "Intel i82559ER Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82559er_init,
>          .exit      = pci_nic_uninit,
> @@ -2090,6 +2101,7 @@ static PCIDeviceInfo eepro100_info[] = {
>          },
>      },{
>          .qdev.name = "i82562",
> +        .qdev.desc = "Intel i82562 Ethernet",
>          .qdev.size = sizeof(EEPRO100State),
>          .init      = pci_i82562_init,
>          .exit      = pci_nic_uninit,
> -- 
> 1.7.0

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

* [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c
  2010-02-21 21:08             ` Stefan Weil
@ 2010-03-03 11:51               ` Michael S. Tsirkin
  2010-03-03 13:31                 ` Gerd Hoffmann
  0 siblings, 1 reply; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-03-03 11:51 UTC (permalink / raw)
  To: Stefan Weil, kraxel; +Cc: QEMU Developers

On Sun, Feb 21, 2010 at 10:08:49PM +0100, Stefan Weil wrote:
> Michael S. Tsirkin schrieb:
> > On Sun, Feb 14, 2010 at 05:16:14PM +0100, Stefan Weil wrote:
> >   
> >> All eepro100 devices work with drivers which
> >> only use basic features.
> >>
> >> They were tested with gpxe boot.
> >>
> >> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> >> ---
> >>  hw/pci.c |   18 ++++++++++++++++++
> >>  1 files changed, 18 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/hw/pci.c b/hw/pci.c
> >> index eb2043e..1ba3f92 100644
> >> --- a/hw/pci.c
> >> +++ b/hw/pci.c
> >> @@ -1436,9 +1436,18 @@ void do_pci_info(Monitor *mon, QObject **ret_data)
> >>  
> >>  static const char * const pci_nic_models[] = {
> >>      "ne2k_pci",
> >> +    "i82550",
> >>      "i82551",
> >> +    "i82557a",
> >>      "i82557b",
> >> +    "i82557c",
> >> +    "i82558a",
> >> +    "i82558b",
> >> +    "i82559a",
> >> +    "i82559b",
> >> +    "i82559c",
> >>      "i82559er",
> >> +    "i82562",
> >>      "rtl8139",
> >>      "e1000",
> >>      "pcnet",
> >> @@ -1448,9 +1457,18 @@ static const char * const pci_nic_models[] = {
> >>  
> >>  static const char * const pci_nic_names[] = {
> >>      "ne2k_pci",
> >> +    "i82550",
> >>      "i82551",
> >> +    "i82557a",
> >>      "i82557b",
> >> +    "i82557c",
> >> +    "i82558a",
> >> +    "i82558b",
> >> +    "i82559a",
> >> +    "i82559b",
> >> +    "i82559c",
> >>      "i82559er",
> >> +    "i82562",
> >>      "rtl8139",
> >>      "e1000",
> >>      "pcnet",
> >>     
> >
> > One wonders: would it be cleaner to have a single eepro100 device
> > with specific model as qdev option?
> 
> Technically that would be possible, too.
> You could even have a single pci ethernet device and
> specify vendor and device id as qdev options.
> 
> I prefer the "official" device names which are also
> used in the Intel documentation. eepro100 or e100
> are marketing names (more of them exist).
> 
> Please note that this patch was marked as optional.
> The arrays pci_nic_names and pci_nic_models are
> not really needed, and as soon as the table of available
> nics is automatically derived from the device information,
> all variants of i825xx are supported automatically.
> 
> Regards
> Stefan Weil


Gerd, any input on this patch?

-- 
MST

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

* [Qemu-devel] Re: [PATCHv3 01/20] eepro100: Fix compiler errors from debug messages
  2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 " Stefan Weil
@ 2010-03-03 11:52   ` Michael S. Tsirkin
  0 siblings, 0 replies; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-03-03 11:52 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

Applied the series except patch 5.
Thanks!

-- 
MST

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

* [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c
  2010-03-03 11:51               ` Michael S. Tsirkin
@ 2010-03-03 13:31                 ` Gerd Hoffmann
  2010-03-03 13:33                   ` Michael S. Tsirkin
  0 siblings, 1 reply; 62+ messages in thread
From: Gerd Hoffmann @ 2010-03-03 13:31 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: QEMU Developers

On 03/03/10 12:51, Michael S. Tsirkin wrote:
> On Sun, Feb 21, 2010 at 10:08:49PM +0100, Stefan Weil wrote:
>>>>   static const char * const pci_nic_models[] = {
>>>>       "ne2k_pci",
>>>> +    "i82550",
>>>>       "i82551",
>>>> +    "i82557a",
>>>>       "i82557b",
>>>> +    "i82557c",
>>>> +    "i82558a",
>>>> +    "i82558b",
>>>> +    "i82559a",
>>>> +    "i82559b",
>>>> +    "i82559c",
>>>>       "i82559er",
>>>> +    "i82562",
>>>>       "rtl8139",
>>>>       "e1000",
>>>>       "pcnet",

>>> One wonders: would it be cleaner to have a single eepro100 device
>>> with specific model as qdev option?

No.  I think it would be cleaner to use qdev even more.  For that 
specific driver it would make sense to create a private Info struct, 
i.e. something like this:

E100PCIDeviceInfo {
    PCIDeviceInfo pci;
    [ model specific stuff such as has_extended_tcb_support here ]
};

Then go

static E100PCIDeviceInfo eepro100_info[] = {
     {
         .pci.qdev.name = "i82550",
         [ usual qdev stuff here ]
         has_extended_tcb_support = 0 | 1;
         [ more e100 device description bits here ]
     },
     [ ... ]
};

Then you can simply zap all the one-liner wrapper functions around 
nic_init().  nic_init() can get a pointer using something like this:

E100PCIDeviceInfo *einfo = DO_UPCAST(E100PCIDeviceInfo,
          pci.qdev, pci_dev->qdev.info);

and setup the device accordingly.

>> I prefer the "official" device names which are also
>> used in the Intel documentation. eepro100 or e100
>> are marketing names (more of them exist).

qdev has aliases.  You can add .qdev.alias = "eepro100" to one of the 
variants, then the eepro100 name will work as well.

Adding the marketing name to the .desc test is probably a good idea too 
because alot of people know the marketing name only.

>> Please note that this patch was marked as optional.
>> The arrays pci_nic_names and pci_nic_models are
>> not really needed, and as soon as the table of available
>> nics is automatically derived from the device information,
>> all variants of i825xx are supported automatically.

> Gerd, any input on this patch?

Looks fine to me.  When we switch over to walking the list of registered 
devices instead of having a hard-coded list of pci nic drivers all the 
eepro100 variants will show up in the list anyway.

cheers,
   Gerd

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

* [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c
  2010-03-03 13:31                 ` Gerd Hoffmann
@ 2010-03-03 13:33                   ` Michael S. Tsirkin
  2010-03-03 18:53                     ` Stefan Weil
  0 siblings, 1 reply; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-03-03 13:33 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: QEMU Developers

On Wed, Mar 03, 2010 at 02:31:53PM +0100, Gerd Hoffmann wrote:
> On 03/03/10 12:51, Michael S. Tsirkin wrote:
>> On Sun, Feb 21, 2010 at 10:08:49PM +0100, Stefan Weil wrote:
>>>>>   static const char * const pci_nic_models[] = {
>>>>>       "ne2k_pci",
>>>>> +    "i82550",
>>>>>       "i82551",
>>>>> +    "i82557a",
>>>>>       "i82557b",
>>>>> +    "i82557c",
>>>>> +    "i82558a",
>>>>> +    "i82558b",
>>>>> +    "i82559a",
>>>>> +    "i82559b",
>>>>> +    "i82559c",
>>>>>       "i82559er",
>>>>> +    "i82562",
>>>>>       "rtl8139",
>>>>>       "e1000",
>>>>>       "pcnet",
>
>>>> One wonders: would it be cleaner to have a single eepro100 device
>>>> with specific model as qdev option?
>
> No.  I think it would be cleaner to use qdev even more.  For that  
> specific driver it would make sense to create a private Info struct,  
> i.e. something like this:
>
> E100PCIDeviceInfo {
>    PCIDeviceInfo pci;
>    [ model specific stuff such as has_extended_tcb_support here ]
> };
>
> Then go
>
> static E100PCIDeviceInfo eepro100_info[] = {
>     {
>         .pci.qdev.name = "i82550",
>         [ usual qdev stuff here ]
>         has_extended_tcb_support = 0 | 1;
>         [ more e100 device description bits here ]
>     },
>     [ ... ]
> };
>
> Then you can simply zap all the one-liner wrapper functions around  
> nic_init().  nic_init() can get a pointer using something like this:
>
> E100PCIDeviceInfo *einfo = DO_UPCAST(E100PCIDeviceInfo,
>          pci.qdev, pci_dev->qdev.info);
>
> and setup the device accordingly.
>
>>> I prefer the "official" device names which are also
>>> used in the Intel documentation. eepro100 or e100
>>> are marketing names (more of them exist).
>
> qdev has aliases.  You can add .qdev.alias = "eepro100" to one of the  
> variants, then the eepro100 name will work as well.
>
> Adding the marketing name to the .desc test is probably a good idea too  
> because alot of people know the marketing name only.

That's my thinking as well.

>>> Please note that this patch was marked as optional.
>>> The arrays pci_nic_names and pci_nic_models are
>>> not really needed, and as soon as the table of available
>>> nics is automatically derived from the device information,
>>> all variants of i825xx are supported automatically.
>
>> Gerd, any input on this patch?
>
> Looks fine to me.  When we switch over to walking the list of registered  
> devices instead of having a hard-coded list of pci nic drivers all the  
> eepro100 variants will show up in the list anyway.
>
> cheers,
>   Gerd

-- 
MST

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

* [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c
  2010-03-03 13:33                   ` Michael S. Tsirkin
@ 2010-03-03 18:53                     ` Stefan Weil
  2010-03-04  8:56                       ` Gerd Hoffmann
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-03-03 18:53 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: Gerd Hoffmann, QEMU Developers

Michael S. Tsirkin schrieb:
> On Wed, Mar 03, 2010 at 02:31:53PM +0100, Gerd Hoffmann wrote:
>> On 03/03/10 12:51, Michael S. Tsirkin wrote:
>>> On Sun, Feb 21, 2010 at 10:08:49PM +0100, Stefan Weil wrote:
>>>>>> static const char * const pci_nic_models[] = {
>>>>>> "ne2k_pci",
>>>>>> + "i82550",
>>>>>> "i82551",
>>>>>> + "i82557a",
>>>>>> "i82557b",
>>>>>> + "i82557c",
>>>>>> + "i82558a",
>>>>>> + "i82558b",
>>>>>> + "i82559a",
>>>>>> + "i82559b",
>>>>>> + "i82559c",
>>>>>> "i82559er",
>>>>>> + "i82562",
>>>>>> "rtl8139",
>>>>>> "e1000",
>>>>>> "pcnet",
>>>>> One wonders: would it be cleaner to have a single eepro100 device
>>>>> with specific model as qdev option?
>> No. I think it would be cleaner to use qdev even more. For that
>> specific driver it would make sense to create a private Info struct,
>> i.e. something like this:
>>
>> E100PCIDeviceInfo {
>> PCIDeviceInfo pci;
>> [ model specific stuff such as has_extended_tcb_support here ]
>> };
>>
>> Then go
>>
>> static E100PCIDeviceInfo eepro100_info[] = {
>> {
>> .pci.qdev.name = "i82550",
>> [ usual qdev stuff here ]
>> has_extended_tcb_support = 0 | 1;
>> [ more e100 device description bits here ]
>> },
>> [ ... ]
>> };
>>
>> Then you can simply zap all the one-liner wrapper functions around
>> nic_init(). nic_init() can get a pointer using something like this:
>>
>> E100PCIDeviceInfo *einfo = DO_UPCAST(E100PCIDeviceInfo,
>> pci.qdev, pci_dev->qdev.info);
>>
>> and setup the device accordingly.

This would indeed simplify the code.

Although I don't like tricky programming like DO_UPCAST
(because I saw too much code where tricky programming
was faulty programming), I'll consider to modify the code
as Gerd proposed.

>>>> I prefer the "official" device names which are also
>>>> used in the Intel documentation. eepro100 or e100
>>>> are marketing names (more of them exist).
>> qdev has aliases. You can add .qdev.alias = "eepro100" to one of the
>> variants, then the eepro100 name will work as well.

Good idea. To keep the number of aliases small, I plan to
add only one or two aliases: e100 (eepro100 only if a second
alias is possible).

Why? e100 is the current linux driver name.
eepro100 was the former linux driver name.

>>
>> Adding the marketing name to the .desc test is probably a good idea too
>> because alot of people know the marketing name only.
>
> That's my thinking as well.

Neither eepro100 nor e100 are marketing names
(I was wrong when I wrote that in an earlier mail).

The marketing name was Intel EtherExpress Pro 100.
I agree that it would help people to see this name,
so I suggest adding it to qemu-doc.texi.

As far as I know, only insiders (and the old linux driver)
used the abbreviations eepro100 and e100.

Look at your favorite search machine:
nobody sells / sold eepro100 cards.

If you want a less technical name than i82559c, e100 is the
better choice - like e1000 for the successor.

>
>>>> Please note that this patch was marked as optional.
>>>> The arrays pci_nic_names and pci_nic_models are
>>>> not really needed, and as soon as the table of available
>>>> nics is automatically derived from the device information,
>>>> all variants of i825xx are supported automatically.
>>> Gerd, any input on this patch?
>> Looks fine to me. When we switch over to walking the list of registered
>> devices instead of having a hard-coded list of pci nic drivers all the
>> eepro100 variants will show up in the list anyway.
>>
>> cheers,
>> Gerd

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

* [Qemu-devel] Re: [PATCHv3 19/20] eepro100: Remove C++ comments
  2010-03-03 11:47   ` [Qemu-devel] " Michael S. Tsirkin
@ 2010-03-03 19:15     ` Stefan Weil
  2010-03-03 19:59       ` Michael S. Tsirkin
  0 siblings, 1 reply; 62+ messages in thread
From: Stefan Weil @ 2010-03-03 19:15 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: QEMU Developers

Michael S. Tsirkin schrieb:
> On Tue, Mar 02, 2010 at 10:37:59PM +0100, Stefan Weil wrote:
>> C++ comments are unwanted, so this is fixed here.
>>
>> * Replace C++ comments by C comments.
>> * Put code which was deactivated by a C++ comment in #if 0...#endif.
>>
>> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
>
> It would be nice to add some documentation to commented
> blocks, explaining why we still keep them around
> and what happens if they are uncommented.


Typically, later patches either use this deactivated code (maybe after
some modifications), or they remove it completely. More documentation
would help of course - I'll try my best :-)

The purpose of this patch was only elimination of C++ comments by formally
transforming them to either C comments or by using the preprocessor #if.

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

* [Qemu-devel] Re: [PATCHv3 19/20] eepro100: Remove C++ comments
  2010-03-03 19:15     ` Stefan Weil
@ 2010-03-03 19:59       ` Michael S. Tsirkin
  0 siblings, 0 replies; 62+ messages in thread
From: Michael S. Tsirkin @ 2010-03-03 19:59 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers

On Wed, Mar 03, 2010 at 08:15:09PM +0100, Stefan Weil wrote:
> Michael S. Tsirkin schrieb:
> > On Tue, Mar 02, 2010 at 10:37:59PM +0100, Stefan Weil wrote:
> >> C++ comments are unwanted, so this is fixed here.
> >>
> >> * Replace C++ comments by C comments.
> >> * Put code which was deactivated by a C++ comment in #if 0...#endif.
> >>
> >> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> >
> > It would be nice to add some documentation to commented
> > blocks, explaining why we still keep them around
> > and what happens if they are uncommented.
> 
> 
> Typically, later patches either use this deactivated code (maybe after
> some modifications), or they remove it completely. More documentation
> would help of course - I'll try my best :-)
> 
> The purpose of this patch was only elimination of C++ comments by formally
> transforming them to either C comments or by using the preprocessor #if.

Yes, I understand that.

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

* Re: [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c
  2010-03-03 18:53                     ` Stefan Weil
@ 2010-03-04  8:56                       ` Gerd Hoffmann
  0 siblings, 0 replies; 62+ messages in thread
From: Gerd Hoffmann @ 2010-03-04  8:56 UTC (permalink / raw)
  To: Stefan Weil; +Cc: QEMU Developers, Michael S. Tsirkin

On 03/03/10 19:53, Stefan Weil wrote:
> This would indeed simplify the code.
>
> Although I don't like tricky programming like DO_UPCAST
> (because I saw too much code where tricky programming
> was faulty programming),

Yea, when coding C++ in C you need little tricks now and then ;)

You need that in one place only though, nic_init() can store a pointer 
in EEPRO100State and everybody can take the direct route then ...

>>> qdev has aliases. You can add .qdev.alias = "eepro100" to one of the
>>> variants, then the eepro100 name will work as well.
>
> Good idea. To keep the number of aliases small, I plan to
> add only one or two aliases: e100 (eepro100 only if a second
> alias is possible).

You can have one alias only.

> Why? e100 is the current linux driver name.

Reasonable choice, lines up with e1000.

> eepro100 was the former linux driver name.

And leaked into a bunch of places (like qemu source code) because of 
that.  Probably only developers recognize the name though.

> The marketing name was Intel EtherExpress Pro 100.
> I agree that it would help people to see this name,
> so I suggest adding it to qemu-doc.texi.

Maybe .desc too ?

cheers,
   Gerd

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

end of thread, other threads:[~2010-03-04  8:56 UTC | newest]

Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
2010-02-14 16:16 ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Stefan Weil
2010-02-14 16:16   ` [Qemu-devel] [PATCH 02/20] eepro100: Add missing SCB register names Stefan Weil
2010-02-14 16:16     ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
2010-02-14 16:16       ` [Qemu-devel] [PATCH 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
2010-02-14 16:16         ` [Qemu-devel] [PATCH 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
2010-02-14 16:16           ` [Qemu-devel] [PATCH 06/20] eepro100: Add TODO list Stefan Weil
2010-02-14 16:16             ` [Qemu-devel] [PATCH 07/20] eepro100: Update copyright notice Stefan Weil
2010-02-14 16:16               ` [Qemu-devel] [PATCH 08/20] eepro100: Add device descriptions Stefan Weil
2010-02-14 16:16                 ` [Qemu-devel] [PATCH 09/20] eepro100: Use symbolic names and BIT macros in binary operations Stefan Weil
2010-02-14 16:16                   ` [Qemu-devel] [PATCH 10/20] eepro100: Remove old unused code Stefan Weil
2010-02-14 16:16                     ` [Qemu-devel] [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
2010-02-14 16:16                       ` [Qemu-devel] [PATCH 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
2010-02-14 16:16                         ` [Qemu-devel] [PATCH 13/20] eepro100: Support RNR interrupt Stefan Weil
2010-02-14 16:16                           ` [Qemu-devel] [PATCH 14/20] eepro100: Fix CU Start command Stefan Weil
2010-02-14 16:16                             ` [Qemu-devel] [PATCH 15/20] eepro100: Prettify code (no functional changes) Stefan Weil
2010-02-14 16:16                               ` [Qemu-devel] [PATCH 16/20] eepro100: Use tx.status Stefan Weil
2010-02-14 16:16                                 ` [Qemu-devel] [PATCH 17/20] eepro100: New function for reading command block Stefan Weil
2010-02-14 16:16                                   ` [Qemu-devel] [PATCH 18/20] eepro100: Add diagnose command Stefan Weil
2010-02-14 16:16                                     ` [Qemu-devel] [PATCH 19/20] eepro100: Remove C++ comments Stefan Weil
2010-02-14 16:16                                       ` [Qemu-devel] [PATCH 20/20] eepro100: Keep includes sorted Stefan Weil
2010-02-21 17:05                       ` [Qemu-devel] Re: [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Michael S. Tsirkin
2010-02-21 21:38                         ` Stefan Weil
2010-02-22  9:00                           ` Michael S. Tsirkin
2010-03-02 18:42                       ` [Qemu-devel] " Stefan Weil
2010-02-21 17:00           ` [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c Michael S. Tsirkin
2010-02-21 21:08             ` Stefan Weil
2010-03-03 11:51               ` Michael S. Tsirkin
2010-03-03 13:31                 ` Gerd Hoffmann
2010-03-03 13:33                   ` Michael S. Tsirkin
2010-03-03 18:53                     ` Stefan Weil
2010-03-04  8:56                       ` Gerd Hoffmann
2010-03-02 18:43       ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
2010-03-02 20:04         ` [Qemu-devel] " Michael S. Tsirkin
2010-02-19 21:05   ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Anthony Liguori
2010-03-01 17:54     ` Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 " Stefan Weil
2010-03-03 11:52   ` [Qemu-devel] " Michael S. Tsirkin
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 02/20] eepro100: Add missing SCB register names Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 03/20] eepro100: Fix PXE boot Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 06/20] eepro100: Add TODO list Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 07/20] eepro100: Update copyright notice Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 08/20] eepro100: Add device descriptions Stefan Weil
2010-03-03 11:49   ` [Qemu-devel] " Michael S. Tsirkin
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 09/20] eepro100: Use symbolic names and BIT macros in binary operations Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 10/20] eepro100: Remove old unused code Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 13/20] eepro100: Support RNR interrupt Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 14/20] eepro100: Fix CU Start command Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 15/20] eepro100: Prettify code (no functional changes) Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 16/20] eepro100: Use tx.status Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 17/20] eepro100: New function for reading command block Stefan Weil
2010-03-03 11:44   ` [Qemu-devel] " Michael S. Tsirkin
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 18/20] eepro100: Add diagnose command Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 19/20] eepro100: Remove C++ comments Stefan Weil
2010-03-03 11:47   ` [Qemu-devel] " Michael S. Tsirkin
2010-03-03 19:15     ` Stefan Weil
2010-03-03 19:59       ` Michael S. Tsirkin
2010-03-02 21:38 ` [Qemu-devel] [PATCHv3 20/20] eepro100: Keep includes sorted Stefan Weil

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.