VirtualBox

source: vbox/trunk/src/VBox/Devices/PC/vbox-cpuhotplug.dsl@ 30714

Last change on this file since 30714 was 29243, checked in by vboxsync, 15 years ago

Always return the APIC buffer even if the APIC is disabled. Fixes compilation with new iasl versions. Contributed by Bernhard Froehlich and Jung-uk Kim

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.5 KB
Line 
1// $Id: vbox-cpuhotplug.dsl 29243 2010-05-08 16:24:43Z vboxsync $
2/// @file
3//
4// VirtualBox ACPI
5//
6// Copyright (C) 2006-2007 Oracle Corporation
7//
8// This file is part of VirtualBox Open Source Edition (OSE), as
9// available from http://www.virtualbox.org. This file is free software;
10// you can redistribute it and/or modify it under the terms of the GNU
11// General Public License (GPL) as published by the Free Software
12// Foundation, in version 2 as it comes in the "COPYING" file of the
13// VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14// hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15
16DefinitionBlock ("SSDT-cpuhotplug.aml", "SSDT", 1, "VBOX ", "VBOXCPUT", 2)
17{
18 External(\_SB.CPUC)
19 External(\_SB.CPUL)
20 External(\_SB.CPEV)
21 External(\_SB.CPET)
22
23 // Method to check for the CPU status
24 Method(CPCK, 1)
25 {
26 Store (Arg0, \_SB.CPUC)
27 Return(LEqual(\_SB.CPUL, 0x01))
28 }
29
30 Scope (\_SB)
31 {
32
33#define GENERATE_CPU_OBJECT(id, sck, sckuid, cpu, cpuuid) \
34 Device (sck) \
35 { \
36 Name (_HID, "ACPI0004") \
37 Name (_UID, sckuid) \
38 \
39 \
40 Processor (cpu, /* Name */ \
41 id, /* Id */ \
42 0x0, /* Processor IO ports range start */ \
43 0x0 /* Processor IO ports range length */ \
44 ) \
45 { \
46 Name (_HID, "ACPI0007") \
47 Name (_UID, cpuuid) \
48 Name (_PXM, 0x00) \
49 \
50 Method(_MAT, 0) \
51 { \
52 Name (APIC, Buffer (8) {0x00, 0x08, id, id}) \
53 IF (CPCK(id)) \
54 { \
55 Store (One, Index (APIC, 4)) \
56 } \
57 Else \
58 { \
59 Store (Zero, Index (APIC, 4)) \
60 } \
61 Return (APIC) \
62 } \
63 Method(_STA) /* Used for device presence detection */ \
64 { \
65 IF (CPCK(id)) \
66 { \
67 Return (0xF) \
68 } \
69 Else \
70 { \
71 Return (0x0) \
72 } \
73 } \
74 Method(_EJ0, 1) \
75 { \
76 Store(id, \_SB.CPUL) /* Unlock the CPU */ \
77 Return \
78 } \
79 } \
80 } \
81
82 GENERATE_CPU_OBJECT(0x00, SCK0, "SCKCPU0", CPU0, "SCK0-CPU0")
83 GENERATE_CPU_OBJECT(0x01, SCK1, "SCKCPU1", CPU1, "SCK1-CPU0")
84 GENERATE_CPU_OBJECT(0x02, SCK2, "SCKCPU2", CPU2, "SCK2-CPU0")
85 GENERATE_CPU_OBJECT(0x03, SCK3, "SCKCPU3", CPU3, "SCK3-CPU0")
86 GENERATE_CPU_OBJECT(0x04, SCK4, "SCKCPU4", CPU4, "SCK4-CPU0")
87 GENERATE_CPU_OBJECT(0x05, SCK5, "SCKCPU5", CPU5, "SCK5-CPU0")
88 GENERATE_CPU_OBJECT(0x06, SCK6, "SCKCPU6", CPU6, "SCK6-CPU0")
89 GENERATE_CPU_OBJECT(0x07, SCK7, "SCKCPU7", CPU7, "SCK7-CPU0")
90 GENERATE_CPU_OBJECT(0x08, SCK8, "SCKCPU8", CPU8, "SCK8-CPU0")
91 GENERATE_CPU_OBJECT(0x09, SCK9, "SCKCPU9", CPU9, "SCK9-CPU0")
92 GENERATE_CPU_OBJECT(0x0a, SCKA, "SCKCPUA", CPUA, "SCKA-CPU0")
93 GENERATE_CPU_OBJECT(0x0b, SCKB, "SCKCPUB", CPUB, "SCKB-CPU0")
94 GENERATE_CPU_OBJECT(0x0c, SCKC, "SCKCPUC", CPUC, "SCKC-CPU0")
95 GENERATE_CPU_OBJECT(0x0d, SCKD, "SCKCPUD", CPUD, "SCKD-CPU0")
96 GENERATE_CPU_OBJECT(0x0e, SCKE, "SCKCPUE", CPUE, "SCKE-CPU0")
97 GENERATE_CPU_OBJECT(0x0f, SCKF, "SCKCPUF", CPUF, "SCKF-CPU0")
98 GENERATE_CPU_OBJECT(0x10, SCKG, "SCKCPUG", CPUG, "SCKG-CPU0")
99 GENERATE_CPU_OBJECT(0x11, SCKH, "SCKCPUH", CPUH, "SCKH-CPU0")
100 GENERATE_CPU_OBJECT(0x12, SCKI, "SCKCPUI", CPUI, "SCKI-CPU0")
101 GENERATE_CPU_OBJECT(0x13, SCKJ, "SCKCPUJ", CPUJ, "SCKJ-CPU0")
102 GENERATE_CPU_OBJECT(0x14, SCKK, "SCKCPUK", CPUK, "SCKK-CPU0")
103 GENERATE_CPU_OBJECT(0x15, SCKL, "SCKCPUL", CPUL, "SCKL-CPU0")
104 GENERATE_CPU_OBJECT(0x16, SCKM, "SCKCPUM", CPUM, "SCKM-CPU0")
105 GENERATE_CPU_OBJECT(0x17, SCKN, "SCKCPUN", CPUN, "SCKN-CPU0")
106 GENERATE_CPU_OBJECT(0x18, SCKO, "SCKCPUO", CPUO, "SCKO-CPU0")
107 GENERATE_CPU_OBJECT(0x19, SCKP, "SCKCPUP", CPUP, "SCKP-CPU0")
108 GENERATE_CPU_OBJECT(0x1a, SCKQ, "SCKCPUQ", CPUQ, "SCKQ-CPU0")
109 GENERATE_CPU_OBJECT(0x1b, SCKR, "SCKCPUR", CPUR, "SCKR-CPU0")
110 GENERATE_CPU_OBJECT(0x1c, SCKS, "SCKCPUS", CPUS, "SCKS-CPU0")
111 GENERATE_CPU_OBJECT(0x1d, SCKT, "SCKCPUT", CPUT, "SCKT-CPU0")
112 GENERATE_CPU_OBJECT(0x1e, SCKU, "SCKCPUU", CPUU, "SCKU-CPU0")
113 GENERATE_CPU_OBJECT(0x1f, SCKV, "SCKCPUV", CPUV, "SCKV-CPU0")
114
115#undef GENERATE_CPU_OBJECT
116 }
117
118 Scope (\_GPE)
119 {
120
121#define CHECK_CPU(cpu, sck, cpuname) \
122 IF (LEqual(Local0, cpu)) \
123 { \
124 Notify (\_SB.sck.cpuname, Local1) \
125 } \
126
127 // GPE bit 1 handler
128 // GPE.1 must be set and SCI raised when
129 // processor info changed and CPU must be
130 // re-evaluated
131 Method (_L01, 0, NotSerialized)
132 {
133 Store(\_SB.CPEV, Local0)
134 Store(\_SB.CPET, Local1)
135
136 CHECK_CPU(0x01, SCK1, CPU1)
137 CHECK_CPU(0x02, SCK2, CPU2)
138 CHECK_CPU(0x03, SCK3, CPU3)
139 CHECK_CPU(0x04, SCK4, CPU4)
140 CHECK_CPU(0x05, SCK5, CPU5)
141 CHECK_CPU(0x06, SCK6, CPU6)
142 CHECK_CPU(0x07, SCK7, CPU7)
143 CHECK_CPU(0x08, SCK8, CPU8)
144 CHECK_CPU(0x09, SCK9, CPU9)
145 CHECK_CPU(0x0a, SCKA, CPUA)
146 CHECK_CPU(0x0b, SCKB, CPUB)
147 CHECK_CPU(0x0c, SCKC, CPUC)
148 CHECK_CPU(0x0d, SCKD, CPUD)
149 CHECK_CPU(0x0e, SCKE, CPUE)
150 CHECK_CPU(0x0f, SCKF, CPUF)
151 CHECK_CPU(0x10, SCKG, CPUG)
152 CHECK_CPU(0x11, SCKH, CPUH)
153 CHECK_CPU(0x12, SCKI, CPUI)
154 CHECK_CPU(0x13, SCKJ, CPUJ)
155 CHECK_CPU(0x14, SCKK, CPUK)
156 CHECK_CPU(0x15, SCKL, CPUL)
157 CHECK_CPU(0x16, SCKM, CPUM)
158 CHECK_CPU(0x17, SCKN, CPUN)
159 CHECK_CPU(0x18, SCKO, CPUO)
160 CHECK_CPU(0x19, SCKP, CPUP)
161 CHECK_CPU(0x1a, SCKQ, CPUQ)
162 CHECK_CPU(0x1b, SCKR, CPUR)
163 CHECK_CPU(0x1c, SCKS, CPUS)
164 CHECK_CPU(0x1d, SCKT, CPUT)
165 CHECK_CPU(0x1e, SCKU, CPUU)
166 CHECK_CPU(0x1f, SCKV, CPUV)
167 }
168
169#undef CHECK_CPU
170 }
171
172}
173
174/*
175 * Local Variables:
176 * comment-start: "//"
177 * End:
178 */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette