lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 7 Jan 2014 07:54:09 -0600
From:	Seth Forshee <seth.forshee@...onical.com>
To:	Ramkumar Ramachandra <artagnon@...il.com>
Cc:	LKML <linux-kernel@...r.kernel.org>,
	Andreas Heider <andreas@...tr.de>,
	Chris Wilson <chris@...is-wilson.co.uk>
Subject: Re: [PATCH 0/4] Get EDID late for VGA switcheroo

On Tue, Jan 07, 2014 at 03:28:39PM +0530, Ramkumar Ramachandra wrote:
> Hi,
> 
> VGA switcheroo doesn't work on my 2013 MBP, and I'm trying to fix
> it. From what I've gathered from previous patches, it seems that the
> EDID is not computed at boottime, because LVDS isn't connected to the
> i915 card (and is connected to the nouveau card instead). So, here's a
> series to get switcheroo-reprobe to call get-edid. I think it's a step
> in the right direction, although I think more stuff is required to fix
> the issue.

It's been a while since I've thought about this, so my memory is
suspect. It's also a bit dated, and I haven't kept up to know what's
changed in since then. But I don't think just reading the mode on
reprobe gets you very far.

These are the main problems as I remember them:

 1. On many Macbook models the firmware isn't putting LVDS information
    in opregion. Reading the EDID during device initialization also
    fails since the DDC is muxed to the DGPU, so i915 concludes there's
    no LVDS and doesn't register an LVDS connector at all. I also think
    it was impossible to register a new connector at a later time,
    though I'm not sure about that.

 2. If i915 is forced to register the LVDS connector (say via a quirk)
    it still may not know the panel mode and guesses something rather
    conservative. This mode it assumes is used to allocate framebuffer
    memory, which is likely to end up being too small, and I don't think
    there was any support for resizing it later. This resulted in VTs
    not working because there isn't enough framebuffer memory for the
    mode they're trying to use.

 3. So what is really wanted is to be able to mux just the DDC over to
    the IGPU when the device is initialized to read the panel mode. One
    possible problem is that the hw might not support muxing the DDC
    separately, but Apple hw does so we'll ignore that for now. The
    basic code for muxing only the DDC isn't too difficult, and I had
    some patches for this at one point. The problem is that the handler
    must register with vga_switcheroo before this is possible, so
    there's a module initialization ordering issue that wasn't easily
    solved. Maybe now it would be possible to do something with
    EPROBE_DEFER, though I'm not sure how i915 would know whether or not
    it should wait for a switcheroo handler.

I just didn't have enough time to spend on this issue to work through
all of this. I also never looked at doing this with eDP, which is what I
thought all the Macbooks have been using for the last couple of years.
Are you sure your machine uses LVDS and not eDP?

Seth

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