summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-10-06ion: Update Juno ion device for latest CPA changesarm-juno-mali-fpgaMatt Szczesiak
The latest updates to Compound Page pool require platform data, which defines the low/high/fill marks of the pool as well the allocation page order and alignment. This commit adds example CPA platform data for 2MB page allocations on Juno device. Change-Id: I57287d4cfbe5ea254b42e0cd6573bfdf587cab6d Signed-off-by: Matt Szczesiak <matt.szczesiak@arm.com>
2017-10-06Update CPA ION heap to v1John Einar Reitan
The CPA ION heap has had some minor updates since the previous publication. Mainly: - Renamed from CPP to CPA - Removed most CONFIG variables, replacing them with ion_platform_heap priv data. - Differentiation between hot-path (__GFP_NORETRY) vs refill. - debugfs: Bitmap of partial 2MB blocks added Change-Id: Ie534137a16f914bd79dcba369a2b1dbf5772d9f4 Signed-off-by: John Einar Reitan <john.reitan@arm.com>
2016-03-10configs : add config for GPU+VP+DP Juno platformSarah Walker
Change-Id: I4a80e4bde63edebe1c721997d67fdaf2066a7638
2016-03-10arm64: dts: add device tree for TMIM+VP550+DP650 Juno platform (MMSS-B)Sarah Walker
Change-Id: I55c23c21623f896167622d18fc6d7854e394515d
2016-03-10arm64: dts: add device tree for GPU+VP+DP Juno platformSarah Walker
This commit adds a new DTS for the GPU+VP+DP Juno platform. In order to reduce duplication between this and the basic Juno platform, the common areas have been split into 'juno-common.dtsi'. Change-Id: Ice7bc9ee649332f3031181d6728d91043b6f8e3d
2016-03-10ion: Enable __GFP_WAIT/__GFP_RECLAIMJohn Einar Reitan
Allow Linux to reclaim memory during our alloc_pages call. This should increase the chance of getting 2MB pages on a stressed system. Change-Id: I125f4840461a4b4f09a41c0936dfd3846db001e4
2016-01-15ion: Integrate Compound Page PoolJohn Einar Reitan
Change-Id: I62f50e2c33006734a23a3794cabec3dd9bf305c8 Signed-off-by: John Einar Reitan <john.reitan@arm.com>
2016-01-15ion: Expose compound page heapJohn Einar Reitan
This exposes the new compound page heap in the ion core, but device-specific inclusion of the heap must be done in the platform heaps definition. Change-Id: Ib6ca7bf73b40766ce2e787396722116ff1dc78b1 Signed-off-by: John Einar Reitan <john.reitan@arm.com>
2016-01-15ion: Compound page heapJohn Einar Reitan
This heap backs ion buffers with configurable sized compound pages. It employs a free list to avoid triggering memory compaction too often. The heap employs a worker thread to handle zeroing of freed pages, cache maintenance and for allocating memory for the free list. The free list can release memory back to the kernel via a memory shrinker. Extensive statistics is collected when enabled. This includes the number of buffers seen, the number of buffers currently active, the buffer size distribution, hard and soft allocation failures etc. Change-Id: I5bd5323ba19e06517f95b27bbd88859d1c987e11 Signed-off-by: John Einar Reitan <john.reitan@arm.com>
2016-01-15ion: scatterlist offset not used for user/kernel mappingJohn Einar Reitan
ION's default user/kernel page mapping code don't honor the offset option for scatterlists. It uses sg_page and expect the whole page to be mapped, while the offset could dictate an offset within a large page. sg_phys correctly accounts for the offset, so should be used instead. Change-Id: If8bebb0b6c294e18bddaceacf771af4d6846085b Signed-off-by: John Einar Reitan <john.reitan@arm.com>
2015-12-16of: Fix of_graph_parse_endpoint stub for !CONFIG_OF buildsPhilipp Zabel
This patch fixes the following build error: In file included from drivers/media/i2c/adv7343.c:29:0: >> include/linux/of_graph.h:41:1: error: expected identifier or '(' before '{' token { ^ include/linux/of_graph.h:39:19: warning: 'of_graph_parse_endpoint' declared 'static' but never defined [-Wunused-function] static inline int of_graph_parse_endpoint(const struct device_node *node, ^ vim +41 include/linux/of_graph.h 35 const struct device_node *node); 36 struct device_node *of_graph_get_remote_port(const struct device_node *node); 37 #else 38 39 static inline int of_graph_parse_endpoint(const struct device_node *node, 40 struct of_endpoint *endpoint); > 41 { 42 return -ENOSYS; 43 } 44 This is a backport from Mainline 3.15 commit: 00fd9619120db1d6a19be2f9e3df6f76234b311b Change-Id: I87ed1b1520ea93fe1ee0807b521b2ebaf25430e8 Reported-by: kbuild test robot <fengguang.wu@intel.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Brian Starkey <brian.starkey@arm.com>
2015-12-16[media] of: move common endpoint parsing to drivers/ofPhilipp Zabel
This patch adds a new struct of_endpoint which is then embedded in struct v4l2_of_endpoint and contains the endpoint properties that are not V4L2 (or even media) specific: the port number, endpoint id, local device tree node and remote endpoint phandle. of_graph_parse_endpoint parses those properties and is used by v4l2_of_parse_endpoint, which just adds the V4L2 MBUS information to the containing v4l2_of_endpoint structure. This is a backport from Mainline 3.15 commit: f2a575f67695dcba9062acd666ae5aab2380b95c Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Mauro Carvalho Chehab <m.chehab@samsung.com> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Brian Starkey <brian.starkey@arm.com> Conflicts: drivers/media/v4l2-core/v4l2-of.c drivers/of/base.c include/media/v4l2-of.h Change-Id: I0dbf152f78e9ab4486652244154f1b086e25b4d8
2015-12-16[media] of: move graph helpers from drivers/media/v4l2-core to drivers/ofPhilipp Zabel
This patch moves the parsing helpers used to parse connected graphs in the device tree, like the video interface bindings documented in Documentation/devicetree/bindings/media/video-interfaces.txt, from drivers/media/v4l2-core/v4l2-of.c into drivers/of/base.c. This allows to reuse the same parser code from outside the V4L2 framework, most importantly from display drivers. The functions v4l2_of_get_next_endpoint, v4l2_of_get_remote_port, and v4l2_of_get_remote_port_parent are moved. They are renamed to of_graph_get_next_endpoint, of_graph_get_remote_port, and of_graph_get_remote_port_parent, respectively. Since there are not that many current users yet, switch all of them to the new functions right away. This is a backport from Mainline 3.15 commit: fd9fdb78a9bf85b94fb2190c82ff280c8f8375cc Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Mauro Carvalho Chehab <m.chehab@samsung.com> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Brian Starkey <brian.starkey@arm.com> Conflicts: drivers/media/i2c/adv7343.c (no DT support in 3.10) drivers/media/i2c/mt9p031.c (no DT support in 3.10) drivers/media/i2c/s5k5baf.c (doesn't exist in 3.10) drivers/media/i2c/tvp514x.c (no DT support in 3.10) drivers/media/i2c/tvp7002.c (no DT support in 3.10) drivers/media/platform/exynos4-is/media-dev.c drivers/media/platform/exynos4-is/mipi-csis.c drivers/media/v4l2-core/v4l2-of.c drivers/of/base.c include/media/v4l2-of.h Change-Id: I6eb22afe3b1f23e3bebebbe5709efc00684e04bd
2015-12-16adf: Drop a dma-buf reference in adf_intf_simple_post_configBrian Starkey
adf_intf_simple_post_config results in a call to adf_device_post which copies all the data structures and takes an extra reference on the dma-bufs. Drop the extra reference in adf_intf_simple_post_config, preventing leaked dma_bufs. Change-Id: I5572e24095f443486ece41ea075c0feba03c6ba2 Signed-off-by: Brian Starkey <brian.starkey@arm.com>
2015-08-19iommu/io-pgtable-arm: Unmap and free table when overwriting with blockWill Deacon
When installing a block mapping, we unconditionally overwrite a non-leaf PTE if we find one. However, this can cause a problem if the following sequence of events occur: (1) iommu_map called for a 4k (i.e. PAGE_SIZE) mapping at some address - We initialise the page table all the way down to a leaf entry - No TLB maintenance is required, because we're going from invalid to valid. (2) iommu_unmap is called on the mapping installed in (1) - We walk the page table to the final (leaf) entry and zero it - We only changed a valid leaf entry, so we invalidate leaf-only (3) iommu_map is called on the same address as (1), but this time for a 2MB (i.e. BLOCK_SIZE) mapping) - We walk the page table down to the penultimate level, where we find a table entry - We overwrite the table entry with a block mapping and return without any TLB maintenance and without freeing the memory used by the now-orphaned table. This last step can lead to a walk-cache caching the overwritten table entry, causing unexpected faults when the new mapping is accessed by a device. One way to fix this would be to collapse the page table when freeing the last page at a given level, but this would require expensive iteration on every map call. Instead, this patch detects the case when we are overwriting a table entry and explicitly unmaps the table first, which takes care of both freeing and TLB invalidation. Change-Id: I9215023fed90fd1076f57405f6ef9410456f0833 Cc: <stable@vger.kernel.org> Reported-by: Brian Starkey <brian.starkey@arm.com> Tested-by: Brian Starkey <brian.starkey@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Brian Starkey <brian.starkey@arm.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
2015-08-19iommu: Split iommu_unmapsAlex Williamson
iommu_map splits requests into pages that the iommu driver reports that it can handle. The iommu_unmap path does not do the same. This can cause problems not only from callers that might expect the same behavior as the map path, but even from the failure path of iommu_map, should it fail at a point where it has mapped and needs to unwind a set of pages that the iommu driver cannot handle directly. amd_iommu, for example, will BUG_ON if asked to unmap a non power of 2 size. Fix this by extracting and generalizing the sizing code from the iommu_map path and use it for both map and unmap. Change-Id: Ib115b16a611363241207b77bfb54a849cc2cd96b Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Joerg Roedel <joro@8bytes.org> Signed-off-by: Brian Starkey <brian.starkey@arm.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
2015-08-19of: set dma_mask to point to coherent_dma_maskRob Herring
Platform devices created by DT code don't initialize dma_mask pointer to anything. Set it to coherent_dma_mask by default if the architecture code has not set it. Change-Id: I9d784377ae6017efe8809225cd4b2d39081c7628 Signed-off-by: Rob Herring <rob.herring@calxeda.com> Signed-off-by: Brian Starkey <brian.starkey@arm.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
2015-08-19iommu/arm-smmu: ARM sMMU driverJames King
Add ARM sMMU (MMU-500) driver and some associated dma/ion fixes to use with a display processor Change-Id: Ida0a76323f5868a7f3461d88f85bede434e1bafa Signed-off-by: James King <james.king@arm.com> Signed-off-by: Brian Starkey <brian.starkey@arm.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
2015-05-12juno: dts: add HDMI daughterboardBrian Starkey
This includes the device-tree changes to support the HDMI daughterboard with dual DPs, the FPGA i2c bus, dual TDA998x on the daughterboard and dual slave encoder TX wrappers for the transmitters. Change-Id: I3067711d768e89718c28c52002bc7b530cb3f7c6
2015-05-12juno: dts: Add dual-DP to device-treeBrian Starkey
This adds a second MaliDP-550 to the Juno dts to be used with the dual-DP bitfiles. It also adds a second test-transmitter for the second DP. Change-Id: I02832fe568318e5e629fb9f5b49bdf6e9e449bf1
2015-05-12drm: encoder_slave: don't unregister DT-probed i2c clientsBrian Starkey
This checks the slave i2c_client for an of_node in drm_i2c_encoder_destroy, and will not unregister the device if it exists. If the device was registered by device-tree then the drm_encoder code shouldn't unregister it. Change-Id: I251e57784d78e7d796b80784981ac31c2c04d4d5
2015-05-12drm/i2c: tda998x: add DT supportJean-Francois Moine
This patch adds DT support to the tda998x. Change-Id: I8070deecec62e080ef824be43121738bcfc132e7 Tested-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2015-02-10configs: Juno: Update for FPGA buildsDavid Brown
Replace the dummy ION driver with the Juno version as well as disabling in-tree builds of the Mali GPU driver in order to be able to test out-of-tree builds. Signed-off-by: David Brown <david.brown@arm.com>
2015-02-10juno: Add DT entries for Mali-DP550 on FPGADavid Brown
Signed-off-by: David Brown <david.brown@arm.com>
2015-02-10juno: ion: Hack around bogus physical addressesDavid Brown
Temporary workaround to avoid the issue that sg_phys is returning bogus addresses from the DMA heap in Juno's ION implementation. Signed-off-by: David Brown <david.brown@arm.com>
2015-02-10juno: ion: Initial ION driver for JunoDavid Brown
Previously ION support on Juno was limited to the dummy ION driver available in the Kernel. This, however, makes it difficult to add any additional heaps which are specific to the Juno platform. To address this we create a Juno-specific ION implementation. The implementation currently has a hacked-up, hardcoded additional DMA heap that provides access to the DDR RAM present in the virtex 7 FPGA daughterboard so this heap should only be used by the FPGA is present. Signed-off-by: David Brown <david.brown@arm.com>
2015-02-10juno: Add DT entry for System Control blockDavid Brown
The block is an instance of the Versatile Express system control register block and is required as it provides the bridge between the system and the control interfaces on the tile site. With this enabled it will be possible to perform functionality such as clock control on a daughterboard connected to the Juno tile site. Signed-off-by: David Brown <david.brown@arm.com>
2014-12-02Merge branch 'lsk-3.10-armlt-drm-hdlcd2' into integration-lsk-3.10-juno-androidJon Medhurst
2014-12-02configs: juno: Add CONFIG_MODULES=yJon Medhurst
The HDLCD driver relies on other drivers being initiled first (HDMI?) and to work around this limitation we have it as a loadable module. This depends on modules being supported by the kernel so we need to add CONFIG_MODULES=y as well. Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-12-01Merge branch 'lsk-3.10-armlt-drm-hdlcd2' into integration-lsk-3.10-juno-androidJon Medhurst
2014-12-01drm: hdlcd: Correct reference counting in hdlcd_dmabuf_releaseJon Medhurst
Make hdlcd_dmabuf_release a copy of drm_gem_dmabuf_release and only release a reference on the gem object if the dma_buf was exported from it. Fixes https://bugs.linaro.org/show_bug.cgi?id=931 Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-11-25Merge branch 'lsk-3.10-armlt-juno-misc' into integration-lsk-3.10-juno-androidJon Medhurst
2014-11-25configs: vexpress64: disable framebuffer consoleAmit Pundir
Disable FRAMEBUFFER_CONSOLE to fix blinking cursor problem. Change-Id: I48b682a6c86520767072d2990b6c7c7c47131e8d Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
2014-11-24Merge branch 'lsk-3.10-armlt-atomic-dma-alloc' into ↵Jon Medhurst
integration-lsk-3.10-juno-android
2014-11-24arm64: Fix arguments to map_vm_areaJon Medhurst
map_vm_area takes a struct page *** This fixes up the cherry-pick of commit d4932f9e81ae (arm64: add atomic pool for non-coherent and CMA allocations) which had different argument types due to commit f6f8ed473535 (mm/vmalloc.c: clean up map_vm_area third argument) Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-11-24arm64: add atomic pool for non-coherent and CMA allocationsLaura Abbott
Neither CMA nor noncoherent allocations support atomic allocations. Add a dedicated atomic pool to support this. Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Laura Abbott <lauraa@codeaurora.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: David Riley <davidriley@chromium.org> Cc: Olof Johansson <olof@lixom.net> Cc: Ritesh Harjain <ritesh.harjani@gmail.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit d4932f9e81ae7a7bf3c3967e48373909b9c98ee5) Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-11-24common: dma-mapping: introduce common remapping functionsLaura Abbott
For architectures without coherent DMA, memory for DMA may need to be remapped with coherent attributes. Factor out the the remapping code from arm and put it in a common location to reduce code duplication. As part of this, the arm APIs are now migrated away from ioremap_page_range to the common APIs which use map_vm_area for remapping. This should be an equivalent change and using map_vm_area is more correct as ioremap_page_range is intended to bring in io addresses into the cpu space and not regular kernel managed memory. Signed-off-by: Laura Abbott <lauraa@codeaurora.org> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: David Riley <davidriley@chromium.org> Cc: Olof Johansson <olof@lixom.net> Cc: Ritesh Harjain <ritesh.harjani@gmail.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Will Deacon <will.deacon@arm.com> Cc: James Hogan <james.hogan@imgtec.com> Cc: Laura Abbott <lauraa@codeaurora.org> Cc: Mitchel Humpherys <mitchelh@codeaurora.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit 513510ddba9650fc7da456eefeb0ead7632324f6) Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-11-24lib/genalloc.c: add genpool range check functionLaura Abbott
After allocating an address from a particular genpool, there is no good way to verify if that address actually belongs to a genpool. Introduce addr_in_gen_pool which will return if an address plus size falls completely within the genpool range. Signed-off-by: Laura Abbott <lauraa@codeaurora.org> Acked-by: Will Deacon <will.deacon@arm.com> Reviewed-by: Olof Johansson <olof@lixom.net> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: David Riley <davidriley@chromium.org> Cc: Ritesh Harjain <ritesh.harjani@gmail.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Thierry Reding <thierry.reding@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit 9efb3a421d55d30b65fb0dbee05108d15c6c55f7) Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-11-24lib/genalloc.c: add power aligned algorithmLaura Abbott
One of the more common algorithms used for allocation is to align the start address of the allocation to the order of size requested. Add this as an algorithm option for genalloc. Signed-off-by: Laura Abbott <lauraa@codeaurora.org> Acked-by: Will Deacon <will.deacon@arm.com> Acked-by: Olof Johansson <olof@lixom.net> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: David Riley <davidriley@chromium.org> Cc: Ritesh Harjain <ritesh.harjani@gmail.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Thierry Reding <thierry.reding@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit 505e3be6c082489a32a88e042f930d047b6415bc) Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-11-07configs: Add a copy of selinux.confJon Medhurst
from https://android.git.linaro.org/git-ro/device/linaro/common.git This lets us generate the kernel config used by Linaro Android builds by executing ARCH=arm64 scripts/kconfig/merge_config.sh \ linaro/configs/linaro-base.conf \ linaro/configs/android.conf \ linaro/configs/vexpress64.conf \ linaro/configs/big-LITTLE-MP.conf \ linaro/configs/selinux.conf Omitting selinux.conf should still give a working system. Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-11-07staging: android: ion: Set the length of the DMA sg entries in buffer.Liviu Dudau
ion_buffer_create() will allocate a buffer and then create a DMA mapping for it, but it forgot to set the length of the page entries. Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com> Signed-off-by: Jon Medhurst <tixy@linaro.org>
2014-11-07Merge branch 'lsk-3.10-armlt-mali' into integration-lsk-3.10-juno-androidJon Medhurst
Conflicts: linaro/configs/vexpress64.conf
2014-11-07Merge branch 'lsk-3.10-armlt-drm-hdlcd2' into integration-lsk-3.10-juno-androidJon Medhurst
Conflicts: linaro/configs/vexpress64.conf
2014-11-07Merge branch 'lsk-3.10-armlt-tda998x' into integration-lsk-3.10-juno-androidJon Medhurst
2014-11-07Merge branch 'lsk-3.10-armlt-ipa' into integration-lsk-3.10-juno-androidJon Medhurst
Conflicts: linaro/configs/vexpress64.conf
2014-11-07Merge branch 'lsk-3.10-armlt-juno-cpufreq' into ↵Jon Medhurst
integration-lsk-3.10-juno-android Conflicts: drivers/base/cpu.c linaro/configs/vexpress64.conf
2014-11-07Merge branch 'lsk-3.10-armlt-scpi' into integration-lsk-3.10-juno-androidJon Medhurst
Conflicts: linaro/configs/vexpress64.conf
2014-11-07Merge branch 'lsk-3.10-armlt-i2c' into integration-lsk-3.10-juno-androidJon Medhurst
2014-11-07Merge branch 'lsk-3.10-armlt-juno-misc' into integration-lsk-3.10-juno-androidJon Medhurst
Conflicts: tools/gator/daemon/Android.mk
2014-11-07juno: Enable devfreq and thermal configs for IPAJon Medhurst
Signed-off-by: Jon Medhurst <tixy@linaro.org>