Hi Rudolf, I changed the dsdt.asl which take M2V-MX as an example. Now it stopped rebooting, but after the window xp scroll bar it hangs up, which supposed to show the log in screen. I am wondering if there is any another places should be fixed. And also in /src/arch/i386/boot/tables.c( function: write_tables line92) I changed rom_table_start=((512-64)*1024*1024)-64*1024 followed by an patch, May be it is wrong ,which address should I changed in this places?
Jason Wang BeiJing Technology Development Center Advanced Micro Devices (AMD)
-----Original Message----- From: Rudolf Marek [mailto:r.marek@assembler.cz] Sent: Tuesday, February 17, 2009 6:00 AM To: Wang, Qingpei Cc: Carl-Daniel Hailfinger; Coreboot; Perley, Tim Subject: Re: [coreboot] Problems about booting windows xp
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
I ran also acpiexec util on it, here is what I found.
First I will present how PCI0 _CRS method looks on MINE Asus M2V-MX SE, this works with windows...
[00] 16-Bit WORD Address Space Resource Resource Type : Bus Number Range Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 0000 Address Minimum : 0000 Address Maximum : 0005 Translation Offset : 0000 Address Length : 0006 Resource Source Index : 00 Resource Source : [Not Specified]
[01] 32-Bit DWORD Address Space Resource Resource Type : I/O Range Range Type : EntireRange Translation : TypeStatic Translation Type : DenseTranslation Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 00000000 Address Minimum : 000003B0 Address Maximum : 000003DF Translation Offset : 00000000 Address Length : 00000030 Resource Source Index : 00 Resource Source : [Not Specified]
[02] 32-Bit DWORD Address Space Resource Resource Type : I/O Range Range Type : EntireRange Translation : TypeStatic Translation Type : DenseTranslation Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 00000000 Address Minimum : 00000D00 Address Maximum : 00001FFF Translation Offset : 00000000 Address Length : 00001300 Resource Source Index : 00 Resource Source : [Not Specified]
[03] 32-Bit DWORD Address Space Resource Resource Type : Memory Range Write Protect : ReadWrite Caching : NonCacheable Range Type : AddressRangeMemory Translation : TypeStatic Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 00000000 Address Minimum : C0000000 Address Maximum : DFFFFFFF Translation Offset : 00000000 Address Length : 20000000 Resource Source Index : 00 Resource Source : [Not Specified]
[04] 32-Bit DWORD Address Space Resource Resource Type : Memory Range Write Protect : ReadWrite Caching : NonCacheable Range Type : AddressRangeMemory Translation : TypeStatic Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 00000000 Address Minimum : E0000000 Address Maximum : F12FFFFF Translation Offset : 00000000 Address Length : 11300000 Resource Source Index : 00 Resource Source : [Not Specified]
[05] 32-Bit DWORD Address Space Resource Resource Type : Memory Range Write Protect : ReadWrite Caching : NonCacheable Range Type : AddressRangeMemory Translation : TypeStatic Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 00000000 Address Minimum : 000A0000 Address Maximum : 000BFFFF Translation Offset : 00000000 Address Length : 00020000 Resource Source Index : 00 Resource Source : [Not Specified]
[06] I/O Resource Address Decoding : Decode16 Address Minimum : 0CF8 Address Maximum : 0CF8 Alignment : 01 Address Length : 08
[07] 16-Bit WORD Address Space Resource Resource Type : I/O Range Range Type : EntireRange Translation : TypeStatic Translation Type : DenseTranslation Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 0000 Address Minimum : 0000 Address Maximum : 0CF7 Translation Offset : 0000 Address Length : 0CF8 Resource Source Index : 00 Resource Source : [Not Specified]
[08] EndTag Resource
See, there is no RAM mentioned at all. Just PCI decode ranges from CPU as well the PCI IO ranges. Also please note that:
LEN = MAX - MIN + 1
This is needed for Windows.
And here what you have for your board:
acpixtract -a data.txt ./acpiexec ./DSDT.dat - - resources _SB_.PCI0
[00] I/O Resource Address Decoding : Decode16 Address Minimum : 0CF8 Address Maximum : 0CF8 Alignment : 01 Address Length : 08
[01] 16-Bit WORD Address Space Resource Resource Type : I/O Range Range Type : EntireRange Translation : TypeStatic Translation Type : DenseTranslation Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 0000 Address Minimum : 0000 Address Maximum : 0CF7 Translation Offset : 0000 Address Length : 0CF8 Resource Source Index : 00 Resource Source : [Not Specified]
[02] 16-Bit WORD Address Space Resource Resource Type : I/O Range Range Type : EntireRange Translation : TypeStatic Translation Type : DenseTranslation Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 0000 Address Minimum : 0D00 Address Maximum : FFFF Translation Offset : 0000 Address Length : F300 Resource Source Index : 00 Resource Source : [Not Specified]
[03] 32-Bit Fixed Memory Range Resource Write Protect : ReadWrite Address : 00000000 Address Length : 000A0000
[04] 32-Bit Fixed Memory Range Resource Write Protect : ReadOnly Address : 000A0000 Address Length : 00020000
[05] 32-Bit Fixed Memory Range Resource Write Protect : ReadOnly Address : 000C0000 Address Length : 00020000
[06] 32-Bit Fixed Memory Range Resource Write Protect : ReadOnly Address : 000E0000 Address Length : 00020000
[07] 32-Bit Fixed Memory Range Resource Write Protect : ReadWrite Address : 00100000 Address Length : 3FF00000
I think this does not agree the e820 map here, because of the ACPI tables. Also both below are empty. No good?
[08] 32-Bit DWORD Address Space Resource Resource Type : Memory Range Write Protect : ReadWrite Caching : Cacheable Range Type : AddressRangeMemory Translation : TypeStatic Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 00000000 Address Minimum : 00000000 Address Maximum : 00000000 Translation Offset : 00000000 Address Length : 00000000 Resource Source Index : 00 Resource Source : [Not Specified]
[09] 64-Bit QWORD Address Space Resource Resource Type : Memory Range Write Protect : ReadWrite Caching : Cacheable Range Type : AddressRangeMemory Translation : TypeStatic Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 00000000FFFFFFFF Address Minimum : 0000000000000000 Address Maximum : 0000000000000000 Translation Offset : 0000000000000000 Address Length : 0000000000000000 Resource Source Index : 00 Resource Source : [Not Specified]
[0A] 64-Bit QWORD Address Space Resource Resource Type : Memory Range Write Protect : ReadWrite Caching : Cacheable Range Type : AddressRangeMemory Translation : TypeStatic Consumer/Producer : ResourceProducer Address Decode : PosDecode Min Relocatability : MinFixed Max Relocatability : MaxFixed Granularity : 00000000FFFFFFFF Address Minimum : 0000000000000000 Address Maximum : 0000000000000000 Translation Offset : 0000000000000000 Address Length : 0000000000000000 Resource Source Index : 00 Resource Source : [Not Specified]
I would suggest just to start with totally artificial and static _CRS returned object, similar what is in QEMU: http://bochs.sourceforge.net/cgi-bin/lxr/source/bios/acpi-dsdt.dsl
Just grab it and fill all resources manually. (edit the MEMP so all fields are valid for your HW, then just put into _CRS Return (MEMP), without any computations). Then try to boot windows. Once it works you can play with the generic runtime adjustments.
Thanks, Rudolf