1. 16 Mar, 2011 4 commits
    • Dave Airlie's avatar
      Merge commit '53595338' into drm-core-next · 38f1cff0
      Dave Airlie authored
      This commit changed an internal radeon structure, that meant a new driver
      in -next had to be fixed up, merge in the commit and fix up the driver.
      
      Also fixes a trivial nouveau merge.
      
      Conflicts:
      	drivers/gpu/drm/nouveau/nouveau_mem.c
      38f1cff0
    • Chris Wilson's avatar
      drm: Retry i2c transfer of EDID block after failure · 4819d2e4
      Chris Wilson authored
      Usually EDID retrieval is fine. However, sometimes, especially when the
      machine is loaded, it fails, but succeeds after a few retries.
      
      Based on a patch by Michael Buesch.
      Reported-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarAlex Deucher <alexdeucher@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      4819d2e4
    • Alex Deucher's avatar
      drm/radeon/kms: fix typo in atom overscan setup · 942b0e95
      Alex Deucher authored
      Typo in the aspect scale setup.
      Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      942b0e95
    • Chris Wilson's avatar
      drm: Hold the mode mutex whilst probing for sysfs status · 007c80a5
      Chris Wilson authored
      As detect will use hw registers and may modify structures, it needs to be
      serialised by use of the dev->mode_config.mutex. Make it so.
      
      Otherwise, we may cause random crashes as the sysfs file is queried
      whilst a concurrent hotplug poll is being run. For example:
      
      [ 1189.189626] BUG: unable to handle kernel NULL pointer dereference at 00000100
      [ 1189.189821] IP: [<e0c22019>] intel_tv_detect_type+0xa2/0x203 [i915]
      [ 1189.190020] *pde = 00000000
      [ 1189.190104] Oops: 0000 [#1] SMP
      [ 1189.190209] last sysfs file: /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-SVIDEO-1/status
      [ 1189.190412] Modules linked in: mperf cpufreq_conservative cpufreq_userspace cpufreq_powersave cpufreq_stats decnet uinput fuse loop joydev snd_hd a_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm i915 snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq drm_kms_helper snd_timer uvcvideo d rm snd_seq_device eeepc_laptop tpm_tis usbhid videodev i2c_algo_bit v4l1_compat snd sparse_keymap i2c_core hid serio_raw tpm psmouse evdev tpm_bios rfkill shpchp ac processor rng_c ore battery video power_supply soundcore pci_hotplug button output snd_page_alloc usb_storage uas ext3 jbd mbcache sd_mod crc_t10dif ata_generic ahci libahci ata_piix libata uhci_h cd ehci_hcd scsi_mod usbcore thermal atl2 thermal_sys nls_base [last unloaded: scsi_wait_scan]
      [ 1189.192007]
      [ 1189.192007] Pid: 1464, comm: upowerd Not tainted 2.6.37-2-686 #1 ASUSTeK Computer INC. 701/701
      [ 1189.192007] EIP: 0060:[<e0c22019>] EFLAGS: 00010246 CPU: 0
      [ 1189.192007] EIP is at intel_tv_detect_type+0xa2/0x203 [i915]
      [ 1189.192007] EAX: 00000000 EBX: dca74000 ECX: e0f68004 EDX: 00068004
      [ 1189.192007] ESI: dd110c00 EDI: 400c0c37 EBP: dca7429c ESP: de365e2c
      [ 1189.192007]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
      [ 1189.192007] Process upowerd (pid: 1464, ti=de364000 task=dcc8acb0 task.ti=de364000)
      [ 1189.192007] Stack: Mar 15 03:43:23 hostname kernel: [ 1189.192007]  e0c2cda4 70000000 400c0c30 00000000 dd111000 de365e54 de365f24 dd110c00
      [ 1189.192007]  e0c22203 01000000 00000003 00000000 00000000 00000000 00000000 4353544e
      [ 1189.192007]  30383420 00000069 00000000 00000000 00000000 00000000 00000000 00000000
      [ 1189.192007] Call Trace: Mar 15 03:43:23 hostname kernel: [ 1189.192007]  [<e0c22203>] ?  intel_tv_detect+0x89/0x12d [i915]
      [ 1189.192007]  [<e0a9dcef>] ?  status_show+0x0/0x2f [drm]
      [ 1189.192007]  [<e0a9dd03>] ?  status_show+0x14/0x2f [drm]
      
      [Digression: what is upowerd doing reading those power hungry files?]
      Reported-by: default avatarPaul Menzel <paulepanter@users.sourceforge.net>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      007c80a5
  2. 14 Mar, 2011 11 commits
    • Dave Airlie's avatar
      Merge remote branch 'nouveau/drm-nouveau-next' of ../drm-nouveau-next into drm-core-next · 235b87af
      Dave Airlie authored
      * 'nouveau/drm-nouveau-next' of ../drm-nouveau-next:
        drm/nouveau: fix __nouveau_fence_wait performance
        drm/nv40: attempt to reserve just enough vram for all 32 channels
        drm/nv50: check for vm traps on every gr irq
        drm/nv50: decode vm faults some more
        drm/nouveau: add nouveau_enum_find() util function
        drm/nouveau: properly handle pushbuffer check failures
        drm/nvc0: remove vm hack forcing large/small pages to not share a PDE
      235b87af
    • Marcin Slusarz's avatar
      drm/nouveau: fix __nouveau_fence_wait performance · bd35fe5a
      Marcin Slusarz authored
      Commit 21e86c1c ("drm/nouveau: remove
      cpu_writers lock") turned on lazy waits. Unfortunately
      __nouveau_fence_wait was not optimized for this case and on HZ=100
      kernel wasted up to 10 ms per call.
      
      Depending on application, it led to 10-30% FPS regression.
      
      Fix it.
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Signed-off-by: default avatarFrancisco Jerez <currojerez@riseup.net>
      bd35fe5a
    • Ben Skeggs's avatar
      drm/nv40: attempt to reserve just enough vram for all 32 channels · 459ca7e5
      Ben Skeggs authored
      This also makes the fact we're giving 512MiB of GART space to all PCIE
      boards explicit, although the vast majority (if not all) of them will
      now have a ramin_rsvd_vram larger than 2MiB anyway.
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      459ca7e5
    • Ben Skeggs's avatar
      drm/nv50: check for vm traps on every gr irq · 6fdb383e
      Ben Skeggs authored
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      6fdb383e
    • Ben Skeggs's avatar
      drm/nv50: decode vm faults some more · 312d1d5f
      Ben Skeggs authored
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      312d1d5f
    • Ben Skeggs's avatar
      bb9b18a3
    • Marcin Slusarz's avatar
      drm/nouveau: properly handle pushbuffer check failures · 7fa0cba2
      Marcin Slusarz authored
      When "buffer in list" check does not pass, don't free validation lists - they were
      not initialized yet.
      
      Fixes this oops:
      
      [drm] nouveau 0000:02:00.0: push 105 buffer not in list
      BUG: unable to handle kernel NULL pointer dereference at 000000000000057c
      IP: [<ffffffff81236aa4>] do_raw_spin_lock+0x14/0x13c
      PGD 1ac6cb067 PUD 1aaa52067 PMD 0
      CPU 0
      Modules linked in: nouveau ttm drm_kms_helper snd_hda_codec_realtek snd_hda_intel snd_hda_codec
      
      Pid: 6265, comm: OilRush_x86 Not tainted 2.6.38-rc6-nv+ #632 System manufacturer System Product Name/P6T SE
      RIP: 0010:[<ffffffff81236aa4>]  [<ffffffff81236aa4>] do_raw_spin_lock+0x14/0x13c
      (...)
      Process OilRush_x86 (pid: 6265, threadinfo ffff8801a6aee000, task ffff8801a26c0000)
       0000000000000000 ffff8801ac74c618 0000000000000000 0000000000000578
       0000000000000000 ffff8801ac74c618 0000000000000000 ffff8801bd9d0000
       [<ffffffff81417f78>] _raw_spin_lock+0x1e/0x22
       [<ffffffffa00a2746>] nouveau_bo_fence+0x2e/0x60 [nouveau]
       [<ffffffffa00a540b>] validate_fini_list+0x35/0xeb [nouveau]
       [<ffffffffa00a54d3>] validate_fini+0x12/0x31 [nouveau]
       [<ffffffffa00a6386>] nouveau_gem_ioctl_pushbuf+0xe94/0xf6b [nouveau]
       [<ffffffff8141ac56>] ? sub_preempt_count+0x9e/0xb2
       [<ffffffff81417e94>] ? _raw_spin_unlock_irqrestore+0x30/0x4d
       [<ffffffff8105dea2>] ? __wake_up+0x3f/0x48
       [<ffffffff812aebb4>] drm_ioctl+0x289/0x361
       [<ffffffff8141ac56>] ? sub_preempt_count+0x9e/0xb2
       [<ffffffffa00a54f2>] ? nouveau_gem_ioctl_pushbuf+0x0/0xf6b [nouveau]
       [<ffffffff8141ac56>] ? sub_preempt_count+0x9e/0xb2
       [<ffffffffa010caa2>] nouveau_compat_ioctl+0x16/0x1c [nouveau]
       [<ffffffff81142c0d>] compat_sys_ioctl+0x1c8/0x12d7
       [<ffffffff814179ca>] ? trace_hardirqs_off_thunk+0x3a/0x6c
       [<ffffffff81058099>] sysenter_dispatch+0x7/0x30
       [<ffffffff8141798e>] ? trace_hardirqs_on_thunk+0x3a/0x3c
      RIP  [<ffffffff81236aa4>] do_raw_spin_lock+0x14/0x13c
       RSP <ffff8801a6aefb88>
      ---[ end trace 0014d5d93e6147e1 ]---
      
      Additionally, don't call validate_fini twice in case of validation failure.
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Signed-off-by: default avatarMaarten Maathuis <madman2003@gmail.com>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      7fa0cba2
    • Ben Skeggs's avatar
      drm/nvc0: remove vm hack forcing large/small pages to not share a PDE · b84f30e6
      Ben Skeggs authored
      Appears to be fixed with commit:
      
      "drm/nv50-nvc0: make sure vma is definitely unmapped when destroying bo"
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      b84f30e6
    • Dave Airlie's avatar
      drm/i915: disable opregion lid detection for now. · bcd5023c
      Dave Airlie authored
      At least on my HP 2540p this is wrong at bootup, fine
      at any other time once a lid event has occured. This is due to
      _REG vs _INI ordering in the ACPI tables.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      bcd5023c
    • Dave Airlie's avatar
      Merge remote branch 'intel/drm-intel-next' of ../drm-next into drm-core-next · 34db18ab
      Dave Airlie authored
      * 'intel/drm-intel-next' of ../drm-next: (755 commits)
        drm/i915: Only wait on a pending flip if we intend to write to the buffer
        drm/i915/dp: Sanity check eDP existence
        drm/i915: Rebind the buffer if its alignment constraints changes with tiling
        drm/i915: Disable GPU semaphores by default
        drm/i915: Do not overflow the MMADDR write FIFO
        Revert "drm/i915: fix corruptions on i8xx due to relaxed fencing"
        drm/i915: Don't save/restore hardware status page address register
        drm/i915: don't store the reg value for HWS_PGA
        drm/i915: fix memory corruption with GM965 and >4GB RAM
        Linux 2.6.38-rc7
        Revert "TPM: Long default timeout fix"
        drm/i915: Re-enable GPU semaphores for SandyBridge mobile
        drm/i915: Replace vblank PM QoS with "Interrupt-Based AGPBUSY#"
        Revert "drm/i915: Use PM QoS to prevent C-State starvation of gen3 GPU"
        drm/i915: Allow relocation deltas outside of target bo
        drm/i915: Silence an innocuous compiler warning for an unused variable
        fs/block_dev.c: fix new kernel-doc warning
        ACPI: Fix build for CONFIG_NET unset
        mm: <asm-generic/pgtable.h> must include <linux/mm_types.h>
        x86: Use u32 instead of long to set reset vector back to 0
        ...
      
      Conflicts:
      	drivers/gpu/drm/i915/i915_gem.c
      34db18ab
    • Dave Airlie's avatar
      drm/radeon: fix problem with changing active VRAM size. (v2) · 53595338
      Dave Airlie authored
      So we used to use lpfn directly to restrict VRAM when we couldn't
      access the unmappable area, however this was removed in
      93225b0d as it also restricted
      the gtt placements. However it was only later noticed that this
      broke on some hw.
      
      This removes the active_vram_size, and just explicitly sets it
      when it changes, TTM/drm_mm will always use the real_vram_size,
      and the active vram size will change the TTM size used for lpfn
      setting.
      
      We should re-work the fpfn/lpfn to per-placement at some point
      I suspect, but that is too late for this kernel.
      
      Hopefully this addresses:
      https://bugs.freedesktop.org/show_bug.cgi?id=35254
      
      v2: fix reported useful VRAM size to userspace to be correct.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      53595338
  3. 13 Mar, 2011 1 commit
  4. 11 Mar, 2011 1 commit
  5. 10 Mar, 2011 21 commits
  6. 09 Mar, 2011 2 commits
    • Vasiliy Kulikov's avatar
      net: don't allow CAP_NET_ADMIN to load non-netdev kernel modules · 8909c9ad
      Vasiliy Kulikov authored
      Since a8f80e8f any process with
      CAP_NET_ADMIN may load any module from /lib/modules/.  This doesn't mean
      that CAP_NET_ADMIN is a superset of CAP_SYS_MODULE as modules are
      limited to /lib/modules/**.  However, CAP_NET_ADMIN capability shouldn't
      allow anybody load any module not related to networking.
      
      This patch restricts an ability of autoloading modules to netdev modules
      with explicit aliases.  This fixes CVE-2011-1019.
      
      Arnd Bergmann suggested to leave untouched the old pre-v2.6.32 behavior
      of loading netdev modules by name (without any prefix) for processes
      with CAP_SYS_MODULE to maintain the compatibility with network scripts
      that use autoloading netdev modules by aliases like "eth0", "wlan0".
      
      Currently there are only three users of the feature in the upstream
      kernel: ipip, ip_gre and sit.
      
          root@albatros:~# capsh --drop=$(seq -s, 0 11),$(seq -s, 13 34) --
          root@albatros:~# grep Cap /proc/$$/status
          CapInh:	0000000000000000
          CapPrm:	fffffff800001000
          CapEff:	fffffff800001000
          CapBnd:	fffffff800001000
          root@albatros:~# modprobe xfs
          FATAL: Error inserting xfs
          (/lib/modules/2.6.38-rc6-00001-g2bf4ca3/kernel/fs/xfs/xfs.ko): Operation not permitted
          root@albatros:~# lsmod | grep xfs
          root@albatros:~# ifconfig xfs
          xfs: error fetching interface information: Device not found
          root@albatros:~# lsmod | grep xfs
          root@albatros:~# lsmod | grep sit
          root@albatros:~# ifconfig sit
          sit: error fetching interface information: Device not found
          root@albatros:~# lsmod | grep sit
          root@albatros:~# ifconfig sit0
          sit0      Link encap:IPv6-in-IPv4
      	      NOARP  MTU:1480  Metric:1
      
          root@albatros:~# lsmod | grep sit
          sit                    10457  0
          tunnel4                 2957  1 sit
      
      For CAP_SYS_MODULE module loading is still relaxed:
      
          root@albatros:~# grep Cap /proc/$$/status
          CapInh:	0000000000000000
          CapPrm:	ffffffffffffffff
          CapEff:	ffffffffffffffff
          CapBnd:	ffffffffffffffff
          root@albatros:~# ifconfig xfs
          xfs: error fetching interface information: Device not found
          root@albatros:~# lsmod | grep xfs
          xfs                   745319  0
      
      Reference: https://lkml.org/lkml/2011/2/24/203Signed-off-by: default avatarVasiliy Kulikov <segoon@openwall.com>
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
      Acked-by: default avatarKees Cook <kees.cook@canonical.com>
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      8909c9ad
    • Benjamin Herrenschmidt's avatar
      powerpc/pseries: Disable VPNH feature · 36e8695c
      Benjamin Herrenschmidt authored
      This feature triggers nasty races in the scheduler between the
      rebuilding of the topology and the load balancing code, causing
      the machine to hang.
      
      Disable it for now until the races are fixed.
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      36e8695c