39 DPRINT(
"Int: type %d, pol %d, trig %d, bus %d,"
40 " IRQ %02x, APIC ID %x, APIC INT %02x\n",
41 m->IrqType,
m->IrqFlag & 3,
42 (
m->IrqFlag >> 2) & 3,
m->SrcBusId,
43 m->SrcBusIrq,
m->DstApicId,
m->DstApicInt);
46 DPRINT1(
"Max # of irq sources exceeded!!\n");
62 "80486SX",
"80486DX/2 or 80487",
63 "80486SL",
"Intel5X2(tm)",
68 return (
"Pentium(tm) Pro");
70 return (
"Pentium(tm)");
71 if (
Family == 0x0F && Model == 0x0F)
72 return(
"Special controller");
73 if (
Family == 0x0F && Model == 0x00)
74 return(
"Pentium 4(tm)");
75 if (
Family == 0x04 && Model < 9)
77 sprintf(
str,
"Unknown CPU with family ID %ld and model ID %ld",
Family, Model);
90 DPRINT(
"Processor #%d %s APIC version %d\n",
96 if (
m->FeatureFlags & (1 << 0))
97 DPRINT(
" Floating point unit present.\n");
98 if (
m->FeatureFlags & (1 << 7))
99 DPRINT(
" Machine Exception supported.\n");
100 if (
m->FeatureFlags & (1 << 8))
101 DPRINT(
" 64 bit compare & exchange supported.\n");
102 if (
m->FeatureFlags & (1 << 9))
103 DPRINT(
" Internal APIC present.\n");
104 if (
m->FeatureFlags & (1 << 11))
105 DPRINT(
" SEP present.\n");
106 if (
m->FeatureFlags & (1 << 12))
107 DPRINT(
" MTRR present.\n");
108 if (
m->FeatureFlags & (1 << 13))
109 DPRINT(
" PGE present.\n");
110 if (
m->FeatureFlags & (1 << 14))
111 DPRINT(
" MCA present.\n");
112 if (
m->FeatureFlags & (1 << 15))
113 DPRINT(
" CMOV present.\n");
114 if (
m->FeatureFlags & (1 << 16))
115 DPRINT(
" PAT present.\n");
116 if (
m->FeatureFlags & (1 << 17))
117 DPRINT(
" PSE present.\n");
118 if (
m->FeatureFlags & (1 << 18))
119 DPRINT(
" PSN present.\n");
120 if (
m->FeatureFlags & (1 << 19))
121 DPRINT(
" Cache Line Flush Instruction present.\n");
123 if (
m->FeatureFlags & (1 << 21))
124 DPRINT(
" Debug Trace and EMON Store present.\n");
125 if (
m->FeatureFlags & (1 << 22))
126 DPRINT(
" ACPI Thermal Throttle Registers present.\n");
127 if (
m->FeatureFlags & (1 << 23))
128 DPRINT(
" MMX present.\n");
129 if (
m->FeatureFlags & (1 << 24))
130 DPRINT(
" FXSR present.\n");
131 if (
m->FeatureFlags & (1 << 25))
132 DPRINT(
" XMM present.\n");
133 if (
m->FeatureFlags & (1 << 26))
134 DPRINT(
" Willamette New Instructions present.\n");
135 if (
m->FeatureFlags & (1 << 27))
136 DPRINT(
" Self Snoop present.\n");
138 if (
m->FeatureFlags & (1 << 29))
139 DPRINT(
" Thermal Monitor present.\n");
153 if (
m->ApicId > MAX_CPU)
155 DPRINT(
"Processor #%d INVALID. (Max ID: %d).\n",
m->ApicId, MAX_CPU);
158 ver =
m->ApicVersion;
165 DPRINT(
"BIOS bug, APIC version is 0 for CPU#%d! fixing up to 0x10. (tell your hw vendor)\n",
m->ApicId);
178 static UCHAR CurrentPCIBusId = 0;
180 DPRINT(
"Bus #%d is %.*s\n",
m->BusId, 6,
m->BusType);
202 DPRINT(
"Unknown bustype %.*s - ignoring\n", 6,
m->BusType);
212 DPRINT(
"I/O APIC #%d Version %d at 0x%lX.\n",
213 m->ApicId,
m->ApicVersion,
m->ApicAddress);
216 DPRINT(
"Max # of I/O APICs (%d) exceeded (found %d).\n",
218 DPRINT1(
"Recompile with bigger MAX_IOAPIC!.\n");
232 DPRINT(
"Lint: type %d, pol %d, trig %d, bus %d,"
233 " IRQ %02x, APIC ID %x, APIC LINT %02x\n",
234 m->IrqType,
m->SrcBusIrq & 3,
235 (
m->SrcBusIrq >> 2) & 3,
m->SrcBusId,
236 m->SrcBusIrq,
m->DstApicId,
m->DstApicLInt);
244 if ((
m->IrqType ==
INT_EXTINT) && (
m->DstApicLInt != 0))
246 DPRINT1(
"Invalid MP table!\n");
249 if ((
m->IrqType ==
INT_NMI) && (
m->DstApicLInt != 1))
251 DPRINT1(
"Invalid MP table!\n");
271 DPRINT1(
"Bad MP configuration block signature: %c%c%c%c\n",
272 pc[0], pc[1], pc[2], pc[3]);
273 KeBugCheckEx(HAL_INITIALIZATION_FAILED, pc[0], pc[1], pc[2], pc[3]);
279 DPRINT1(
"Bad MP configuration block checksum\n");
284 if (
Table->Specification != 0x01 &&
Table->Specification != 0x04)
286 DPRINT1(
"Bad MP configuration table version (%d)\n",
287 Table->Specification);
292 if (
Table->LocalAPICAddress != APIC_DEFAULT_BASE)
294 DPRINT1(
"APIC base address is at 0x%X. I cannot handle non-standard addresses\n",
295 Table->LocalAPICAddress);
300 DPRINT(
"Oem: %.*s, ProductId: %.*s\n", 8,
Table->Oem, 12,
Table->ProductId);
301 DPRINT(
"APIC at: %08x\n",
Table->LocalAPICAddress);
347 DPRINT1(
"Unknown entry in MPC table\n");
367 for (
i = 0;
i < 16;
i++) {
370 if (
i == 0 ||
i == 13)
411 for (
i = 0;
i < 2;
i++)
415 processor.
CpuFlags &= ~CPU_FLAG_BSP;
423 DPRINT(
"Unknown standard configuration %d\n",
Type);
465 for (
i = 0;
i < 2;
i++)
496 DPRINT(
"Found MPF signature at %x, checksum %x\n", bp, Checksum);
500 DPRINT(
"Intel MultiProcessor Specification v1.%d compliant system.\n",
505 DPRINT(
"Running in IMCR and PIC compatibility mode.\n");
509 DPRINT(
"Running in Virtual Wire compatibility mode.\n");
522 DPRINT(
"EISA with no IRQ8 chaining\n");
563 DPRINT(
"Running in IMCR and PIC compatibility mode.\n");
568 DPRINT(
"Running in Virtual Wire compatibility mode.\n");
576 DPRINT(
"BIOS bug, MP table errors detected!...\n");
577 DPRINT(
"... disabling SMP support. (tell your hw vendor)\n");
584 DPRINT(
"BIOS bug, no explicit IRQ entries, using default mptable. (tell your hw vendor)\n");
623 DPRINT(
"No multiprocessor compliant system found.\n");
636 DPRINT(
"No MP config table found\n");
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
IOAPIC_INFO IOAPICMap[MAX_IOAPIC]
MP_CONFIGURATION_INTSRC IRQMap[MAX_IRQ_SOURCE]
#define IOAPIC_DEFAULT_BASE
#define memcpy(s1, s2, n)
#define sprintf(buf, format,...)
static VOID HaliMPIntLocalInfo(PMP_CONFIGURATION_INTLOCAL m)
static VOID HaliMPBusInfo(PMP_CONFIGURATION_BUS m)
static UCHAR MPChecksum(PUCHAR Base, ULONG Size)
BOOLEAN HaliFindSmpConfig(VOID)
static VOID HaliMPIntSrcInfo(PMP_CONFIGURATION_INTSRC m)
static VOID HaliConstructDefaultIOIrqMPTable(ULONG Type)
static VOID HaliConstructDefaultISAMPTable(ULONG Type)
static BOOLEAN HaliGetSmpConfig(VOID)
static VOID HaliMPProcessorInfo(PMP_CONFIGURATION_PROCESSOR m)
MP_FLOATING_POINTER * Mpf
PCHAR HaliMPFamily(ULONG Family, ULONG Model)
static BOOLEAN HaliScanForMPConfigTable(ULONG Base, ULONG Size)
static VOID HaliMPIOApicInfo(PMP_CONFIGURATION_IOAPIC m)
static BOOLEAN HaliReadMPConfigTable(PMP_CONFIGURATION_TABLE Table)
struct _MP_CONFIGURATION_TABLE MP_CONFIGURATION_TABLE
struct _MP_CONFIGURATION_IOAPIC MP_CONFIGURATION_IOAPIC
struct _MP_CONFIGURATION_BUS MP_CONFIGURATION_BUS
struct _MP_CONFIGURATION_PROCESSOR MP_CONFIGURATION_PROCESSOR
struct _MP_CONFIGURATION_INTLOCAL MP_CONFIGURATION_INTLOCAL
struct _MP_CONFIGURATION_INTSRC MP_CONFIGURATION_INTSRC
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
base of all file and directory entries
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size