patch-2.4.19 linux-2.4.19/include/asm-ia64/sn/bte.h
Next file: linux-2.4.19/include/asm-ia64/sn/bte_copy.h
Previous file: linux-2.4.19/include/asm-ia64/sn/ate_utils.h
Back to the patch index
Back to the overall index
- Lines: 93
- Date:
Fri Aug 2 17:39:45 2002
- Orig file:
linux-2.4.18/include/asm-ia64/sn/bte.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -urN linux-2.4.18/include/asm-ia64/sn/bte.h linux-2.4.19/include/asm-ia64/sn/bte.h
@@ -0,0 +1,92 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (c) 2001-2002 Silicon Graphics, Inc. All rights reserved.
+ */
+
+#ifndef _ASM_IA64_SN_BTE_H
+#define _ASM_IA64_SN_BTE_H
+
+#ident "$Revision: 1.1 $"
+
+#include <linux/spinlock.h>
+#include <linux/cache.h>
+#include <asm/sn/io.h>
+
+#define L1_CACHE_MASK (L1_CACHE_BYTES - 1) /* Mask to retrieve
+ * the offset into this
+ * cache line.*/
+
+/* BTE status register only supports 16 bits for length field */
+#define BTE_LEN_BITS (16)
+#define BTE_LEN_MASK ((1 << BTE_LEN_BITS) - 1)
+#define BTE_MAX_XFER ((1 << BTE_LEN_BITS) * L1_CACHE_BYTES)
+
+
+/*
+ * Constants used in determining the best and worst case transfer
+ * times. To help explain the two, the following graph of transfer
+ * status vs time may help.
+ *
+ * active +------------------:-+ :
+ * status | : | :
+ * idle +__________________:_+=======
+ * 0 Time MaxT MinT
+ *
+ * Therefore, MaxT is the maximum thoeretical rate for transfering
+ * the request block (assuming ideal circumstances)
+ *
+ * MinT is the minimum theoretical rate for transferring the
+ * requested block (assuming maximum link distance and contention)
+ *
+ * The following defines are the inverse of the above. They are
+ * used for calculating the MaxT time and MinT time given the
+ * number of lines in the transfer.
+ */
+#define BTE_MAXT_LINES_PER_SECOND 800
+#define BTE_MINT_LINES_PER_SECOND 600
+
+
+/* Define hardware */
+#define BTES_PER_NODE 2
+
+/* Define hardware modes */
+#define BTE_NOTIFY (IBCT_NOTIFY)
+#define BTE_NORMAL BTE_NOTIFY
+#define BTE_ZERO_FILL (BTE_NOTIFY | IBCT_ZFIL_MODE)
+
+/* Use a reserved bit to let the caller specify a wait for any BTE */
+#define BTE_WACQUIRE (0x4000)
+
+/*
+ * Structure defining a bte. An instance of this
+ * structure is created in the nodepda for each
+ * bte on that node (as defined by BTES_PER_NODE)
+ * This structure contains everything necessary
+ * to work with a BTE.
+ */
+typedef struct bteinfo_s {
+ u64 volatile notify ____cacheline_aligned;
+ char *bte_base_addr ____cacheline_aligned;
+ spinlock_t spinlock;
+ u64 idealTransferTimeout;
+ u64 idealTransferTimeoutReached;
+ u64 mostRecentSrc;
+ u64 mostRecentDest;
+ u64 mostRecentLen;
+ u64 mostRecentMode;
+ u64 volatile *mostRecentNotification;
+ void *bteTestBuf;
+} bteinfo_t;
+
+/* Possible results from bte_copy and bte_unaligned_copy */
+typedef enum {
+ BTE_SUCCESS, /* 0 is success */
+ BTEFAIL_NOTAVAIL, /* BTE not available */
+ BTEFAIL_ERROR, /* Generic error */
+ BTEFAIL_DIR /* Diretory error */
+} bte_result_t;
+
+#endif /* _ASM_IA64_SN_BTE_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)