On 23.01.2008 20:19, ron minnich wrote:
On Jan 23, 2008 11:06 AM, Marc Jones marc.jones@amd.com wrote:
BUT, I don't think that you need them. VSA should default to reasonable settings without the in15 calls. I need to test it in v2 this afternoon. If VSA does require them I would rather change VSA. There is no reason it can't get the pci speed and cpu speed from the MSRs. Either way, i don't think you need to add it to v3.
patch now has those two un-needed functions removed. Can you verify that vsa will do the right thing? I think I had to put these in as the calls were being made.
Some comments about the code:
This is a first cut at the implementation of VSM support. What has do be done, long term, is to remove almost all of the vsmsetup.c file and use functions in the vm86.c file.
The barrier to achieving that goal is the specialized nature of the vga bios support code vs. the vsm bios support code. There are a few issues to resolve but what I'd like to do is get VSA working first, then work out how to merge the rest of the code.
I have already done some merging at this point.
vsmsetup.c: Add this file from v2. Fix copyright and includes. Remove almost all assembly code in favor of code in vm86.c
vm86.c: make some assembly symbols .globl so that vmssetup.c can use them.
Signed-off-by: Ronald G. Minnich rminnich@gmail.com
Index: northbridge/amd/geodelx/vsmsetup.c
--- northbridge/amd/geodelx/vsmsetup.c (revision 0) +++ northbridge/amd/geodelx/vsmsetup.c (revision 0) @@ -0,0 +1,302 @@ +/*
- Erik Arjan Hendriks hendriks@lanl.gov
Missing "copyright"?
- Copyright (C) 2000 Scyld.
- Copyright (C) 2000 Scyld Computing Corporation
- Copyright (C) 2001 University of California. LA-CC Number 01-67.
Is LA-CC "Los Alamos Computer Code"?
- Copyright (C) 2005 Nick.Barker9@btinternet.com
- Copyright (C) 2007 coresystems GmbH
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
[...] +void do_vsmbios(void *bios) +{
- struct device *dev;
- unsigned long busdevfn;
- unsigned int rom = 0;
- unsigned char *buf;
- unsigned int size = SMM_SIZE * 1024;
- int i;
- unsigned long ilen, olen;
- printk(BIOS_ERR, "do_vsmbios\n");
- /* clear vsm bios data area */
- for (i = 0x400; i < 0x500; i++) {
*(volatile unsigned char *)i = 0;
- }
- rom = (unsigned long) bios;
- buf = (unsigned char *)VSA2_BUFFER;
- // FIXME
- //olen = unrv2b((u8 *) rom, buf, &ilen);
How exactly is the VSA going to end up in VSA2_BUFFER if you don't copy/uncompress it there?
- printk(BIOS_DEBUG, "buf ilen %d olen%d\n", ilen, olen);
- printk(BIOS_DEBUG, "buf %p *buf %d buf[256k] %d\n",
buf, buf[0], buf[SMM_SIZE * 1024]);
- printk(BIOS_DEBUG, "buf[0x20] signature is %x:%x:%x:%x\n",
buf[0x20], buf[0x21], buf[0x22], buf[0x23]);
- /* check for post code at start of vsainit.bin. If you don't see it,
don't bother. */
- if ((buf[0x20] != 0xb0) || (buf[0x21] != 0x10) ||
(buf[0x22] != 0xe6) || (buf[0x23] != 0x80)) {
printk(BIOS_ERR, "do_vsmbios: no vsainit.bin signature, skipping!\n");
return;
- }
- /* ecx gets smm, edx gets sysm */
- printk(BIOS_ERR, "Call real_mode_switch_call_vsm\n");
- real_mode_switch_call_vsm(MSR_GLIU0_SMM, MSR_GLIU0_SYSMEM);
- /* restart timer 1 */
- outb(0x56, 0x43);
- outb(0x12, 0x41);
- // check that VSA is running OK
- if (VSA_vrRead(SIGNATURE) == VSA2_SIGNATURE)
printk(BIOS_DEBUG, "do_vsmbios: VSA2 VR signature verified\n");
- else
printk(BIOS_ERR,
"do_vsmbios: VSA2 VR signature not valid, install failed!\n");
+}
Rest looks good so far from a first glance.
Regards, Carl-Daniel