On Thu, Jan 28, 2010 at 11:16:17AM +0800, Liu, Jinsong wrote:
Connor and Gleb,
Thanks for comments and suggestions!
According to the discussion, I will update my patch as:
- simplify method 'PRSC' definiation, move 'maxvcpus' to method 'NTFY' so that code is more direct and easy to understand;
- remove unnecessary global variable 'madt_csum_addr, madt_lapic0_addr, max_cpus_byte, max_cpus_bit';
- use VAR16FIXED() macro for a hardcode address, change hardcode address from '0xEA000' to '0x514' (same as old BOCHS);
VAR16FIXED() is for addresses in the f-segment - for addresses outside of the bios code, one can just assign a value to the address. I don't know if 0x514 is used for anything else, but I suppose it's okay if BOCHS got away with it.
-Kevin
Kevin O'Connor wrote:
On Thu, Jan 28, 2010 at 11:16:17AM +0800, Liu, Jinsong wrote:
Connor and Gleb,
Thanks for comments and suggestions!
According to the discussion, I will update my patch as:
- simplify method 'PRSC' definiation, move 'maxvcpus' to method
'NTFY' so that code is more direct and easy to understand; 2. remove unnecessary global variable 'madt_csum_addr, madt_lapic0_addr, max_cpus_byte, max_cpus_bit'; 3. use VAR16FIXED() macro for a hardcode address, change hardcode address from '0xEA000' to '0x514' (same as old BOCHS);
VAR16FIXED() is for addresses in the f-segment - for addresses outside of the bios code, one can just assign a value to the address. I don't know if 0x514 is used for anything else, but I suppose it's okay if BOCHS got away with it.
-Kevin
So you mean we directly use hardcode address '0x514' for bios_info, which transfer info from madt to dsdt asl? similar as what BOCHS does?
Thanks, Jinsong
On Wed, Jan 27, 2010 at 11:13:07PM -0500, Kevin O'Connor wrote:
On Thu, Jan 28, 2010 at 11:16:17AM +0800, Liu, Jinsong wrote:
Connor and Gleb,
Thanks for comments and suggestions!
According to the discussion, I will update my patch as:
- simplify method 'PRSC' definiation, move 'maxvcpus' to method 'NTFY' so that code is more direct and easy to understand;
- remove unnecessary global variable 'madt_csum_addr, madt_lapic0_addr, max_cpus_byte, max_cpus_bit';
- use VAR16FIXED() macro for a hardcode address, change hardcode address from '0xEA000' to '0x514' (same as old BOCHS);
VAR16FIXED() is for addresses in the f-segment - for addresses outside of the bios code, one can just assign a value to the address. I don't know if 0x514 is used for anything else, but I suppose it's okay if BOCHS got away with it.
0x514 what chosen by me and never was in upstream BOCHS bios only the version used with qemu-kvm. I chose it on a basis that 0x500-0x600 is defined as DOS data area iirc and DOS does not support ACPI so no problem if it will overwrite this address, but if Linux will be started from DOS with loadlin things will break.
-- Gleb.