Submitter | Bao, Zheng |
---|---|
Date | 2010-10-13 04:27:05 |
Message ID | <DD1CC71B621B004FA76856E5129D6B17043246CF@sbjgexmb1.amd.com> |
Download | mbox | patch |
Permalink | /patch/2103/ |
State | Accepted |
Headers | show |
Comments
]-----Original Message----- ]From: Bao, Zheng ]Sent: Tuesday, October 12, 2010 11:27 PM ]To: Coreboot ]Subject: [coreboot] [PATCH] 780 mmconfig space access issue ] ]I checked the code and found a stupid bug. ]I wonder if it can fix your problem. ] ]Signed-off-by: Zheng Bao <zheng.bao@amd.com> acked by: Scott Duplichan <scott@notabs.org> Thanks Zheng, good find. Switching to MMIO for pci config access eliminated the ramdom AP boot hangs that I was experiencing. I mostly have win7 working smoothly on the RS780/SB700 board. The exception is the ATI video driver. If I force win7 to use the generic vga driver, it is stable. But the ATI driver is not. I enabled the debug bar to make coreboot match the production BIOS. Today I found something signigicant. Coreboot leaves RS780 bar3 enabled for the reason explained on line 346 of rs780.c (loss of video). I tried disabling bar3 anyway, to match the production BIOS. Yes, there is a momentary loss of video. But as soon as win7 starts booting, video returns. In addition, the ATI video driver no longer crashes. Now there is a remaining problem. My monitor cannot sync to the video signal. The problem may be that win7 is using too high of a refresh rate. This could be possible because the monitor detection does not seem to be working. In safe mode, device manager looks good except there is monitor detected. I think I am getting close now... Thanks, Scott ]Index: src/southbridge/amd/rs780/rs780_cmn.c ]=================================================================== ]--- src/southbridge/amd/rs780/rs780_cmn.c (revision 5926) ]+++ src/southbridge/amd/rs780/rs780_cmn.c (working copy) ]@@ -70,7 +70,7 @@ ] reg &= ~mask; ] reg |= val; ] if (reg != reg_old) { ]- *((u32 *) addr) = val; ]+ *((u32 *) addr) = reg; ] } ] } ] ]Index: src/southbridge/amd/rs690/rs690_cmn.c ]=================================================================== ]--- src/southbridge/amd/rs690/rs690_cmn.c (revision 5926) ]+++ src/southbridge/amd/rs690/rs690_cmn.c (working copy) ]@@ -72,7 +72,7 @@ ] reg &= ~mask; ] reg |= val; ] if (reg != reg_old) { ]- *((u32 *) addr) = val; ]+ *((u32 *) addr) = reg; ] } ] } ] ]Zheng
On 13.10.2010 06:27, Bao, Zheng wrote: > I checked the code and found a stupid bug. > I wonder if it can fix your problem. > > Signed-off-by: Zheng Bao <zheng.bao@amd.com> > Great, this may explain the problems I was seeing with MMCONFIG in RS690. I will definitely test this. Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Regards, Carl-Daniel
Patch
Index: src/southbridge/amd/rs780/rs780_cmn.c =================================================================== --- src/southbridge/amd/rs780/rs780_cmn.c (revision 5926) +++ src/southbridge/amd/rs780/rs780_cmn.c (working copy) @@ -70,7 +70,7 @@ reg &= ~mask; reg |= val; if (reg != reg_old) { - *((u32 *) addr) = val; + *((u32 *) addr) = reg; } } Index: src/southbridge/amd/rs690/rs690_cmn.c =================================================================== --- src/southbridge/amd/rs690/rs690_cmn.c (revision 5926) +++ src/southbridge/amd/rs690/rs690_cmn.c (working copy) @@ -72,7 +72,7 @@ reg &= ~mask; reg |= val; if (reg != reg_old) { - *((u32 *) addr) = val; + *((u32 *) addr) = reg; } }
I checked the code and found a stupid bug. I wonder if it can fix your problem. Signed-off-by: Zheng Bao <zheng.bao@amd.com> Zheng