提交線圖

61 次程式碼提交

作者 SHA1 備註 日期
Grace An
4f59f5ce02 mm-drivers: hw_fence: switch to qcom_scm_assign_mem from hyp_assign_phys
Switch to upstream friendly qcom_scm_assign_mem from hyp_assign_phys.

Change-Id: I01c6b93698fea094cf89926f3168466ba14061bc
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2023-01-20 02:37:17 -08:00
qctecmdr
55082654a9 Merge "mm-drivers: hw_fence: update ipc protocol to fence for pineapple" 2022-12-21 11:14:55 -08:00
Grace An
fbde79b118 mm-drivers: hw-fence: extend ioctl support to create fence_array
Current HW Fence validation framework limits the creation of a HW Fence-
array to fences from a single parent client. This change adds support to
hw_fence_create_array IOCTL so a HW fence-array can be created from fences
of different clients.

Change-Id: I6ce801f51747fcab503fc23c1ae981b107d4f315
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-12-21 07:36:06 -08:00
Grace An
e0bf897e1f mm-drivers: hw_fence: update ipc protocol to fence for pineapple
Starting pineapple, fence protocol is used for hw fence driver.

Change-Id: I87435128c22aeb338dfcda38f0196e04dc9eb70b
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-12-19 11:12:42 -08:00
Grace An
f4afac60ba mm-drivers: hw_fence: update txq to use separate software wr ptr
Some hw fence driver clients require the ability to call the
'msm_hw_fence_update_txq' API to update the queue payload without
updating the 'write_index' member within the hfi header. These clients
also need to receive the index at which the payload is written within
the queue.

This change adds support for this requirement by adding a device-tree
property to configure this behavior for each client. The 'tx_wm' member
within the hfi header is used to track in software the place where the
payloads are within the queue for clients that skip the update to the
'write_index' member.

Change-Id: I2881fa49bef4e49691eb6049830f9dc8dc8fa425
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-12-05 09:15:07 -08:00
Grace An
965d398c06 mm-drivers: hw_fence: update ipc for ipe, vpu, ife clients
Update ipc configurations to support IPE, VPU, and IFE clients
in hw fence driver. Add support for IPE and VPU clients on
kalama, and add support for all clients on pineaple.

Change-Id: Iee577118284a02bd5b368ca206e88ed75eaa95b3
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-12-05 09:14:58 -08:00
Grace An
368ae72991 mm-drivers: hw_fence: add support for ipe, vpu, and ife clients
Update hw fence driver to support new clients with large number
of possible sub-clients, which can be configured in device-tree.
Add client queues support for ipe, vpu, and ife clients.

Change-Id: I6e274819c1c154af3ea977d1d09e419d86f6fe8e
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-12-05 09:14:28 -08:00
Grace An
b2efa8bc8b mm-drivers: hw_fence: add dtsi-based allocation of client queues
Update hw fence driver to support configurable parameters for
each client type, which can be set up through device-tree. This
allows configuring number of queues (e.g. only Tx Queue or both
Rx and Tx Queues), number of entries per client queue, and number
of sub-clients for each client-type.

Change-Id: I2d8f84ff2b7eb5322f9ca661cfd8f6a291db7b38
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-12-04 17:12:02 -08:00
qctecmdr
83808f0957 Merge "mm-drivers: hw_fence: add support for 64-bit client_data" 2022-12-02 13:23:06 -08:00
Grace An
b09b4f0720 mm-drivers: hw_fence: add support for 64-bit client_data
Add support of the option to pass a 64-bit client_data value to
the hw fence driver when a client registers as a waiting client
for a hardware fence. Then during fence signaling, this client_data
is returned to the client via the RxQ.

If no client_data is passed to the driver for the hw fence, then a
default value of zero is registered as the client_data.

Change-Id: I34cf3e50413639d53cbfa8251c98b9ff1d3cbf4a
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-11-30 13:23:18 -08:00
Grace An
66c1c4f019 mm-drivers: hw_fence: update new APIs for synx compat support
Add new APIs to receive params client-id and handles of hw fences
to manage synx compat support.

