summaryrefslogtreecommitdiff
path: root/src/VBox/Devices/PC/vbox.dsl
diff options
context:
space:
mode:
authorvboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2009-03-09 16:15:51 +0000
committervboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2009-03-09 16:15:51 +0000
commit57fc463123cffe8e6a8a2cef8b14f9a19e88d950 (patch)
treea7febe59914f5f78c22ede0c5ec3496c72214185 /src/VBox/Devices/PC/vbox.dsl
parenta1acf0830ca3aa50cb780f25e73698df82567ed1 (diff)
downloadVirtualBox-svn-57fc463123cffe8e6a8a2cef8b14f9a19e88d950.tar.gz
DevACPI,vbox.dsl: 4GB+ changes.
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@17590 cfe28804-0f27-0410-a406-dd0f0b0b656f
Diffstat (limited to 'src/VBox/Devices/PC/vbox.dsl')
-rw-r--r--src/VBox/Devices/PC/vbox.dsl71
1 files changed, 55 insertions, 16 deletions
diff --git a/src/VBox/Devices/PC/vbox.dsl b/src/VBox/Devices/PC/vbox.dsl
index d12f15d99f2..f3223cda41b 100644
--- a/src/VBox/Devices/PC/vbox.dsl
+++ b/src/VBox/Devices/PC/vbox.dsl
@@ -129,33 +129,33 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
{
Processor (CPU0, /* Name */
0x00, /* Id */
- 0x0, /* Processor IO ports range start */
- 0x0 /* Processor IO ports range length */
- )
+ 0x0, /* Processor IO ports range start */
+ 0x0 /* Processor IO ports range length */
+ )
{
Method (_STA) { Return(\_SB.UCP0) }
}
Processor (CPU1, /* Name */
0x01, /* Id */
- 0x0, /* Processor IO ports range start */
- 0x0 /* Processor IO ports range length */
- )
+ 0x0, /* Processor IO ports range start */
+ 0x0 /* Processor IO ports range length */
+ )
{
Method (_STA) { Return(\_SB.UCP1) }
}
Processor (CPU2, /* Name */
0x02, /* Id */
- 0x0, /* Processor IO ports range start */
- 0x0 /* Processor IO ports range length */
- )
+ 0x0, /* Processor IO ports range start */
+ 0x0 /* Processor IO ports range length */
+ )
{
Method (_STA) { Return(\_SB.UCP2) }
}
Processor (CPU3, /* Name */
0x03, /* Id */
- 0x0, /* Processor IO ports range start */
- 0x0 /* Processor IO ports range length */
- )
+ 0x0, /* Processor IO ports range start */
+ 0x0 /* Processor IO ports range length */
+ )
{
Method (_STA) { Return(\_SB.UCP3) }
}
@@ -182,6 +182,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
UCP1, 32,
UCP2, 32,
UCP3, 32,
+ MEMH, 32,
Offset (0x80),
ININ, 32,
Offset (0x200),
@@ -203,6 +204,8 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
HEX4 (UFDC)
DBG ("UCP0: ")
HEX4 (UCP0)
+ DBG ("MEMH: ")
+ HEX4 (MEMH)
}
// PCI PIC IRQ Routing table
@@ -861,7 +864,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
)
DwordMemory( // Consumed-and-produced resource
- // (all of memory space)
+ // (all of low memory space)
ResourceProducer, // bit 0 of general flags is 0
PosDecode, // positive Decode
MinFixed, // Range is fixed
@@ -871,7 +874,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
0x00000000, // Granularity
0x00000000, // Min (calculated dynamically)
- 0xffdfffff, // Max = 4GB - 2MB
+ 0xffdfffff, // Max = 4GB - 2MB
0x00000000, // Translation
0xdfdfffff, // Range Length (calculated
// dynamically)
@@ -882,12 +885,48 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
)
})
+ Name (TOM, ResourceTemplate () // Memory above 4GB (aka high), appended when needed.
+ {
+ QWORDMemory(
+ ResourceProducer, // bit 0 of general flags is 0
+ PosDecode, // positive Decode
+ MinFixed, // Range is fixed
+ MaxFixed, // Range is fixed
+ Cacheable,
+ ReadWrite,
+ 0x0000000000000000, // _GRA: Granularity.
+ 0x0000000100000000, // _LEN: Min address, 4GB.
+ 0x00000fffffffffff, // _MAX: Max possible address, 16TB.
+ 0x0000000000000000, // _TRA: Translation
+ 0x0000000000000000, // _LEN: Range length (calculated dynamically)
+ , // ResourceSourceIndex: Optional field left blank
+ , // ResourceSource: Optional field left blank
+ MEM4 // Name declaration for this descriptor.
+ )
+ })
+
Method (_CRS, 0, NotSerialized)
{
CreateDwordField (CRS, \_SB.PCI0.MEM3._MIN, RAMT)
CreateDwordField (CRS, \_SB.PCI0.MEM3._LEN, RAMR)
+ CreateDwordField (TOM, \_SB.PCI0.MEM4._LEN, TM4L)
+
Store (MEML, RAMT)
Subtract (0xffe00000, RAMT, RAMR)
+
+ If (LNotEqual (MEMH, 0x00000000))
+ {
+ //
+ // Update the TOM resource template and append it to CRS.
+ // This way old < 4GB guest doesn't see anything different.
+ // (MEMH is the memory above 4GB specified in 64KB units.)
+ //
+ ShiftLeft (MEMH, 16, Local0)
+ Store (Local0, TM4L)
+ ConcatenateResTemplate (CRS, TOM, Local1)
+ Return (Local1)
+ }
+
Return (CRS)
}
}
@@ -914,7 +953,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
)
})
}
-
+
// System Management Controller
Device (SMC)
{
@@ -933,7 +972,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
0x01, // Alignment
0x20, // Length
)
- // This line seriously confuses Windows ACPI driver, so not even try to
+ // This line seriously confuses Windows ACPI driver, so not even try to
// enable SMC for Windows guests
IRQNoFlags () {8}
})