linux/drivers/misc/sgi-gru/gru.h
<<
>>
Prefs
   1/*
   2 *  Copyright (c) 2008 Silicon Graphics, Inc.  All Rights Reserved.
   3 *
   4 *  This program is free software; you can redistribute it and/or modify
   5 *  it under the terms of the GNU Lesser General Public License as published by
   6 *  the Free Software Foundation; either version 2.1 of the License, or
   7 *  (at your option) any later version.
   8 *
   9 *  This program is distributed in the hope that it will be useful,
  10 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 *  GNU Lesser General Public License for more details.
  13 *
  14 *  You should have received a copy of the GNU Lesser General Public License
  15 *  along with this program; if not, write to the Free Software
  16 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  17 */
  18
  19#ifndef __GRU_H__
  20#define __GRU_H__
  21
  22/*
  23 * GRU architectural definitions
  24 */
  25#define GRU_CACHE_LINE_BYTES            64
  26#define GRU_HANDLE_STRIDE               256
  27#define GRU_CB_BASE                     0
  28#define GRU_DS_BASE                     0x20000
  29
  30/*
  31 * Size used to map GRU GSeg
  32 */
  33#if defined(CONFIG_IA64)
  34#define GRU_GSEG_PAGESIZE       (256 * 1024UL)
  35#elif defined(CONFIG_X86_64)
  36#define GRU_GSEG_PAGESIZE       (256 * 1024UL)          /* ZZZ 2MB ??? */
  37#else
  38#error "Unsupported architecture"
  39#endif
  40
  41/*
  42 * Structure for obtaining GRU resource information
  43 */
  44struct gru_chiplet_info {
  45        int     node;
  46        int     chiplet;
  47        int     blade;
  48        int     total_dsr_bytes;
  49        int     total_cbr;
  50        int     total_user_dsr_bytes;
  51        int     total_user_cbr;
  52        int     free_user_dsr_bytes;
  53        int     free_user_cbr;
  54};
  55
  56/*
  57 * Statictics kept for each context.
  58 */
  59struct gru_gseg_statistics {
  60        unsigned long   fmm_tlbmiss;
  61        unsigned long   upm_tlbmiss;
  62        unsigned long   tlbdropin;
  63        unsigned long   context_stolen;
  64        unsigned long   reserved[10];
  65};
  66
  67/* Flags for GRU options on the gru_create_context() call */
  68/* Select one of the follow 4 options to specify how TLB misses are handled */
  69#define GRU_OPT_MISS_DEFAULT    0x0000  /* Use default mode */
  70#define GRU_OPT_MISS_USER_POLL  0x0001  /* User will poll CB for faults */
  71#define GRU_OPT_MISS_FMM_INTR   0x0002  /* Send interrupt to cpu to
  72                                           handle fault */
  73#define GRU_OPT_MISS_FMM_POLL   0x0003  /* Use system polling thread */
  74#define GRU_OPT_MISS_MASK       0x0003  /* Mask for TLB MISS option */
  75
  76
  77
  78#endif          /* __GRU_H__ */
  79