Change-Id: I5dae0845f8eb2c6c05cc2605d8fc93935c780901
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-11-30 13:22:53 -08:00
Ingrid Gallardo
b87b258b9e mm-drivers: hw_fence: add debug refcount to trylock
Add debugfs to query the amount of times that
inter-vm trylock needs to wakeup the svm.

Change-Id: Ic1f88319f502e652902be0d45792768cf5c5154e
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-11-30 13:07:59 -08:00
Ingrid Gallardo
f5cc2eb42f mm-drivers: hw_fence: add check to avoid empty join hw fence
Current driver creates a join hw-fence from a fence-array, adds its
waiting client to it, and then it decides if signal the hw-fence
depending in the current state of all the child hw-fences from the
fence array.

However, if by any reason the fence-array gets all its children cleared
within it (which can happen for spec-fences failures), hw-fence driver
logic won't signal the new created join-fence.
This can lead to the creation of an empty or incomplete join-fence that
the waiting-client will be waiting-for, but won't be signaled.

Add a check to make sure that if above scenario is ever presented,
the register for wait API catches this issue and fails to register
for wait in this invalid fence.

Change-Id: If3c69405d2a3adfefd12f447257c2560b839d238
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-11-30 13:07:19 -08:00
Ingrid Gallardo
05689a41c3 mm-drivers: hw_fence: add inter-vm try lock
Add support for inter-vm try-lock between hlos and vm.

Change-Id: Iab9087acf82a4a746e9d43a736724ce2e7196237
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-11-30 13:06:10 -08:00
Ingrid Gallardo
ecef24aa62 mm-drivers: hw_fence: update ipc regs config to support phys-id
Starting pineapple, each ipc client has a different physical-id and
virtual-id for registers access and configuration.
This change updates the ipc to handle this different configuration.

Change-Id: I36fa84b07ffd209ce3fb323ff796f9e7721d7dd2
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-11-30 13:04:52 -08:00
Harshdeep Dhatt
54256aa9e0 mm-drivers: hw_fence: Fix join fence signaling
It is possible that one (or more) child fences get signaled by
fence controller, right after we add the join fence as parent
fence of the child fence. If so, the join fence pending child
count may become 0 which means we can safely signal the join
fence.

Change-Id: I0222b93a62db13eeb7867f3741c1db944df036b1
Signed-off-by: Harshdeep Dhatt <quic_hdhatt@quicinc.com>
2022-11-30 13:04:29 -08:00
Harshdeep Dhatt
fbea8f77fa mm-drivers: hw_fence: Set MSM_HW_FENCE_FLAG_SIGNALED_BIT flag
Set this flag if a hw fence (for which a client wants to wait) has already
been signaled. Clients can check this flag and indicate to their respective
hardware (or firmware) that this fence is already signaled.

Change-Id: I9337cabb771197f2d35ac4386402a25941d73311
Signed-off-by: Harshdeep Dhatt <quic_hdhatt@quicinc.com>
2022-11-30 13:04:11 -08:00
Harshdeep Dhatt
9ff114eee8 mm-drivers: hw_fence: Add per client ipc interrupt property
Not all clients need ipc interrupt for an already signaled fence. Set the
per client property based on whether a client needs the interrupt or not.
Also, set update_rxq property for GPU client to false, as GPU doesn't need
already signaled fences to be sent to GPU Rx Queue.

Change-Id: I08a6bbd598695b112124ce6ec409db75d5e11e0f
Signed-off-by: Harshdeep Dhatt <quic_hdhatt@quicinc.com>
2022-11-30 12:14:10 -08:00
Nilaan Gunabalachandran
d881744a72 mm-drivers: fix prink argument errors
This change fixes printk arguments in mm-drivers which is
found with additional compilation flags and add compile
flags too.

Change-Id: Ic83f044467dca6d391221182096b9c50b7da36de
Signed-off-by: Nilaan Gunabalachandran <quic_ngunabal@quicinc.com>
2022-11-08 16:57:31 -05:00
qctecmdr
90774e9372 Merge "mm-drivers: hw_fence: add missing return type" 2022-10-22 10:49:22 -07:00
Bruce Hoo
a5e17f3fa7 mm-drivers: spec_fence: create dummy spec_fence for fence array creation
Create dummy spec_fence and pass it to dma_fence_array_create(), to
avoid NULL pointer access in dma_fence_array_create().

Change-Id: I7a283753169cccbed6c842090a48cbb6e185cf9a
Signed-off-by: Bruce Hoo <quic_bingchua@quicinc.com>
2022-10-18 12:43:24 -07:00
qctecmdr
2437b5ab9c Merge "mm-drivers: hw_fence: remove client id mask registration logic" 2022-10-14 07:54:05 -07:00
Ingrid Gallardo
d62205ae1c mm-drivers: hw_fence: read qtimer for timestamps
Move timestamps to use qtimer instead of sleep timer.

Change-Id: I1a5f20c3d1ec31ba13e95713828024a309a53ba1
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-10-14 02:57:05 -07:00
Grace An
b13dcfb79e mm-drivers: hw_fence: remove client id mask registration logic
Remove client id bitmask to track registered clients. This
allows support of more than 64 transmit clients.

Change-Id: Ia2b4667d008bfceb0b46bfd3e14302e5bec82cb3
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-10-14 02:56:53 -07:00
Alex Danila
877fea198c mm-drivers: hw_fence: add missing return type
Change addresses a compiler error for missing return type

Change-Id: I82f22cefef069988e60608210533250307e516b3
Signed-off-by: Alex Danila <quic_eadanila@quicinc.com>
2022-10-06 10:46:13 -04:00
Ashwin Pillai
674640bc0c Merge remote-tracking branch 'origin/display-kernel.lnx.5.15' into display-kernel.lnx.1.0
* origin/display-kernel.lnx.5.15:
  mm-drivers: configure max driver instances base on build config
  mm-drivers: hw_fence: avoid signal during reset for signaled hw fences
  mm-drivers: hw_fence: modify hw fence queue payload structure
  mm-drivers: hw-fence: fix static analysis issue
  mm-drivers: hw_fence: add bounds check for hw fence deregistration

Change-Id: I6ebfcde295704d218e015fdf1e7c0b1575c95a1e
Signed-off-by: Ashwin Pillai <quic_ashwpill@quicinc.com>
2022-09-09 13:59:38 -04:00
qctecmdr
cfdc62c704 Merge "mm-drivers: configure max driver instances base on build config" 2022-09-08 18:10:35 -07:00
Amine Najahi
51925b9f96 mm-drivers: configure max driver instances base on build config
Add #ifdef to configure the maximum allowed driver instances
base on the build configuration, to avoid uninitialized access
to fences array.

Change-Id: I83ea5ade33a93e23edee21a0435ed7257fe5c9c9
Signed-off-by: Amine Najahi <quic_anajahi@quicinc.com>
2022-09-01 14:36:24 -04:00
Ingrid Gallardo
f4e1ed2578 mm-drivers: hw_fence: avoid signal during reset for signaled hw fences
During a client reset, hw fences that are already signaled
should not require to be signaled again, otherwise waiting
clients can receive the signal from unexpected hw fences
that have been already signaled long time back.
Add check to only signal hw fences that are not in signaled
state during the client reset.

Change-Id: I6f6a6ba142889f9c7ee2bd8680c30592c3c0987f
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-08-31 13:41:50 -07:00
Grace An
99948e9714 mm-drivers: hw_fence: modify hw fence queue payload structure
Add size, type, version, and client_data fields to hw fence queue
payload and update 32-bit timestamp field to full 64-bit timestamp
field.

