View Full Version : Yet another: No screens found
MartjeB
02-16-2009, 03:18 PM
Hi all,
I have two video-cards in my computer:
01:05.0 VGA compatible controller: ATI Technologies Inc Radeon HD 3300 Graphics
02:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon HD 3450
I have the following monitors attached:
HD3450 --> LG Studioworks 700S
HD3300 ---> Samsung T200
\---> BenQ FP547
When I start Xorg with the following:
Xorg -layout seat1
I get an error:
Fatal server error:
no screens found
You can find my Xorg.0.log here (http://pastebin.com/m27abe01a) and my xorg.conf here (http://pastebin.com/m1ffd63e7).
If I set the HD3450 as first device (by disabling the onboard HD3300 in my BIOS) it works perfectly fine. What's going on?
bridgman
02-16-2009, 07:04 PM
In your xorg log the 3300 was still the primary device, but the monitor it was trying to light up was on the 3450. I don't know the details, but IIRC the secondary card (3450) needs to be handled differently in order to access the BIOS etc...
Looks like the 3300 was primary but the driver was trying to light up the 3450 as if *it* was primary and the driver couldn't find the BIOS image as a result.
Not sure what to recommend right now but will investigate a bit.
MartjeB
02-17-2009, 08:42 AM
Thank you. If I run Xorg like this..
Xorg -layout seat1 -isolateDevice PCI:2:0:0
.. my Xorg.0.log changes (http://pastebin.com/me473775). In the log there isn't any sign of the HD3300, yet it refuses to light up the display.
bridgman
02-17-2009, 09:16 AM
Yeah... I think the problem there is that telling Xorg to ignore one GPU doesn't make the other GPU primary (since that decision is made at POST time IIRC).
This is a bit of a specialized scenario; probably the best thing would be to subscribe and post to the radeonhd mailing list.
MartjeB
02-17-2009, 10:07 AM
Hmm, I've never worked with mailinglists before. So I subscribed:
Welcome! You have been subscribed to the
radeonhd@opensuse.org
mailinglist.
And send an email explaining my problem to radeonhd@opensuse.org. Is this the way it should be done?
Blue Beard
02-17-2009, 10:18 AM
My experience with this hardware is that OPTION "HPD" "swap" or OPTION "HPD" "off" was required in the driver section to control which output is used.
You may have you monitor on the alternate output.
This OPTION was added to resolve hardware output issues. I beleive it will be dropped once they get enough hardware data.
MartjeB
02-17-2009, 10:37 AM
Thank you. I'm going to try that. Did you mean the device section, btw?
Edit: It doesn't work :(. I even swapped the cable (to a DVI connector), but still it wouldn't come up..
bridgman
02-17-2009, 12:33 PM
I don't think your issue is related to display detection. There are some issues reading BIOS from the secondary display adapter.
If you send an email summarizing the situation, with links to pastebin'ed log and conf files, that should be fine. Offer to create a bugzilla ticket if the devs would prefer that.
MartjeB
02-17-2009, 01:38 PM
Just after I mailed mailed my problem (http://lists.opensuse.org/radeonhd/2009-02/msg00205.html) I discovered this was reported (http://bugs.freedesktop.org/show_bug.cgi?id=20146) just yesterday! Let's hope they fix this ASAP.
Blue Beard
02-17-2009, 09:24 PM
Martje has
(II) RADEONHD(0): Unknown card detected: 0x95C5:0x1043:0x01F4
I have a PowerColor AX3450 256MD2
(II) RADEONHD(0): Unknown card detected: 0x95C5:0x1787:0x2252.
This was a message I got prior to x-server 1.6.0 rc2. I sent the info to radeonhd@opensuse.com as per the Xorg.0.log and got an email back "what is this for".
We both are using x-server 1.5.902 (1.6.0 rc2) and radeonhd 1.2.4
I have stripped my /etc/X11/xorg.conf to the minimum.
When the first version of the above software came out in Jaunty Alpha 4 everything worked for me except for some quirky layout issues with xrandr on my two monitors. The bios was detected properly unlike Martje's case.
With the Jaunty Alpha 4 update of one week ago both VGA and DVI outputs became tied together (i.e. any xrandr --output changes both outputs at the same time).
Looking at Xorg.0.log now gives a warning that OPTION HPD is not used.
What I would like to know is what is the current roadmap for radeonhd versus radeon as I read that Xorg was thinking of merging them.
It is frustrating for me in the last week or so to have my second monitor unusable. :(
MartjeB
02-18-2009, 02:34 AM
The current version now detects my bios details;
Last version of Xserver or RadeonHD?
Blue Beard
02-19-2009, 01:58 PM
radeonhd 1.2.4.1 has been released and a new ati driver.
I am waiting for these to be distributed by jaunty updates.
If they don't come within a week I will manually install them.
It appears the complete output system is being rewritten.
MartjeB
02-21-2009, 04:10 AM
It still doesn't work for me, even with the latest version of radeohd. I compiled it and copied radeonhd_drv.so to /usr/lib/xorg/modules/drivers/.
I still get the same error..
MartjeB
02-21-2009, 12:50 PM
Hmm, after searching some more I stumbled upon a blog of Chris Tyler. This is what he says about the AtomBIOS':
These setpci commands are required to make the card's AtomBIOS visible to the radeonhd driver (on this hardware):
setpci -s 0000:01:00.0 COMMAND=2
setpci -s 0000:02:00.0 COMMAND=2
I'm going to try it. I'll report back with the results.
MartjeB
02-22-2009, 04:20 AM
Hmm, it does work but I had to apply the following patch too:
diff --git a/src/rhd.h b/src/rhd.h
index 708e4d6..8471f33 100644
--- a/src/rhd.h
+++ b/src/rhd.h
@@ -355,7 +355,7 @@ extern unsigned int RHDReadPCIBios(RHDPtr rhdPtr, unsigned char **prt);
extern Bool RHDScalePolicy(struct rhdMonitor *Monitor, struct rhdConnector *Connector);
extern void RHDPrepareMode(RHDPtr rhdPtr);
extern Bool RHDUseAtom(RHDPtr rhdPtr, enum RHD_CHIPSETS *BlackList, enum atomSubSystem subsys);
-
+extern CARD32 RHDGetVideoRamSize(RHDPtr rhdPtr);
extern CARD32 _RHDRegRead(int scrnIndex, CARD16 offset);
#define RHDRegRead(ptr, offset) _RHDRegRead((ptr)->scrnIndex, (offset))
extern void _RHDRegWrite(int scrnIndex, CARD16 offset, CARD32 value);
diff --git a/src/rhd_atombios.c b/src/rhd_atombios.c
index b515427..8b9d6c2 100644
--- a/src/rhd_atombios.c
+++ b/src/rhd_atombios.c
@@ -2762,7 +2762,8 @@ rhdAtomInit(atomBiosHandlePtr unused1, AtomBiosRequestID unused2,
AtomBiosArgPtr data)
{
int scrnIndex = data->val;
- RHDPtr rhdPtr = RHDPTR(xf86Screens[scrnIndex]);
+ ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ RHDPtr rhdPtr = RHDPTR(pScrn);
unsigned char *ptr;
atomDataTablesPtr atomDataPtr;
atomBiosHandlePtr handle = NULL;
@@ -2785,9 +2786,14 @@ rhdAtomInit(atomBiosHandlePtr unused1, AtomBiosRequestID unused2,
return ATOM_FAILED;
}
} else {
- if (xf86IsEntityPrimary(rhdPtr->entityIndex)) {
+ CARD32 videoRam = RHDGetVideoRamSize(rhdPtr);
+
+ if (videoRam > 0) {
int read_len;
unsigned char tmp[32];
+
+ if (!pScrn->videoRam)
+ pScrn->videoRam = videoRam;
xf86DrvMsg(scrnIndex,X_INFO,"Getting BIOS copy from legacy VBIOS location\n");
if (xf86ReadBIOS(legacyBIOSLocation, 0, tmp, 32) < 0) {
xf86DrvMsg(scrnIndex,X_ERROR,
diff --git a/src/rhd_driver.c b/src/rhd_driver.c
index 0ef3612..d64610d 100644
--- a/src/rhd_driver.c
+++ b/src/rhd_driver.c
@@ -164,7 +164,6 @@ static Bool rhdMapMMIO(RHDPtr rhdPtr);
static void rhdUnmapMMIO(RHDPtr rhdPtr);
static Bool rhdMapFB(RHDPtr rhdPtr);
static void rhdUnmapFB(RHDPtr rhdPtr);
-static CARD32 rhdGetVideoRamSize(RHDPtr rhdPtr);
static void rhdFbOffscreenGrab(ScrnInfoPtr pScrn);
static void rhdGetIGPNorthBridgeInfo(RHDPtr rhdPtr);
static enum rhdCardType rhdGetCardType(RHDPtr rhdPtr);
@@ -531,6 +530,7 @@ RHDPreInit(ScrnInfoPtr pScrn, int flags)
goto error0;
}
+ /* do this before AtomBIOS init as it will be set there if not preset */
pScrn->videoRam = rhdPtr->pEnt->device->videoRam;
rhdPtr->entityIndex = rhdPtr->pEnt->index;
@@ -715,7 +715,7 @@ RHDPreInit(ScrnInfoPtr pScrn, int flags)
/* We can use a register which is programmed by the BIOS to find out the
size of our framebuffer */
if (!pScrn->videoRam) {
- pScrn->videoRam = rhdGetVideoRamSize(rhdPtr);
+ pScrn->videoRam = RHDGetVideoRamSize(rhdPtr);
if (!pScrn->videoRam) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No Video RAM detected.\n");
goto error1;
@@ -1678,8 +1678,8 @@ rhdUnmapMMIO(RHDPtr rhdPtr)
/*
*
*/
-static CARD32
-rhdGetVideoRamSize(RHDPtr rhdPtr)
+CARD32
+RHDGetVideoRamSize(RHDPtr rhdPtr)
{
CARD32 RamSize, BARSize;
Now everything is fine! The monitor gives an 'out of range' error, but that's fixable :D
MartjeB
02-22-2009, 06:15 AM
Hmm, not really :/. This is my xorg.conf now:
Section "Serverflags"
Option "Dontzap" "no"
Option "AutoAddDevices" "false"
EndSection
Section "ServerLayout"
Identifier "seat0"
Screen 0 "Screen0" 0 0
EndSection
Section "ServerLayout"
Identifier "seat1"
Screen 0 "Screen1" 0 0
EndSection
Section "Monitor"
Identifier "Studioworks 700S"
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 160.0
EndSection
Section "Monitor"
Identifier "Samsung T200"
EndSection
Section "Device"
Identifier "Radeon HD3870"
BusID "PCI:1:0:0"
Driver "radeonhd"
Option "monitor-DVI-I_2/digital" "Samsung T200"
EndSection
Section "Device"
Identifier "Mobility Radeon HD3450"
BusID "PCI:2:0:0"
Driver "radeonhd"
Option "monitor-VGA_1" "Studioworks 700S"
EndSection
Section "Screen"
Identifier "Screen0"
Monitor "Samsung T200"
Device "Radeon HD3870"
EndSection
Section "Screen"
Identifier "Screen1"
Monitor "Studioworks 700S"
Device "Mobility Radeon HD3450"
EndSection
And here (http://pastebin.com/m6f5f42a3) my Xorg.1.log. As you can see, everything is detected just fine. It says the maximum of the Studioworks 700S is 1280x1024@60Hz. Yet, my monitor reports:
OUT OF RANGE
HF: 179,5
VF: 200 <-- Jeez
OPERATING FREQUENCY
HF: 30 - 70
VF: 50 - 160
Is there any way to force Xorg to run on a lower frequency? I tried it with HorizSync and VertRefresh, but it doesn't work as you can see.
bridgman
02-22-2009, 11:17 AM
can you pastebin your x log ?
MartjeB
02-22-2009, 12:09 PM
You mean Xorg.1.log? I already did that in my previous post :).
http://pastebin.com/m6f5f42a3
MartjeB
02-23-2009, 11:12 AM
If I add
# 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz
Modeline "1280x1024_50.00" 89.38 1280 1352 1488 1696 1024 1025 1028 1054 -HSync +Vsync
Option "PreferredMode" "1280x1024_50.00"
to the monitor section, it reports it's running on V 140Hz. Let's see how low I can go..
Edit: I can't go any lower..
vBulletin® v3.8.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.