# Nvidia K1000M on Thinkpad W530 problem



## xa (Sep 30, 2012)

Hello. I mailed the same text to freebsd-gfx-bugs@nvidia.com, but may be anyone already fixed similiar problems:

My laptop: Lenovo Thinkpad W530
Discrete graphic card: Nvidia K1000M
OS: FreeBSD 9.1-RC1 / amd64 with GENERIC kernel ("TEST" kernel with DDB option added, see attached kernel.diff file)
x11/nvidia-driver version: 304.51 , i also tried older versions - the result was the same


```
NVRM: failed to copy vbios to system memory
NVRM: RmInitAdapter failed! (0x30:0xffffffff:861)
nvidia0: NVRM: rm_init_adapter() failed!

Fatal trap 12: page fault while in kernel mode
```
See full photo of kernel panic


I got kernel panic when start X.org with "nvidia" driver (system goes reboot with GENERIC kernel, so I'm using my own with "no reboot at panic" option). Panic also occurs when I'm trying to "*nvidia-xconfig --query-gpu-info*", I attached photo of panic message. With "vesa" driver nvidia card starts normally, but resolution is low (xrandr can't increase it).

My laptop has Nvidia optimus system, I read a lot about it and think that Thinkpad W530 shouldn't have problems with it - in BIOS I can choose "nvidia optimus", "discrete graphic", "integrated graphic"(intel hd4000),  I tried all this options and nvidia card available in windows7/freebsd(pciconf -lv) only in "optimus"(with intel hd4000) and "discrete" modes, so I'm using "discrete mode".

P.S. I know about Intel KMS support, and it's works (not ideal, but it's another question) - here I want to make nvidia works.


----------



## xa (Oct 2, 2012)

I think I found similar problem on Lenovo Y570 - https://bugzilla.kernel.org/show_bug.cgi?id=42696, but acpidump and devinfo looks good:

`apcidump` shows 
	
	



```
Method (_ROM, 2, Serialized)[/QUOTE], devinfo -rv shows[quote]vgapci0 pnpinfo vendor=0x10de device=0x0ffc subvendor=0x17aa subdevice=0x21f6 class=0x030000 at slot=0 function=0 [B]handle=\_SB_.PCI0.PEG_.VID_[/B]
```
 - one device that handle PEG_.VID_.

Also, I'm able to receive vbios with manual acpi query:

```
acpi_call -p '_SB.PCI0.PEG.VID._ROM' -v -i 0 -i 128

...
Result: 55AAAB...
```
 - Result looks like real vbios which I dump from Windows.
Also, only one 'ACPI path' consist ROM method.

I tried to understand how nvidia driver query for vbios, but not succesfull yet, "*_acpi_*" functions in nvidia_subr.c are not implemented.

So, problem looks quite similar to linux at first, but after more detail analysis I think it's not the same (because `devinfo` shows right handle bind).


----------



## xa (Mar 2, 2013)

Problem solved, thanks to cognet for the patches.

Patches for x11/nvidia-driver 310.32, just put file in ports/x11/nvidia-driver/files/

*patch-src-Makefile*: http://pastebin.com/Y21NKkuJ
*patch-src-nvidia_subr.c*: http://pastebin.com/mHJJnDCE


----------