Change-Id: Iafb0eb80f83acd5753786fa50a31c1fb74f1a2fa
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-08-18 11:36:34 -07:00
Ashwin Pillai
2e0acac216 Merge remote-tracking branch 'origin/display-kernel.lnx.5.15' into display-kernel.lnx.1.0
* origin/display-kernel.lnx.5.15:
  mm-drivers: hw_fence: add timestamp to the queue
  mm-drivers: add support for build.sh techpack display_tp
  mm-drivers: hw_fence: move mem barrier before mem read
  mm-drivers: spec_fence: increasing device_available
  mm-drivers: hw_fence: enable hw-fence driver based on cmdline var
  mm-drivers: sync: export sync_fence module symbols
  mm-drivers: hw-fence: add hardware fence driver validation ioctls
  mm-drivers: add support for compiling out mm driver modules
  mm-drivers: hw_fence: avoid hw fences creation until fctl ready
  mm-drivers: hw_fence: populate payload size in hfi header
  mm-drivers: hw_fence: avoid compiling hw_fence driver for taro
  mm-drivers: hw_fence: Add support for hw-fence driver
  mm-drivers: sync: resolve compilation of sync fence driver
  mm-drivers: sync: add api to wait for sync fence bind
  mm-drivers: sync-fence: add changes to serialize fence operations
  mm-drivers: sync_fence: avoid compiling spec_fence driver for taro
  mm-drivers: msm_ext_display: export msm-ext-display module symbols
  mm-drivers: enable mm-driver modules compilation
  mm-drivers: msm_ext_display: add snapshot
  mm-drivers: sync-fence: add sync fence driver snapshot

Change-Id: Id3fde6d894d2e73243c0a50aab018067431f211d
Signed-off-by: Ashwin Pillai <quic_ashwpill@quicinc.com>
2022-08-08 23:52:19 -04:00
qctecmdr
7b57595458 Merge "mm-drivers: hw-fence: fix static analysis issue" 2022-08-08 20:01:56 -07:00
Manoj Kumar AVM
f168780f74 mm-drivers: hw-fence: fix static analysis issue
Fix static analysis issue where uninitialized variable is being accessed.

Change-Id: Iab6210fb4c67f35c7f1bada592800c10f0ad76bc
Signed-off-by: Manoj Kumar AVM <quic_mkavm@quicinc.com>
2022-08-03 23:27:22 -07:00
Grace An
b30002d731 mm-drivers: hw_fence: add bounds check for hw fence deregistration
Ensure that clients deregister hardware fences for client ids
strictly less than HW_FENCE_CLIENT_MAX. This prevents out of bounds
array accesses.

Change-Id: I3453135cfd7a74373421d8db32c3ecb0fffc70d0
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-08-01 16:22:19 -07:00
Ingrid Gallardo
c344a18254 mm-drivers: hw_fence: add timestamp to the queue
Add qtimer timestamps to queue payloads.
This timestamp is to be updated by the client
that adds the entry to the queue.

Change-Id: I69dd4420ec18b7470f99d5cfe46129c10b3f3391
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-07-27 10:00:50 -07:00
qctecmdr
03e7e8481a Merge "mm-drivers: add support for build.sh techpack display_tp" 2022-07-20 22:22:45 -07:00
qctecmdr
03cd341241 Merge "mm-drivers: sync: export sync_fence module symbols" 2022-07-20 16:11:13 -07:00
qctecmdr
e8d79e489e Merge "mm-drivers: hw_fence: move mem barrier before mem read" 2022-07-20 16:11:13 -07:00
qctecmdr
3179dca621 Merge "mm-drivers: hw-fence: add hardware fence driver validation ioctls" 2022-07-20 16:11:13 -07:00
Ashwin Pillai
05b50f9290 mm-drivers: add support for build.sh techpack display_tp
add environment variable to be used by display-techpack.mk
for build.sh techpack display_tp.

Change-Id: I46b0ac3fb40371e3282191c75a501230243d9f52
Signed-off-by: Ashwin Pillai <quic_ashwpill@quicinc.com>
2022-07-19 13:52:02 -04:00
Ingrid Gallardo
93afde537d mm-drivers: hw_fence: move mem barrier before mem read
Move memory barriers to ensure data is available before
the read of indexes from the queues.

