ATOS operation can be fatal when performed on invalid pfn. Validate mapped
entry pfn for validity before performing ATOS operation.
Change-Id: Ie1b118d768c396f91618ee1eb101754cbee5318e
Signed-off-by: Prakash Gupta <[email protected]>
[isaacm@codeaurora: Move PFN validity check prior to IOVA assignment]
Signed-off-by: Isaac J. Manjarres <[email protected]>
A new application level feature has NAT running out of SRAM, DDR, or
both. The addtion of just this feature's header to the kernel will
allow it to be propagated to older kernels, such that they can be
compatible (in terms of structure size) with the new application level
feature.
Change-Id: I16b5bfaa1156c69e0a6ae0c2ca4be416a283d049
CRs-Fixed: 2437567
Signed-off-by: Perry Randise <[email protected]>
GPIOs that can be configured as wakeup are routed to the PDC wakeup
interrupt controller and from there to the GIC interrupt controller. On
some QCOM SoCs, the interface to the GIC for wakeup capable GPIOs have
additional hardware registers that need to be configured as well to
match the trigger type of the GPIO. This register interfaces the PDC to
the GIC and therefore updated from the PDC driver.
Typically, the firmware intializes the interface registers for the
wakeup capable GPIOs with commonly used GPIO trigger type, but it is
possible that a platform may want to use the GPIO differently. So, in
addition to configuring the PDC, configure the interface registers as
well.
Change-Id: Icab7d9eeb77b5dab9d6a5a8280ce568da40b6ca6
Signed-off-by: Lina Iyer <[email protected]>
Add irqchip calls to set/get interrupt state from the parent interrupt
controller. When GPIOs are renabled as interrupt lines, it is desirable
to clear the interrupt state at the GIC. This avoids any unwanted
interrupt as a result of stale pending state recorded when the line was
used as a GPIO.
Change-Id: Ibd551f84d8f6ae15b8d9702faeb585a69f283f6e
Signed-off-by: Maulik Shah <[email protected]>
Signed-off-by: Lina Iyer <[email protected]>
In addition to logging using FTRACE. let's also log in the IPC logging
for all RPMH transactions.
Change-Id: I2b19006bbc776053f63eee55b447428fdb023ba4
Signed-off-by: Lina Iyer <[email protected]>
To debug issues when TCS is busy, report interrupt status as well. If
the interrupt line is pending at GIC, then Linux was too busy to process
the interrupt and if not pending then AOSS was too busy to handle the
request.
Change-Id: I8fd8289c74a8e1d6c771b77c2800a52f18c3a0b2
Signed-off-by: Lina Iyer <[email protected]>
During flush of current cached data, Sleep and Wake TCSes have
previously programmed data present. Due to this incorrect data
is sent.
Fix this by cleaning TCSes and freshly program current cached
sleep and wake data.
Change-Id: I8f1cb9925a7800aad65d665192d3b129c76dd9de
Signed-off-by: Maulik Shah <[email protected]>
Signed-off-by: Lina Iyer <[email protected]>
Record and export if an IPI is pending on the current CPU. Knowing if an
IPI is pending helps make better idle state determinations.
Change-Id: I92ab0aaeb3162cd312aa00a4e3eb978be2ad8efc
Signed-off-by: Lina Iyer <[email protected]>
Sleep driver needs to program the absolute clock value for next expiry
into pdc register for system wake up. Add an API to read the cval low
and high counters.
Change-Id: I3f08b3320ea281894d46f3c4bb0862784cc337a1
Signed-off-by: Channagoud Kadabi <[email protected]>
Signed-off-by: Lina Iyer <[email protected]>
Changes to add wake up handle for coalescing pipe.
Change-Id: I0cfc38c91a6a5b93211933f0af87640cbec8a4bf
Signed-off-by: Ashok Vuyyuru <[email protected]>
Add support for page table dump for test domain.
eg:
cd /d/iommu/tests/soc:apps_iommu_test_device
echo 1 > attach
echo 0x20000,0x80000000,0x10000,0x1 > map
echo 0x21000,0x1000 > unmap
echo 0x24000,0x1000 > unmap
cat iommu_page_tables
---[ start ]---
0x0000000000020000-0x0000000000021000 4K PTE USR ro x AF NG DEVICE/nGnRnE
0x0000000000022000-0x0000000000024000 8K PTE USR ro x AF NG DEVICE/nGnRnE
0x0000000000025000-0x0000000000030000 44K PTE USR ro x AF NG DEVICE/nGnRnE
Change-Id: I56ac2615c4aa30dd75a2cdc1cf46de042e681cdc
Signed-off-by: Prakash Gupta <[email protected]>
[[email protected]: Explicitly set final entry in the markers array]
Signed-off-by: Isaac J. Manjarres <[email protected]>
Support for coherent and non-coherent atomic allocations
in fastmap.
Change-Id: I3628508a4b2af5aa82d56a4a6a6ee4cef98cd47f
Signed-off-by: Sudarshan Rajagopalan <[email protected]>
[[email protected]: Leverage atomic DMA pool framework code]
Signed-off-by: Isaac J. Manjarres <[email protected]>
Enable a check to see if devices with reserved memory regions allocate from
those regions, when using the DMA API for allocations. WARN_ON if check
doesn't pass.
Change-Id: Ic788dc4638d83cdf8a1e34f60efe678b9639d4b3
Signed-off-by: Chris Goldsworthy <[email protected]>
Inside of dma_alloc_attrs(), verify that devices with a reserved memory
region are actually using the region, in order to prevent wastage of
memory.
Change-Id: I56852a761d3253ec2a3a7db0f6501c73983e55c6
Signed-off-by: Chris Goldsworthy <[email protected]>
Add version check for FnR stats ioctl and error return,
since only IPA4.5+ HW will support this feature.
Change-Id: If5c5021d16bc1ee6af516d9e2200c3e6b5081d27
Signed-off-by: Bojun Pan <[email protected]>
Add uc event ring to have ipa-uc monitor the
quota and bw-voting threshold to generate the
irq to ipa-driver to inform if quota or and bw
threshold is hit.
Change-Id: I7ce9c1a0048016fc6b6248a1632365f51717422c
Signed-off-by: Skylar Chang <[email protected]>
Migrate the remaining register offset macros to bitfields.
Change-Id: I58659c69e3c6b5b3b3c7ec360492a00d8e65514e
Signed-off-by: Isaac J. Manjarres <[email protected]>
Allocating and initialising a context for a domain is another point
where certain implementations are known to want special behaviour.
Currently the other half of the Cavium workaround comes into play here,
so let's finish the job to get the whole thing right out of the way.
Change-Id: I2fc1b383a5084d6a92e99002ed12b610e0cf7b04
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Git-commit: ba7e4a08bb
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[[email protected]: resolved trivial merge conflicts]
Signed-off-by: Isaac J. Manjarres <[email protected]>
Move detection of the Secure access quirk to its new home, trimming it
down in the process - time has proven that boolean DT flags are neither
ideal nor necessarily sufficient, so it's highly unlikely we'll ever add
more, let alone enough to justify the frankly overengineered parsing
machinery.
Change-Id: I86a898715cb1d036949df4dcf7333068bcf64836
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Git-commit: 6d7dff62af
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[[email protected]: resolved merge conflicts]
Signed-off-by: Isaac J. Manjarres <[email protected]>
Add some nascent infrastructure for handling implementation-specific
details outside the flow of the architectural code. This will allow us
to keep mutually-incompatible vendor-specific hooks in their own files
where the respective interested parties can maintain them with minimal
chance of conflicts. As somewhat of a template, we'll start with a
general place to collect the relatively trivial existing quirks.
Change-Id: Ie1ee37e9250a8295bc07cb78d879b98452f50920
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Git-commit: fc058d37b3
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[[email protected]: resolved merge conflics and build errors]
Signed-off-by: Isaac J. Manjarres <[email protected]>
Clean up the remaining accesses to GR0 registers, so that everything is
now neatly abstracted. This folds up the Non-Secure alias quirk as the
first step towards moving it out of the way entirely. Although GR0 does
technically contain some 64-bit registers (sGFAR and the weird SMMUv2
HYPC and MONC stuff), they're not ones we have any need to access.
Change-Id: I254eef03e4350fc2abf60547e860c5c65cedafc4
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Git-commit: 00320ce650
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[[email protected]: resolved merge conflicts/build errors]
Signed-off-by: Isaac J. Manjarres <[email protected]>
The smmu_write_atomic_lq oddity made some sense when the context
format was effectively tied to CONFIG_64BIT, but these days it's
simpler to just pick an explicit access size based on the format
for the one-and-a-half times we actually care.
Change-Id: I5b4ca8162c801aa320576ff3d31bb20acca9b1f8
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Git-repo: 6100576284
Git-commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[[email protected]: resolved trivial merge conflicts]
Signed-off-by: Isaac J. Manjarres <[email protected]>
Since we now use separate iommu_gather_ops for stage 1 and stage 2
contexts, we may as well divide up the monolithic callback into its
respective stage 1 and stage 2 parts.
Change-Id: I566d03bd7941baedcbc2345ffdeefcb4041e9b54
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Git-commit: 71e8a8cdaf
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[isaacm@codeaurora: resolved trivial merge conflicts]
Signed-off-by: Isaac J. Manjarres <[email protected]>
To keep register-access quirks manageable, we want to structure things
to avoid needing too many individual overrides. It seems fairly clean to
have a single interface which handles both global and context registers
in terms of the architectural pages, so the first preparatory step is to
rework cb_base into a page number rather than an absolute address.
Change-Id: I2401a30f38550823a60421355d73c4306d0613ed
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Git-commit: 490325e0c1
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[[email protected]: resolve trivial merge conflicts]
Signed-off-by: Isaac J. Manjarres <[email protected]>
As for GR0, use the bitfield helpers to make GR1 usage a little cleaner,
and use it as an opportunity to audit and tidy the definitions. This
tweaks the handling of CBAR types to match what we did for S2CR a while
back, and fixes a couple of names which didn't quite match the latest
architecture spec (IHI0062D.c).
Change-Id: Ic6833f472f162ab6080aaba37b8259e573436a65
Signed-off-by: Robin Murphy <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
Git-commit: 5114e96cb2
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[[email protected]: resolved trivial merge conflicts]
Signed-off-by: Isaac J. Manjarres <[email protected]>
FIELD_PREP remains a terrible name, but the overall simplification will
make further work on this stuff that much more manageable. This also
serves as an audit of the header, wherein we can impose a consistent
grouping and ordering of the offset and field definitions
Change-Id: I3935f9f9b7526cb5c5906093131e856159b0899b
Signed-off-by: Robin Murphy <[email protected]>
Git-commit: 0caf5f4e84
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[[email protected]: resolved merge conflicts/build errors]
Signed-off-by: Isaac J. Manjarres <[email protected]>
The arm_smmu_power_off_atomic() function derives the pointer to
the SMMU device by incorrectly assuming that all devices in the
power resources structures store that pointer as part of their
driver data.
While this is true for devices that represent an SMMU, this is
not the case for the devices that represent the TBUs, as they
store the TBU structures instead of a pointer to the SMMU device.
Thus, require the SMMU device as a parameter to the
arm_smmu_power_off[_atomic] functions so that it can be used
correctly.
Change-Id: I0101500468afe17456bd6178082850e5fa6590d7
Signed-off-by: Isaac J. Manjarres <[email protected]>
Commit d698a38814 ("of: reserved-memory: ignore disabled memory-region
nodes") added an early return in of_reserved_mem_device_init_by_idx(), but
didn't call of_node_put() on a device_node whose ref-count was incremented
in the call to of_parse_phandle() preceding the early exit.
Fixes: d698a38814 ("of: reserved-memory: ignore disabled memory-region nodes")
Change-Id: I293be0fb7f86a1e6e4d4d7277039a881e590d5e0
Signed-off-by: Chris Goldsworthy <[email protected]>