cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

gru.h (2258B)


      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__ */