[Openchrome-users] [openChrome] #288: openchrome interferes with PCI-Express
OpenChrome Trac
trac
Sat Jul 18 01:14:35 PDT 2009
#288: openchrome interferes with PCI-Express
--------------------+-------------------------------------------------------
Reporter: ljacob | Owner: jnettlet
Type: defect | Status: closed
Priority: major | Component: initialization
Version: trunk | Resolution: fixed
Keywords: | Blocking: 261
Blockedby: |
--------------------+-------------------------------------------------------
Comment(by stuge):
Summary : The bug is fixed with r758. Thanks for applying the patch. Could
someone please bump all those distribution bugs and mention that this is
now fixed?
Replying to [comment:41 Zajec]:
> These bits are not reserved, so why this cause corruption?
Before r758 the driver would always set the state of both LVDS drivers in
the chipset to on or off when asked to set the state of the panel,
regardless of which LVDS driver, if any, was actually being used in the
system.
> Applied patch workarounds it, but problem is still not
explained/understood.
I tried to explain the problem in [comment:37] but I was maybe not
completely clear.
Please look at the log file
http://www.openchrome.org/trac/attachment/ticket/288/lvds.debugging.Xorg.log
which contains debug output from an unmodified driver before r758.
The first time ViaLVDSDFPPower() is called after X has been started, the
0x2a sequencer register contains 3. (The first ''before'' value.) When
xset is run to disable the display, 0 is written to the register. No
problem so far. When space is pressed and the display should be enabled
again, the function writes 0xF instead of 3 which was there before. This
is the problem. This means that the LVDS channel 2 driver is suddenly
enabled, although it was always disabled before. In the HP 2133 this
causes a problem with PCI-Express, and other systems with the same chipset
could be affected in the same way. Digital video out and PCIe are closely
connected inside this chipset, so the phenomenon is not too surprising,
although the two may seem unrelated at first.
Replying to [comment:43 Zajec]:
> I belive current solution is something we should really use.
> I'm just afraid some day we will hit this bug again on some device with
two channels.
My patch which was applied in r758 changes ViaLVDSDFPPower() so that it
will never enable an LVDS channel which was not enabled on the last switch
by X from text mode VT to graphics mode. If both LVDS channels were
enabled at that time, then both channels will be enabled after DPMS
off/on. If only one channel was enabled (regardless of if it was ch. 1 or
ch. 2), then only that channel will be enabled. If no channel was enabled
(weird case), then no channel will be enabled. This is a generic fix.
It is still possible to mess things up by manually changing the registers
in text mode, switching to X graphics mode and then doing DPMS off/on. If
anyone does that, I think they will also understand the risks, and this
issue. It could be argued that it is a feature for the driver to adapt to
the new register value which was manually set while in text mode, but my
point is that it will not happen often, if at all, and if it does happen,
the person tweaking registers needs to know what they are doing anyway.
--
Ticket URL: <http://www.openchrome.org/trac/ticket/288#comment:44>
openChrome <http://www.openchrome.org/>
The openChrome project
More information about the Openchrome-users
mailing list