<p>Elyes HAOUAS has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27590">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">nb/intel/i945: For test<br><br>With this changes 945G-M4 board boots fine<br>when DIMM0 is not populated.<br>Still not boot:<br> When channel0 is not populated.<br> When 533MHz RAM is used.<br><br>Change-Id: Iff1705788fdffeacd94fe5e50507733ff7c0f96b<br>Signed-off-by: Elyes HAOUAS <ehaouas@noos.fr><br>---<br>M src/northbridge/intel/i945/raminit.c<br>1 file changed, 59 insertions(+), 52 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/90/27590/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/northbridge/intel/i945/raminit.c b/src/northbridge/intel/i945/raminit.c</span><br><span>index c259530..074214a 100644</span><br><span>--- a/src/northbridge/intel/i945/raminit.c</span><br><span>+++ b/src/northbridge/intel/i945/raminit.c</span><br><span>@@ -695,45 +695,45 @@</span><br><span> };</span><br><span> </span><br><span> static const u32 dq2330[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-     0x08070706, 0x0a090908, 0x0d0c0b0a, 0x12100f0e,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x1a181614, 0x22201e1c, 0x2a282624, 0x3934302d,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x0a090908, 0x0c0b0b0a, 0x0e0d0d0c, 0x1211100f,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x19171513, 0x211f1d1b, 0x2d292623, 0x3f393531</span><br><span style="color: hsl(120, 100%, 40%);">+        0x01000000, 0x02010101, 0x08060403, 0x0c0b0a09,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x1512100e, 0x1c1a1816, 0x1f1f1f1e, 0x1f1f1f1f,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x02020101, 0x04040303, 0x07060505, 0x110e0b09,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x18161412, 0x1f1e1c1a, 0x1f1f1f1f, 0x1f1f1f1f</span><br><span> };</span><br><span> </span><br><span> static const u32 cmd2710[] = {</span><br><span>   0x07060605, 0x0f0d0b09, 0x19171411, 0x1f1f1d1b,</span><br><span>      0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x1110100f, 0x0f0d0b09, 0x19171411, 0x1f1f1d1b,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x1110100f, 0x14121111, 0x1c1a1816, 0x1f1f1f1e,</span><br><span>      0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f</span><br><span> };</span><br><span> </span><br><span> static const u32 cmd3210[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-      0x0f0d0b0a, 0x17151311, 0x1f1d1b19, 0x1f1f1f1f,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x18171615, 0x1f1f1c1a, 0x1f1f1f1f, 0x1f1f1f1f,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f</span><br><span style="color: hsl(120, 100%, 40%);">+        0x04030302, 0x07060504, 0x0f0d0b09, 0x18151311,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x1f1f1d1b, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x09090808, 0x0b0b0a0a, 0x110f0d0c, 0x1b191714,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x1f1f1f1d, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f</span><br><span> };</span><br><span> </span><br><span> static const u32 clk2030[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-      0x0e0d0d0c, 0x100f0f0e, 0x100f0e0d, 0x15131211,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x0c0b0b0b, 0x0d0d0c0c, 0x100f0e0d, 0x15131211,</span><br><span>      0x1d1b1917, 0x2523211f, 0x2a282927, 0x32302e2c,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x17161514, 0x1b1a1918, 0x1f1e1d1c, 0x23222120,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x27262524, 0x2d2b2928, 0x3533312f, 0x3d3b3937</span><br><span style="color: hsl(120, 100%, 40%);">+        0x09090808, 0x0c0b0b0a, 0x100f0e0d, 0x14131211,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x18171615, 0x1e1c1a19, 0x26242220, 0x2e2c2a28</span><br><span> };</span><br><span> </span><br><span> static const u32 ctl3215[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-      0x01010000, 0x03020101, 0x07060504, 0x0b0a0908,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x100f0e0d, 0x14131211, 0x18171615, 0x1c1b1a19,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x05040403, 0x07060605, 0x0a090807, 0x0f0d0c0b,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x14131211, 0x18171615, 0x1c1b1a19, 0x201f1e1d</span><br><span style="color: hsl(120, 100%, 40%);">+        0x07070606, 0x0e0c0a08, 0x17141210, 0x201e1c1a,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x28262422, 0x302e2c2a, 0x38363432, 0x3f3e3c3a,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x13131212, 0x16151414, 0x211d1a18, 0x28262422,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x302e2c2a, 0x38363432, 0x3f3e3c3a, 0x3f3f3f3f</span><br><span> };</span><br><span> </span><br><span> static const u32 ctl3220[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-      0x05040403, 0x07060505, 0x0e0c0a08, 0x1a171411,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x2825221f, 0x35322f2b, 0x3e3e3b38, 0x3e3e3e3e,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x09080807, 0x0b0a0a09, 0x0f0d0c0b, 0x1b171311,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x2825221f, 0x35322f2b, 0x3e3e3b38, 0x3e3e3e3e</span><br><span style="color: hsl(120, 100%, 40%);">+        0x05050404, 0x0b090706, 0x13110f0d, 0x1d1b1915,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x0e0e0d0d, 0x100f0f0f, 0x1b191310, 0x1f1f1f1d,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f</span><br><span> };</span><br><span> </span><br><span> static const u32 nc[] = {</span><br><span>@@ -762,27 +762,28 @@</span><br><span>        DQ2030, CMD3210, NC,      CTL3215, NC,      CLK2030, NC,     NC,</span><br><span> </span><br><span>         DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD3210, CTL3215, NC,      CLK2030, NC,      DQ2030, CMD3210,</span><br><span style="color: hsl(120, 100%, 40%);">+ DQ2030, DQ2330,  CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,</span><br><span>         DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD3210, CTL3215, NC,      CLK2030, NC,      DQ2030, CMD2710,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD3210, CTL3215, NC,      CLK2030, NC,      NC,     NC,</span><br><span style="color: hsl(120, 100%, 40%);">+      DQ2030, DQ2330,  CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,</span><br><span style="color: hsl(120, 100%, 40%);">+  DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,</span><br><span> </span><br><span>    DQ2030, CMD3210, NC,      CTL3215, NC,      CLK2030, DQ2030, CMD3210,</span><br><span>        DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD3210, NC,      CTL3215, NC,      CLK2030, DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD3210, NC,      CTL3215, NC,      CLK2030, NC,     NC,</span><br><span style="color: hsl(120, 100%, 40%);">+      DQ2030, CTL3220, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CTL3220,</span><br><span style="color: hsl(120, 100%, 40%);">+ DQ2030, DQ2330,  CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,</span><br><span style="color: hsl(120, 100%, 40%);">+  DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,</span><br><span> </span><br><span>    DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD2710, CTL3215, NC,      CLK2030, NC,      DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD2710, CTL3215, NC,      CLK2030, NC,      DQ2030, CMD2710,</span><br><span style="color: hsl(0, 100%, 40%);">-   DQ2030, CMD2710, CTL3215, NC,      CLK2030, NC,      NC,     NC,</span><br><span style="color: hsl(120, 100%, 40%);">+      DQ2030, DQ2330,  CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,</span><br><span style="color: hsl(120, 100%, 40%);">+  DQ2030, DQ2330,  CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,</span><br><span style="color: hsl(120, 100%, 40%);">+  DQ2030, DQ2330,  CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,</span><br><span style="color: hsl(120, 100%, 40%);">+  DQ2030, CTL3220, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CTL3220,</span><br><span> </span><br><span>    NC,     NC,      NC,      CTL3215, NC,      CLK2030, DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   NC,     NC,      CTL3215, NC,      CLK2030, NC,      DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   NC,     NC,      NC,      CTL3215, NC,      CLK2030, DQ2030, CMD3210,</span><br><span style="color: hsl(0, 100%, 40%);">-   NC,     NC,      CTL3215, NC,      CLK2030, CLK2030, DQ2030, CMD2710</span><br><span style="color: hsl(120, 100%, 40%);">+  DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,</span><br><span style="color: hsl(120, 100%, 40%);">+ DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,</span><br><span style="color: hsl(120, 100%, 40%);">+ DQ2030, CTL3220, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CTL3220,</span><br><span style="color: hsl(120, 100%, 40%);">+ DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210</span><br><span> };</span><br><span> </span><br><span> static const u8 single_channel_slew_group_lookup[] = {</span><br><span>@@ -902,24 +903,25 @@</span><br><span>     0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,</span><br><span>      0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x00,</span><br><span>      0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x55, 0x00, 0x00, 0x44, 0x44, 0x44, 0x55,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x44, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x88, 0x00, 0x00, 0x44, 0x44, 0x44, 0x88,</span><br><span>      0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span>      0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x00,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x00,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x44, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44,</span><br><span>      0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x55, 0x00, 0x00, 0x44, 0x44, 0x44, 0x55,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x88, 0x00, 0x00, 0x44, 0x44, 0x44, 0x88,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x55, 0x00, 0x00, 0x44, 0x44, 0x44, 0x55,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x88, 0x00, 0x00, 0x44, 0x44, 0x44, 0x88,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,</span><br><span>      0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33</span><br><span style="color: hsl(120, 100%, 40%);">+        0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,</span><br><span style="color: hsl(120, 100%, 40%);">+       0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> };</span><br><span> </span><br><span> static const u8 single_channel_strength_multiplier[] = {</span><br><span>@@ -953,21 +955,20 @@</span><br><span> static void sdram_rcomp_buffer_strength_and_slew(struct sys_info *sysinfo)</span><br><span> {</span><br><span>    const u8 *strength_multiplier;</span><br><span style="color: hsl(0, 100%, 40%);">-  int idx, dual_channel;</span><br><span style="color: hsl(120, 100%, 40%);">+        int idx, idx_channel1, dual_channel;</span><br><span> </span><br><span>     /* Set Strength Multipliers */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    idx = 5 * sysinfo->dimm[0] +  sysinfo->dimm[1];</span><br><span>        /* Dual Channel needs different tables. */</span><br><span>   if (sdram_capabilities_dual_channel()) {</span><br><span>             printk(BIOS_DEBUG, "Programming Dual Channel RCOMP\n");</span><br><span>            strength_multiplier = dual_channel_strength_multiplier;</span><br><span>              dual_channel = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-               idx = 5 * sysinfo->dimm[0] +  sysinfo->dimm[2];</span><br><span>        } else {</span><br><span>             printk(BIOS_DEBUG, "Programming Single Channel RCOMP\n");</span><br><span>          strength_multiplier = single_channel_strength_multiplier;</span><br><span>            dual_channel = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-               idx = 5 * sysinfo->dimm[0] + sysinfo->dimm[1];</span><br><span>         }</span><br><span> </span><br><span>        printk(BIOS_DEBUG, "Table Index: %d\n", idx);</span><br><span>@@ -979,7 +980,12 @@</span><br><span>       MCHBAR8(G5SC) = strength_multiplier[idx * 8 + 4];</span><br><span>    MCHBAR8(G6SC) = strength_multiplier[idx * 8 + 5];</span><br><span>    MCHBAR8(G7SC) = strength_multiplier[idx * 8 + 6];</span><br><span style="color: hsl(0, 100%, 40%);">-       MCHBAR8(G8SC) = strength_multiplier[idx * 8 + 7];</span><br><span style="color: hsl(120, 100%, 40%);">+     if (dual_channel) {</span><br><span style="color: hsl(120, 100%, 40%);">+           idx_channel1 = 5 * sysinfo->dimm[2] +  sysinfo->dimm[3];</span><br><span style="color: hsl(120, 100%, 40%);">+                MCHBAR8(G8SC) = strength_multiplier[idx_channel1 * 8 + 7];</span><br><span style="color: hsl(120, 100%, 40%);">+    } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              MCHBAR8(G8SC) = strength_multiplier[idx * 8 + 7];</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span>        /* Channel 0 */</span><br><span>      sdram_write_slew_rates(G1SRPUT, slew_group_lookup(dual_channel, idx * 8 + 0));</span><br><span>@@ -995,8 +1001,9 @@</span><br><span>        sdram_write_slew_rates(G6SRPUT, slew_group_lookup(dual_channel, idx * 8 + 5));</span><br><span> </span><br><span>   /* Channel 1 */</span><br><span style="color: hsl(0, 100%, 40%);">- if (sysinfo->dual_channel) {</span><br><span style="color: hsl(120, 100%, 40%);">+       if (dual_channel) {</span><br><span>          sdram_write_slew_rates(G7SRPUT, slew_group_lookup(dual_channel, idx * 8 + 6));</span><br><span style="color: hsl(120, 100%, 40%);">+                idx = 5 * sysinfo->dimm[2] +  sysinfo->dimm[3];</span><br><span>                sdram_write_slew_rates(G8SRPUT, slew_group_lookup(dual_channel, idx * 8 + 7));</span><br><span>       } else {</span><br><span>             sdram_write_slew_rates(G7SRPUT, nc);</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27590">change 27590</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/27590"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Iff1705788fdffeacd94fe5e50507733ff7c0f96b </div>
<div style="display:none"> Gerrit-Change-Number: 27590 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Elyes HAOUAS <ehaouas@noos.fr> </div>