Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  *  Copyright (c) 2008 Silicon Graphics, Inc.  All Rights Reserved.
0003  *
0004  *  This program is free software; you can redistribute it and/or modify
0005  *  it under the terms of the GNU Lesser General Public License as published by
0006  *  the Free Software Foundation; either version 2.1 of the License, or
0007  *  (at your option) any later version.
0008  *
0009  *  This program is distributed in the hope that it will be useful,
0010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0012  *  GNU Lesser General Public License for more details.
0013  *
0014  *  You should have received a copy of the GNU Lesser General Public License
0015  *  along with this program; if not, write to the Free Software
0016  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
0017  */
0018 
0019 #ifndef __GRU_H__
0020 #define __GRU_H__
0021 
0022 /*
0023  * GRU architectural definitions
0024  */
0025 #define GRU_CACHE_LINE_BYTES        64
0026 #define GRU_HANDLE_STRIDE       256
0027 #define GRU_CB_BASE         0
0028 #define GRU_DS_BASE         0x20000
0029 
0030 /*
0031  * Size used to map GRU GSeg
0032  */
0033 #if defined(CONFIG_IA64)
0034 #define GRU_GSEG_PAGESIZE   (256 * 1024UL)
0035 #elif defined(CONFIG_X86_64)
0036 #define GRU_GSEG_PAGESIZE   (256 * 1024UL)      /* ZZZ 2MB ??? */
0037 #else
0038 #error "Unsupported architecture"
0039 #endif
0040 
0041 /*
0042  * Structure for obtaining GRU resource information
0043  */
0044 struct gru_chiplet_info {
0045     int node;
0046     int chiplet;
0047     int blade;
0048     int total_dsr_bytes;
0049     int total_cbr;
0050     int total_user_dsr_bytes;
0051     int total_user_cbr;
0052     int free_user_dsr_bytes;
0053     int free_user_cbr;
0054 };
0055 
0056 /*
0057  * Statictics kept for each context.
0058  */
0059 struct gru_gseg_statistics {
0060     unsigned long   fmm_tlbmiss;
0061     unsigned long   upm_tlbmiss;
0062     unsigned long   tlbdropin;
0063     unsigned long   context_stolen;
0064     unsigned long   reserved[10];
0065 };
0066 
0067 /* Flags for GRU options on the gru_create_context() call */
0068 /* Select one of the follow 4 options to specify how TLB misses are handled */
0069 #define GRU_OPT_MISS_DEFAULT    0x0000  /* Use default mode */
0070 #define GRU_OPT_MISS_USER_POLL  0x0001  /* User will poll CB for faults */
0071 #define GRU_OPT_MISS_FMM_INTR   0x0002  /* Send interrupt to cpu to
0072                        handle fault */
0073 #define GRU_OPT_MISS_FMM_POLL   0x0003  /* Use system polling thread */
0074 #define GRU_OPT_MISS_MASK   0x0003  /* Mask for TLB MISS option */
0075 
0076 
0077 
0078 #endif      /* __GRU_H__ */