Now everything is one big memarena instead of a separate PHYS and EMEM,
and instead of having to micromanage the split between Z160 (always PHYS
here) and GPU (99% of it's allocations come out of EMEM), we give blocks
from the same memory pool.
This should effect some more efficient allocation strategies and allow
Xorg acceleration to proceed with much less movement of data (when it
evicts for low memory in PHYS, it moves it to userspace and uses pixman
to render everything, which is CPU intensive) at the potential cost of
leaving slightly less memory around for the 3D GPU, but userspace apps
using the GPU should be doing better with texture management so as not
to soak up >32MiB of reserved GPU memory needlessly.
Moving away from gsl_memmgr to genalloc is not desirable right now since
the driver requires multiple allocation alignment orders and genalloc can
only really guarantee a minimum alignment (i.e. size of allocation
represented by each bit in the allocation bitmap).
Moving to a dma_alloc_coherent/writecombine-only model also poses a
problem since significant amounts of code expects to be able to find the
"base" GPU memory address and with individual allocations instead of a
pooled area, there is no such thing.
Signed-off-by: Matt Sealey <matt@genesi-usa.com>
* increase from 64MB to 96MB total memory
* after some testing it seems that PHYS can be quite small compared
to EMEM, therefore make the aperture split 16MB/80MB
The AMD gpu driver memory manager is stupid to allocating
a memory block from the first free block. Neither check the
best fit free block. Here just add a little codes to
let allocation to find a best size fitted free block.
To avoid memory fragement.
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
increase max process number to fix gsl_kmod open issue
Signed-off-by: xianzhong <b07117@freescale.com>
Signed-off-by: Richard Liu <r66033@freescale.com>
Conflicts:
drivers/mxc/amd-gpu/include/gsl_buildconfig.h
No userspace users except a reference in libkgsl.so which is never called.
kgsl_device_clock() is left in (but preprocessed out) since it has a fairly
interesting behavior in turning the autogating on and off which is not the
same as turning the actual clocks on and off and could be useful with
modification for further refinement of power management at a later date.
kgsl_device_regwrite() still exists as it is used for a single point in
the driver (reading timestamp for Z430 ringbuffer) dependent on a build
flag. This flag is not enabled but it is not within the scope of this
patch to actually change this (if it is ever enabled it will be quite
obvious what to do - use kgsl_yamato_regwrite directly as it is entirely
Z430-specific)
This is implemented in the "current" userspace libkgsl.so but in fact
since the ioctl is deprecated, there are no users for it and no evidence
of it ever being used in real life can be presented. Therefore we can
just take out the few things it does and it's single-use dependencies.
The AMD gpu driver memory manager is stupid to allocating
a memory block from the first free block. Neither check the
best fit free block. Here just add a little codes to
let allocation to find a best size fitted free block.
To avoid memory fragement.
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
increase max process number to fix gsl_kmod open issue
Signed-off-by: xianzhong <b07117@freescale.com>
Signed-off-by: Richard Liu <r66033@freescale.com>
Conflicts:
drivers/mxc/amd-gpu/include/gsl_buildconfig.h
* improve clock accuracy check from 1/16 to 1/200 of intended clock rate
* properly round pixel clock to the parent and not against a hardcoded 150MHz max rate
* properly fix di external clock divisor to a maximum of 8
additional minor changes:
* rename PAGE_SIZE register MH_PAGE_SIZE in yamato/22/yamato_genreg.h (although this is an unused debug file so far)
* remove references to stdio files in gsl_debug_pm4.c (will come in handy later)
gpu: pull in some command stream differences from Qualcomm's MSM kernel (might fix some intermittent GPU hangs)
display: enable quick testing of non-mmu operation (hangs X right now)
* mutex, events, sleeps, process id unabstracted
* defines for function types (inline, extern) unabstracted
* defines for debug assert change name (KOS_ASSERT -> DEBUG_ASSERT) and left disabled
* driver now warns, if logging is enabled, that interruptible mutex locks are interrupted (which never happens in reality but it fixes a warning)
* remove fine grained locking "feature" since it's not enabled (and Qualcomm's public driver does not even implement it)
* refine mutex initialization where it's still present - don't try and allocate mutex structures where they're always used, just make them parts of the structure (struct mutex * -> struct mutex)
* whitespace police