On 12/10/2013 06:23 AM, Alex Deucher wrote:
On Tue, Dec 10, 2013 at 1:16 AM, Joe Julian <[email protected]> wrote:
On Wed, 2013-12-04 at 12:08 -0500, Alex Deucher wrote:
On Wed, Dec 4, 2013 at 12:41 AM, Joe Julian <[email protected]> wrote:
On Tue, 2013-12-03 at 09:28 -0500, Alex Deucher wrote:
On Tue, Dec 3, 2013 at 8:20 AM, Joe Julian <[email protected]> wrote:
Alex Deucher <[email protected]> wrote:
On Fri, Nov 29, 2013 at 7:30 PM, Joe Julian <[email protected]>
wrote:
This MSI laptop has two crossfire connected video processors in it,
00:01.0 has a HD 8650G that seems to initialize properly, and at
01:00.0
an HD 8970M that fails the ring 3 test, "radeon: ring 3 test failed
(0xDFCFFBFF)".
It looks like there's a problem with the rom for the dGPU:
[ 61.008250] ACPI Error: Field [TEMP] at 524288 exceeds Buffer
[TVGA] size 512000 (bits) (20130927/dsopcode-236)
[ 61.008749] ACPI Error: Method parse/execution failed
[\_SB_.PCI0.VGA_.ATRM] (Node ffff880233ad1e30), AE_AML_BUFFER_LIMIT
(20130927/psparse-536)
[ 61.009991] failed to evaluate ATRM got AE_AML_BUFFER_LIMIT
[ 61.010204] ATOM BIOS: MSI
[ 61.010270] [drm] GPU not posted. posting now...
[ 61.018737] radeon 0000:01:00.0: limiting VRAM
[ 61.018765] radeon 0000:01:00.0: VRAM: 1047552M 0x0000000000000000
- 0x000000FFBFFFFFFF (1047552M used)
[ 61.018814] radeon 0000:01:00.0: GTT: 1024M 0x000000FFC0000000 -
0x000000FFFFFFFFFF
[ 61.018853] [drm] Detected VRAM RAM=1047552M, BAR=256M
1047552M of vram is obviously wrong. How much vram is supposed to be
on the card?
According to Windows, 2GB:
Name AMD Radeon(TM) HD8970M
PNP Device ID PCI\VEN_1002&DEV_6801&SUBSYS_10F11462&REV_00\4&99EBB28&0&0018
Adapter Type AMD Radeon Graphics Processor (0x6801), Advanced Micro Devices,
Inc. compatible
Adapter Description AMD Radeon(TM) HD8970M
Adapter RAM (2,147,483,648) bytes
Installed Drivers
aticfx64.dll,aticfx64.dll,aticfx64.dll,aticfx32,aticfx32,aticfx32,atiumd64.dll,atidxx64.dll,atidxx64.dll,atiumdag,atidxx32,atidxx32,atiumdva,atiumd6a.cap,atitmm64.dll
Driver Version 13.200.11.0
INF File oem17.inf (ati2mtag_R576B section)
Color Planes Not Available
Color Table Entries 4294967296
Resolution 1920 x 1080 x 60 hertz
Bits/Pixel 32
Memory Address 0xD0000000-0xDFFFFFFF
Memory Address 0xFEAC0000-0xFEAFFFFF
I/O Port 0x0000EF00-0x0000EFFF
IRQ Channel IRQ 4294967283
Can you send me the output from this patch?
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 6a64cca..84a7e26 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -3884,6 +3884,7 @@ static int si_mc_init(struct radeon_device *rdev)
/* size in MB on si */
rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024ULL * 1024ULL;
rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024ULL * 1024ULL;
+ DRM_INFO("CONFIG_MEMSIZE: 0x%08x\n", RREG32(CONFIG_MEMSIZE));
rdev->mc.visible_vram_size = rdev->mc.aper_size;
si_vram_gtt_location(rdev, &rdev->mc);
radeon_update_bandwidth_info(rdev);
CONFIG_MEMSIZE=0X03800800
Does this patch fix the issues?
Alex
Throwing in some writel and readl tests before even trying the dma
test,
I see that the memory isn't being changed with writel in the first
place.
----
tmp = 0xDEADBEEF;
writel(tmp, ptr);
tmp = readl(ptr);
if (tmp != 0xDEADBEEF)
DRM_ERROR("radeon: ring %d memory write failed (0x%
08X)\n", ring->idx, tmp);
----
radeon: ring 3 memory write failed (0xDFCFFBFF)
Looks to me like we're trying to write to a rom address, but I'm a
complete novice at this so I could be completely off.
I'm using kernel 3.13.0-0.rc1.git3
What else could I look at?
No, that patch does not completely solve the problem. The memsize is
right, now, but the dma test still fails the same way.
dmesg: http://paste.fedoraproject.org/58848/86134088
Something still seems problematic with the rom. Does this help?
diff --git a/drivers/gpu/drm/radeon/radeon_bios.c
b/drivers/gpu/drm/radeon/radeon_bios.c
index b3633d9..b2983f2 100644
--- a/drivers/gpu/drm/radeon/radeon_bios.c
+++ b/drivers/gpu/drm/radeon/radeon_bios.c
@@ -173,7 +173,7 @@ static int radeon_atrm_call(acpi_handle
atrm_handle, uint8_t *bios,
static bool radeon_atrm_get_bios(struct radeon_device *rdev)
{
int ret;
- int size = 256 * 1024;
+ int size = 128 * 1024;
int i;
struct pci_dev *pdev = NULL;
acpi_handle dhandle, atrm_handle;
You might also try 64 rather than 128 if 128 doesn't work.
Alex
Those had no effect.
I hacked the dsdt to fix the ATRM error. I don't know if this is
something that can be worked around or if I'll have to have MSI fix
their bios, but if it can, here's a successful init once the bios can be
read:
How did you fix the dsdt? What did you have to change?
http://paste.fedoraproject.org/60388/86655915
In the following I tried changing VROM to 512000 like every other
version I could find, but it still overflowed, so I changed the TVGA
buffer to 0x10000 (big enough to hold 524288) which cleared that error.
I'm still confused how we're getting to that code path since Arg0 is
0xf000 and Arg1 is 0x1000 which should add up to 0x10000, which is not
<= 32. Everything I've read suggests that integers should be 64 bit but
it seems to be being compared as a 16 bit word.
Field (REVD, AnyAcc, NoLock, Preserve)
{
SROM, 32,
VROM, 524288
}
Name (TVGA, Buffer (0xFA00)
{
0x00
})
Method (ATRM, 2, Serialized)
{
Add (Arg0, Arg1, Local0)
If (LLessEqual (Local0, SROM))
{
Multiply (Arg1, 0x08, Local1)
Multiply (Arg0, 0x08, Local2)
Store (VROM, TVGA)
CreateField (TVGA, Local2, Local1, TEMP)
Name (RETB, Buffer (Arg1) {})
Store (TEMP, RETB)
Return (RETB)
}
Else
{
If (LLess (Arg0, SROM))
{
Subtract (SROM, Arg0, Local3)
Multiply (Local3, 0x08, Local1)
Multiply (Arg0, 0x08, Local2)
Store (VROM, TVGA)
CreateField (TVGA, Local2, Local1, TEM)
Name (RETC, Buffer (Local3) {})
Store (TEM, RETC)
Return (RETC)
}
Else
{
Name (RETD, Buffer (One) {})
Return (RETD)
}
}
}
_______________________________________________
xorg-driver-ati mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-driver-ati