linux/Documentation/ia64/err_inject.txt
<<
>>
Prefs
   1
   2IPF Machine Check (MC) error inject tool
   3========================================
   4
   5IPF Machine Check (MC) error inject tool is used to inject MC
   6errors from Linux. The tool is a test bed for IPF MC work flow including
   7hardware correctable error handling, OS recoverable error handling, MC
   8event logging, etc.
   9
  10The tool includes two parts: a kernel driver and a user application
  11sample. The driver provides interface to PAL to inject error
  12and query error injection capabilities. The driver code is in
  13arch/ia64/kernel/err_inject.c. The application sample (shown below)
  14provides a combination of various errors and calls the driver's interface
  15(sysfs interface) to inject errors or query error injection capabilities.
  16
  17The tool can be used to test Intel IPF machine MC handling capabilities.
  18It's especially useful for people who can not access hardware MC injection
  19tool to inject error. It's also very useful to integrate with other
  20software test suits to do stressful testing on IPF.
  21
  22Below is a sample application as part of the whole tool. The sample
  23can be used as a working test tool. Or it can be expanded to include
  24more features. It also can be a integrated into a library or other user
  25application to have more thorough test.
  26
  27The sample application takes err.conf as error configuration input. GCC
  28compiles the code. After you install err_inject driver, you can run
  29this sample application to inject errors.
  30
  31Errata: Itanium 2 Processors Specification Update lists some errata against
  32the pal_mc_error_inject PAL procedure. The following err.conf has been tested
  33on latest Montecito PAL.
  34
  35err.conf:
  36
  37#This is configuration file for err_inject_tool.
  38#The format of the each line is:
  39#cpu, loop, interval, err_type_info, err_struct_info, err_data_buffer
  40#where
  41#       cpu: logical cpu number the error will be inject in.
  42#       loop: times the error will be injected.
  43#       interval: In second. every so often one error is injected.
  44#       err_type_info, err_struct_info: PAL parameters.
  45#
  46#Note: All values are hex w/o or w/ 0x prefix.
  47
  48
  49#On cpu2, inject only total 0x10 errors, interval 5 seconds
  50#corrected, data cache, hier-2, physical addr(assigned by tool code).
  51#working on Montecito latest PAL.
  522, 10, 5, 4101, 95
  53
  54#On cpu4, inject and consume total 0x10 errors, interval 5 seconds
  55#corrected, data cache, hier-2, physical addr(assigned by tool code).
  56#working on Montecito latest PAL.
  574, 10, 5, 4109, 95
  58
  59#On cpu15, inject and consume total 0x10 errors, interval 5 seconds
  60#recoverable, DTR0, hier-2.
  61#working on Montecito latest PAL.
  620xf, 0x10, 5, 4249, 15
  63
  64The sample application source code:
  65
  66err_injection_tool.c:
  67
  68/*
  69 * This program is free software; you can redistribute it and/or modify
  70 * it under the terms of the GNU General Public License as published by
  71 * the Free Software Foundation; either version 2 of the License, or
  72 * (at your option) any later version.
  73 *
  74 * This program is distributed in the hope that it will be useful, but
  75 * WITHOUT ANY WARRANTY; without even the implied warranty of
  76 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  77 * NON INFRINGEMENT.  See the GNU General Public License for more
  78 * details.
  79 *
  80 * You should have received a copy of the GNU General Public License
  81 * along with this program; if not, write to the Free Software
  82 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  83 *
  84 * Copyright (C) 2006 Intel Co
  85 *      Fenghua Yu <fenghua.yu@intel.com>
  86 *
  87 */
  88#include <sys/types.h>
  89#include <sys/stat.h>
  90#include <fcntl.h>
  91#include <stdio.h>
  92#include <sched.h>
  93#include <unistd.h>
  94#include <stdlib.h>
  95#include <stdarg.h>
  96#include <string.h>
  97#include <errno.h>
  98#include <time.h>
  99#include <sys/ipc.h>
 100#include <sys/sem.h>
 101#include <sys/wait.h>
 102#include <sys/mman.h>
 103#include <sys/shm.h>
 104
 105#define MAX_FN_SIZE             256
 106#define MAX_BUF_SIZE            256
 107#define DATA_BUF_SIZE           256
 108#define NR_CPUS                 512
 109#define MAX_TASK_NUM            2048
 110#define MIN_INTERVAL            5       // seconds
 111#define ERR_DATA_BUFFER_SIZE    3       // Three 8-byte.
 112#define PARA_FIELD_NUM          5
 113#define MASK_SIZE               (NR_CPUS/64)
 114#define PATH_FORMAT "/sys/devices/system/cpu/cpu%d/err_inject/"
 115
 116int sched_setaffinity(pid_t pid, unsigned int len, unsigned long *mask);
 117
 118int verbose;
 119#define vbprintf if (verbose) printf
 120
 121int log_info(int cpu, const char *fmt, ...)
 122{
 123        FILE *log;
 124        char fn[MAX_FN_SIZE];
 125        char buf[MAX_BUF_SIZE];
 126        va_list args;
 127
 128        sprintf(fn, "%d.log", cpu);
 129        log=fopen(fn, "a+");
 130        if (log==NULL) {
 131                perror("Error open:");
 132                return -1;
 133        }
 134
 135        va_start(args, fmt);
 136        vprintf(fmt, args);
 137        memset(buf, 0, MAX_BUF_SIZE);
 138        vsprintf(buf, fmt, args);
 139        va_end(args);
 140
 141        fwrite(buf, sizeof(buf), 1, log);
 142        fclose(log);
 143
 144        return 0;
 145}
 146
 147typedef unsigned long u64;
 148typedef unsigned int  u32;
 149
 150typedef union err_type_info_u {
 151        struct {
 152                u64     mode            : 3,    /* 0-2 */
 153                        err_inj         : 3,    /* 3-5 */
 154                        err_sev         : 2,    /* 6-7 */
 155                        err_struct      : 5,    /* 8-12 */
 156                        struct_hier     : 3,    /* 13-15 */
 157                        reserved        : 48;   /* 16-63 */
 158        } err_type_info_u;
 159        u64     err_type_info;
 160} err_type_info_t;
 161
 162typedef union err_struct_info_u {
 163        struct {
 164                u64     siv             : 1,    /* 0     */
 165                        c_t             : 2,    /* 1-2   */
 166                        cl_p            : 3,    /* 3-5   */
 167                        cl_id           : 3,    /* 6-8   */
 168                        cl_dp           : 1,    /* 9     */
 169                        reserved1       : 22,   /* 10-31 */
 170                        tiv             : 1,    /* 32    */
 171                        trigger         : 4,    /* 33-36 */
 172                        trigger_pl      : 3,    /* 37-39 */
 173                        reserved2       : 24;   /* 40-63 */
 174        } err_struct_info_cache;
 175        struct {
 176                u64     siv             : 1,    /* 0     */
 177                        tt              : 2,    /* 1-2   */
 178                        tc_tr           : 2,    /* 3-4   */
 179                        tr_slot         : 8,    /* 5-12  */
 180                        reserved1       : 19,   /* 13-31 */
 181                        tiv             : 1,    /* 32    */
 182                        trigger         : 4,    /* 33-36 */
 183                        trigger_pl      : 3,    /* 37-39 */
 184                        reserved2       : 24;   /* 40-63 */
 185        } err_struct_info_tlb;
 186        struct {
 187                u64     siv             : 1,    /* 0     */
 188                        regfile_id      : 4,    /* 1-4   */
 189                        reg_num         : 7,    /* 5-11  */
 190                        reserved1       : 20,   /* 12-31 */
 191                        tiv             : 1,    /* 32    */
 192                        trigger         : 4,    /* 33-36 */
 193                        trigger_pl      : 3,    /* 37-39 */
 194                        reserved2       : 24;   /* 40-63 */
 195        } err_struct_info_register;
 196        struct {
 197                u64     reserved;
 198        } err_struct_info_bus_processor_interconnect;
 199        u64     err_struct_info;
 200} err_struct_info_t;
 201
 202typedef union err_data_buffer_u {
 203        struct {
 204                u64     trigger_addr;           /* 0-63         */
 205                u64     inj_addr;               /* 64-127       */
 206                u64     way             : 5,    /* 128-132      */
 2202" id="L202" class="line" name="L202"> 202typedef union/ia64/err_inject       /* 0-63         7exinject.txt#L2"L191" cla3ss="class="line" name=""L206"> 2202" id="L202" class="line" ou instal12
 2202" id="L202" class="line"  inject e048
 175        struct {
 204                u64    _SIZE    2       // Three 8-byte.
2a hre21ef="Documentation/ia6ion/ia64/err_inject.txt#L205" id="L205" class="line" name="L205"> 205                u64             2
 206                u64             2NR_CPUS/64)
 2202" id="L202" class="line"ot;/sys/d2vices/system/cpu/cpuŴd/err21ef="Documentation/ia64/err_in  7exinject.txt#L2"L191" cla3ss="class="line" name=""L206"> 2202" id="L202" class="line"/ia64/err2inject.txt#L116" id="L112" cla21ef="Documentation/ia64/err_inject.txt#L158" id="9158" cla5ss=91lass="line" name=""L206"> 2202" id="L202" class="line"id_t pid,2unsigned int len, unsign2d lon216umentation/ia64/er203" class=""line" name="L186"> 186        struct {
 204                u64    _ou instalon/ia64/err_inject.txt#L219" i21ef="Documentation/ia6ion/ia64/err_inject.txt#L205" id="L205" class="line" name="L205"> 205                u64      inject entf
 196        struct {
 204                u64    a64/err_innject.txt#L22" id="L22" centat22ef="Documentation/ia6ion/ia64lass="lincumentation/ia6="L205" class="line" name="L205"> 205                u64    tion as parrt of the whole tool. The64/e222umentation/ia64/er203" class="#L199" id="L199" class="line" name="L199"> 199        u64     err_st2test tool.. Or it can be expanded ttxt#L224" id="L124" ion/4/er203" class=[n/ia64/err_inject.txine" name="L126"> 126        va_list args;
2n be a inttegrated into a library oerr_i2ject.ta64/er203" class=""ne" name="L126"> 126        va_list args;
2nia64/err2test.
 116int sched_setaffinity(2a64/err_innject.txt#L27" id="L27" cct.tx2#L127"ct.txt#L203" i class="line"line" name="L203"> 203        struct {
 204                u64    you installl err_inject driver, you"Docu22ef="Documentation/ia6ion/ia64icumentation/ia6d="Le" name="L204"> 204                u64    y inject eerrors.
 204                u64    {
 204                u64    {64/err_inr open:");
 204                u64    {ion as paf="Documentation/ia64/er2_inje2t.txt#L133" id="L133" 4/err_indmentxt#L192" ind="Le" name="L204"> 204                u64    {est tool.  Or it can be expanded toxt#L23ef="Documentation/ia64/err_inmesitxt#L192" ind="Le" name="L204"> 204                u64    { be a intinject.txt#L135" id="L132" cla23ef="Documentation/ia64/err_int.txt#L169" i ind="Le" name="L204"> 204                u64    {ia64/err2ref="Documentation/ia64/2rr_in23ef="Documentation/ia64/err_inject.txt#L191" id=3Le" name="L204"> 204                u64    {64/err_inef="Documentation/ia64/e2r_inj23ef="Documentation/ia64/err_inpaon/ia64/err_ind="Le" name="L204"> 204                u64    {es err.coZE);
 204                u64    {ou instal
 204                u64    { inject ecumentation/ia64/err_inj2ct.tx23ef="Documentation/ia64/err_inject.txt#L195" id="0Le" name="L204"> 204                u64    /ia64/err2inject.txt#L141" id="L142" cla24ef="Documentation/ia64/err_inject.txt#L193" id="Le" name="L204"> 204                u64    eof(buf),21, log);
 204                u64    eion as paumentation/ia64/err_inje2t.txt24.txt#L133" id="L133" 4/err_inject.txt" class=d=3ine" name="L145"> 145}
 175        struct {
 204                u64    n/ia64/er2_inject.txt#L146" id="L126" cl24/
 204                u64    /ia64/err2inject.txt#L147" id="L142" cla24ef="Documentation/ia64/err_inicumentation/ia6d="Le" name="L204"> 204                u64    64;
 204                u64    32;
 204                u64    3 inject einject.txt#L150" id="L152" cla24ef="Documentation/ia64/err_injet.txt#L192" ind="Le" name="L204"> 204                u64    info_u {
2a href="Documentation/ia24/err25ef="Documentation/ia64/err_inject.txt#L191" id="7Le" name="L204"> 204                u64    iof(buf),2tation/ia64/err_inject.t2t#L1525ef="Documentation/ia64/err_inject.txt#L172" id="Le" name="L204"> 204                u64    iion as pa       : 3,    /* 0-2 */2 204                u64     err_inj 2       : 3,    /* 3-5 */2 145}
 186        struct {
 176                u64   2 struct_h2er     : 3,    /* 13-15 2/
 204                u64     4;
 204                u64     2;
 204                u64    i inject e href="Documentation/ia62/err_25ef="Documentation/ia64/err_inbet.txt#L192" ind="Le" name="L204"> 204                u64    ref="Docu2entation/ia64/err_inject2txt#L26ef="Documentation/ia64/err_inpet.txt#L192" ind="Le" name="L204"> 204                u64    rof(buf),2inject.txt#L162" id="L162" cla26ef="Documentation/ia64/err_inaet.txt#L192" ind="Le" name="L204"> 204                u64    rion as pa
 204                u64    rerr_inj 2tation/ia64/err_inject.t2t#L1626="Documentation/ia64/err_injejet.txt#L192" ind="Le" name="L204"> 204                u64    rerr_sev 2       : 1,    /* 0     2/
 204                u64    rerr_stru2       : 2,    /* 1-2   2/
 204                u64    r64/err_injject.txt#L27" id="L27" cl
 204                u64    r4;
 204                u64    r2;
 204                u64    r inject e       : 22,   /* 10-31 2/
 204                u64     tiv     2       : 1,    /* 32    2/
 204                u64     trigger 2       : 4,    /* 33-36 2/
 204                u64     ion as pal      : 3,    /* 37-39 2/
 204                u64     err_inj 2       : 24;   /* 40-63 2/
 204                u64    fo_cache;2 145}
 196        struct {
 197                u64   2 tt      2       : 2,    /* 1-2   2/
 198        } err_struct_i2 tc_tr   2       : 2,    /* 3-4   2/
 199        u64     err_st2 tr_slot 2       : 8,    /* 5-12  2/
 199        u64     err_st2 reserved2       : 19,   /* 13-31 2/
 141        fwrite(buf, si2 tiv     2       : 1,    /* 32    2/
 197                u64   2 trigger 2       : 4,    /* 33-36 2/
 204                u64     trigger_2l      : 3,    /* 37-39 2/
 204                u64     o_cache;2       : 24;   /* 40-63 2/
 204                u64     ="Docume2 href="Documentation/ia62/err_28ef="Documentation/ia6ibr6entation/ia6d="Le" name="L204"> 204                u64     siv     2tation/ia64/err_inject.t2t#L1828ef="Documentation/ia6dbr0entation/ia6d="Le" name="L204"> 204                u64     tt      2       : 1,    /* 0     2/
 204                u64     tc_tr   2d      : 4,    /* 1-4   2/
 204                u64     tr_slot 2       : 7,    /* 5-11  2/
 204                u64     reserved2       : 20,   /* 12-31 2/
 204                u64     tiv     2       : 1,    /* 32    2/
 199        u64     err_st2 trigger 2       : 4,    /* 33-36 2/
 199        u64     err_st2 trigger_2l      : 3,    /* 37-39 2/
 144        return 0;
 122{
 197                u64   2f="Docume2tation/ia64/err_inject.t2t#L192" id="L197" cllass=page_ id==sysassf(_SC_PAGEs="line" name="L138"> 138        vsprintf(buf, 2 reserved2
 138        vsprintf(buf, 2 tc_tr   2cessor_interconnect;
 146
 150typedef union err_type3 href="Do3umentation/ia64/err_inje3t.txt30entation/ia64PAGEt.txt#(get_page_ id=()==-1?0x4000:get_page_ id=()ne" name="L122"> 122{
 122{
 122{
 144        return 0;
 198        } err_struct_i3 inj_addr3               /* 64-1273     3*/
 198        } err_struct_i3 6nj_addr3 ation/ia64/err_inject.t3     30="line" name="L147"> 147typedef unsigned long 3 name="L232"> 202typedef union3ia64/3rr_injtxt#Lreate_ hm(voidne" name="L122"> 122{
 197                u64   3  inject 3048
 198        } err_struct_i3         3       // seconds
 125        char buf[MAX_B3_SIZE    3       // Three 8-byte.
3a hre31="line" name="L202"> 202typedef union err_data3         3
 205                u64   3         3NR_CPUS/64)
 138        vsprintf(buf, 3ot;/sys/d3vices/system/cpu/cpuŵd/err31ef="DocumentaL131(key = ftok id="L#39;sL#39;)) == -1line" name="L131"> 131                perror3/ia64/err3inject.txt#L116" id="L113" cla31ef="Documentation/ia6t.txt#L132" iftokass="line" name="L132"> 132                return3id_t pid,3unsigned int len, unsign3d lon31ef="Documentation/ia6class="line" name="L133"> 133        }
 146
 146
 132                return3 stressfu3l testing on IPF.
 131                perror3a64/err_i3nject.txt#L22" id="L22" 3entat32ef="Documentation/ia6L131eass===EEXISTline" name="L131"> 131                perror3a        3rrt of the whole tool. T3e64/e32ef="Documentation/ia64/err_inahmii = ahmget(key,oSHMt.txt, 0ine" name="L132"> 132                return3         3. Or it can be expanded 3txt#L32ef="Documentation/ia64/err_inL131ahmii == -1line" name="L131"> 131                perror3at;/sys/d3tegrated into a library 3err_i32ef="Documentation/ia64/err_intion/ia6t.txt#L132" iahmgetass="line" name="L132"> 132                return3nia64/err3test.
 133        }
 146
 146
 131                perror3a inject 3errors.
 132                return3{
 133        }
 146
 146
 132                return3{t;/sys/d3inject.txt#L135" id="L133" cla3s="line" name="L135"> 135        va_start(args,3{ia64/err3ref="Documentation/ia64/3rr_in33ef="Documenta/*s=ss="liid="L82"seg> 13:6ine" name="L205"> 205                u64   3{64/err_i3ef="Documentation/ia64/e3r_inj33ef="Documentaahmect. = ahmat1ahmii, (void *)SHMtVA, 0ine" name="L132"> 132                return3{es err.c3ZE);
 131                perror3{ou insta3
 132                return3{ inject 3cumentation/ia64/err_inj3ct.tx33ef="Documentation/ia6jlass="line" name="L133"> 133        }
 146
 202typedef union err_data3eion as p3umentation/ia64/err_inje3t.txt34.txt#L133" idxt#L138ahmect.d="L1SHMt.txtine" name="L132"> 132                return3/ia64/err3inject.txt#L144" id="L143" cla3434" class="limlock8ahmect.d=SHMt.txtine" name="L132"> 132                return3/t;/sys/d3ntation/ia64/err_inject.3xt#L134="line" name="L135"> 135        va_start(args,3n/ia64/er3_inject.txt#L146" id="L136" cl34/
 145}
 146
 128        sprintf(fn, &q332;
 122{
 131                perror3info_u {
3a href="Documentation/ia34/err35ef="Documentamunlock8ahmect.d=SHMt.txtine" name="L132"> 132                return3iof(buf),3tation/ia64/err_inject.t3t#L153" id="L152" clahmd38ahmect.ine" name="L132"> 132                return3iion as p3       : 3,    /* 0-2 */3 132                return3iia64/err3       : 3,    /* 3-5 */3 144        return 0;
 145}
 146
 147typedef unsigned long 3 4;
 147typedef unsigned long 3 2;
 147typedef unsigned long 3  inject 3 href="Documentation/ia63/err_35ef="Dne" name="L131"> 131                perror3ref="Docu3entation/ia64/err_inject3txt#L36ef="Documenta" claalne" name="L145"> 145}
 145}
 198        } err_struct_i3rerr_inj 3tation/ia64/err_inject.t3t#L163" id="L164" class="liseminfo *__bufne" name="L145"> 145}
 145}
 120
 147typedef unsigned long 3r4;
 205                u64   3r2;
 133        }
 125        char buf[MAX_B3 tiv     3       : 1,    /* 32    3/
 125        char buf[MAX_B3 of(buf),3       : 4,    /* 33-36 3/
 202typedef union err_data3 ion as p3l      : 3,    /* 37-39 3/
 122{
 131                perror3fo_cache;3 125        char buf[MAX_B3 err_stru3tation/ia64/err_inject.t3t#L1737nject.txt#L126" idL125" class="line" name="L125"> 125        char buf[MAX_B3 siv     3       : 1,    /* 0     3/
 198        } err_struct_i3 tt      3       : 2,    /* 1-2   3/
 128        sprintf(fn, &q3 tc_tr   3       : 2,    /* 3-4   3/
 129        log=fopen(fn, 3 tr_slot 3       : 8,    /* 5-12  3/
 132                return3 reserved3       : 19,   /* 13-31 3/
 131                perror3 tiv     3       : 1,    /* 32    3/
 132                return3 trigger 3       : 4,    /* 33-36 3/
 133        }
 134
 135        va_start(args,3 ="Docume3 href="Documentation/ia63/err_38ef="DocumentaL131aemid[="l]!=0ne" name="L122"> 122{
 145}
 128        sprintf(fn, &q3 tc_tr   3d      : 4,    /* 1-4   3/
 205                u64   3 tr_slot 3       : 7,    /* 5-11  3/
 205                u64   3 reserved3       : 20,   /* 12-31 3/
 132                return3 tiv     3       : 1,    /* 32    3/
 202typedef union err_data3 trigger 3       : 4,    /* 33-36 3/
 205                u64   3 trigger_3l      : 3,    /* 37-39 3/
 131                perror3 reserved3       : 24;   /* 40-63 3/
 132                return3fo_regist3r;
 132                return3fsiv     3tation/ia64/err_inject.t3t#L1939ef="Documentation/ia64/err_in(u64)key[="l]ine" name="L132"> 132                return3ftt      3
 133        }
 133        }
 150typedef union err_type4 href="Do4umentation/ia64/err_inje4t.txt40ef="Documentat#L120" L132" iaemid[9" id=]=0x9" idlx,"key[9" id=]=9" idlx\n9" clas="l,(u64)semid[="l]s="l,e" name="L150"> 150typedef union err_type4 1ref="Do4u      : 1,    /* 32    4" cla40ef="Documentation/ia6(u64)key[="l]ine" name="L132"> 132                return4/2a64/err4i      : 4,    /* 33-36 4a64/e40="Documentati/*sinitialize"L82"semaphore6tola: ine" name="L205"> 205                u64   4/3a64/err4i      : 3,    /* 37-39 4t#L204" id="L204" cls=".val = ine" name="L133"> 133        }
 131                perror4 inj_addr4               /* 64-1274     4*/
 132                return4 6nj_addr4 ation/ia64/err_inject.t4     4*/
 133        }
 202typedef union4ia64/407id="L204" clne" name="L146"> 146
 146
 145}
 146
 202typedef union err_data4         4
 122{
 131                perror4ot;/sys/d4vices/system/cpu/cpuŶd/err41" id="L145" cass="liaembuf 145}
 116int sched_setaffinity(4id_t pid,4unsigned int len, unsign4d lon41 id="L197" cllack.aemt.txt=#L12ne" name="L145"> 145}
 133        }
 132                return4_ inject 4ntf
 150typedef union err_type4 stressfu4l testing on IPF.
 145}
 146
 199        u64     err_st4         4. Or it can be expanded 4txt#L42ef="Ds02 122{
 131                perror4nia64/err4test.
 145}
 147typedef unsigned long 4kes err.c4onf as error configurati4" cla42ef="Documentaunlock.aemt.txt=#L12ne" name="L145"> 145}
 133        }
 132                return4{
 141        fwrite(buf, si4{64/err_i4r open:");
 145}
 146
 144        return 0;
 122{
 197                u64   4{64/err_i4ef="Documentation/ia64/e4r_inj43ef="Documentaaemctl1aemid[="l]s="L1IPC_RMIDine" name="L132"> 132                return4{es err.c4ZE);
 146
 146
 122{
 197                u64   4eof(buf),41, log);
 198        } err_struct_i4eion as p4umentation/ia64/err_inje4t.txt44.txt#L133" id6" idbuf25" cBUFss="line" name="L125"> 125        char buf[MAX_B4/ia64/err4inject.txt#L144" id="L144" cla4434" class="li" cllasne" name="L125"> 125        char buf[MAX_B4/t;/sys/d4ntation/ia64/err_inject.4xt#L144="line" name="L135"> 135        va_start(args,4n/ia64/er4_inject.txt#L146" id="L146" cl44ef="DocumentaL131aid===1le" name="L205"> 205                u64   4/ia64/err4inject.txt#L147" id="L144" cla44ef="Documentation/ia6err_injebuf.txt#L129" idlx9" class*dataine" name="L132"> 132                return4ees err.c4f="Documentation/ia64/er4_inje44ef="DocumentaelseiL131aid===3le" name="L205"> 205                u64   4/ou insta4f="Documentation/ia64/er4_inje44ef="Documentation/ia6err_injebuf.txt#L129" idlx,9" idlx,9" idlx9" classdata[0]ssdata[1]ssdata[2]ine" name="L132"> 132                return43 inject 4inject.txt#L150" id="L154" cla44ef="Documentaelseine" name="L131"> 131                perror4info_u {
4a href="Documentation/ia44/err45ef="Documentation/ia6frr_injestd   ,9" clawrite6tolt.tx6withiwrass=aid=!\n9" claine" name="L132"> 132                return4iof(buf),4tation/ia64/err_inject.t4t#L1545ef="Documentation/ia6jlass="line" name="L133"> 133        }
 146
 144        return 0;
 132                return4i/ia64/er4t      : 5,    /* 8-12 *4
 131                perror4 struct_h4er     : 3,    /* 13-15 4/
 132                return4ies err.c4       : 48;   /* 16-63 4/
 133        }
 133        }
 132                return4ref="Docu4entation/ia64/err_inject4txt#L46ef="Documentaclose(fdine" name="L132"> 132                return4rof(buf),4inject.txt#L162" id="L164" cla46tation/ia64/elass="llasne" name="L125"> 125        char buf[MAX_B4rion as p4
 146
 144        return 0;
 144        return 0;
 197                u64   4r64/err_i4jject.txt#L27" id="L27" 4l
 132                return4r4;
 146
 146
 144        return 0;
 197                u64   4 of(buf),4       : 4,    /* 33-36 4/
 198        } err_struct_i4 ion as p4l      : 3,    /* 37-39 4/
 125        char buf[MAX_B4 err_inj 4       : 24;   /* 40-63 4/
 144        return 0;
 132                return4 err_stru4tation/ia64/err_inject.t4t#L1747ef="DocumentaL131fd<0line" name="L131"> 131                perror4 siv     4       : 1,    /* 0     4/
 132                return4 tt      4       : 2,    /* 1-2   4/
 133        }
 133        }
 132                return4 reserved4       : 19,   /* 13-31 4/
 132                return4 of(buf),4       : 1,    /* 32    4/
 132                return4 trigger 4       : 4,    /* 33-36 4/
 145}
 133        }
 135        va_start(args,4 ="Docume4 href="Documentation/ia64/err_48ef="Dtxt#rd_s02 144        return 0;
 131                perror4 tt      4       : 1,    /* 0     4/
 125        char buf[MAX_B4 tc_tr   4d      : 4,    /* 1-4   4/
 132                return4 tr_slot 4       : 7,    /* 5-11  4/
 131                perror4 reserved4       : 20,   /* 12-31 4/
 132                return4 tiv     4       : 1,    /* 32    4/
 133        }
 146
 144        return 0;
 145}
 146
 147typedef unsigned long 4ftt      4
 144        return 0;
 197                u64   4 tr_slot 4 125        char buf[MAX_B5 href="Do5umentation/ia64/err_inje5t.txt50ef="Documentaerr_inject.txt#L129" ids/ class="line9" classpathine" name="L132"> 132                return5 1ref="Do5u      : 1,    /* 32    5" cla50ef="DocumentaL131rd(ct.t class="linei<0line" name="L131"> 131                perror5/2a64/err5i      : 4,    /* 33-36 5a64/e50ef="Documentation/ia6t.txt#L132" i class="lineilaadt#L6.txt#.\n9" claine" name="L132"> 132                return5/3a64/err5i      : 3,    /* 37-39 5t#L2050ef="Documentation/ia6jlass="line" name="L133"> 133        }
 146
 116int sched_setaffinity(5 6nj_addr5 ation/ia64/err_inject.t5     50ef="Documentalass="line" name="L145"> 145}
 202typedef union5ia64/50r_injne" name="L146"> 146
 146
 144        return 0;
 197                u64   5_SIZE    5       // Three 8-byte.
5a hre51ef="Documenta="L149" class=    " class=",=    ass="lass=",=    data_buffline" name="L196"> 196        struct {
 196        struct {
 196        struct {
 125        char buf[MAX_B5 inj_addr5inject.txt#L116" id="L115" cla51="line" name="L116"> 116int sched_setaffinity(5id_t pid,5unsigned int len, unsign5d lon51 id="L197" clerr_inject.txt#L129" ids/    " class="9" classpathine" name="L132"> 132                return5 name="L25inject.txt#L118" id="L115" cla51r_inject     L131rd(ct.tLamp;    " class="i<0line" name="L131"> 131                perror5_ou insta5on/ia64/err_inject.txt#L519" i51ef="Documentation/ia6t.txt#L132" i    " class="ilaadt#L6.txt#.\n9" claine" name="L132"> 132                return5_ inject 5ntf
 133        }
 146
 132                return5a        5rrt of the whole tool. T5e64/e52ef="De" name="L199"> 199        u64     err_st5         5. Or it can be expanded 5txt#L52ef="Documentaerr_inject.txt#L129" ids/    ass="lass="9" classpathine" name="L132"> 132                return5at;/sys/d5tegrated into a library 5err_i52ef="DocumentaL131rd(ct.tLamp;    ass="lass="i<0line" name="L131"> 131                perror5nia64/err5test.
 132                return5ad_t pid,5nject.txt#L27" id="L27" 5ct.tx52ef="Documentation/ia6jlass="line" name="L133"> 133        }
 146
 133        }
 150typedef union err_type5{
 132                return5{64/err_i5r open:");
 131                perror5{ion as p5f="Documentation/ia64/er5_inje53ef="Documentation/ia6t.txt#L132" i    data_buffliilaadt#L6.txt#.\n9" claine" name="L132"> 132                return5{        5  Or it can be expanded 5oxt#L53ef="Documentation/ia6jlass="line" name="L133"> 133        }
 146
 133        }
 147typedef unsigned long 5{es err.c5ZE);
 132                return5{ou insta5
 131                perror5{ inject 5cumentation/ia64/err_inj5ct.tx53ef="Documentation/ia6t.txt#L132" ia02 132                return5/ia64/err5inject.txt#L141" id="L145" cla54ef="Documentation/ia6jeass="line" name="L133"> 133        }
 146
 133        }
 144        return 0;
 132                return5n/ia64/er5_inject.txt#L146" id="L156" cl54ef="DocumentaL131rd(ct.Lamp; class="linei<0line" name="L131"> 131                perror5/ia64/err5inject.txt#L147" id="L145" cla54ef="Documentation/ia6t.txt#L132" i class="lineilaadt#L6.txt#.\n9" claine" name="L132"> 132                return5ees err.c5f="Documentation/ia64/er5_inje54ef="Documentation/ia6jlass="line" name="L133"> 133        }
 133        }
 133        }
 141        fwrite(buf, si5iof(buf),5tation/ia64/err_inject.t5t#L155" id="L152" clarr_inject.txt#L129" ids/laslass=s9" classpathine" name="L132"> 132                return5iion as p5       : 3,    /* 0-2 */5 131                perror5iia64/err5       : 3,    /* 3-5 */5 132                return5 err_sev 5       : 2,    /* 6-7 */5 133        }
 133        }
 133        }
 128        sprintf(fn, &q5iou insta5f="Documentation/ia64/er5_inje55cumentation/ilass="line" name="L145"> 145}
 133        }
 141        fwrite(buf, si5rof(buf),5inject.txt#L162" id="L165" cla56tatio);
 141        fwrite(buf, si5rion as p5
 144        return 0;
 131                perror5rerr_sev 5       : 1,    /* 0     5/
 125        char buf[MAX_B5r/ia64/er5       : 2,    /* 1-2   5/
 125        char buf[MAX_B5rstruct_h5jject.txt#L27" id="L27" 5l
 196        struct {
 128        sprintf(fn, &q5r2;
 145}
 133        }
 141        fwrite(buf, si5 of(buf),5       : 4,    /* 33-36 5/
 132                return5 ion as p5l      : 3,    /* 37-39 5/
 132                return5 err_inj 5       : 24;   /* 40-63 5/
 132                return5fo_cache;5 132                return5 err_stru5tation/ia64/err_inject.t5t#L1757ef="Documentaerr_inject.txt#L129" ids/    data_buffli9" classpathine" name="L132"> 132                return5 siv     5       : 1,    /* 0     5/
 132                return5 4;
 128        sprintf(fn, &q5 tc_tr   5       : 2,    /* 3-4   5/
 128        sprintf(fn, &q5  inject 5       : 8,    /* 5-12  5/
 132                return5 reserved5       : 19,   /* 13-31 5/
 132                return5 of(buf),5       : 1,    /* 32    5/
 202typedef union err_data5 trigger 5       : 4,    /* 33-36 5/
 202typedef union err_data5 err_inj 5l      : 3,    /* 37-39 5/
 133        }
 135        va_start(args,5 ="Docume5 href="Documentation/ia65/err_58/
 145}
 146
 128        sprintf(fn, &q5 tc_tr   5d      : 4,    /* 1-4   5/
 202typedef union err_data5  inject 5       : 7,    /* 5-11  5/
 131                perror5 reserved5       : 20,   /* 12-31 5/
 196        struct {
 196        struct {
 196        struct {
 145}
 145}
 125        char buf[MAX_B5fsiv     5tation/ia64/err_inject.t5t#L1959="line" name="L147"> 147typedef unsigned long 5ftt      5
 147typedef unsigned long 5ftc_tr   5cessor_interconnect;
 147typedef unsigned long 5f inject 5 145}
 141        fwrite(buf, si6 1ref="Do6u      : 1,    /* 32    6" cla60ef="DocumentaL120" L132" iAll/ class="line imple> 14edi" spal_mc_.txt#printf(:\n9" claine" name="L132"> 132                return6/2a64/err6i      : 4,    /* 33-36 6a64/e60ef="Documentaerr_injepath,l 132                return6/3a64/err6i      : 3,    /* 37-39 6t#L2060ef="Documentafor (    aev=in    aev<3n    aev++le" name="L202"> 202typedef union err_data6 trigger_6ddr;           /* 0-63  6     60ef="Documentation/ia6for (    ass="l=in    ass="l<5n    ass="l++le" name="L202"> 202typedef union err_data6 5rigger_6d;
 202typedef union err_data6 6rigger_6dation/ia64/err_inject.t6     60ef="Documentane" name="L131"> 131                perror6 name="L262"> 202typedef union6ia64/60ef="Documentation/ia6a02 133        }
 145}
 145}
 145}
 196        struct {
 199        u64     err_st6 3a64/err6NR_CPUS/64)
 202typedef union err_data6 trigger_6vices/system/cpu/cpuŸd/err61ef="Documentation/ia6tion/ia6 ontinut;e" name="L147"> 147typedef unsigned long 6 inj_addr6inject.txt#L116" id="L116" cla61="line" name="L116"> 116int sched_setaffinity(6id_t pid,6unsigned int len, unsign6d lon61ef="Documentation/ia6L131rd_s02 116int sched_setaffinity(6iname="L26inject.txt#L118" id="L116" cla61ef="Documentation/ia6tion/ia6 ontinut;e" name="L147"> 147typedef unsigned long 6 ou insta6on/ia64/err_inject.txt#L619" i61ef="De" name="L146"> 146
 131                perror6 stressfu6l testing on IPF.
 133        }
 132                return6a        6rrt of the whole tool. T6e64/e62ef="Documentation/ia64/err_innnnnnnnn    aevs=    ass="l,lass="l_hiliine" name="L132"> 132                return6         6. Or it can be expanded 6txt#L62ef="Documentation/ia666666666L120" L132" i class="line 0x9" idlx\n9" clas= class="lineine" name="L133"> 133        }
 146
 133        }
 131                perror6 name="L26onf as error configurati6" cla62ef="Documentation/ia6L120" L132" iNo/ class="line suppor4ed.\n9" claine" name="L132"> 132                return6kou insta6ll err_inject driver, yo6"Docu62ef="Documentation/ia6lass="line" name="L145"> 145}
 133        }
 141        fwrite(buf, si6{64/err_i6r open:");
 145}
 146
 144        return 0;
 141        fwrite(buf, si6{ia64/err6ref="Documentation/ia64/6rr_in63/
 141        fwrite(buf, si6{d_t pid,6ef="Documentation/ia64/e6r_inj63ef="Documentation/ia6    data_buffli_t=    data_bufflile" name="L116"> 116int sched_setaffinity(6{es err.c6ZE);
 131                perror6{ou insta6
 196        struct {
 125        char buf[MAX_B6/ia64/err6inject.txt#L141" id="L146" cla64="line" name="L141"> 141        fwrite(buf, si6eof(buf),61, log);
 132                return6eion as p6umentation/ia64/err_inje6t.txt64ef="Documentation/ia6    " class=".    " class="se" name="L132"> 132                return6e        6inject.txt#L144" id="L146" cla64ef="Documentation/ia6    ass="lass=".    ass="lass="ine" name="L132"> 132                return6/t;/sys/d6ntation/ia64/err_inject.6xt#L1644_inject     logass="(L12,132" i    data_buffli=[9" idlx,9" idlx,9" idlx]\n9" clase" name="L132"> 132                return6n/ia64/er6_inject.txt#L146" id="L166" cl64/
 132                return6nd_t pid,6inject.txt#L147" id="L146" cla64ef="Documentation/ia6    data_buffli.    data_buffli[1]se" name="L132"> 132                return6nes err.c6f="Documentation/ia64/er6_inje64ef="Documentation/ia6    data_buffli.    data_buffli[2]ine" name="L132"> 132                return6/ou insta6f="Documentation/ia64/er6_inje64ntation/ia64/err_inject.txt#L129" ids/    " class="9" classpathine" name="L132"> 132                return63 inject 6inject.txt#L150" id="L156" cla64ef="Documentawrect.t    " class=".    " class="ine" name="L132"> 132                return6info_u {
6a href="Documentation/ia64/err65ef="Documentaerr_inject.txt#L129" ids/    ass="lass="9" classpathine" name="L132"> 132                return6iof(buf),6tation/ia64/err_inject.t6t#L156" id="L152" clwrect.t    ass="lass=".    ass="lass="ine" name="L132"> 132                return6iion as p6       : 3,    /* 0-2 */6 132                return6iia64/err6       : 3,    /* 3-5 */6 132                return6 err_sev 6       : 2,    /* 6-7 */6 135        va_start(args,6i/ia64/er6t      : 5,    /* 8-12 *6
 128        sprintf(fn, &q6 struct_h6er     : 3,    /* 13-15 6/
 132                return6ies err.c6       : 48;   /* 16-63 6/
 132                return6iou insta6f="Documentation/ia64/er6_inje65ef="De" name="L146"> 146
 131                perror6ref="Docu6entation/ia64/err_inject6txt#L66ef="Documentation/ia6t#L120" L132" ifail:ilaadla02 132                return6rof(buf),6inject.txt#L162" id="L166" cla66ef="Documentation/ia6jlass="li0ine" name="L145"> 145}
 146
 144        return 0;
 131                perror6r/ia64/er6       : 2,    /* 1-2   6/
 133        }
 196        struct {
 146
 146
 196        struct {
 146
 202typedef union err_data6 ion as p6l      : 3,    /* 37-39 6/
 141        fwrite(buf, si6 err_inj 6       : 24;   /* 40-63 6/
 141        fwrite(buf, si6fo_cache;6 141        fwrite(buf, si6f/ia64/er6tation/ia64/err_inject.t6t#L1767/
 205                u64   6 siv     6       : 1,    /* 0     6/
 131                perror6 4;
 125        char buf[MAX_B6 tc_tr   6       : 2,    /* 3-4   6/
 125        char buf[MAX_B6  inject 6       : 8,    /* 5-12  6/
 150typedef union err_type6 reserved6       : 19,   /* 13-31 6/
 125        char buf[MAX_B6 of(buf),6       : 1,    /* 32    6/
 133        }
 199        u64     err_st6 err_inj 6l      : 3,    /* 37-39 6/
 131                perror6 o_cache;6       : 24;   /* 40-63 6/
 131                perror6 /ia64/er6 href="Documentation/ia66/err_68/
 131                perror6 siv     6tation/ia64/err_inject.t6t#L1868ef="Documentation/ia6ocumentation/ia6case 1:a//Virtual addre" name="L131"> 131                perror6 4;
 133        }
 133        }
 131                perror6 reserved6       : 20,   /* 12-31 6/
 132                return6 tiv     6       : 1,    /* 32    6/
 133        }
 116int sched_setaffinity(6 trigger_6l      : 3,    /* 37-39 6/
 133        }
 132                return6 /ia64/er6r;
 132                return6 siv     6tation/ia64/err_inject.t6t#L1969ef="Documentation/ia6ocumentation/ia666666666blaakne" name="L133"> 133        }
 133        }
 132                return6f inject 6 133        }
 146
 133        }
 133        }
 133        }
 133        }
 133        }
 133        }
 133        }
 132                return7 9u insta71a href="Documentation/i7n/ia670ef="Documentation/ia6tion/ia6blaakne" name="L133"> 133        }
 146
 202typedef union err_data7         7
 145}
 133        }
 135        va_start(args,7 inj_addr7inject.txt#L116" id="L117" cla71="lin" cldeflass="line" name="L131"> 131                perror7id_t pid,7unsigned int len, unsign7d lon71ef="Documentaion/ pune" name="L145"> 145}
 145}
 145}
 145}
 125        char buf[MAX_B7a64/err_i7nject.txt#L22" id="L22" 7entat72ef="Documentaion/    data_buffli[ERR_DATAcBUFFERt.txtine" name="L125"> 125        char buf[MAX_B7a        7rrt of the whole tool. T7e64/e72ef="D} parool
ers_lne" name="L145"> 145}
 144        return 0;
 145}
 145}
 147typedef unsigned long 7 name="L27onf as error configurati7" cla72ef="Ds02 116int sched_setaffinity(7kou insta7ll err_inject driver, yo7"Docu72ef="Dne" name="L197"> 197                u64   7  inject 7errors.
 133        }
 133        }
 202typedef union err_data7{ion as p7f="Documentation/ia64/er7_inje73ef="Documentafor (i=0;i<ERR_DATAcBUFFERt.txt; i++le" name="L202"> 202typedef union err_data7{        7  Or it can be expanded 7oxt#L73ef="DocumentatioL131    data_buffli[i]!=-1le" name="L205"> 205                u64   7{t;/sys/d7inject.txt#L135" id="L137" cla73ef="Documentation/ia6 mpty=ine" name="L145"> 145}
 116int sched_setaffinity(7{d_t pid,7ef="Documentation/ia64/e7r_inj73ef="Documentalass="l mptyne" name="L145"> 145}
 146
 146
 202typedef union err_data7/ia64/err7inject.txt#L141" id="L147" cla74ef="Dne" name="L197"> 197                u64   7eof(buf),71, log);
 196        struct {
 196        struct {
 196        struct {
 145}
 145}
 145}
 125        char buf[MAX_B7/ou insta7f="Documentation/ia64/er7_inje74ef="DocumentaL clnumne" name="L125"> 125        char buf[MAX_B7/ inject 7inject.txt#L150" id="L157" cla74ef="Documenta);
 133        }
 125        char buf[MAX_B7iof(buf),7tation/ia64/err_inject.t7t#L157" id="L152" clparool
ers_l parool
ers25" cTASK_NUM]={}ne" name="L125"> 125        char buf[MAX_B7iion as p7       : 3,    /* 0-2 */7 125        char buf[MAX_B7i        7       : 3,    /* 3-5 */7 125        char buf[MAX_B7it;/sys/d7       : 2,    /* 6-7 */7 196        struct {
 116int sched_setaffinity(7 struct_h7er     : 3,    /* 13-15 7/
 131                perror7ies err.c7       : 48;   /* 16-63 7/
 132                return7iou insta7f="Documentation/ia64/er7_inje75ef="DocumentationL131fp==NULLline" name="L131"> 131                perror7i inject 7 href="Documentation/ia67/err_75ef="Documentation/ia6t.txt#L132" iEtxt# open    .conf9" claine" name="L132"> 132                return7ref="Docu7entation/ia64/err_inject7txt#L76ef="Documentation/ia6jlass="line" name="L133"> 133        }
 146
 199        u64     err_st7rerr_inj 7tation/ia64/err_inject.t7t#L1676ef="Documentationnum=ine" name="L145"> 145}
 131                perror7r/ia64/er7       : 2,    /* 1-2   7/
 125        char buf[MAX_B7rstruct_h7jject.txt#L27" id="L27" 7l
 132                return7res err.c7       : 3,    /* 6-8   7/
 132                return7rou insta7       : 1,    /* 9     7/
 132                return7r inject 7       : 22,   /* 10-31 7/
 132                return7 tiv     7       : 1,    /* 32    7/
 132                return7 of(buf),7       : 4,    /* 33-36 7/
 132                return7 ion as p7l      : 3,    /* 37-39 7/
 132                return7 err_inj 7       : 24;   /* 40-63 7/
 132                return7fo_cache;7 131                perror7f/ia64/er7tation/ia64/err_inject.t7t#L1777/
 133        }
 133        }
 133        }
 132                return7  inject 7       : 8,    /* 5-12  7/
 132                return7 reserved7       : 19,   /* 13-31 7/
 132                return7 of(buf),7       : 1,    /* 32    7/
 202typedef union err_data7 trigger 7       : 4,    /* 33-36 7/
 147typedef unsigned long 7 err_inj 7l      : 3,    /* 37-39 7/
 146
 135        va_start(args,7 /ia64/er7 href="Documentation/ia67/err_78/
 145}
 145}
 145}
 145}
 145}
 145}
 145}
 145}
 144        return 0;
 202typedef union err_data7 /ia64/er7r;
 133        }
 146
 146
 131                perror7f inject 7 145}
 145}
 145}
 145}
 196        struct {
 196        struct {
 145}
 145}
 128        sprintf(fn, &q8 ou insta812
 133        }
 133        }
 141        fwrite(buf, si8 1ref="Do8       // Three 8-byte.
8a hre81ef="Documenta/* Claate semaphore: If o a_lock, o a semaphoreafor allaL1ocessors.e" name="L128"> 128        sprintf(fn, &q8         8
 128        sprintf(fn, &q8 3ref="Do8NR_CPUS/64)
 131                perror8 trigger_8vices/system/cpu/cpuźd/err81ef="Documentation/ia6L131 laate_sem(0)line" name="L131"> 131                perror8 inj_addr8inject.txt#L116" id="L118" cla81/
 132                return8id_t pid,8unsigned int len, unsign8d lon81ef="Documentation/ia666666666free_sem(0)ne" name="L132"> 132                return8i7ref="Do8inject.txt#L118" id="L118" cla81ef="Documentation/ia6tion/ia6jlass="line" name="L133"> 133        }
 133        }
 133        }
 131                perror8a64/err_i8nject.txt#L22" id="L22" 8entat82ef="Documentation/ia6for (i=0;i<numni++line" name="L131"> 131                perror8a        8rrt of the whole tool. T8e64/e82ef="Documentation/ia64/eL131 laate_sem(parool
ers2i]. 12)line" name="L131"> 131                perror8         8. Or it can be expanded 8txt#L82ef="Documentation/ia666666666L120" L132" iCan not claate semaphore6for  129" id=...exil\n9" cla,i)ne" name="L132"> 132                return8at;/sys/d8tegrated into a library 8err_i82ef="Documentation/ia666666666free_sem(parool
ers2num]. 12)ne" name="L132"> 132                return8ainj_addr8test.
 133        }
 133        }
 133        }
 133        }
 150typedef union err_type8{
  .txt#s o .*/e" name="L128"> 128        sprintf(fn, &q8{64/err_i8r open:");
 131                perror8{ion as p8f="Documentation/ia64/er8_inje83ef="Documentation/ia6L120" L132" iEtxt# to claate shm...exil\n9" claine" name="L132"> 132                return8{        8  Or it can be expanded 8oxt#L83ef="Documentation/ia6jlass="line" name="L133"> 133        }
 133        }
 116int sched_setaffinity(8{d_t pid,8ef="Documentation/ia64/e8r_inj83ef="Documentafor (i=0;i<numni++line" name="L131"> 131                perror8{name="L28ZE);
 133        }
 146
 133        }
 133        }
s:\n9" claine" name="L132"> 132                return8eion as p8umentation/ia64/err_inje8t.txt84ef="Documentation/ia6logass="(parool
ers2i]. 12,9" claOn  129" idld: loop=9" idlxs=);
erval=9" idlx(s)9" clase" name="L132"> 132                return8e        8inject.txt#L144" id="L148" cla84ef="Documentation/ia6tion/ia6parool
ers2i]. 12,e" name="L132"> 132                return8et;/sys/d8ntation/ia64/err_inject.8xt#L184ef="Documentation/ia666666666parool
ers2i].loop,e" name="L132"> 132                return8eia64/err8_inject.txt#L146" id="L186" cl84/
 132                return8ed_t pid,8inject.txt#L147" id="L148" cla84ef="Documentation/ia6logass="(parool
ers2i]. 12,9" clal    " class="=9" idlxs    ass="lass="=9" idlx\n9" clase" name="L132"> 132                return8nname="L28f="Documentation/ia64/er8_inje84ef="Documentation/ia666666666parool
ers2i].    " class="se" name="L132"> 132                return8nou insta8f="Documentation/ia64/er8_inje84ef="Documentation/ia666666666Larool
ers2i].    ass="lass="ine" name="L132"> 132                return8/ inject 8inject.txt#L150" id="L158" cla84="line" name="L150"> 150typedef union err_type8info_u {
8a href="Documentation/ia84/err85ef="Documentation/ia6err_injepath,lPATH_FORMAT, .txt)parool
ers2i]. 12)ne" name="L132"> 132                return8iof(buf),8tation/ia64/err_inject.t8t#L1585ef="Documentation/ia6    " class=".    " class="=parool
ers2i].    " class="ne" name="L132"> 132                return8iion as p8       : 3,    /* 0-2 */8 196        struct {
 145}
 145}
 133        }
 147typedef unsigned long 8ies err.c8       : 48;   /* 16-63 8/
 133        }
 131                perror8i inject 8 href="Documentation/ia68/err_85ef="Documentation/ia666666666="L149" class=mask[MASK_s="line" name="L125"> 125        char buf[MAX_B8ref="Docu8entation/ia64/err_inject8txt#L86ef="Documentation/ia6tionnnnnLnt j, kne" name="L133"> 133        }
 202typedef union err_data8rion as p8
 133        }
 144        return 0;
 128        sprintf(fn, &q8r/ia64/er8       : 2,    /* 1-2   8/
 128        sprintf(fn, &q8rstruct_h8jject.txt#L27" id="L27" 8l
 128        sprintf(fn, &q8res err.c8       : 3,    /* 6-8   8/
 128        sprintf(fn, &q8rou insta8       : 1,    /* 9     8/
 133        }
 133        }
 133        }
 202typedef union err_data8 ion as p8l      : 3,    /* 37-39 8/
 202typedef union err_data8 err_inj 8       : 24;   /* 40-63 8/
 202typedef union err_data8 err_sev 8 202typedef union err_data8 /ia64/er8tation/ia64/err_inject.t8t#L1787/
 128        sprintf(fn, &q8 siv     8       : 1,    /* 0     8/
 145}
 125        char buf[MAX_B8 ou insta8       : 2,    /* 3-4   8/
 146
 202typedef union err_data8 reserved8       : 19,   /* 13-31 8/
 145}
 202typedef union err_data8 trigger 8       : 4,    /* 33-36 8/
 145}
 145}
 145}
 133        }
 147typedef unsigned long 8 4;
 131                perror8 ou insta8d      : 4,    /* 1-4   8/
 132                return8  inject 8       : 7,    /* 5-11  8/
 133        }
 133        }
 202typedef union err_data8 trigger 8       : 4,    /* 33-36 8/
 131                perror8 err_inj 8l      : 3,    /* 37-39 8/
 9" claine" name="L132"> 132                return8 reserved8       : 24;   /* 40-63 8/
 132                return8 /ia64/er8r;
 116int sched_setaffinity(8 siv     8tation/ia64/err_inject.t8t#L1989ef="Documentation/ia6ocumentation/ia666666666parool
ers2i]. 12,j+1,6parool
ers2i].loopine" name="L132"> 132                return8 4;
 128        sprintf(fn, &q8ftc_tr   8cessor_interconnect;
 128        sprintf(fn, &q8f inject 8 128        sprintf(fn, &q9 href="Do9umentation/ia64/err_inje9t.txt90ef="Documentation/ia6666666666666666666666666lock(0)ne" name="L132"> 132                return9 1ref="Do9u      : 1,    /* 32    9" cla90ef="Documentation/ia66666666666666666 lsee" name="L132"> 132                return9 2ref="Do9u      : 4,    /* 33-36 9a64/e90ef="Documentation/ia66666666666666666/* Hold lock6on this  126*/e" name="L128"> 128        sprintf(fn, &q9 3ref="Do9u      : 3,    /* 37-39 9t#L2090ef="Documentation/ia6666666666666666666666666lock(parool
ers2i]. 12)ne" name="L132"> 132                return9 4ref="Do9u      : 24;   /* 40-63 9     90="line" name="L135"> 135        va_start(args,9 5ref="Do9u;
 135        va_start(args,9 6ref="Do9uation/ia64/err_inject.t9     90ef="Documentation/ia6666666666666666666666666666path,l    " class=",e" name="L145"> 145}
 202typedef union err_data9 ou insta912
 131                perror9 9u insta91a href="Documentation/i9n/ia690ef="Documentation/ia6tion/ia66666666666666666/* cona">  the .txt#nfor 9" cla      6only9" cla*/e" name="L128"> 128        sprintf(fn, &q9         9       // seconds
 133        }
 133        }
 133        }
 132                return9 trigger_9vices/system/cpu/cpuŻd/err91ef="Documentation/ia66666666666666666ae" name="L133"> 133        }
 131                perror9id_t pid,9unsigned int len, unsign9d lon91ef="Documentation/ia6666666666666666666666666logass="(parool
ers2i]. 12,9" clafail:9" claine" name="L132"> 132                return9i7ref="Do9inject.txt#L118" id="L119" cla91ef="Documentation/ia6tion/ia66666666666666666logass="(parool
ers2i]. 12,e" name="L132"> 132                return9iou insta9on/ia64/err_inject.txt#L919" i91ef="Documentation/ia6666666666666666666666666666666669" clas02 132                return9i9u insta9ntf
 132                return9 stressfu9l testing on IPF.
 133        }
 133        }
 128        sprintf(fn, &q9         9. Or it can be expanded 9txt#L92ef="Documentation/ia66666666666666666/* Release the lock6*/e" name="L128"> 128        sprintf(fn, &q9at;/sys/d9tegrated into a library 9err_i92ef="Documentation/ia6666666666666666666666666unlock(0)ne" name="L132"> 132                return9ainj_addr9test.
 128        sprintf(fn, &q9 d_t pid,9nject.txt#L27" id="L27" 9ct.tx92ef="Documentation/ia66666666666666666 lsee" name="L132"> 132                return9 7ref="Do9onf as error configurati9" cla92ef="Documentation/ia6666666666666666666666666unlock(parool
ers2i]. 12)ne" name="L132"> 132                return9 ou insta9ll err_inject driver, yo9"Docu92ef="De" name="L146"> 146
 205                u64   9{
 132                return9{64/err_i9r open:");
 133        }
 133        }
 133        }
 145}
 133        }
 131                perror9{name="L29ZE);
 132                return9{ou insta9
 147typedef unsigned long 9{ inject 9cumentation/ia64/err_inj9ct.tx93ef="Documentation/ia6ae" name="L133"> 133        }
 133        }
 133        }
 133        }
 132                return9et;/sys/d9ntation/ia64/err_inject.9xt#L194="line" name="L135"> 135        va_start(args,9eia64/err9_inject.txt#L146" id="L196" cl94/
 128        sprintf(fn, &q9ed_t pid,9inject.txt#L147" id="L149" cla94ef="Documentation/ia6free_sem(0)ne" name="L132"> 132                return9nname="L29f="Documentation/ia64/er9_inje94ef="Documenta lsee" name="L132"> 132                return9nou insta9f="Documentation/ia64/er9_inje94ef="Documentation/ia6for (i=0;i<numni++le" name="L133"> 133        }
 132                return9info_u {
9a href="Documentation/ia94/err95="line" name="L141"> 141        fwrite(buf, si9iof(buf),9tation/ia64/err_inject.t9t#L159" id="L152" clp120" L132" iAll do a.\n9" claine" name="L132"> 132                return9iion as p9       : 3,    /* 0-2 */9 199        u64     err_st9i        9       : 3,    /* 3-5 */9 145}
 133        }
 116int sched_setaffinity(9 struct_h9er     : 3,    /* 13-15 9/
 202typedef union err_data9ies err.c9       : 48;   /* 16-63 9/
 131                perror9 ou insta9f="Documentation/ia64/er9_inje95ef="Documentap120" L132" i          _tool:\n9" claine" name="L132"> 132                return9i inject 9 href="Documentation/ia69/err_95ef="Documentap120" L132" i\t-q: query all capabilities. default: off\n9" claine" name="L132"> 132                return9ref="Docu9entation/ia64/err_inject9txt#L96ef="Documentap120" L132" i\t-m:aL1ocedure mode. 1:aLhysical 2: virtual. default: 1\n9" claine" name="L132"> 132                return9rof(buf),9inject.txt#L162" id="L169" cla96 id="L152" clp120" L132" i\t-i: ion er .txt#s. default: off\n9" claine" name="L132"> 132                return9rion as p9
 132                return9r        9tation/ia64/err_inject.t9t#L1696ef="Documentap120" L132" i\t-e: .txt#nparool
ers:\n9" claine" name="L132"> 132                return9rerr_sev 9       : 1,    /* 0     9/
 132                return9ria64/err9       : 2,    /* 1-2   9/
 132                return9rstruct_h9jject.txt#L27" id="L27" 9l
 132                return9res err.c9       : 3,    /* 6-8   9/
 132                return9rou insta9       : 1,    /* 9     9/
 132                return9r inject 9       : 22,   /* 10-31 9/
al. If not pres 13,\n9" claine" name="L132"> 132                return9 tiv     9       : 1,    /* 32    9/
 132                return9 of(buf),9       : 4,    /* 33-36 9/
 132                return9 ion as p9l      : 3,    /* 37-39 9/
 13.\n9" claine" name="L132"> 132                return9 err_inj 9       : 24;   /* 40-63 9/
 132                return9 err_sev 9 132                return9 ia64/err9tation/ia64/err_inject.t9t#L1797/
 132                return9 siv     9       : 1,    /* 0     9/
 132                return9 es err.c9       : 2,    /* 1-2   9/
 132                return9 ou insta9       : 2,    /* 3-4   9/
 132                return9  inject 9       : 8,    /* 5-12  9/
 132                return9 reserved9       : 19,   /* 13-31 9/
 133        }
 202typedef union err_data9 trigger 9       : 4,    /* 33-36 9/
 202typedef union err_data9 err_inj 9l      : 3,    /* 37-39 9/
 131                perror9 err_sev 9       : 24;   /* 40-63 9/
 132                return9 ia64/err9     : 1,    /* 32    8/9/err_9ntati9 7ref="Dn/ia64/er1,  gvle" name="L202"> 202}
 202}
 202}
 202}
 150typedef union err_t9oc8 reser9ed8       : 20,   /* 12-91 8/
99t83ef="DocumentaD. defalt: o a lock6for aon  12飖*/e" name="L128"> 128        sprintf(fn, oc8 tiv  9  8       : 1,    /* 32 9  8/
9a 79ef="Docume131o a_lnum=ine" name="L133"> 133        }
 202typedef union err_daor8 err_i9j 8l      : 3,    /* 37-99 8/
9a 89ef="Documentation/sng ch (ct;0line" name="L131"> 131                perrrn8 reser9ed8       : 24;   /* 40-93 8/
9a 89ef="Documentation/ia6tion/celea 12&#m 12&#:"DocumentaP:aL1ocedure mode. 1:aLcal 2: v9126*/e" name="L128"> 128        sprintf(fn, on9 ia64/eer8r;
 132                retuy(8 siv  9  8tation/ia64/err_injec9.t8t#91989ef="Documentation/ia6ocumentation/666L131 oun1 || (mun1 me(Lame(La mun2 12)line" name="L131"> 131                per9rn8 4;
 132                retu&q8ftc_tr9  8cessor_interconnect;
9a 8re9="89ef="Documentation/ia6666666666666666666666id hellaine" name="L132"> 132                retu&n9  inject 8 133        }
10&q92ef="Documentation/ia66666666666666666/pre>
ine" name="L133"> 133        }
 202}
