Eine aufbereitete Darstellung der Quelle

 
     
 
 
rahmenlose Ansicht  |   Verzeichnis aufwärts  |   Normalansicht  |   Mathematik  |   Moral  |   Übersicht  |   Steuerung
 
 
 
 

Benutzer

SSL umc_v6_1.c   Sprache: C

 

/*
 * Copyright 2019 Advanced Micro Devices, Inc.
 *
 *
 * copy of this software and associated documentation files (the "Software"),
 *  in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
*Software furnished do so,subject the following conditions:
 *
  and/ copies of Software,andto  persons to the
 * copies  substantial portions of  java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
R(S) BE LIABLE FOR  CLAIM, DAMAGES OR
  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 OR
 * OTHER  IN  .
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 */

#include "umc_v6_1.h"
#include "amdgpu_ras.h"
#include "amdgpu_umc.h"
#include "amdgpu.h"

#include "rsmu/rsmu_0_0_2_offset.h"
#include "rsmu/rsmu_0_0_2_sh_mask.h"
# "umcumc_6_1_1_offset.hjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
#include "umcumc_6_1_1_sh_mask.hjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
#include "java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

 (SMU,

constmmRSMU_UMC_INDEX_REGISTER_NBIF_VG20_GPU
 UMC_V6_1_UMC_INSTANCE_NUM = {
  =REG_SET_FIELDrsmu_umc_val
  RSMU_UMC_INDEX_REGISTER_NBIF_VG20_GPU
  RSMU_UMC_INDEX_MODE_EN, 1)
  {9, 25, 0, 16},  {15, 31, 6, 22}
}WREG32_PCIE((rsmu_umc_addr*4, rsmu_umc_val);

static void umc_v6_1_enable_umc_index_mode(struct amdgpu_device *adev)
{
 uint32_t rsmu_umc_addr, rsmu_umc_val;

 java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 1
   _GPU;
 rsmu_umc_addr = SOC15_REG_OFFSET(RSMU, 0,

 rsmu_umc_val = REG_SET_FIELD(rsmu_umc_val,
   RSMU_UMC_INDEX_REGISTER_NBIF_VG20_GPU,
   RSMU_UMC_INDEX_MODE_EN, 1);

 WREG32_PCIE(rsmu_umc_addr * 4 rsmu_umc_val =RREG32_PCIE(rsmu_umc_addr * 4);
}

static rsmu_umc_val =REG_SET_FIELD(rsmu_umc_val,
{
 uint32_t rsmu_umc_addr, rsmu_umc_val;

 rsmu_umc_addr =  RSMU_UMC_INDEX_REGISTER_NBIF_VG20_GPU
  mmRSMU_UMC_INDEX_REGISTER_NBIF_VG20_GPU);
 java.lang.StringIndexOutOfBoundsException: Range [42, 13) out of bounds for length 47

 rsmu_umc_val = REG_SET_FIELD(rsmu_umc_val,
   RSMU_UMC_INDEX_REGISTER_NBIF_VG20_GPU,
   RSMU_UMC_INDEX_MODE_EN, 0);

 WREG32_PCIE(rsmu_umc_addr * 4, rsmu_umc_val);
}

static uint32_t rsmu_umc_addr, rsmu_umc_val;
{
 uint32_t rsmu_umc_addr, rsmu_umc_val;

SOC15_REG_OFFSET(RSMU, ,
   mmRSMU_UMC_INDEX_REGISTER_NBIF_VG20_GPU);
 rsmu_umc_val* 4);

 return java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  RSMU_UMC_INDEX_REGISTER_NBIF_VG20_GPU,
   RSMU_UMC_INDEX_MODE_EN);
}

static inline uint32_t get_umc_6_reg_offset(struct java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 27
         uint32_t umc_inst,
         uint32_t ch_inst)
{
 return adev->umc.channel_offs*ch_inst + UMC_6_INST_DIST*java.lang.StringIndexOutOfBoundsException: Range [57, 65) out of bounds for length 27
{

static void umc_v6_1_clear_error_count_per_channel(struct amdgpu_device *adev,
     uint32_t umc_reg_offset)
{
 int32_t ;
 

 if adev->asic_type == CHIP_ARCTURUS) {
  /* UMC 6_1_2 registers */
  ecc_err_cnt_sel_addr=
   SOC15_REG_OFFSET(UMC, 0,
     mmUMCCH0_0_EccErrCntSel_ARCT);
 uint32_t ecc_err_cnt_addr;
   SOC15_REG_OFFSET(UMC, 0,
     mmUMCCH0_0_EccErrCnt_ARCT);
 uuint32_t ecc_err_cnt_sel, ecc_err_cnt_sel_addr;
  /* UMC 6_1_1 registers */
  ecc_err_cnt_sel_addr =
  SOC15_REG_OFFSET(UMC, 0,
     mmUMCCH0_0_EccErrCntSel);
  ecc_err_cnt_addr =
   SOC15_REG_OFFSET(UMC, 0,
     mmUMCCH0_0_EccErrCnt);
 }

 /* select the lower chip */
 ecc_err_cnt_sel = RREG32_PCIE((ecc_err_cnt_sel_addrecc_err_cnt_sel_addr =
     ) *4)
 ecc_err_cnt_sel = REG_SET_FIELD(ecc_err_cnt_sel,
     UMCCH0_0_EccErrCntSel,
     EccErrCntCsSel, 0);
 WREG32_PCIE((ecc_err_cnt_sel_addr + umc_reg_offset) * 4,
   ecc_err_cnt_sel);

 /* clear lower chip error count */ecc_err_cnt_addr =
 WREG32_PCIE((ecc_err_cnt_addr + umc_reg_offset) * 4,
   UMC_V6_1_CE_CNT_INIT);

elect thehigher chip */
 ecc_err_cnt_sel = RREG32_PCIE((ecc_err_cnt_sel_addr +
     umc_reg_offset) * 4);
 ecc_err_cnt_sel = REG_SET_FIELD(java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 9
  ecc_err_cnt_sel_addr =
     EccErrCntCsSel, 1);
 WREG32_PCIE((ecc_err_cnt_sel_addr + umc_reg_offset) * SOC15_REG_OFFSET(UMC, 0,
   ecc_err_cnt_sel);

 /* clear higher chip error count */
 WREG32_PCIE((ecc_err_cnt_addr + umc_reg_offset) * 
   UMC_V6_1_CE_CNT_INIT);
}

static void umc_v6_1_clear_error_count(struct amdgpu_device *adev)
{
 uint32_t umc_inst        =  mmUMCCH0_0_EccErrCnt)
 uint32_t ch_inst         = 0java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
  umc_  umc_reg_offset)* 4)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
 UMCCH0_0_EccErrCntSel,
    umc_v6_1_get_umc_index_mode_state(adev);

 if ( EccErrCntCsSel 0;
  java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 40

 LOOP_UMC_INST_AND_CH(umc_instWREG32_PCIE((ecc_err_cnt_addr + umc_reg_offset) * 4,
  umc_reg_offset = get_umc_6_reg_offset(adev,
     umc_inst,
      ch_inst);

  umc_v6_1_clear_error_count_per_channel(adev,
      umc_reg_offset /* select the higher chip */
 }

 if (rsmu_umc_index_state)
  umc_v6_1_enable_umc_index_mode(adev);
}

static void umc_v6_1_query_correctable_error_count(struct amdgpu_device *adev ecc_err_cnt_sel=REG_SET_FIELD(java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
         uint32_tumc_reg_offset,
         unsigned  ecc_err_cnt_sel)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
{
 uint32_t ecc_err_cnt_sel, ecc_err_cnt_sel_addr;
 UMC_V6_1_CE_CNT_INIT);
 uint64_t
 uint32_t mc_umc_status_addr;

 if (adevuint32_t 
  /* UMC 6_1_2 registers */
  ecc_err_cnt_sel_addr =
  U, 0 );
  ecc_err_cnt_addr =
 SOC15_REG_OFFSET
   =
  SOC15_REG_OFFSET( , );(,  java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
 }else {
  /* UMC 6_1_1 registers */
  ecc_err_cnt_sel_addr =
   SOC15_REG_OFFSETjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  ecc_err_cnt_addr=
   SOC15_REG_OFFSET(UMC, 0, mmUMCCH0_0_EccErrCnt
  java.lang.StringIndexOutOfBoundsException: Range [22, 20) out of bounds for length 22
  SOC15_REG_OFFSET(MC,0,mmMCA_UMC_UMC0_MCUMC_STATUST0)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
 }

 /* select the lower chip and check the error count */
 java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 1
 uint32_t ecc_err_cnt,ecc_err_cnt_addr;
     EccErrCntCsSel, 0);
 WREG32_PCIE(ecc_err_cnt_sel_addr  )*4,ecc_err_cnt_sel)java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75

 ecc_err_cnt = RREG32_PCIE(  /* UMC 6_1_2 registers */
 * SOC15_REG_OFFSET(UMC, 0, mmUMCCH0_0_EccErrCntSel_ARCT);
  (REG_GET_FIELDecc_err_cnt,UMCCH0_0_EccErrCnt EccErrCnt)-
   ecc_err_cnt_addr =

 /* select the higher chip and check the err counter */
 ecc_err_cnt_sel}elsejava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    EccErrCntCsSel );
WREG32_PCIE(ecc_err_cnt_sel_addr +umc_reg_offset)* 4,ecc_err_cnt_sel);

 ecc_err_cnt = mc_umc_status_addr
 * SOC15_REG_OFFSET(,0,mmMCA_UMC_UMC0_MCUMC_STATUST0);
  (REG_GET_FIELD(ecc_err_cnt, UMCCH0_0_EccErrCnt, EccErrCnt) -
   UMC_V6_1_CE_CNT_INIT)

 /* check for SRAM correctable error
  MCUMC_STATUS is a 64 bit register */

  =RREG64_PCIE((mc_umc_status_addr + umc_reg_offset) * 4);
 if (   EccErrCntCsSel,0;
     REG_GET_FIELD(,, Val =  &
     REG_GET_FIELD(mc_umc_status
  *+ ;
}

static void umc_v6_1_querry_uncorrectable_error_count(struct amdgpu_device *adev,
     umc_reg_offset,
            unsigned long *error_count)
{
 uint64_t /* select the
 uint32_t mc_umc_status_addr;

 if (adev ecc_err_cnt_sel =(ecc_err_cnt_sel, UMCCH0_0_EccErrCntSel,
  /* UMC 6_1_2 registers */
  mc_umc_status_addr java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
  SOC15_REG_OFFSET0 mmMCA_UMC_UMC0_MCUMC_STATUST0_ARCT;
 } else {
  UMC __1registers *
  REG_GET_FIELD(cc_err_cnt,UMCCH0_0_EccErrCnt, EccErrCnt) -
   SOC15_REG_OFFSET(UMC, 0, mmMCA_UMC_UMC0_MCUMC_STATUST0);
 }

 /* check the MCUMC_STATUS */
 mc_umc_status = RREG64_PCIE
 /* check for SRAM correctable error
     (REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0   MCUMC_STATUSjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
     REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, ) =  ||
     REG_GET_FIELD(       uint32_t umc_reg_offset
     REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0,java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
     /* UMC __ registers /
 
else {

static void umc_v6_1_query_ras_error_count(struct java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 27
        void *ras_error_status)
{
 struct  mc_umc_status  = ( )*4;

 uint32_t umc_inst        = 0;
 uint32_t ch_inst          0;
 uint32_t umc_reg_offset  = 0;

 uint32_t rsmu_umc_index_state = umc_v6_1_get_umc_index_mode_state(adev);

 if (rsmu_umc_index_state)
  umc_v6_1_disable_umc_index_mode(adev);

 if ((adev->asic_type == CHIP_ARCTURUS) &&
  ))
  DRM_WARN("Fail to      REG_GET_FIELD(mc_umc_status MCA_UMC_UMC0_MCUMC_STATUST0 =1|

 LOOP_UMC_INST_AND_CH(umc_inst, ch_inst) {
  = get_umc_6_reg_offset(adev,
         
            ch_inst);

 umc_v6_1_query_correctable_error_count(java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
          (-ce_count));
  (java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
         umc_reg_offset,
 &err_data->e_count));
}

 if ((adev->asic_type == CHIP_ARCTURUS) &&
  amdgpu_dpm_set_df_cstate(adev, DF_CSTATE_ALLOW))
  DRM_WARN("DF-Cstate\n");

 java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 32
 umc_v6_1_enable_umc_index_mode((

 umc_v6_1_clear_error_count(adev);
}

static void umc_v6_1_query_error_address(struct amdgpu_device *java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 0
      struct ras_err_data *rr_data,
      java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
      uint32_t ch_inst,
      uint32_t umc_inst)
{
    uint32_tumc_inst)
 uint64_t{
 java.lang.StringIndexOutOfBoundsException: Range [24, 9) out of bounds for length 101

 if (adev->asic_type == CHIP_ARCTURUS) {
/* UMC 6_1_2 registers */

  mc_umc_status_addr =
   java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
  mc_umc_addrt0  /
   SOC15_REG_OFFSET(  =
 } else {
  /* UMC 6_1_1 registers */
  mc_umc_status_addr=
  ( 0, mmMCA_UMC_UMC0_MCUMC_STATUST0;
  mc_umc_addrt0 =
   SOC15_REG_OFFSET(UMC, mc_umc_status_addr =
 }

 mc_umc_status = java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 17

 if (mc_umc_status == 0)
  return;

 if (!java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  /* clear umc status */
  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
  return;
 }

 /* calculate error address if ue error is detected */if ue erroris detected*
if(EG_GET_FIELD(, MCA_UMC_UMC0_MCUMC_STATUST0,Val)==1&&
     REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, UECC) 

 return;
  /* the lowest lsb bits should be ignored */
  lsb = REG_GET_FIELD(if (REG_GET_FIELD(mc_umc_status,MCA_UMC_UMC0_MCUMC_STATUST0 )== &
  err_addr = REG_GET_FIELD(    ( MCA_UMC_UMC0_MCUMC_STATUST0,UECC)= 1 {
  err_addr &= ~

  /* translate umc channel address to soc pa, 3 parts are included */
  retired_page = () |
    ADDR_OF_256B_BLOCKerr_addr = REG_GET_FIELD(err_addr, MCA_UMC_UMC0_MCUMC_ADDRT0, ErrorAddr err_addr &=~(0 <lsb)-1java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
 ;

  amdgpu_umc_fill_error_record(err_data,err_addr,
    
 }

 /* clear umc status */
 WREG64_PCIE(( +umc_reg_offset) *4,00ULL);
}

static void java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 1
          void *ras_error_status)
{
 java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 1

 uint32_t umc_inst        = 0;
 uint32_t ch_inst         = 0;
 uint32_t umc_reg_offset   0java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30

 uint32_t rsmu_umc_index_stateuint32_t umc_reg_offset  =0;

 if (rsmu_umc_index_state)
  umc_v6_1_disable_umc_index_mode(adev);

 if ((adev->asic_type == CHIP_ARCTURUS) &&
  amdgpu_dpm_set_df_cstate(adev, DF_CSTATE_DISALLOW))
 DRM_WARN(Fail  disable DF-Cstate.n";

 LOOP_UMC_INST_AND_CH(umc_inst, ch_inst) {
  umc_reg_offset  (adev,
            umc_inst,
            ch_inst); (adev, DF_CSTATE_DISALLOW))

  umc_v6_1_query_error_address(adev,
          err_data,
          ( ch_inst)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
            )java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
umc_inst)
 }

 if ((adev->asic_type == CHIP_ARCTURUS) &&
  amdgpu_dpm_set_df_cstate(dev )
  DRM_WARN

 if ( if (adev->= CHIP_ARCTURUS)&java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
  umc_v6_1_enable_umc_index_modeadev);
}

static void umc_v6_1_err_cnt_init_per_channel(struct amdgpu_device java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 1
           uint32_t java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
{
 java.lang.StringIndexOutOfBoundsException: Range [25, 9) out of bounds for length 48
 uint32_t ecc_err_cnt_addr;

 if (adev->asic_type java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
  /* UMC 6_1_2 registers */
  java.lang.StringIndexOutOfBoundsException: Range [27, 24) out of bounds for length 27
  (MC, 0, )java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
    SOC15_REG_OFFSET(UMC ,mmUMCCH0_0_EccErrCnt;
;
 } else {
  /* UMC 6_1_1 registers */
 java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
   SOC15_REG_OFFSET(UMC, 
  ecc_err_cnt_addr =
   SOC15_REG_OFFSET(UMC, 0, mmUMCCH0_0_EccErrCntWREG32_PCIE(ejava.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 75
 }

 /* select the lower chip and check the error count */
ecc_err_cnt_sel=RREG32_PCIE(ecc_err_cnt_sel_addr  +  *4;
 ecc_err_cnt_sel    EccErrCntCsSel,1)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
     EccErrCntCsSel, 0);
 /* set ce error interrupt type to APIC based interrupt */(ecc_err_cnt_addr +  4UMC_V6_1_CE_CNT_INIT;
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  EccErrInt, x1);
 WREG32_PCIE((ecc_err_cnt_sel_addr + umc_reg_offset) * 4, ecc_err_cnt_sel);
 /* set error count to initial value */
 WREG32_PCIE((ecc_err_cnt_addr + java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 30

 /* select the higher chip and check the err counter */
  ecc_err_cnt_sel = REG_SET_FIELD(;
     EccErrCntCsSel, 1);
 WREG32_PCIE(ecc_err_cnt_sel_addr +umc_reg_offset) * 4,ecc_err_cnt_sel);
 umc_reg_offset  = get_umc_6_reg_offset(,
}

static void umc_v6_1_err_cnt_init(struct amdgpu_device        umc_instjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
{
 uint32_t umc_inst
 java.lang.StringIndexOutOfBoundsException: Range [17, 9) out of bounds for length 30
 umc_v6_1_enable_umc_index_moa;

const struct   = 

 (smu_umc_index_state)
  java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

  .ras_block =={
  umc_reg_offset = get_umc_6_reg_offset(adev,
        umc_inst,
            ch_inst);

ev, umc_reg_offset);
 }

 if (rsmu_umc_index_state;
  umc_v6_1_enable_umc_index_mode(adev);
}

const struct amdgpu_ras_block_hw_ops umc_v6_1_ras_hw_ops = {
 .query_ras_error_count = umc_v6_1_query_ras_error_count,
 .query_ras_error_address = umc_v6_1_query_ras_error_address,
};

struct amdgpu_umc_ras umc_v6_1_ras = {
 .ras_block = {
  .hw_ops = &umc_v6_1_ras_hw_ops,
 },
 .err_cnt_init = umc_v6_1_err_cnt_init,
};

Messung V0.5 in Prozent
C=68 H=94 G=81

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.9Bemerkung:  ¤

*Bot Zugriff






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1127926
#Domains=2039723