a3f9bca | Rahul Sharma | 20 November 2012, 11:28:26 UTC | drm: exynos: fix for loosing display mode header during mode adjustment This patch is to preserve the display mode header during the mode adjustment. Display mode header is overwritten with the adjusted mode header which is throwing the stack dump. Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 05 December 2012, 05:39:21 UTC |
3dc5fa9 | Egbert Eich | 20 November 2012, 09:30:16 UTC | drm/exynos: fix memory leak to EDID block drm_get_edid() returns a pointer to an EDID block. The caller is responsible to free this pointer itself. Here the pointer gets assigned to the local variable raw_edid. Therefore it should be freed before the variable goes out of scope. Signed-off-by: Egbert Eich <eich@suse.de> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 05 December 2012, 05:39:20 UTC |
465ed66 | Prathyush K | 20 November 2012, 10:32:56 UTC | drm/exynos: remove 'pages' and 'page_size' elements in exynos gem buffer Changelog v2: Removed redundant check for invalid sgl. Added check for valid page_offset in the beginning of exynos_drm_gem_map_buf. Changelog v1: The 'pages' structure is not required since we can use the 'sgt'. Even for CONTIG buffers, a SGT is created (which will have just one sgl). This SGT can be used during mmap instead of 'pages'. The 'page_size' element of the structure is also not used anywhere and is removed. This patch also fixes a memory leak where the 'pages' structure was being allocated during gem buffer allocation but not being freed during deallocate. Signed-off-by: Prathyush K <prathyush.k@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 05 December 2012, 05:39:20 UTC |
dd26585 | Prathyush K | 19 November 2012, 08:25:28 UTC | drm/exynos: add exynos drm specific fb_mmap function Changelog v3: Passing the actual buffer size instead of vm_size to dma_mmap_attrs. Changelog v2: Extracting the private data from fb_info structure to obtain the exynos gem buffer structure. Now, dma address is obtained from the exynos gem buffer structure and not from smem_start. Also calling dma_mmap_attrs (instead of dma_mmap_writecombine) with the same attributes used during allocation. Changelog v1: This patch adds a exynos drm specific implementation of fb_mmap which supports mapping a non-contiguous buffer to user space. This new function does not assume that the frame buffer is contiguous and calls dma_mmap_writecombine for mapping the buffer to user space. dma_mmap_writecombine will be able to map a contiguous buffer as well as non-contig buffer depending on whether an IOMMU mapping is created for drm or not. Signed-off-by: Prathyush K <prathyush.k@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 05 December 2012, 05:39:20 UTC |
1daa892 | Inki Dae | 22 November 2012, 08:41:23 UTC | drm/exynos: make sure that overlay data are updated Changelog v2: fix a little bit performance issue to previous patch. - When drm framebuffer is destroyed, make sure that overlay data are updated to real hardwrae for all encoders instead of waiting for vblank every page flip request. For this, it adds a new function, exynos_drm_encoder_complete_scanout function. Changelog v1: This patch removes wait_for_vblank call from exynos_drm_encoder_plane_disable function and move it to exynos_drm_encoder_plane_commit function. Disabling dma channel to each plane doens't need vblank signal to update data to real hardware. But updating overlay data to real hardware does need vblank signal. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 05 December 2012, 05:39:19 UTC |
5b07c66 | Inki Dae | 08 November 2012, 12:52:54 UTC | drm/exynos: add vm_ops to specific gem mmaper Changelog v3: use drm_file's file object instead of gem object's - gem object's file represents the shmem storage so process-unique file object should be used instead. Changelog v2: call mutex_lock before drm_vm_open_locked is called. Changelog v1: This patch makes it takes a reference to gem object when specific gem mmap is requested. For this, it sets dev->driver->gem_vm_ops to vma->vm_ops. And this patch is based on exynos-drm-next-iommu branch of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 04 December 2012, 05:46:02 UTC |
2a3098f | Inki Dae | 04 November 2012, 13:48:52 UTC | drm/exynos: add userptr feature for g2d module This patch adds userptr feautre for G2D module. The userptr means user space address allocated by malloc(). And the purpose of this feature is to make G2D's dma able to access the user space region. To user this feature, user should flag G2D_BUF_USRPTR to offset variable of struct drm_exynos_g2d_cmd and fill struct drm_exynos_g2d_userptr with user space address and size for it and then should set a pointer to drm_exynos_g2d_userptr object to data variable of struct drm_exynos_g2d_cmd. The last bit of offset variable is used to check if the cmdlist's buffer type is userptr or not. If userptr, the g2d driver gets user space address and size and then gets pages through get_user_pages(). (another case is counted as gem handle) Below is sample codes: static void set_cmd(struct drm_exynos_g2d_cmd *cmd, unsigned long offset, unsigned long data) { cmd->offset = offset; cmd->data = data; } static int solid_fill_test(int x, int y, unsigned long userptr) { struct drm_exynos_g2d_cmd cmd_gem[5]; struct drm_exynos_g2d_userptr g2d_userptr; unsigned int gem_nr = 0; ... g2d_userptr.userptr = userptr; g2d_userptr.size = x * y * 4; set_cmd(&cmd_gem[gem_nr++], DST_BASE_ADDR_REG | G2D_BUF_USERPTR, (unsigned long)&g2d_userptr); ... } int main(int argc, char **argv) { unsigned long addr; ... addr = malloc(x * y * 4); ... solid_fill_test(x, y, addr); ... } And next, the pages are mapped with iommu table and the device address is set to cmdlist so that G2D's dma can access it. As you may know, the pages from get_user_pages() are pinned. In other words, they CAN NOT be migrated and also swapped out. So the dma access would be safe. But the use of userptr feature has performance overhead so this patch also has memory pool to the userptr feature. Please, assume that user sends cmdlist filled with userptr and size every time to g2d driver, and the get_user_pages funcion will be called every time. The memory pool has maximum 64MB size and the userptr that user had ever sent, is holded in the memory pool. This meaning is that if the userptr from user is same as one in the memory pool, device address to the userptr in the memory pool is set to cmdlist. And last, the pages from get_user_pages() will be freed once user calls free() and the dma access is completed. Actually, get_user_pages() takes 2 reference counts if the user process has never accessed user region allocated by malloc(). Then, if the user calls free(), the page reference count becomes 1 and becomes 0 with put_page() call. And the reverse holds as well. This means how the pages backed are used by dma and freed. This patch is based on "drm/exynos: add iommu support for g2d", https://patchwork.kernel.org/patch/1629481/ Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 04 December 2012, 05:46:01 UTC |
1119707 | Prathyush K | 07 November 2012, 10:28:58 UTC | drm/exynos: remove unnecessary sg_alloc_table call The function dma_get_sgtable will allocate a sg table internally so it is not necessary to allocate a sg table before it. The unnecessary 'sg_alloc_table' call is removed. Signed-off-by: Prathyush K <prathyush.k@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 04 December 2012, 05:46:00 UTC |
4ddc404 | Rahul Sharma | 05 November 2012, 15:34:29 UTC | drm: exynos: fix for mapping of dma buffers This patch fixes the problem of mapping contigous and non contigous dma buffers. Currently page struct is calculated from the buf->dma_addr which is not the physical address. It is replaced by buf->pages which points to the page struct of the first page of contigous memory chunk. This gives the correct page frame number for mapping. Non-contigous dma buffers are described using SG table and SG lists. Each valid SG List is pointing to a single page or group of pages which are physically contigous. Current implementation just maps the first page of each SG List and leave the other pages unmapped, leading to a crash. Given solution finds the page struct for the faulting page through parsing SG table and map it. Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 04 December 2012, 05:46:00 UTC |
ea6d66c | Inki Dae | 02 November 2012, 07:10:39 UTC | drm/exynos: remove EXYNOS_BO_NONCONTIG type checking. With iommu support, non-continuous buffer also is supported so this patch removes these checking from exynos_drm_gem_get/put_dma_addr funciton. This patch is based on the below patch set, "drm/exynos: add iommu support for -next". http://www.spinics.net/lists/dri-devel/msg29041.html Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 04 December 2012, 05:45:59 UTC |
d87342c | Inki Dae | 04 November 2012, 04:53:24 UTC | drm/exynos: add iommu support for g2d Chagelog v2: removed unnecessary structure, struct g2d_gem_node. Chagelog v1: This patch adds iommu support for g2d driver. For this, it adds subdrv_probe/remove callback to enable or disable g2d iommu. And with this patch, in case of using g2d iommu, we can get or put device address to a gem handle from user through exynos_drm_gem_get/put_dma_addr(). Actually, these functions take a reference to a gem handle so that the gem object used by g2d dma is released properly. And runqueue_node has a pointer to drm_file object of current process to manage gem handles to owner. This patch is based on the below patch set, "drm/exynos: add iommu support for -next". http://www.spinics.net/lists/dri-devel/msg29041.html Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 04 December 2012, 05:45:58 UTC |
1055b39 | Inki Dae | 19 October 2012, 08:37:35 UTC | drm/exynos: add iommu support for hdmi driver Changelog v2: move iommu support feature to mixer side. And below is Prathyush's comment. According to the new IOMMU framework for exynos sysmmus, the owner of the sysmmu-tv is mixer (which is the actual device that does DMA) and not hdmi. The mmu-master in sysmmu-tv node is set as below in exynos5250.dtsi sysmmu-tv { - mmu-master = <&mixer>; }; Changelog v1: The iommu will be enabled when hdmi sub driver is probed and will be disabled when removed. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 04 December 2012, 05:45:53 UTC |
bcc5cd1 | Inki Dae | 19 October 2012, 08:16:36 UTC | drm/exynos: add iommu support to fimd driver The iommu will be enabled when fimd sub driver is probed and will be disabled when removed. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:35 UTC |
0519f9a | Inki Dae | 20 October 2012, 14:53:42 UTC | drm/exynos: add iommu support for exynos drm framework Changelog v4: - fix condition to drm_iommu_detach_device funtion. Changelog v3: - add dma_parms->max_segment_size setting of drm_device->dev. - use devm_kzalloc instead of kzalloc. Changelog v2: - fix iommu attach condition. . check archdata.dma_ops of drm device instead of subdrv device's one. - code clean to exynos_drm_iommu.c file. . remove '#ifdef CONFIG_ARM_DMA_USE_IOMMU' from exynos_drm_iommu.c and add it to driver/gpu/drm/exynos/Kconfig. Changelog v1: This patch adds iommu support for exynos drm framework with dma mapping api. In this patch, we used dma mapping api to allocate physical memory and maps it with iommu table and removed some existing codes and added new some codes for iommu support. GEM allocation requires one device object to use dma mapping api so this patch uses one iommu mapping for all sub drivers. In other words, all sub drivers have same iommu mapping. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:35 UTC |
549a17e | Marek Szyprowski | 15 October 2012, 14:03:52 UTC | ARM: dma-mapping: add support for DMA_ATTR_FORCE_CONTIGUOUS attribute This patch adds support for DMA_ATTR_FORCE_CONTIGUOUS attribute for dma_alloc_attrs() in IOMMU-aware implementation. For allocating physically contiguous buffers Contiguous Memory Allocator is used. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> | 29 November 2012, 11:30:34 UTC |
4b9347d | Marek Szyprowski | 15 October 2012, 14:03:51 UTC | common: DMA-mapping: add DMA_ATTR_FORCE_CONTIGUOUS attribute This patch adds DMA_ATTR_FORCE_CONTIGUOUS attribute to the DMA-mapping subsystem. By default DMA-mapping subsystem is allowed to assemble the buffer allocated by dma_alloc_attrs() function from individual pages if it can be mapped as contiguous chunk into device dma address space. By specifing this attribute the allocated buffer is forced to be contiguous also in physical memory. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> | 29 November 2012, 11:30:34 UTC |
e7783ba | Imre Deak | 02 November 2012, 11:30:50 UTC | drm: hold event_lock while accessing vblank_event_list Currently the only users of drm_vblank_off() are i915 and gma500, neither of which holds the event_lock when calling this function. Fix this by holding the event_lock while traversing the list. Signed-off-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:34 UTC |
9fb7dff | Imre Deak | 02 November 2012, 11:30:49 UTC | drm/exynos: fix lockdep for event_lock wrt. vbl_time_lock Currently the exynos driver calls drm_vblank_off() with the event_lock held, while drm_vblank_off() will lock vbl_time and vblank_time_lock. This lock dependency chain conflicts with the one in drm_handle_vblank() where we first lock vblank_time_lock and then the event_lock. Fix this by removing the above drm_vblank_off() calls which are in fact never executed: drm_dev->vblank_disable_allowed is only ever non-zero during driver init, until it's set in {fimd,vidi}_subdrv_probe. Both the driver init and open code is protected by drm_global_mutex, so the earliest page flip ioctl can happen only after vblank_disable_allowed is set to 1. Thus {fimd,vidi}_finish_pageflip - with pending flip events - will always get called with vblank_disable_allowed being 1. Signed-off-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:34 UTC |
e1f48ee | Imre Deak | 02 November 2012, 11:30:48 UTC | drm/exynos: call drm_vblank_put for each queued flip event It's guaranteed that for each event on pageflip_event_list we have called drm_vblank_get() - see exynos_drm_crtc_page_flip() - so checking for this is redundant. Also we need to call drm_vblank_put() for each event on the list, not only once, otherwise we'd leak vblank references if there are multiple events on the list. Signed-off-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:33 UTC |
8547332 | Imre Deak | 02 November 2012, 11:30:47 UTC | drm/exynos: hold event_lock while accessing pageflip_event_list Signed-off-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:33 UTC |
fdd66e0 | Sachin Kamat | 19 November 2012, 09:20:30 UTC | drm/exynos: Fix potential NULL pointer dereference in exynos_drm_encoder.c Check overlay_ops is not NULL as checked in the previous 'if' condition. Fixes the following smatch error: drivers/gpu/drm/exynos/exynos_drm_encoder.c:509 exynos_drm_encoder_plane_disable() error: we previously assumed 'overlay_ops' could be null (see line 499) Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:33 UTC |
6ecf18f | Sachin Kamat | 19 November 2012, 09:52:54 UTC | drm/exynos: Make exynos4/5_fimd_driver_data static Fixes the following sparse warnings: drivers/gpu/drm/exynos/exynos_drm_fimd.c:65:25: warning: symbol 'exynos4_fimd_driver_data' was not declared. Should it be static? drivers/gpu/drm/exynos/exynos_drm_fimd.c:69:25: warning: symbol 'exynos5_fimd_driver_data' was not declared. Should it be static? Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:33 UTC |
8e8755d | Inki Dae | 14 November 2012, 11:41:35 UTC | drm/exynos: fix overlay updating issue Chagelog v2: Move encoder's dpms updating into exynos_drm_encoder_commit function because when crtc's dpms is updated, encoder's dpms is updated also. This would induce the issue that encoder isn't disabled after crtc is disabled. Changelog v1: This patch fixes a issue that overlay data aren't applied to real hardware when dpms off goes to on after setcrtc was requested like below, dpms off -> setcrtc -> dpms off -> dpms on For this, it makes encoder's dpms to be updated when setcrtc is requested. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:33 UTC |
fa3692d | Inki Dae | 14 November 2012, 08:28:36 UTC | drm/exynos: remove unnecessary code. plane->fb will be set to new fb after update_plane callback is called by drm_mode_set_plane() Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:33 UTC |
9d93479 | Inki Dae | 09 November 2012, 07:41:29 UTC | drm/exynos: fix linux framebuffer address setting. With iommu, buffer->dma_addr has device addres so this patch fixes for physical address to be set to fix.smem_start always. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> | 29 November 2012, 11:30:33 UTC |
7136470 | Dave Airlie | 29 November 2012, 10:23:56 UTC | Merge branch 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel into drm-next Daniel writes: Besides the big item of lifting the "preliminary hw support" tag from the Haswell code, just small bits&pieces all over: - Leftover Haswell patches and some fixes from Paulo - LyncPoint PCH support (for hsw) - OOM handling improvements from Chris Wilson - connector property and send_vblank_event refactorings from Rob Clark - random pile of small fixes Note that the send_vblank refactorings will cause some locking WARNs to show up. Imre has fixed that up, but since all the driver changes outside of the drm core have been for exonys, those four patches are merged through the exonys-next tree. Meh, I've forgotten to cherry-pick an important fix from Ben for a regression in the 3.8 gen6+ gtt code. New pull request below. While I'm at it, the hdmi VIC patch for the drm edid code is still in my queue, I'll send you that in the next 3.8-fixes pull. * 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel: (33 commits) drm/i915: Fix pte updates in ggtt clear range drm/i915: promote Haswell to full support drm/i915: Report the origin of the LVDS fixed panel mode drm/i915: LVDS fallback to fixed-mode if EDID not present drm/i915/sdvo: kfree the intel_sdvo_connector, not drm_connector, on destroy drm/i915: drm_connector_property -> drm_object_property drm/i915: use drm_send_vblank_event() helper drm/i915: Use pci_resource functions for BARs. drm/i915: Borrow our struct_mutex for the direct reclaim drm/i915: Defer assignment of obj->gtt_space until after all possible mallocs drm/i915: Apply the IBX transcoder A w/a for HDMI to SDVO as well drm/i915: implement WaMbcDriverBootEnable on Haswell drm/i915: fix intel_ddi_get_cdclk_freq for ULT machines drm/i915: make the panel fitter work on pipes B and C on Haswell drm/i915: make the panel fitter work on pipes B and C on IVB drm/i915: don't intel_crt_init if DDI A has 4 lanes drm/i915: make DP work on LPT-LP machines drm/i915: fix false positive "Unclaimed write" messages drm/i915: use cpu/pch transcoder on intel_enable_pipe drm/i915: don't limit Haswell CRT encoder to pipe A ... | 29 November 2012, 10:23:56 UTC |
2ff4aea | Ben Widawsky | 27 November 2012, 05:52:54 UTC | drm/i915: Fix pte updates in ggtt clear range This bug was introduced by me: commit e76e9aebcdbfebae8f4cd147e3c0f800d36e97f3 Author: Ben Widawsky <ben@bwidawsk.net> Date: Sun Nov 4 09:21:27 2012 -0800 drm/i915: Stop using AGP layer for GEN6+ The existing code uses memset_io which follows memset semantics in only guaranteeing a write of individual bytes. Since a PTE entry is 4 bytes, this can only be correct if the scratch page address is 0. This caused unsightly errors when we clear the range at load time, though I'm not really sure what the heck is referencing that memory anyway. I caught this is because I believe we have some other bug where the display is doing reads of memory we feel should be cleared (or we are relying on scratch pages to be a specific value). Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> | 29 November 2012, 10:14:44 UTC |
bd3b49f | Thierry Reding | 28 November 2012, 19:45:28 UTC | drm: tegra: Add maintainers entry Add myself as the maintainer of the NVIDIA Tegra DRM driver. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de> Acked-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Dave Airlie <airlied@redhat.com> | 29 November 2012, 08:20:40 UTC |
ca06241 | Jingoo Han | 29 November 2012, 04:26:05 UTC | drm/pci: add missing variable initialization Fixed build warning as below: drivers/gpu/drm/drm_pci.c: In function 'drm_pcie_get_speed_cap_mask': drivers/gpu/drm/drm_pci.c:496:9: warning: 'lnkcap' may be used uninitialized in this function [-Wuninitialized] drivers/gpu/drm/drm_pci.c:497:10: warning: 'lnkcap2' may be used uninitialized in this function [-Wuninitialized] Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Dave Airlie <airlied@redhat.com> | 29 November 2012, 08:20:31 UTC |
a8f559e | Sachin Kamat | 20 November 2012, 06:05:32 UTC | drm/nouveau/device: Remove duplicate inclusion of core/device.h core/device.h was included twice. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:13 UTC |
24c89e9 | Sachin Kamat | 20 November 2012, 05:53:50 UTC | drm/nouveau: remove duplicate inclusion of nouveau_ttm.h nouveau_ttm.h was included twice. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:13 UTC |
edc260d | Ben Skeggs | 27 November 2012, 01:05:36 UTC | drm/nouveau/fifo: trigger engine context unload before zeroing context pointer Fixes a PCE0 page fault noticed on NVD9 during module unload. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:12 UTC |
c9aa763 | Daniel J Blueman | 24 November 2012, 02:11:46 UTC | drm/nouveau: prevent log mangling On 3.7-rc6, add missing newline to to prevent the following kernel log line getting appended to the current one after switching the integrated GPU and suspending the discrete GPU. Signed-off-by: Daniel J Blueman <daniel@quora.org> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:12 UTC |
04c8c21 | Marcin Slusarz | 25 November 2012, 22:04:23 UTC | drm/nouveau: unpin various bo's before destroying These objects leak VRAM - but only on module unload. Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:11 UTC |
124ea29 | Marcin Slusarz | 25 November 2012, 22:02:28 UTC | drm/nouveau: unpin pushbuffer bo before destroying it Fixes GART leak (as accounted by nouveau_drm.gem.gart_available). Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:11 UTC |
3f69e76 | Marcin Slusarz | 25 November 2012, 22:01:28 UTC | drm/nouveau: remove misleading comment from nouveau_prime_new Copy/pasted from nouveau_gem_new. Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:10 UTC |
ae4ba73 | Marcin Slusarz | 25 November 2012, 22:00:57 UTC | drm/nouveau: raise reporting levels of some messages Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:10 UTC |
507ceb1 | Martin Peres | 26 November 2012, 23:30:32 UTC | drm/nouveau/core: fix the assumption that NVDEV_XXXX is always under 32 It fixes a bug that would have been introduced when adding more sudevs/engines. Signed-off-by: Martin Peres <martin.peres@labri.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:09 UTC |
d1be7e9 | Ben Skeggs | 23 November 2012, 01:20:11 UTC | drm/nouveau/ppp: remove nouveau_ppp base class Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:09 UTC |
fb9bff2 | Ben Skeggs | 23 November 2012, 01:14:49 UTC | nve0/ppp: enable support via nvc0's implementation NVIDIA also appear to use the same class on Fermi/Kepler for PPP. Will allow use of the engine if firmware (nvXX_fuc086) provided. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:08 UTC |
4a79501 | Maarten Lankhorst | 23 November 2012, 01:13:36 UTC | nvc0/ppp: initial implementation of engine Will allow use of the engine if firmware (nvXX_fuc086) provided. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:08 UTC |
7d8bd91 | Maarten Lankhorst | 23 November 2012, 01:10:45 UTC | nvc0/vp: initial implementation of engine Will allow use of the engine if firmware (nvXX_fuc085) provided. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:07 UTC |
23c14ed | Maarten Lankhorst | 23 November 2012, 01:08:23 UTC | nvc0/bsp: initial implementation of engine Will allow use of the engine if firmware (nvXX_fuc084) provided. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:07 UTC |
66433c2 | Ben Skeggs | 22 November 2012, 06:01:06 UTC | drm/nouveau/vdec: remove nouveau_{bsp,vp} base classes, use nouveau_engine directly Later chipsets use falcon anyway, and I can't currently see a good need for a shared base class. PPP will get the same treatment once Maarten's patches are merged. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:07 UTC |
f3295b3 | Ben Skeggs | 22 November 2012, 05:54:46 UTC | drm/nve0/fifo: allow for future binding of ppp contexts No support for the class yet, but will be pulled in with Maarten's Fermi vdec patches. The Kepler PPP class is identical. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:06 UTC |
a7416d0 | Ben Skeggs | 22 November 2012, 05:48:41 UTC | drm/nve0/vp: implement initial support for engine Will allow use of the engine if firmware (nvXX_fuc085) provided. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:06 UTC |
b2f04fc | Ben Skeggs | 22 November 2012, 05:42:23 UTC | drm/nve0/bsp: implement initial support for engine Will allow use of the engine if firmware (nvXX_fuc084) provided. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:05 UTC |
4946980 | Ben Skeggs | 22 November 2012, 03:43:55 UTC | drm/nve0: allow specification of channel engine type in abi16 call Previously, if either vram/gart handles were specified as ~0, the ioctl call would fail. In order to hack engine selection into the ioctl for kepler, we now define (fb_ctxdma_handle == ~0) to mean "engine mask is in tt_ctxdma_handle". This approach also allows new userspace to detect lack of support for non-PGRAPH channels on older kernels. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:05 UTC |
4359887 | Ben Skeggs | 22 November 2012, 03:27:37 UTC | drm/nouveau/core: implement shortcut for simple engctx construction Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:04 UTC |
e5e454f | Ben Skeggs | 22 November 2012, 03:02:06 UTC | drm/nvc0/copy: share interrupt handler with nva3 Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:04 UTC |
874309a | Ben Skeggs | 22 November 2012, 02:57:32 UTC | drm/nv50/fb: implement trap handler as subdev interrupt handler nv50_fb_trap() will now be called automagically by the mc intr handler, rather than each engine's handler having to check for traps manually. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:03 UTC |
e0cdd1e | Ben Skeggs | 22 November 2012, 02:49:42 UTC | drm/nouveau/mc: allow calling of multiple handlers for a give intr bit Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:03 UTC |
3cb0ebd | Ben Skeggs | 22 November 2012, 02:37:30 UTC | drm/nouveau/copy: remove nouveau_copy base class nva3/nvc0 are using falcon, nve0 is now using engine directly. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:02 UTC |
586ae46 | Ben Skeggs | 22 November 2012, 02:33:25 UTC | drm/nvc0/copy: use nouveau_falcon base class Reviewed-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:02 UTC |
8365f2f | Ben Skeggs | 22 November 2012, 02:27:05 UTC | drm/nva3/copy: use nouveau_falcon base class Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:01 UTC |
27abc13 | Ben Skeggs | 22 November 2012, 02:18:57 UTC | drm/nv98/crypt: use nouveau_falcon base class Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:01 UTC |
e3aaa94 | Ben Skeggs | 21 November 2012, 11:02:32 UTC | drm/nouveau: initial falcon (fuc) engine base class implementation Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:00 UTC |
2d8b9cc | Dave Airlie | 02 November 2012, 01:04:28 UTC | drm/nouveau: convert to dev_pm_ops This is a precursor to dynamic power management support for nouveau, we need to use pm ops for that, so first convert the driver to using pm ops interfaces. Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:58:00 UTC |
c839d74 | Dave Airlie | 02 November 2012, 01:04:27 UTC | drm/nouveau: Add interface to detect optimus and v1 support This is required to decide if we can auto-powerdown and how to implement it. Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:59 UTC |
bf2c886 | Ben Skeggs | 21 November 2012, 04:49:54 UTC | drm/nouveau/disp: add support for 10bpc over DisplayPort Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:59 UTC |
e225f44 | Ben Skeggs | 21 November 2012, 04:40:21 UTC | drm/nouveau: rename nvd0_display to nv50_display to reflect reality since merge Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:58 UTC |
4f6029d | Ben Skeggs | 16 November 2012, 01:54:31 UTC | drm/nv50-nvc0: switch to common disp impl, removing previous version Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:58 UTC |
f9887d0 | Ben Skeggs | 21 November 2012, 03:03:42 UTC | drm/nvd0/disp: implement support for colour vibrance control Ported from original nv50 commit by Christoph, with added support for the setting on later chipsets. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:57 UTC |
647bf61 | Ben Skeggs | 19 November 2012, 00:18:25 UTC | drm/nvd0/disp: remove fetching of capabilities report Unused, and caused a race with evo_sync(). Will revisit using it properly later on. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:57 UTC |
63718a0 | Ben Skeggs | 16 November 2012, 01:44:14 UTC | drm/nvd0/disp: enable support for older display classes Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:56 UTC |
4705730 | Ben Skeggs | 16 November 2012, 03:58:48 UTC | drm/nvd0/disp: support creation of fb dma objects on older chipsets Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:56 UTC |
ed5085a | Ben Skeggs | 16 November 2012, 03:16:51 UTC | drm/nvd0/disp: implement support for older DISP_SYNC classes Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:56 UTC |
419e8dc | Ben Skeggs | 16 November 2012, 01:40:34 UTC | drm/nvd0/disp: implement sor support for older display classes Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:55 UTC |
97b19b5 | Ben Skeggs | 16 November 2012, 01:21:37 UTC | drm/nvd0/disp: implement dac support for older display classes Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:55 UTC |
de8268c | Ben Skeggs | 16 November 2012, 00:24:31 UTC | drm/nvd0/disp: start implementing support for older display classes Currently unused, but checkpointing the merged head handling routines. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:54 UTC |
8f2abc2 | Ben Skeggs | 15 November 2012, 08:58:01 UTC | drm/nouveau/dp: remove last bits of VBIOS parsing from DRM code Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:54 UTC |
6c8e463 | Ben Skeggs | 15 November 2012, 08:56:02 UTC | drm/nouveau/dp: move core link training calls to common code Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:53 UTC |
b6e4ad2 | Ben Skeggs | 11 November 2012, 23:55:16 UTC | drm/nouveau: remove (now obsolete) BIT U table parsing from DRM code Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:53 UTC |
186ecad | Ben Skeggs | 09 November 2012, 02:09:48 UTC | drm/nv50/disp: move remaining interrupt handling into core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:52 UTC |
4a230fa | Ben Skeggs | 09 November 2012, 01:25:37 UTC | drm/nvd0/disp: calculate U script id in supervisor interrupt This is like we do on nv50:nvd9 already. There's been no problems seen yet with using this *seemingly* scratch register to store the value, but we won't be able to do this anymore once nv50's code is merged. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:52 UTC |
8e9e3d2 | Ben Skeggs | 09 November 2012, 00:54:38 UTC | drm/nv84/disp: move hdmi control into core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:51 UTC |
a4feaf4 | Ben Skeggs | 09 November 2012, 00:38:10 UTC | drm/nva3/disp: move hda codec handling to core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:51 UTC |
f796073 | Ben Skeggs | 08 November 2012, 23:53:28 UTC | drm/nv50/disp: move dp link training helpers into core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:50 UTC |
7ebb38b | Ben Skeggs | 08 November 2012, 23:38:06 UTC | drm/nv50/disp: call into core for dac load detection Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:50 UTC |
ef22c8b | Ben Skeggs | 08 November 2012, 23:32:56 UTC | drm/nv50/disp: call into core to handle dac/sor power state changes Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:49 UTC |
2d0aca2 | Ben Skeggs | 08 November 2012, 23:22:31 UTC | drm/nv50/disp: allocate display from driver core EVO channels still handled "manually", this won't be ported here, and will instead be held off until nv50_display/nvd0_display are merged. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:49 UTC |
75f8693 | Ben Skeggs | 08 November 2012, 07:41:06 UTC | drm/nouveau/bios: implement some dcb output entry parsing/matching functions Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:48 UTC |
ed58aee | Ben Skeggs | 08 November 2012, 04:59:26 UTC | drm/nvd0/disp: handle DP transfer unit setup from second supervisor interrupt This is what we've done forever in nv50_display.c, and also allows the last direct MMIO accesses to be removed from nvd0_display.c. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:48 UTC |
1c30cd0 | Ben Skeggs | 08 November 2012, 04:22:28 UTC | drm/nvd0/disp: move HDMI control to core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:47 UTC |
0a9e2b9 | Ben Skeggs | 08 November 2012, 04:03:56 UTC | drm/nvd0/disp: move HDA codec setup to core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:47 UTC |
35b21d3 | Ben Skeggs | 08 November 2012, 02:08:55 UTC | drm/nvd0/disp: call into core to handle dac power state changes Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:46 UTC |
74b6685 | Ben Skeggs | 08 November 2012, 02:01:39 UTC | drm/nvd0/disp: call into core to handle sor power state changes Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:46 UTC |
6c5a042 | Ben Skeggs | 07 November 2012, 06:43:00 UTC | drm/nvd0/disp: move link training helpers into core as display methods Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:45 UTC |
fb445b3 | Ben Skeggs | 07 November 2012, 06:28:35 UTC | drm/nouveau/core: allow representing method ranges in nouveau_omthds Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:45 UTC |
cbe7270 | Ben Skeggs | 07 November 2012, 06:16:41 UTC | drm/nouveau/core: expose full method calling capabilities with nv_exec nv_call() just allows mthd+u32 submission, nv_exec() exposes the mthd+data+size interface which will be used in future commits. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:45 UTC |
65c7866 | Ben Skeggs | 06 November 2012, 06:03:51 UTC | drm/nouveau/bios: implement "full" BIT 'd' table (and subtable) parsing in core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:44 UTC |
14464b8 | Ben Skeggs | 02 November 2012, 01:33:27 UTC | drm/nvd0/disp: move remaining interrupt handling to core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:44 UTC |
206c38a | Ben Skeggs | 01 November 2012, 01:09:53 UTC | drm/nouveau/core: add some missing subdev/engine disable flags Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:43 UTC |
b6caea5 | Ben Skeggs | 02 November 2012, 01:02:47 UTC | drm/nouveau/bios: implement BIT 'U' table (and subtable) parsing in core This will, in the near future, replace what's currently in the DRM nouveau_bios.c code. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:43 UTC |
b5a794b | Ben Skeggs | 16 October 2012, 04:18:32 UTC | drm/nvd0/disp: allocate display and evo channels from driver core Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:42 UTC |
d6bf2f3 | Ben Skeggs | 30 October 2012, 00:59:12 UTC | drm/nouveau: run mode_config destructor before destroying internal display state Later changes will depend on being able to pull down CRTCs etc with the master display state still intact. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:42 UTC |
94e5c39 | Ben Skeggs | 29 October 2012, 03:36:45 UTC | drm/nouveau/drm/nvd0/disp: display->disp Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:41 UTC |
dd0e3d5 | Ben Skeggs | 16 October 2012, 04:00:31 UTC | drm/nvd0/disp: introduce a nvd0_head as a subclass of nouveau_crtc This will be used instead of storing a heap of per-head data (such as evo channels) in nvd0_display in some other way. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:41 UTC |
4665406 | Ben Skeggs | 28 August 2012, 04:10:39 UTC | drm/nvd0-nve0/disp: initial implementation of evo channel classes Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | 28 November 2012, 23:57:40 UTC |
944234d | Ben Skeggs | 30 October 2012, 00:03:38 UTC | drm/nv50/disp: allow PCI_US pushbuf binding | 28 November 2012, 23:57:40 UTC |