Dell XPS 15z

Hardware
00:00.0 Host bridge [0600]: Intel Corporation 2nd Generation Core Processor Family DRAM Controller [8086:0104] (rev 09) 00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port [8086:0101] (rev 09) 00:02.0 VGA compatible controller [0300]: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0126] (rev 09) 00:16.0 Communication controller [0780]: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 [8086:1c3a] (rev 04) 00:1a.0 USB controller [0c03]: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 [8086:1c2d] (rev 05) 00:1b.0 Audio device [0403]: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller [8086:1c20] (rev 05) 00:1c.0 PCI bridge [0604]: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 [8086:1c10] (rev b5) 00:1c.1 PCI bridge [0604]: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 [8086:1c12] (rev b5) 00:1c.3 PCI bridge [0604]: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 [8086:1c16] (rev b5) 00:1c.4 PCI bridge [0604]: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 [8086:1c18] (rev b5) 00:1c.5 PCI bridge [0604]: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 [8086:1c1a] (rev b5) 00:1d.0 USB controller [0c03]: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 [8086:1c26] (rev 05) 00:1f.0 ISA bridge [0601]: Intel Corporation HM67 Express Chipset Family LPC Controller [8086:1c4b] (rev 05) 00:1f.2 SATA controller [0106]: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller [8086:1c03] (rev 05) 00:1f.3 SMBus [0c05]: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller [8086:1c22] (rev 05) 01:00.0 VGA compatible controller [0300]: nVidia Corporation GF108 [GeForce GT 540M] [10de:0df5] (rev a1) 03:00.0 Network controller [0280]: Intel Corporation Centrino Advanced-N 6230 [8086:0091] (rev 34) 04:00.0 USB controller [0c03]: NEC Corporation uPD720200 USB 3.0 Host Controller [1033:0194] (rev 04) 06:00.0 Ethernet controller [0200]: Atheros Communications Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0)

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 003: ID 0c45:642a Microdia Bus 002 Device 003: ID 8086:0189 Intel Corp.

processor      : 0 vendor_id      : GenuineIntel cpu family     : 6 model          : 42 model name     : Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz stepping       : 7 microcode      : 0x25 cpu MHz        : 800.000 cache size     : 4096 KB physical id     : 0 siblings       : 4 core id        : 0 cpu cores      : 2 apicid         : 0 initial apicid : 0 fpu            : yes fpu_exception  : yes cpuid level    : 13 wp             : yes flags          : 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 ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid bogomips       : 5587.06 clflush size   : 64 cache_alignment : 64 address sizes  : 36 bits physical, 48 bits virtual power management:

processor      : 1 vendor_id      : GenuineIntel cpu family     : 6 model          : 42 model name     : Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz stepping       : 7 microcode      : 0x25 cpu MHz        : 800.000 cache size     : 4096 KB physical id     : 0 siblings       : 4 core id        : 0 cpu cores      : 2 apicid         : 1 initial apicid : 1 fpu            : yes fpu_exception  : yes cpuid level    : 13 wp             : yes flags          : 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 ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid bogomips       : 5587.06 clflush size   : 64 cache_alignment : 64 address sizes  : 36 bits physical, 48 bits virtual power management:

processor      : 2 vendor_id      : GenuineIntel cpu family     : 6 model          : 42 model name     : Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz stepping       : 7 microcode      : 0x25 cpu MHz        : 800.000 cache size     : 4096 KB physical id     : 0 siblings       : 4 core id        : 1 cpu cores      : 2 apicid         : 2 initial apicid : 2 fpu            : yes fpu_exception  : yes cpuid level    : 13 wp             : yes flags          : 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 ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid bogomips       : 5587.06 clflush size   : 64 cache_alignment : 64 address sizes  : 36 bits physical, 48 bits virtual power management:

processor      : 3 vendor_id      : GenuineIntel cpu family     : 6 model          : 42 model name     : Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz stepping       : 7 microcode      : 0x25 cpu MHz        : 800.000 cache size     : 4096 KB physical id     : 0 siblings       : 4 core id        : 1 cpu cores      : 2 apicid         : 3 initial apicid : 3 fpu            : yes fpu_exception  : yes cpuid level    : 13 wp             : yes flags          : 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 ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid bogomips       : 5587.06 clflush size   : 64 cache_alignment : 64 address sizes  : 36 bits physical, 48 bits virtual power management:

Analyzing CLFAGS
GCC Versions before 4.6 will not detect the right CFLAGS for a new Core i7 2nd Gen (Sandy Bridge) CPU with.

/usr/libexec/gcc/x86_64-pc-linux-gnu/4.5.3/cc1 -E -quiet -v - -D_FORTIFY_SOURCE=2 -march=core2 -mcx16 -msahf -maes -mpclmul -mpopcnt -mavx --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=4096 -mtune=generic

/usr/libexec/gcc/x86_64-pc-linux-gnu/4.6.2/cc1 -E -quiet -v - -march=corei7-avx -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-tbm -mavx -msse4.2 -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=4096 -mtune=corei7-avx

Upgrading GCC
There is no stable version of GCC 4.6, so hopefully soon you will have full core i7 support in your CFLAGS.

Processor Settings
This changes was made under Linux/x86 3.3.3-gentoo-sources, using Genkernel.

Card Reader
Not functional iet. I'm still looking for a good solution for it.

Webcam
Test it using mplayer:

GRUB Bootloader Config
For GRUB the Sandy Bridge needs some more special kernel parameters to reach the optimal performance and save some battery power. Add this to your kernel command line:

If you enabled Intel IOMMUSupport in your kernel config you also need to add this to your kernel command line:

Otherwise bumblebee produces IOMMU Errors on loading the nvidia driver.

PCI/USB Autosuspend, CPU Scheduler, Intel HDA Powersave
Create in local initscript to turn on all available powersaving options. Edit it to your preferences.

After adding the script don't forget to make it executable to run on boot.

Bumblebeed and Nvidia Card
Needed things for bumblebeed to run properly:
 * Nvidia graphics driver (alternatively the nouveau driver, but this hasn't much more performance than the Intel driver so forget about it)
 * bbswitch module to disable/enable the Nvidia graphics card
 * nasm to properly compile VirtualGL
 * VirtualGL to stream the window running on nvidia driver to the actual X Session
 * bumblebeed itself for controlling the bbswitch and nvidia module

For further information about Bumblebee Project, visit The Bumblebee Project page.

Nvidia Graphics Driver
The Nvidia graphics driver should already be installed after setting in. Just be sure to setup the OpenGL extension to work with the Intel driver:

Take the correct option for Intel driver

Installing bbswitch module
After that you can test the module by loading it and look into your

It should look like this

cat /var/log/messages

Get the status of the nvidia card

Turn the card off, respectively on:

You can put this on the initial script created before, to make this change on every bootup.

Running Optimus
Optimus still give us headakes to configure. I'm still working out to make a fully working box, and Optimus is one of my threads. I know that Asus UL30Jt also has support for Optmus, but I have to make some testes before post it here. I've aready followed the nVidia Optimus guide, but it seems that still there is a missing part of the puzzle.

VGA Switching
I have being trying a lot of solutions to make this thing work on Dell XPS 15z, but none of then was successfuly. There is a guide to VGA Switchroo, but it seems that I can't do this or the hardware of Dell XPS 15z does not suport this resource. But I will keep lookint and updating this article as soon as possible. Every time I enable the VGA Switch, my kernel complains about that on boot.