Age | Commit message (Collapse) | Author |
|
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>
|
|
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>
|
|
Change-Id: I4a80e4bde63edebe1c721997d67fdaf2066a7638
|
|
Change-Id: I55c23c21623f896167622d18fc6d7854e394515d
|
|
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
|
|
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
|
|
Change-Id: I62f50e2c33006734a23a3794cabec3dd9bf305c8
Signed-off-by: John Einar Reitan <john.reitan@arm.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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
|
|
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
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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
|
|
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
|
|
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
|
|
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>
|
|
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>
|
|
Signed-off-by: David Brown <david.brown@arm.com>
|
|
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>
|
|
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>
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
Disable FRAMEBUFFER_CONSOLE to fix blinking cursor problem.
Change-Id: I48b682a6c86520767072d2990b6c7c7c47131e8d
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
|
|
integration-lsk-3.10-juno-android
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Conflicts:
linaro/configs/vexpress64.conf
|
|
Conflicts:
linaro/configs/vexpress64.conf
|
|
|
|
Conflicts:
linaro/configs/vexpress64.conf
|
|
integration-lsk-3.10-juno-android
Conflicts:
drivers/base/cpu.c
linaro/configs/vexpress64.conf
|
|
Conflicts:
linaro/configs/vexpress64.conf
|
|
|
|
Conflicts:
tools/gator/daemon/Android.mk
|
|
Signed-off-by: Jon Medhurst <tixy@linaro.org>
|