Change-Id: I3b5a7903f038cc62b461fbfc9cbeb143b862a1f1
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-07-12 16:07:58 -07:00
Bruce Hoo
8ad0ce90d2 mm-drivers: spec_fence: increasing device_available
Spec_fence device is already used by surfaceflinger, increase
device_available by 1.

Change-Id: I3795ffc40fb2ca95e933d4ed056dc9a4c628ba1e
Signed-off-by: Bruce Hoo <quic_bingchua@quicinc.com>
2022-07-10 20:18:26 -07:00
Grace An
0a5f30607f mm-drivers: hw_fence: enable hw-fence driver based on cmdline var
This change ensures that the hw-fence driver is disabled by default and
can be enabled or disabled based on a kernel command line argument. If
the hw-fence driver is disabled, msm_hw_fence_probe returns an error.

Change-Id: I248f29158c17a43151aa8b0c980a7ce0f5e758d6
Signed-off-by: Grace An <quic_gracan@quicinc.com>
2022-07-06 15:14:24 -07:00
Christina Oliveira
c11e6e06aa mm-drivers: sync: export sync_fence module symbols
This change updates makefile to export sync_fence
module symbols, so these can be imported by other
external kernel modules.

Change-Id: Idd64fae8f8797cbcb4b4012666ed5621fa83062f
Signed-off-by: Christina Oliveira <quic_coliveir@quicinc.com>
2022-06-29 15:04:42 -07:00
Shirisha Kollapuram
f73a4b179a mm-drivers: hw-fence: add hardware fence driver validation ioctls
This change adds support to validate the hw_fence driver
by adding IOCTLs that expose the hw_fence interfaces so that
validation clients can register/unregister, create/destroy
and wait/signal fences. IOCTL's will be available for debug
purpose only when the debugfs config is set.

Change-Id: Idb0d04ee245718e9b19ccd12ac760829831426b0
Signed-off-by: Shirisha Kollapuram <quic_kshirish@quicinc.com>
2022-06-20 11:41:21 +05:30
Prabhanjan Kandula
91cfcb8220 mm-drivers: add support for compiling out mm driver modules
This change provides required support to disable mm driver modules
compilation along with all modules and supports specific flag for
override to enable compilation if required.

Change-Id: I3ea1383855a6be49ed12a23a3585e9d6ebb1810a
Signed-off-by: Prabhanjan Kandula <quic_pkandula@quicinc.com>
(cherry picked from commit 91a337989da77e6071fdfbd03b43c423356c14c0)
2022-06-13 11:27:12 -07:00
qctecmdr
c4f48ccb1d Merge "mm-drivers: hw_fence: avoid hw fences creation until fctl ready" 2022-06-12 18:22:33 -07:00
Ingrid Gallardo
2ae3dcadde mm-drivers: hw_fence: avoid hw fences creation until fctl ready
This change adds a check to avoid hw-fences creation until
the fence controller is ready.

Change-Id: I613c19d9dfd8836f8ded6bcb0162bef647df7bc3
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-06-03 11:00:48 -07:00
Ingrid Gallardo
47157b1397 mm-drivers: hw_fence: populate payload size in hfi header
Populate the payload size for the ctrl, rx and tx queues
that communicate with the fence controller.

Change-Id: Idc7dafcccd6ea16821e4f595bdab7395a5e0745b
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-05-27 15:06:56 -07:00
Ingrid Gallardo
efe7847b7a mm-drivers: hw_fence: avoid compiling hw_fence driver for taro
hw_fence driver is not required for taro variants.
Since the Display SI 3.0 is shared with taro dev SI variant,
avoid compiling hw_fence as dlkm for taro target.

Change-Id: I84637f2546fd0818d956880fbc1bb86a30a7c916
Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
2022-04-25 12:28:00 -07:00