Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/asm/mpspec_def.h
Line
Count
Source (jump to first uncovered line)
1
#ifndef __ASM_MPSPEC_DEF_H
2
#define __ASM_MPSPEC_DEF_H
3
4
/*
5
 * Structure definitions for SMP machines following the
6
 * Intel Multiprocessing Specification 1.1 and 1.4.
7
 */
8
9
/*
10
 * This tag identifies where the SMP configuration
11
 * information is. 
12
 */
13
 
14
3.62k
#define SMP_MAGIC_IDENT (('_'<<24)|('P'<<16)|('M'<<8)|'_')
15
16
#define MAX_MPC_ENTRY 1024
17
26
#define MAX_APICS     MAX(256, 4 * NR_CPUS)
18
19
struct intel_mp_floating
20
{
21
  char mpf_signature[4];    /* "_MP_"       */
22
  unsigned int  mpf_physptr;  /* Configuration table address  */
23
  unsigned char mpf_length; /* Our length (paragraphs)  */
24
  unsigned char mpf_specification;/* Specification version  */
25
  unsigned char mpf_checksum; /* Checksum (makes sum 0) */
26
  unsigned char mpf_feature1; /* Standard or configuration ?  */
27
  unsigned char mpf_feature2; /* Bit7 set for IMCR|PIC  */
28
  unsigned char mpf_feature3; /* Unused (0)     */
29
  unsigned char mpf_feature4; /* Unused (0)     */
30
  unsigned char mpf_feature5; /* Unused (0)     */
31
};
32
33
struct mp_config_table
34
{
35
  char mpc_signature[4];
36
#define MPC_SIGNATURE "PCMP"
37
  unsigned short mpc_length;  /* Size of table */
38
  char  mpc_spec;     /* 0x01 */
39
  char  mpc_checksum;
40
  char  mpc_oem[8];
41
  char  mpc_productid[12];
42
  unsigned int  mpc_oemptr; /* 0 if not present */
43
  unsigned short mpc_oemsize; /* 0 if not present */
44
  unsigned short mpc_oemcount;
45
  unsigned int  mpc_lapic;  /* APIC address */
46
  unsigned int  reserved;
47
};
48
49
/* Followed by entries */
50
51
12
#define MP_PROCESSOR  0
52
0
#define MP_BUS    1
53
2
#define MP_IOAPIC 2
54
3
#define MP_INTSRC 3
55
0
#define MP_LINTSRC  4
56
#define MP_TRANSLATION  192  /* Used by IBM NUMA-Q to describe node locality */
57
58
struct mpc_config_processor
59
{
60
  unsigned char mpc_type;
61
  unsigned char mpc_apicid; /* Local APIC number */
62
  unsigned char mpc_apicver;  /* Its versions */
63
  unsigned char mpc_cpuflag;
64
24
#define CPU_ENABLED   1  /* Processor is available */
65
25
#define CPU_BOOTPROCESSOR 2  /* Processor is the BP */
66
  unsigned int  mpc_cpufeature;   
67
#define CPU_STEPPING_MASK 0x0F
68
#define CPU_MODEL_MASK  0xF0
69
#define CPU_FAMILY_MASK 0xF00
70
  unsigned int  mpc_featureflag;  /* CPUID feature value */
71
  unsigned int  mpc_reserved[2];
72
};
73
74
struct mpc_config_bus
75
{
76
  unsigned char mpc_type;
77
  unsigned char mpc_busid;
78
  unsigned char mpc_bustype[6];
79
};
80
81
/* List of Bus Type string values, Intel MP Spec. */
82
#define BUSTYPE_EISA  "EISA"
83
#define BUSTYPE_ISA "ISA"
84
#define BUSTYPE_INTERN  "INTERN"  /* Internal BUS */
85
#define BUSTYPE_MCA "MCA"
86
#define BUSTYPE_VL  "VL"    /* Local bus */
87
#define BUSTYPE_PCI "PCI"
88
#define BUSTYPE_PCMCIA  "PCMCIA"
89
#define BUSTYPE_CBUS  "CBUS"
90
#define BUSTYPE_CBUSII  "CBUSII"
91
#define BUSTYPE_FUTURE  "FUTURE"
92
#define BUSTYPE_MBI "MBI"
93
#define BUSTYPE_MBII  "MBII"
94
#define BUSTYPE_MPI "MPI"
95
#define BUSTYPE_MPSA  "MPSA"
96
#define BUSTYPE_NUBUS "NUBUS"
97
#define BUSTYPE_TC  "TC"
98
#define BUSTYPE_VME "VME"
99
#define BUSTYPE_XPRESS  "XPRESS"
100
#define BUSTYPE_NEC98 "NEC98"
101
102
struct mpc_config_ioapic
103
{
104
  unsigned char mpc_type;
105
  unsigned char mpc_apicid;
106
  unsigned char mpc_apicver;
107
  unsigned char mpc_flags;
108
2
#define MPC_APIC_USABLE   0x01
109
  unsigned int  mpc_apicaddr;
110
};
111
112
struct mpc_config_intsrc
113
{
114
  unsigned char mpc_type;
115
  unsigned char mpc_irqtype;
116
  unsigned short mpc_irqflag;
117
  unsigned char mpc_srcbus;
118
  unsigned char mpc_srcbusirq;
119
  unsigned char mpc_dstapic;
120
  unsigned char mpc_dstirq;
121
};
122
123
enum mp_irq_source_types {
124
  mp_INT = 0,
125
  mp_NMI = 1,
126
  mp_SMI = 2,
127
  mp_ExtINT = 3
128
};
129
130
#define MP_IRQDIR_DEFAULT 0
131
#define MP_IRQDIR_HIGH    1
132
#define MP_IRQDIR_LOW   3
133
134
135
struct mpc_config_lintsrc
136
{
137
  unsigned char mpc_type;
138
  unsigned char mpc_irqtype;
139
  unsigned short mpc_irqflag;
140
  unsigned char mpc_srcbusid;
141
  unsigned char mpc_srcbusirq;
142
  unsigned char mpc_destapic; 
143
720
#define MP_APIC_ALL 0xFF
144
  unsigned char mpc_destapiclint;
145
};
146
147
struct mp_config_oemtable
148
{
149
  char oem_signature[4];
150
#define MPC_OEM_SIGNATURE "_OEM"
151
  unsigned short oem_length;  /* Size of table */
152
  char  oem_rev;      /* 0x01 */
153
  char  oem_checksum;
154
  char  mpc_oem[8];
155
};
156
157
struct mpc_config_translation
158
{
159
        unsigned char mpc_type;
160
        unsigned char trans_len;
161
        unsigned char trans_type;
162
        unsigned char trans_quad;
163
        unsigned char trans_global;
164
        unsigned char trans_local;
165
        unsigned short trans_reserved;
166
};
167
168
/*
169
 *  Default configurations
170
 *
171
 *  1 2 CPU ISA 82489DX
172
 *  2 2 CPU EISA 82489DX neither IRQ 0 timer nor IRQ 13 DMA chaining
173
 *  3 2 CPU EISA 82489DX
174
 *  4 2 CPU MCA 82489DX
175
 *  5 2 CPU ISA+PCI
176
 *  6 2 CPU EISA+PCI
177
 *  7 2 CPU MCA+PCI
178
 */
179
180
enum mp_bustype {
181
  MP_BUS_ISA = 1,
182
  MP_BUS_EISA,
183
  MP_BUS_PCI,
184
  MP_BUS_MCA,
185
  MP_BUS_NEC98
186
};
187
#endif
188