Date: Tue, 23 Sep 2014 07:44:19 -0700 From: Adrian Chadd <adrian@freebsd.org> To: "O. Hartmann" <ohartman@zedat.fu-berlin.de> Cc: "freebsd-acpi@FreeBSD.org" <freebsd-acpi@freebsd.org> Subject: Re: Support for Lenovo acpi_video and nVidia GT740M Optimus video adaptor Message-ID: <CAJ-VmompsE1UFCY8soH7ezupmm6%2Bg_WE72k3c%2B0GohEo3Av7LA@mail.gmail.com> In-Reply-To: <20140923121636.6e4021db.ohartman@zedat.fu-berlin.de> References: <20140923121636.6e4021db.ohartman@zedat.fu-berlin.de>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, A lot of the management of this stuff got offloaded to the architecture specific stuff in DRI. So, brightness controls likely require some plumbing from i915kms. I think half of your problems will be solved with the haswell DRI module. The Optimus side of things will require a little more investigation. -a On 23 September 2014 03:16, O. Hartmann <ohartman@zedat.fu-berlin.de> wrote: > > I have a Lenovo ThinkPad E540 which has the following CPU: > > > FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512 > VT: running with driver "efifb". > info: [drm] Initialized drm 1.1.0 20060810 > CPU: Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz (2494.28-MHz K8-class CPU) > Origin="GenuineIntel" Id=0x306c3 Family=0x6 Model=0x3c Stepping=3 > Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> > Features2=0x7fdafbbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,<b11>,FMA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND> > AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM> > AMD Features2=0x21<LAHF,ABM> > Structured Extended Features=0x27ab<FSGSBASE,TSCADJ,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID> > XSAVE Features=0x1<XSAVEOPT> > VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID > TSC: P-state invariant, performance statistics > real memory = 9636413440 (9190 MB) > avail memory = 8149209088 (7771 MB) > Event timer "LAPIC" quality 600 > ACPI APIC Table: <LENOVO TP-J9 > > [...] > > This laptop has a integrated HD4600 iGPU (Haswell CPU) as well as a nVidia GT 740M GPU, > which is supposed to be with Optimus technology. I will refer to this issue later in this > post. > > ACPI_VIDEO/ACPI_IBM: > > loading both of these ACPI kernel modules seem not to provide any fiunctionality as > expected. The laptop runs with 100% brightness of the LCD and consumes the battery very > quickly. Trying > # > # Display > # > hw.acpi.video.lcd0.fullpower=75 > hw.acpi.video.lcd1.fullpower=75 > hw.acpi.video.lcd0.econony=50 > hw.acpi.video.lcd1.econony=50 > hw.acpi.video.lcd0.brigthness=75 > hw.acpi.video.lcd1.brigthness=75 > > in /etc/sysctl remains without effect. I presume this is due to the laptop is neither > supported by the acpi_ibm.ko nor acpi_video.ko modules either? > > Is there a way to manipulate the LCD brightnes? The Firmware Lenovo provides doesn't > allow without operating system running the change of the brightness or muting the > speakers with FN + FXX key, as it is provided by many other EFI/UEFI firmwares. > > > iGPU/GPU/Optimus: > > > Another serious issue is the built-in video adaptor. In UEFI, I have the opportunity of > selecting either "integrated" or "nVidia Optimus". Selecting "integrated" is supposed to > utilize the built in iGPU HD4600 - which is since Haswell's dawn unsupported in FreeBSD. > So, for some reasons along with my work, I'd like to have the dedicated GPU anyway, the > nVidia GT 740M. > And here is the culprit. > > First, I do not know whether this device is a hybrid or real discrete GPU with the > ability of sharing, what nVidia calls Optimus. > Starting X11 with any of the nVidia provided BLOBs (xf86-video-nv doesn't support modern > GPUs like that and FreeBSD doesn't have, in contrary to many Linux distributions, modern > xf86-video-nouveau: the driver is simply extinct from the ports) with 340.24, 340.32 and > 343.13 gives a blank vt() console screen with a carrett in the uppermost lefthand corner. > > Checking the the Xorg.log I realize, that the driver recognizes the existence of the GPU, > but it doesn't reveal any(!) display sockets, not even the built-in LCD. Whenever the > nvidia driver tries to access the video hardware, I see this messages popping up on the > console, indicating that there is something wrong, I presume: > > [...] > Sep 21 09:38:30 hermann kernel: ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type > mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97) Sep 21 > 09:38:30 hermann kernel: ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type > mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97) Sep 21 > 09:38:30 hermann kernel: ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type > mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97) Sep 21 > 09:38:30 hermann kernel: ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type > mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97) Sep 21 > 09:38:30 hermann kernel: ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type > mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97) Sep 21 > 09:38:30 hermann kernel: ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type > mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97) Sep 21 > 09:38:30 hermann kernel: ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type > mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97) Sep 21 > 09:38:30 hermann kernel: ACPI Warning: \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type > mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97) Sep 21 > 09:38:30 hermann kernel: ACPI Error: Field [TBF3] at 270336 exceeds Buffer [NULL] size > 262144 (bits) (20130823/dsopcode-249) Sep 21 09:38:30 hermann kernel: ACPI Error: Method > parse/execution failed [\_SB_.PCI0.PEG_.VID_.GETB] (Node 0xfffff800044ef740), > AE_AML_BUFFER_LIMIT (20130823/psparse-553) Sep 21 09:38:30 hermann kernel: ACPI Error: > Method parse/execution failed [\_SB_.PCI0.PEG_.VID_._ROM] (Node 0xfffff800044ef780), > AE_AML_BUFFER_LIMIT (20130823/psparse-553) Sep 21 09:38:30 hermann kernel: ACPI Warning: > \_SB_.PCI0.PEG_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires > [Package] (20130823/nsarguments-97) > [...] > > Checking the existence of VGA devices via pciconf, I receive this: > > vgapci0@pci0:1:0:0: class=0x030200 card=0x502a17aa chip=0x129210de rev=0xa1 hdr=0x00 > vendor = 'NVIDIA Corporation' > class = display > subclass = 3D > bar [10] = type Memory, range 32, base 0xf0000000, size 16777216, enabled > bar [14] = type Prefetchable Memory, range 64, base 0xc0000000, size 268435456, > enabled > bar [1c] = type Prefetchable Memory, range 64, base 0xd0000000, size 33554432, > enabled > bar [24] = type I/O Port, range 32, base 0x5000, size 128, enabled > > > and looking for VGA devices in the ACPI OID range, I find those: > > dev.vgapci.%parent: > dev.vgapci.0.%desc: VGA-compatible display > dev.vgapci.0.%driver: vgapci > dev.vgapci.0.%location: slot=0 function=0 handle=\_SB_.PCI0.PEG_.VID_ > dev.vgapci.0.%pnpinfo: vendor=0x10de device=0x1292 subvendor=0x17aa subdevice=0x502a > class=0x030200 dev.vgapci.0.%parent: pci1 > dev.vgapci.1.%desc: VGA-compatible display > dev.vgapci.1.%driver: vgapci > dev.vgapci.1.%location: slot=2 function=0 handle=\_SB_.PCI0.VID_ > dev.vgapci.1.%pnpinfo: vendor=0x8086 device=0x0416 subvendor=0x17aa subdevice=0x502a > class=0x030000 dev.vgapci.1.%parent: pci0 > dev.acpi_video.0.%parent: vgapci0 > dev.acpi_video.1.%parent: vgapci1 > dev.nvidia.0.%parent: vgapci0 > > Two VGA devices which has as their parents the other one? > > I found several Howtos written for Linux specific cases to enable or disable explicitely > the nVidia GPU within the Optimus tandem, but none of the shown command sequences, which > could be applied via the ACPI module acpi_call, seems to work, due to obvious different > object identifiers. > > I'd like to aske in this list whether there is a chance to have a switch and how it might > be used. I can provide the ACPI dump, if requested. > > If there is anything I can provide further, please ask. > > Thanks in advance, > > Oliver
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmompsE1UFCY8soH7ezupmm6%2Bg_WE72k3c%2B0GohEo3Av7LA>