10&e92ef="Documentation/ia64/eeeeeeeeeee666blaakne" name="L133"> 133        }
 128        sprintf(fn,10&49 href=10&d8       : 24;   /* 40-10&d8>10&i92ef="Documentation/ia66666666666666/ia64/er1, ="line" name="L133"> 133        }
10&479/
 133        }
 128        sprintf(fn,10&79 href=10&r8
 133        }
 133        }
10&r89ef="Documentation/ia6ocumecelea 12&#v 12&#:"DocumentaV: verbe126*/e" name="L128"> 128        sprintf(fn,101q9 href=10  9       // seconds
10  89ef="Documentation/ia66666666666666v: verb ="line" name="L133"> 133        }
 133        }
10 e93ef="Documentation/ia6666666elea 12&#l 12&#:"DocumentaO: o a lock6t.t e126*/e" name="L128"> 128        sprintf(fn,10139 href=10Do9NR_CPUS/64)
 202}
10 i92ef="Documentation/ia66666666666666666blaakne" name="L133"> 133        }
x9126*/e" name="L128"> 128        sprintf(fn,10169 href=10d,9unsigned int len, uns10d,9>10 989ef="Documentation/ia6ocumentation/ntat: Tat#nparool
e6*/e" name="L128"> 128        sprintf(fn,10179 href=10Do9inject.txt#L118" id="10Do9>10 a92ef="Documentation/ia666666666666666* #i]. 112,lot in);
erath,l    " class=",6    ass="las[s=",n    data_buf]6*/e" name="L128"> 128        sprintf(fn,10189 href=10ta9on/ia64/err_inject.tx10ta9>10 "89ef="Documentation/ia666666666666666*iden    data_buffis o. OpaReofacend If ntonot spey6*/e" name="L128"> 128        sprintf(fn,10199 href=10ta9ntf
 128        sprintf(fn,102q9 href=10fu9l testing on IPF.
10fu89ef="Documentation/ia6ocumentation//*26*/e" name="L128"> 128        sprintf(fn,10219 href=10_i9nject.txt#L22" id="L210_i9>10ft92ef="Documentation/ia66666666666666c66 ounl=sscaoptd**b6*/e" name="L128"> 128        sprintf(fn,10229 href=10  9rrt of the whole tool10  9>10fe91ef="Documentatiooooooooooooooooooooooooooof, xt#L129" idlL129" idlL129" idlL129" idlL129" idlL129" idlL129" idlL129" idlx\n9" clase" name="L132"> 132                ret10f39 href=10  9. Or it can be expand10  9>10fa91ef="Documentation/ia6666666666666666666666me(Lacan o a_paro.clase" name="L132"> 132                ret10f49 href=10/d9tegrated into a libra10/d9>10fi92ef="Documentation/ia6666666666666666666666me(Lacan o a_pai].loop,e" name="L132"> 132                ret10f59 href=10dr9test.
 132                ret10f69 href=10d,9nject.txt#L27" id="L210d,9>10fn91ef="Documentation/ia6666666666666666666666me(Lacan o a_pah,l    " classop,e" name="L132"> 132                ret10f79 href=10Do9onf as error configur10Do9>10fa92ef="Documentation/ia6666666666666666666666me(Lacan o a_pah,l    ass="lassop,e" name="L132"> 132                ret10f89 href=10ta9ll err_inject driver,10ta9>10f"89ef="Documentation/ia6666666666666666666666me(Lacan o a_pah,l    data_buffli[op,e" name="L132"> 132                ret10f99 href=10ta9errors.
 132                ret103q9 href=10ef9"Documentation/ia64/e10ef9>10ef89ef="Documentation/ia6ocumentation/////////me(Lacan o a_pah,l    data_buff2]llaine" name="L132"> 132                ret10e19 href=10_i9r open:");
10et92ef="Documentation/ia66666666666666666L131 ounPARA_FIELD_NUM+312)line" name="L131"> 131                per10e29 href=10 p9f="Documentation/ia6410 p9>10ee91ef="Documentatiooooooooooooooooooooooocan o a_pah,l    data_buffli=-1[op,e" name="L132"> 132                ret10339 href=10  9  Or it can be expand10  9>10ea91ef="Documentation/ia666666666666666666can o a_pah,l    data_buff1i=-1[op,e" name="L132"> 132                ret10349 href=10/d9inject.txt#L135" id="10/d9>10ei92ef="Documentation/ia666666666666666666can o a_pah,l    data_buff2]=s="line" name="L133"> 133        }
10e787/
 132                ret10369 href=10d,9ef="Documentation/ia610d,9>10e 90ef="Documentation/ia666666666666666666666666666666me(Lacan o a_paro.clase" name="L132"> 132                ret10379 href=10L29ZE);
 132                ret10389 href=10ta9
 132                ret10399 href=10t 9cumentation/ia64/err_10t 9>10er89ef="Documentation/ia6ocumentation/////////666666666e(Lacan o a_pah,l    " classop,e" name="L132"> 132                ret104q9 href=10rr9inject.txt#L141" id="10rr9>10rr89ef="Documentation/ia6ocumentation/////////666666666e(Lacan o a_pah,l    ass="lass="ine" name="L132"> 132                ret10r19 href=10_i91, log);
 131                per10429 href=10 p9umentation/ia64/err_i10 p9>10re91ef="Documentatiooooooooooooooooooooooooooontap120" L132Wr clake    d**133">xlel.\n9" claine" name="L132"> 132                ret10r39 href=10  9inject.txt#L144" id="10  9>10ra91ef="Documentation/ia6666666666666666666666id hellaine" name="L132"> 132                ret10r49 href=10/d9ntation/ia64/err_inje10/d9>10ri92ef="Documentation/ia6666666666666666666666ia6jlass="line" name="L133"> 133        }
10r787/
 133        }
 133        }
10r/90ef="Documentation/ia66666666666666 a_p ="line" name="L133"> 133        }
10r"89ef="Documentation/ia66666666666666666blaakne" name="L133"> 133        }
 147typedef unsigned lo105q9 href=10{
9a href="Documentation10{
9>10{
89ef="Documentation/ia66666666666666666blaakne" name="L133"> 133        }
 133        }
 132                ret10539 href=10  9       : 3,    /* 3-510  9>10{a91ef="Documentation/ia66666666666666ntalass="line" name="L145"> 145}
 145}
 133        }
 133        }
 128        sprintf(fn,10{89 href=10ta9f="Documentation/ia6410ta9>10{"89ef="Docume666Ldcne354onparrgvle" name="L202"> 202typedef union err_d10{99 href=10t 9 href="Documentation/10t 9>10{r89ef="Documentation/e354onpar_ll capabilitellaine" name="L132"> 132                ret106q9 href=10cu9entation/ia64/err_inj10cu9>10cu89ef="Docume666Ldcn       rgvle" name="L202"> 202typedef union err_d10619 href=10),9inject.txt#L162" id="10),9>10c585ef="Documentation/ia6  unellaine" name="L132"> 132                ret10629 href=10 p9
 199        u64     err10c39 href=10  9tation/ia64/err_injec10  9>10c389ef="Docume666L!dcne354onpar me(Lame(La  !dcn       rgvle" name="L202"> 202typedef union err_d10649 href=10v 9       : 1,    /* 0  10v 9>10ci92ef="Documentation/id hellaine" name="L132"> 132                ret10659 href=10rr9       : 2,    /* 1-210rr9>10ch95="line" name="L116"> 116int sched_setaffini10c69 href=10_h9jject.txt#L27" id="L210_h9>10c 90ef="Documentalass="line" name="L145"> 145}
 133        }
 146

" iToriginal LXR softwareled b iT"De" namehttp://sourceforge.net/pro"Docs/lx;">LXR ofacuffin89ef,6on thexperi46"> l6v: s46lx;@ 22ux.no89ef.
lx;. 22ux.no kindly hoss="led "De" namehttp://www.redpill- 22pro.no">Redpill L22pro AS89ef,6to L1ovread L22ux6/* coltorkiommaoperlo46