summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* drm/nouveau/device: include the official chipset namesBen Skeggs2012-10-039-1/+61
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/backlight: remove dependence on nouveau_drv.hBen Skeggs2012-10-036-59/+60
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: flatten nv{Read,Write}{MC,VIDEO,FB,EXTDEV}Ben Skeggs2012-10-036-76/+24
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: move compat ioctl out of nouveau_drv.hBen Skeggs2012-10-035-5/+9
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/acpi: move definitions out of nouveau_drv.hBen Skeggs2012-10-037-36/+40
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mxm: split up into bios code and a subdev moduleBen Skeggs2012-10-0316-755/+952
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: start culling unused codeBen Skeggs2012-10-038-239/+4
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: port all engines to new engine module formatBen Skeggs2012-10-03146-11099/+14219
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a HUGE commit, but it's not nearly as bad as it looks - any problems can be isolated to a particular chipset and engine combination. It was simply too difficult to port each one at a time, the compat layers are *already* ridiculous. Most of the changes here are simply to the glue, the process for each of the engine modules was to start with a standard skeleton and copy+paste the old code into the appropriate places, fixing up variable names etc as needed. v2: Marcin Slusarz <marcin.slusarz@gmail.com> - fix find/replace bug in license header v3: Ben Skeggs <bskeggs@redhat.com> - bump indirect pushbuf size to 8KiB, 4KiB barely enough for userspace and left no space for kernel's requirements during GEM pushbuf submission. - fix duplicate assignments noticed by clang v4: Marcin Slusarz <marcin.slusarz@gmail.com> - add sparse annotations to nv04_fifo_pause/nv04_fifo_start - use ioread32_native/iowrite32_native for fifo control registers v5: Ben Skeggs <bskeggs@redhat.com> - rebase on v3.6-rc4, modified to keep copy engine fix intact - nv10/fence: unmap fence bo before destroying - fixed fermi regression when using nvidia gr fuc - fixed typo in supported dma_mask checking Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0-/gr: generate grctx template at init time, not first context ctorBen Skeggs2012-10-035-604/+460
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0-/gr: share headers between fermi and kepler graphics codeBen Skeggs2012-10-036-204/+143
| | | | | | | | v2: Ben Skeggs <bskeggs@redhat.com> - de-inline nv_icmd, triggers some gcc issue causing ctxnv[ce]0.c to take a *very* *very* long time to build on some configs. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/pageflip: kick flip handling out of engsw and into fenceBen Skeggs2012-10-0317-114/+265
| | | | | | | | | | This is all very much a policy thing, and hence will not belong in SW after the rework. engsw now only handles receiving the event to say "can flip now" and makes a callback to perform the actual work. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: move some more code around to more appropriate placesBen Skeggs2012-10-034-342/+336
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0-nve0/graph: rename dev to priv, no code changesBen Skeggs2012-10-032-5170/+5170
| | | | | | | | There's a *lot* of code in here, and it's all going to use the PGRAPH priv pointer rather than drm_device after the engine rework. This is handling all the rename-only parts of the change. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/fence: un-port from nouveau_exec_engine interfacesBen Skeggs2012-10-039-138/+124
| | | | | | | | Still the same code, but not an "engine" anymore. The fence code is more of a policy decision rather than exposing mechanisms, so it's not appropriate to port it to the new engine subsystem. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: pull nouveau_gem definitions into their own headerBen Skeggs2012-10-032-33/+44
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: pull nouveau_bo definitions into their own headerBen Skeggs2012-10-034-90/+97
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04/disp: kick all private state out to own headerBen Skeggs2012-10-0314-171/+182
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/instmem: completely new implementation, as a subdev moduleBen Skeggs2012-10-0369-2169/+2777
| | | | | | | | v2 (Ben Skeggs): - some fixes for 64KiB PAGE_SIZE - fix porting issues in (currently unused) nv41/nv44 pciegart code Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: remove last use of nouveau_gpuobj_new_fake()Ben Skeggs2012-10-032-84/+72
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50/instmem: remove use of nouveau_gpuobj_new_fake()Ben Skeggs2012-10-031-17/+2
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpuobj: remove flags for vm-mappingsBen Skeggs2012-10-038-74/+136
| | | | | | | | | | Having GPUOBJ and VM intertwined like this makes it *really* hard to continue porting to the new driver architecture, split it out in favour of requiring explit maps be the caller. It's more flexible and obvious this way anyway... Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpuobj: create wrapper functions for mapping gpuobj into vm/barBen Skeggs2012-10-034-10/+44
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0/fifo: handle bar1 control regs much like fifo/nve0Ben Skeggs2012-10-031-19/+21
| | | | | | The partial mapping thing is stupid and pointless... Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04-nv40/fifo: remove use of nouveau_gpuobj_new_fake()Ben Skeggs2012-10-034-73/+50
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04-nv40/instmem: remove use of nouveau_gpuobj_new_fake()Ben Skeggs2012-10-037-100/+122
| | | | | | These type of fake objects will not be supported for much longer. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04-nv40/instmem: duplicate nv04 code as nv40, remove alternate pathsBen Skeggs2012-10-036-54/+202
| | | | | | A ton of duplication for the moment, will go away when they become subdevs. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/fb: merge fb/vram and port to subdev interfacesBen Skeggs2012-10-0349-1345/+1691
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50-/instmem: allocate vram for kernel objects from end of vramBen Skeggs2012-10-031-1/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/core: add support for reverse mm allocationsBen Skeggs2012-10-035-93/+154
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/timer: port to subdev interfacesBen Skeggs2012-10-0322-162/+464
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mc: port to subdev interfacesBen Skeggs2012-10-0323-118/+543
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: implement devinit subdev, and new init table parserBen Skeggs2012-10-0354-3914/+3796
| | | | | | | v2: - make sure not to execute display scripts unless resuming Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/clock: pull in the implementation from all over the placeBen Skeggs2012-10-0328-1213/+1328
| | | | | | | Still missing the main bits we use to change performance levels, I'll get to it after all the hard yakka has been finished. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/clk: implement stub clock subdevBen Skeggs2012-10-0315-0/+437
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/i2c: port to subdev interfacesBen Skeggs2012-10-0329-555/+1347
| | | | | | | | | | | v2/v3: Ben Skeggs <bskeggs@redhat.com> - fix typo in default bus selection - fix accidental loss of destructor v4: Dmitry Eremin-Solenikov <dmitry_eremin@mentor.com> - fix typo causing incorrect default i2c port settings when no BMP data Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpio: port gpio to subdev interfacesBen Skeggs2012-10-0333-503/+933
| | | | | | | v2: Ben Skeggs <bskeggs@redhat.com> - rebase on top of v3.6-rc6 with gpio reset patch integrated already Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/oldbios: remove shadowing support, use bios subdev's imageBen Skeggs2012-10-035-249/+15
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/bios: pull in basic vbios subdev, more to come laterBen Skeggs2012-10-0315-0/+660
| | | | | | | | v2: Ben Skeggs <bskeggs@redhat.com> - use unaligned macros to access vbios image - endianness fixes Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: have non-core mmio accesses go through device objectBen Skeggs2012-10-035-109/+99
| | | | | | | Adds an extra layer of indirection to each register access, but it's not too bad, and will also go away as pieces are ported. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: implement module init functions in nouveau_drm.cBen Skeggs2012-10-0328-91/+381
| | | | | | | | These currently just call the existing ones in nouveau_drv.c, but will be extended in upcoming commits. This needed to be separated from the current code as there will be some header clashes until things are ported. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/core: pull in most of the new core infrastructureBen Skeggs2012-10-0342-6/+4052
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit provides most of the infrastructure to support a major overhaul of Nouveau's internals coming in the following commits. This work aims to take all the things we've learned over the last several years, and turn that into a cleaner architecture that's more maintainable going forward. RAMHT and MM bits of the new core have been left out for the moment, and will be pulled in as I go through the process of porting the code to become either subdev or engine modules. There are several main goals I wanted to achieve through this work: -- Reduce complexity The goal here was to make each component of the driver as independent as possible, which will ease maintainability and readability, and provide a good base for resetting locked up GPU units in the future. -- Better tracking of GPU units that are required at any given time This is for future PM work, we'll be able to tell exactly what parts of the GPU we need powered at any given point (etc). -- Expose all available NVIDIA GPUs to the client In order to support things such as multi-GPU channels, we want to be able to expose all the NVIDIA GPUs to the client over a single file descriptor so it can send a single push buffer to multiple GPUs. -- Untangle the core hardware support code from the DRM implementation This happened initially as an unexpected side-effect of developing the initial core infrastructure in userspace, but it turned into a goal of the whole project. Initial benefits will be the availablility of a number of userspace tools and tests using the same code as the driver itself, but will also be important as I look into some virtualisation ideas. v2: Ben Skeggs <bskeggs@redhat.com> - fix duplicate assignments noticed by clang - implement some forgotten yelling in error path - ensure 64-bit engine mask is used everywhere v3: Marcin Slusarz <marcin.slusarz@gmail.com> - sparse fixes - inline nv_printk into nv_assert to prevent recursive inlining issues v4: Ben Skeggs <bskeggs@redhat.com> - fixed minor memory leak on gpuobj destruction Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/agp: move all agp stuff into its own source fileBen Skeggs2012-10-037-161/+173
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: restructure source tree, split core from drm implementationBen Skeggs2012-10-03111-168/+208
| | | | | | | | | | | | | | Future work will be headed in the way of separating the policy supplied by the nouveau drm module from the mechanisms provided by the driver core. There will be a couple of major classes (subdev, engine) of driver modules that have clearly defined tasks, and the further directory structure change is to reflect this. No code changes here whatsoever, aside from fixing up a couple of include file pathnames. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gem: use bo.offset rather than mm_node.startBen Skeggs2012-10-031-6/+3
| | | | | | | | Won't necessarily be a drm_mm_node in the future, and I can't think of any good reason to not use the offset from the bo struct. There may have been some reason once apon a time, but, separate commit just in case. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0/fence: restore pre-suspend fence buffer context on resumeBen Skeggs2012-10-031-0/+25
| | | | | | | | | Fixes some unfortunate races on resume. The G84 version of the code doesn't need this as "gpuobj"s are automagically suspended/resumed by the core code whereas pinned buffer objects are not. Cc: stable@vger.kernel.org Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* Linux 3.6v3.6Linus Torvalds2012-09-301-1/+1
|
* vfs: dcache: fix deadlock in tree traversalMiklos Szeredi2012-09-291-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IBM reported a deadlock in select_parent(). This was found to be caused by taking rename_lock when already locked when restarting the tree traversal. There are two cases when the traversal needs to be restarted: 1) concurrent d_move(); this can only happen when not already locked, since taking rename_lock protects against concurrent d_move(). 2) racing with final d_put() on child just at the moment of ascending to parent; rename_lock doesn't protect against this rare race, so it can happen when already locked. Because of case 2, we need to be able to handle restarting the traversal when rename_lock is already held. This patch fixes all three callers of try_to_ascend(). IBM reported that the deadlock is gone with this patch. [ I rewrote the patch to be smaller and just do the "goto again" if the lock was already held, but credit goes to Miklos for the real work. - Linus ] Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Cc: Al Viro <viro@ZenIV.linux.org.uk> Cc: stable@vger.kernel.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Merge tag 'iommu-fixes-v3.6-rc7' of ↵Linus Torvalds2012-09-292-20/+28
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu Pull IOMMU fixes from Joerg Roedel: "Two small patches: * One patch to fix the function declarations for !CONFIG_IOMMU_API. This is causing build errors in linux-next and should be fixed for v3.6. * Another patch to fix an IOMMU group related NULL pointer dereference." * tag 'iommu-fixes-v3.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: iommu/amd: Fix wrong assumption in iommu-group specific code iommu: static inline iommu group stub functions
| * iommu/amd: Fix wrong assumption in iommu-group specific codeJoerg Roedel2012-09-281-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new IOMMU groups code in the AMD IOMMU driver makes the assumption that there is a pci_dev struct available for all device-ids listed in the IVRS ACPI table. Unfortunatly this assumption is not true and so this code causes a NULL pointer dereference at boot on some systems. Fix it by making sure the given pointer is never NULL when passed to the group specific code. The real fix is larger and will be queued for v3.7. Reported-by: Florian Dazinger <florian@dazinger.net> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
| * iommu: static inline iommu group stub functionsAlex Williamson2012-09-251-18/+24
| | | | | | | | | | Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
OpenPOWER on IntegriCloud