diff options
author | Aurora pro automerger <aurora-pro-automerger@google.com> | 2023-01-06 06:59:41 +0000 |
---|---|---|
committer | davidchiang <davidchiang@google.com> | 2023-01-06 08:08:49 +0000 |
commit | 8a4b0d93e1f8b9ae23fb476eef4d43f18bc3cc1d (patch) | |
tree | 77a55bc81515aae0827a3cdb0f2ef0d68a46f677 /gxp-debugfs.c | |
parent | 9cc533bf4e533f90504fe355b5fcc726c1c549e0 (diff) | |
download | gs201-8a4b0d93e1f8b9ae23fb476eef4d43f18bc3cc1d.tar.gz |
gxp: [Copybara Auto Merge] Merge branch 'gs201-u' into 'android13-gs-pixel-5.10-udc'
gxp: amalthea uses different edgetpu path
Bug: 263918299
gxp: fix uninit warn of gxp_debugfs_mailbox
gcip: style fix up
gcip: implement noncontiguous alloc
Bug: 262684159
gcip: Change hard-coded magic numbers to MACROs
Bug: 257300340
gcip: Update the size encoding of image config
Bug: 257300340 (repeat)
gcip: unittests: implement timeout race trigger
Bug: 261822585
gcip: implement reference count to the awaiter
Bug: 261822585 (repeat)
gcip: implement gcip_mailbox_cancel_awaiter
Bug: 261822585 (repeat)
gcip: fix log style in gcip domain pool
gcip: Add domain pool
Bug: 228907682
gcip: init ignore_seq_order of KCI
gcip: Use term awaiter instead of async_resp
Bug: 249642792
gcip: constantize gcip_kci_args
gcip: use rate limiting for reverse KCI failure warning
gcip: remote unnecessary pointer cast
gcip: Check telemetry buffer size
gcip: Remove redundant error
gcip: support arbitrary seq order commands
Bug: 247414706
gcip: Add gcip-telemetry
Bug: 239374826
gcip: use pad/pap instead of llx for logging
gcip: implement gcip image config utilities
Bug: 243500340
gcip: Don't pass mailbox param when calling the release_async_resp_data callback
Bug: 239804137
gcip: Call release_data callback instead of ops->release_async_resp_data
Bug: 239804137 (repeat)
gcip: fix typo 'timedout'
gcip: Implement gcip-firmware.c
Bug: 239637765
gcip: Free arrived or timedout, but not handled async_resp
Bug: 239010918
gcip: Set base_paddr of gcip_mem_pool
Bug: 236673496
gcip: Adopt gcip-mailbox to gcip-kci
Bug: 236679300
gcip: Implement the generalized mailbox (gcip-mailbox.c)
Bug: 236679300 (repeat)
gcip: Make gcip_kci_push_cmd static
Bug: 223764481
gcip: implement gcip-mem-pool
Bug: 236673496 (repeat)
gcip: Add KCI support
Bug: 223764481 (repeat)
gcip: unittests: Add initial Kconfig and Makefile
Bug: 222416109
gcip: Add initial Kconfig and Makefile
Bug: 222416109 (repeat)
GCIP_MAIN_REV_ID: a1895a61a873d1f52896f955e09d2e263b22a0e8
gxp: bump GXP version to 1.7
gxp: remove debugfs earlier than before_remove
Bug: 263830035
gxp: adopt updated gxp_client_allocate_virtual_device
gxp: debugfs utilizes UCI in the MCU mode
Bug: 263830035 (repeat)
gxp: call gxp_client_* funcs from firmware_run debugfs
Bug: 263830035 (repeat)
gxp: apply clang-format to gxp-debugfs.c
gxp: update the interface of execute_cmd callback
Bug: 263830035 (repeat)
gxp: power off core on mbox allocation failure
Bug: 264184974
gxp: Set special client ID to secure VD
Bug: 263685745
gxp: Allocate secure VD
Bug: 263836991
gxp: Add a secure VD field to struct gxp_dev
Bug: 263685535
gxp: Add 'flags' to struct gxp_virtual_device_ioctl
Bug: 263836981
gxp: Remove warnings during compilation
Bug: 264010198
gxp: cleanup common platform probe
Bug: 263844135
gxp: amalthea use GCIP
Bug: 263918299 (repeat)
gxp: update Makefile for kleaf support
gxp: use PMU register
Bug: 263830026
gxp: map private firmware data region
Bug: 261797596
gxp: introduce gxp_dma_map_iova_sgt
Bug: 262825536
gxp: allocate per VD firmware data
Bug: 261797596 (repeat)
gxp: Correct the lpm offsets calculations
Bug: 263239197
gxp: Move shareability config with block power configuration
Bug: 263310466
gxp: Enable new telemetry
Bug: 247955426
gxp: enable dynamic slice index
Bug: 255706432
gxp: Add support for core_boot insmod parameter
Bug: 251612313
gxp: Add first_open support to VMBox
Bug: 263296400
gxp: new UCI ioctl interfaces
Bug: 261667704
gxp: remove unused virt_core in vd_suspend
gxp: move system memory rates to config files
Bug: 262964769
gxp: increase shared buffer size from 192K to 512K
Bug: 262686729
gxp: introduce wait_queue for waiting responses
Bug: 261822585 (repeat)
gxp: rename queue to dest_queue
Bug: 261822585 (repeat)
gxp: adopt gxp-mcu-platform
Bug: 249918544
gxp: revert tpu mapped checking logic
gxp: Add telemetry buffer size fields to specs ioctl
Bug: 259404526
gxp: fix error handling of gxp_map_tpu_mbx_queue
gxp: fix logic of checking tpu_file when destroying clients
gxp: europa: add mailbox array csrs
Bug: 261150717
gxp: Implement mmap for new telemetry flow.
Bug: 259404466
gxp: add 'features' field to specs
Bug: 256073820
gxp: fix up reserved fields in gxp_specs_ioctl
gxp: Add missing include
Bug: 261550238
gxp: Apply gcip domain pool
Bug: 228907682 (repeat)
gxp: Move mailbox CSR based calls to chip specific file
Bug: 261150717 (repeat)
gxp: Make mailbox csr offset chip specific
Bug: 261150717 (repeat)
gxp: Allocate telemetry buffers during init
Bug: 247955426 (repeat)
gxp: introduce gxp-mcu-fs
Bug: 249918544 (repeat)
gxp: move client_has_vd check to client.c
Bug: 249918544 (repeat)
gxp: use entry point in elf header instead of fixed IOVA
Bug: 260647260
gxp: Add _legacy postfix to telemetry function
Bug: 247955426 (repeat)
gxp: Refactor LPM to accommodate new chips
Bug: 254168276
gxp: introduce gxp_pm_update_pm_qos
Bug: 239638427
gxp: map tpu mbx queue even in MCU mode
Bug: 237624453
gxp: fetch segment boundaries from ELF header
Bug: 259197130
gxp: add ifdef guard for edgetpu_ext interface
Bug: 259357745
gxp: set VD credit to 256
Bug: 257137038
gxp: Indroduce config-pwr-state.h
Bug: 258154981
gxp: add cmd credit to virtual device
Bug: 257137038 (repeat)
gxp: fix the default domain cache
gxp: revert ignore_seq_order settings
gxp: Map TPU mbx only in the direct mode
Bug: 249440369
gxp: Forward the thermal request to MCU when possible
Bug: 255613035
gxp: Introduce gxp_wakelock_acquire_if_powered
Bug: 255613035 (repeat)
gxp: Add GXP_HAS_MCU config
gxp: Roll back aur_power_state2rate changes in thermal
gxp: Use aur_power_state2rate for thermal
gxp: Fix reader/writer lock for vd allocation
Bug: 257049139
gxp: Add a static debug pointer to driver state
Bug: 255451381
gxp: fixup headers in platform.c
gxp: remove obsolete ACPI support
Bug: b/230701592
gxp: Add namespace import for DMA_BUF for 5.16
Bug: 232003048
gxp: Handle Core TelemetryRead rcki
Bug: 249096610
gxp: Add GXP_HAS_LAP to config
Bug: 249227451
gxp: remove explicit values of LPM PSM enum
gxp: temporarily set slice_index to 0
Bug: 255706432 (repeat)
Bug: 242011394
gxp: do power votes in VD wakelock acquisition
Bug: 253990922, 253555787
gxp: Remove redundant state settings
Bug: 189396709
gxp: LPM interfaces accepts enum psm
Bug: 254168276 (repeat)
gxp: Reduce mailbox timeout to 1s
Bug: 250265514
gxp: Adopt awaiter of GCIP
Bug: 249642792 (repeat)
gxp: disable core interrupts before core releasing
Bug: 252915360
gxp: remove response consuming callbacks
Bug: 245455607
gxp: abstract GCIP send/put funcs from gxp-mailbox
Bug: 245455607 (repeat)
gxp: re-purpose GXP_LEGACY_MAILBOX
Bug: 245455607 (repeat)
gxp: use const args for mailbox init
gxp: bump uapi version to 1.5
gxp: remove unnecessary coherent buf cast
gxp: fix typo an core
gxp: Call MCU telemetry irq handler when KCI irq is fired
BUg: 237099103
gxp: move DVFS macro out from lpm.h
gxp: use BIT() for shifting operations
gxp: introduce coherent buffer data structure
Bug: 248436918
gxp: add europa platform driver
Bug: 235918085
gxp: address review comments on gdomain alloc
gxp: store client IDs in gxp_virtual_device
Bug: 246520556
gxp: clang-format gxp.h
gxp: introduce {after,before}_{map,unmap}_tpu_mbx_queue callbacks
Bug: 246520556 (repeat)
gxp: call GCIP consume funcs from gxp-mailbox
Bug: 245455607 (repeat)
gxp: manage gcip_{mailbox,kci} from gxp_mailbox
Bug: 245455607 (repeat)
gxp: pass data size and wrap bit to gxp_mailbox_args
Bug: 245455607 (repeat)
gxp: pass GCIP operators to gxp_mailbox
Bug: 245455607 (repeat)
gxp: introduce enum gxp_mailbox_type
Bug: 245455607 (repeat)
gxp: call exposed response consuming funcs of gxp-mailbox-impl.h
Bug: 245455607 (repeat)
gxp: expose response consuming functions to gxp-mailbox-impl.h
Bug: 245455607 (repeat)
gxp: Add MCU telemetry support
Bug: 237099103 (repeat)
gxp: Add chip specific mmap handler
Bug: 237099103 (repeat)
gxp: Prefix the telemetry with core
Bug: 237099103 (repeat)
gxp: Rename gxp-telemetry to gxp-core-telemetry
Bug: 237099103 (repeat)
gxp: add wrappers around iommu domain
Bug: 248436918 (repeat)
gxp: introduce gxp-mailbox-impl.[c|h]
Bug: 237908534
gxp: Hide Amalthea only things of gxp-mailbox from Callisto
Bug: 237908534 (repeat)
gxp: introduce GXP_LEGACY_MAILBOX
Bug: 245455607 (repeat)
gxp: return error when gxp_fw_data_create_app fails
Bug: 249402363
gxp: fix memory leak on VD allocate resp queues
Bug: 247662695
gxp: Wait for PS0 before powering down BLK_AUR
Bug: 247273478
gxp: Enable best-fit IOVA allocator
Bug: 241190719
gxp: remove compat ioctl interfaces
gxp: remove cache invalidate of telemetry buffers
Bug: 247772036
Bug: 245238253
gxp: cache invalidate on signal telemetry eventfd
Bug: 247772036 (repeat)
gxp: fix passing a NULL pointer to the gxp_vd_block_ready
Bug: 247660434
gxp: Sort the GXP_IOCTL defines
gxp: accept finalizing non-initalized modules
Bug: 245690393
gxp: introduce IS_GXP_TEST
Bug: 245690393 (repeat)
gxp: define chip_rev module param
gxp: sync with the fake core firmware
Bug: 245270826
gxp: invalidate cache before fetching responses
Bug: 242326098
gxp: make load_dsp_firmware return error properly
Bug: 245270826 (repeat)
gxp: support VD suspend/resume in Zuma direct mode
Bug: 244699959
gxp: bump version to 1.4
Revert "gxp: Update gxp.h to reflect OFF being allowed in mbox IOCTL"
Revert "gxp: remove GXP_POWER_STATE_OFF check in mbox cmd"
gxp: Removing printing the log buff
Bug: 244270315
gxp: support both coherent/non-coherent mappings
Bug: 205831251
gxp: fix the unused warning on gem5 platform
gxp: Update gxp.h to reflect OFF being allowed in mbox IOCTL
Bug: 243737206
gxp: add wakelock_{after,before}_blk_{on,off}
Bug: 241044848
gxp: Attach device after iommu domain allocated
Bug: 243328707
gxp: Introduce {after,before}_vd_block_{ready,unready} callbacks
Bug: 241057541
gxp: Rollback {after,before}_{allocate,release}_vd callbacks
Bug: 241057541 (repeat)
gxp: Introduce the `gxp_vd_block_unready` function.
Bug: 241057541 (repeat)
gxp: Make the `gxp_vd_stop` can work with READY state
Bug: 241057541 (repeat)
gxp: wrap power states into a struct
Bug: 242155424
gxp: fix various typos
gxp: Protect telemetry status in vd alloc/release
Bug: 242145264
gxp: Fail to allocate VD if initial mapping fails
Bug: 242145264 (repeat)
gxp: Use one gxp_mailbox_create_manager
Bug: 242939166
gxp: Extract mailbox manager from gxp-mailbox.h
Bug: 242939166 (repeat)
gxp: Implement the mailbox manager operator setting function of UCI
Bug: 242178774
gxp: Add init functions for the legacy mailbox and DCI
Bug: 242178774 (repeat)
gxp: Introduce `GXP_HAS_DCI` definition
Bug: 242964051
gxp: fix error handling on probing
gxp: append internal headers after EXTRA_CFLAGS
Bug: 242960640
gxp: remove GXP_POWER_STATE_OFF check in mbox cmd
gxp: Add power states requests callback
Bug: 241782481
gxp: Allocate resources on VD creation
Bug: 241206240
gxp: handle VD allocation in gxp-client.c
Bug: 241206240 (repeat)
gxp: handle wakelock request in gxp-client.c
Bug: 241206240 (repeat)
gxp: gxp_mapping_create accepts domain
Bug: 240415495
gxp: split out gxp_vd & gxp_fw module init/destroy
Bug: 193180931
gxp: fixup DVFS requests
Bug: 242785262
gxp: Only (un)map telem if enabled on vd start/stop
Bug: 241090227
gxp: release TPU file after VD stop
Bug: 241085004
gxp: increase the ref to TPU FD on TPU buffer map
Bug: 241085004 (repeat)
gxp: misc_register as the last step of probe
Bug: 241718472
gxp: remove unneeded devm_kfree
Bug: 241517691
gxp: Cancel last worker when power req queue is full
Bug: 240533763
gxp: Map slice of shared buffer to IOMMU domain instead of whole of it
Bug: 240128962
gxp: Allocate slice_index when allocating virtual device
Bug: 240128962 (repeat)
gxp: Add ID allocator for the slice index of shared buffer
Bug: 240128962 (repeat)
gxp: Introduce slice_index of the virtual device
Bug: 240128962 (repeat)
gxp: unittests: Introduce gxp-debug-dump-test.c and enable debug dump test
Bug: 241086197
Bug: 234892966
gxp: remove domain attach on VD creation
Bug: 241057799
gxp: Add `num_cores` in command ioctls for UCI
Bug: 232310140, 237660465
gxp: Disallow /d/gxp/firmware_run if VDs are running
Bug: 240764261
gxp: remove unneeded warnings from in PM
gxp: Review feedback from 7/21 release
Bug: 240315433
gxp: work around thermal_cdev_update
Bug: 235433985
gxp: remove virt_core_list from gxp_dmabuf_map
Bug: 240661491
gxp: remove virt_core_list from gxp_mapping
Bug: 240661491 (repeat)
gxp: add gxp_vd_phys_core_list
gxp: remove ZEBU_SYSMMU_WORKAROUND
gxp: Replace (resp_queue, eventfd) params with (client, virt_core) of async ops
gxp: remove virt_core_list from tpu_mbx_desc
gxp: check VD is non-null in gxp_client_destroy
gxp: remove core_domains from vd
Bug: 240415495 (repeat)
gxp: remove gxp_vd_phys_core_to_virt_core
gxp: clean up gxp-dma.h descriptions
Bug: 240415495 (repeat)
gxp: dma_map_tpu_buffer accepts domain
Bug: 240415495 (repeat)
gxp: gxp_dma_alloc_coherent takes domain
Bug: 240415495 (repeat)
gxp: map_allocated_coherent_buffer takes domain
Bug: 240415495 (repeat)
gxp: dma_map_dmabuf accepts domain as the arg
Bug: 240415495 (repeat)
gxp: dma_map_sg accepts domain as arg
Bug: 240415495 (repeat)
gxp: dma_map_core_resources accepts domain
Bug: 240415495 (repeat)
gxp: dma_domain_attach_device accepts domain
Bug: 240415495 (repeat)
gxp: Add callbacks for after allocating / before releasing the vd
Bug: 237955391
gxp: program SSMT to the first domain
Bug: 240415495 (repeat)
gxp: deprecate virtual_core_list
Bug: 240514360
gxp: map telemetry buffers to all domains
Bug: 240415495 (repeat)
gxp: map all core resources to all domains in VD
Bug: 240415495 (repeat)
gxp: remove the core parameter from dbg dump buf
gxp: Map telemetry buffs before writing descriptor
Bug: 239640408
gxp: Decide generating interrupt after allocating mailbox according to interface
gxp: Add common operators of gcip-mailbox-ops to the gxp-mailbox-driver
gxp: Merge resp_queue wait macro into the gxp-mailbox.h
gxp: fix typos in comments
Bug: 240315433 (repeat)
gxp: rename callisto.ko to gxp.ko
Bug: 240212593
gxp: Cleanup FW data on VD creation failure
Bug: 240192343
gxp: remove the core number patch on gem5 platform
Bug: 239908693
gxp: edgetpu symbol path according to target chip
Bug: 239766974
gxp: warn deprecate pwr states only once
Bug: 237337595
gxp: don't modify clkmux state during core booting
Bug: 238960149
gxp: Map mailboxes for IOVA of KCI/UCI
Bug: 228401855
gxp: Introduce gxp-usage-stats.c and complete update_usage KCI command
Bug: 237967242
gxp: Introduce gxp-kci.c
Bug: 228401855 (repeat)
gxp: Introduce gxp-dci.c
Bug: 236332988
gxp: Remove the dependency of gcip-mailbox from Amalthea
Bug: 237908672
gxp: Introduce gxp_mailbox_args
Bug: 236332988 (repeat)
gxp: Introduce gxp_mailbox_ops
Bug: 236332988 (repeat)
gxp: Apply gcip-mailbox to gxp-mailbox
Bug: 236679300 (repeat)
gxp: Apply abstracted mailbox functions
Bug: 237908672 (repeat)
gxp: Abstracts mailbox related functions into the mailbox manager
Bug: 237908672 (repeat)
gxp: temporarily attach a domain while VD creating
Bug: 232310140
gxp: add interface to override ioctl handlers
gxp: implement UCI
Bug: 232310140 (repeat)
gxp: fix OOT build for amalthea
gxp: increase the waiting time for cores booting
Bug: 237378056
gxp: fix deadlock on power states queue full
Bug: 236087752
gxp: parallelize the firmware startup process
Bug: 207036666
gxp: Fix bug when clearing FW buffers on auth fail
Bug: 237789581
gxp: firmware load should use configured name
gxp: add gcip include for GKI kernel
gxp: deprecate NON_AGGRESSOR / add LOW_FREQ_CLKMUX
Bug: 237337595 (repeat)
Bug: 237378056 (repeat)
gxp: Disable telemetry before free
Bug: 235771175
gxp: hold mmap lock around call to find_extend_vma
Bug: 237404338
gxp: Don't change doorbell mask for running cores
Bug: 235447772
gxp: compile gcip as an object
Bug: 234674944
gxp: map shared buffer region
Bug: 237262124
gxp: add gcip support to Makefile
Bug: 234674944 (repeat)
gxp: move firmware default name to chip config
Bug: 234261504
gxp: Rename gxp-hw-mailbox-driver.c to gxp-mailbox-driver.c
Bug: 236431904
gxp: Move increasing queue head / tail functions to gxp-hw-mailbox-driver.c
Bug: 236431904 (repeat)
gxp: Move setting queue head / tail functions to gxp-hw-mailbox-driver.c
Bug: 236431904 (repeat)
gxp: Move circ queue cnt / inc functions to gxp-hw-mailbox-driver.c
Bug: 236431904 (repeat)
gxp: Apply clang-format on the mailbox sources
Bug: 236431904 (repeat)
gxp: propagate GXP_PLATFORM option to Kbuild
gxp: optional chip scratchpad region
gxp: gxp-platform adopt common-platform.c
Bug: 232894415
gxp: correct MAILBOX_DEVICE_INTERFACE_OFFSET for gem5
gxp: define ZEBU_SYSMMU_WORKAROUND in GEM5 and ZEBU_IP platform
gxp: adjust Makefile for gem5 & kernel 5.13
gxp: add a parameter to specify callisto mode
Bug: 235193368
gxp: introduce GXP_NUM_MAILBOXES config
Bug: 235173180
gxp: remove redundant checks for mailbox mgr
gxp: remove unused DMA functions
Bug: 235212179
gxp: avoid holding semaphore during mmap
Bug: 232183143
gxp: move iova.h to config files
Bug: 235173809
gxp: Remove CONFIG_GXP_TEST from the SSMT related codes
Bug: 201505925
gxp: lpm enable PS1 only for core CSRs
gxp: add an MCU structure
Bug: 229587136
gxp: define core CSR addresses as macros
Bug: 234705757
gxp: Add option to disable DSP FW auth
Bug: 235135800
gxp: Fix hangs and OOB writes when auth fails
Bug: 234947988
gxp: Adjust the per-core FW size from 16MB to 1MB
Bug: 228277106
gxp: Add enable_debug_dump argument for insmod
Bug: 234529356
gxp: Dynamically allocate memory for debug dump buffer
Bug: 234529355
gxp: Trigger debug dump only when firmware is up and running
Bug: 233660431
Bug: 233607168
gxp: remove support for unsigned firmware
Bug: 220246540
gxp: Expose additional DVFS states in power APIs
Bug: 233929549
gxp: introduce a gxp_firmware_manager
Bug: 230682809
gxp: remove CONFIG_GXP_CLOUDRIPPER
gitignore: ignore .repo and gcip-kernel-driver
Bug: 234674944 (repeat)
gxp: set VID for both SSMTs and possible SIDs
gxp: move LPM_TOP_PSM to config files
Bug: 232471681
gxp: move SID of core macros to config files
Bug: 233989804
gxp: different mailbox offset for platforms
Bug: 233887617
gxp: authenticate firmware after requesting it
Bug: 232715929
gxp: dma-iommu adopts gxp-ssmt interface
Bug: 233989804 (repeat)
gxp: add standalone ssmt driver
Bug: 233989804 (repeat)
gxp: add ifdef guard to disable suspend
Bug: 234096867
gxp: set VD state in vd_stop
Bug: 234096867 (repeat)
gxp: Add lockdep checks to gxp-telemetry.c
gxp: add log on probe success
Bug: 233887617 (repeat)
gxp: add tgid to client tracking and suspend block reporting
Bug: 230656700
Revert "gxp: send UUD request before shutting down AUR_BLK"
gxp: send UUD request before shutting down AUR_BLK
Bug: 233584605
gxp: add parse_dt callback for device probe
Bug: 232894415 (repeat)
gxp: remove unrequired CORE_SCRATCHPAD_BASE offset
Bug: 233381187
gxp: Switch the boot mode storage from CSRs into the scratchpad space
Bug: 233381187 (repeat)
gxp: Refactor FW boot mode into its own functions
Bug: 233381187 (repeat)
gxp: Fix locking in gxp_telemetry_disable()
Bug: 232876605
gxp: initial gxp mcu firmware support
Bug: 229587136 (repeat)
gxp: add callbacks for common probing / removal
Bug: 232894415 (repeat)
gxp: introduce gxp-common-platform.c
Bug: 232894415 (repeat)
gxp: remove mm-backport.h
gxp: Add NULL check of doorbells and barriers allocation
Bug: 232612591
gxp: enhance Makefile for future chip support
Bug: 230702544
gxp: debugfs use cmu.vaddr for accessing CMU CSRs
gcip: add gcip-alloc-helper.h
Bug: 262684159 (repeat)
gcip: Update the comments in gcip-image-config for new encoding
Bug: 257300340 (repeat)
gcip: add reference count to the awaiter
Bug: 261822585 (repeat)
gcip: introduce gcip_mailbox_cancel_awaiter
Bug: 261822585 (repeat)
gcip: introduce gcip_kci_offload_chip_type
Bug: 260690355
gcip: add {link,unlink}_offload_vmbox KCI codes
Bug: 260690355 (repeat)
gcip: Add domain pool
Bug: 228907682 (repeat)
gcip: Add remapped_data_{start,size} to image config
Bug: 257212385
gcip: image header use unsigned fields
gcip: add common authenticated image format header
gcip: Use term awaiter instead of async_resp
Bug: 249642792 (repeat)
gcip: constantize gcip_kci_args
gcip: support arbitrary seq order commands
Bug: 247414706 (repeat)
gcip: Add gcip-telemetry
Bug: 239374826 (repeat)
gcip: add gcip-image-config.h
Bug: 243500340 (repeat)
gcip: Add linux/workqueue.h as header
gcip: Remove mailbox param from the release_async_resp_data callback
Bug: 239804137 (repeat)
gcip: Add release_data callback to the gcip_mailbox_async_response
Bug: 239804137 (repeat)
gcip: fix typo in gcip-mailbox.h
gcip: fix various typos
gcip: Fix reverse KCI codes
Bug: 223764481 (repeat)
gcip: Introduce gcip-firmware.h
Bug: 239637765 (repeat)
gcip: add gcip_mem_pool_offset
gcip: Add KCI codes
Bug: 223764481 (repeat)
gcip: Remove the variables of gcip-kci.h which are moved to gcip-mailbox.h
Bug: 236679300 (repeat)
gcip: Add mailbox related structures and functions (gcip-mailbox.h)
Bug: 236679300 (repeat)
gcip: Add getters for gcip_kci
Bug: 237785687
gcip: Make gcip_kci_push_cmd static
Bug: 223764481 (repeat)
gcip: add gcip memory pool
Bug: 236673496 (repeat)
gcip: Add KCI related structures and functions
Bug: 223764481 (repeat)
gcip: Add mailbox macro and enum
Bug: 223764481 (repeat)
gcip: Add circular queue mailbox helper functions
Bug: 223764481 (repeat)
GCIP_HEADERS_REV_ID: 37a282fd7aad536dc4521a908468bc9557911a19
gxp: Add a static debug pointer to driver state
To assist with debugging of ramdumps where the GXP driver is not in the
backstack, add a static symbol containing a pointer to the driver state
so it can be located quickly in memory.
Bug: 255451381 (repeat)
gxp: Reduce mailbox timeout to 1s
Reduce GXP timeout to allow for faster notification of failure since the
longest any workloads are expected to run is ~500ms.
Bug: 250265514 (repeat)
GitOrigin-RevId: d7c38381aeae2ecc8b3b3f84abf45f1fe26edc4b
Change-Id: Id0718e8bff32a18aff796dfd7779e2d61a6c4a64
Diffstat (limited to 'gxp-debugfs.c')
-rw-r--r-- | gxp-debugfs.c | 273 |
1 files changed, 145 insertions, 128 deletions
diff --git a/gxp-debugfs.c b/gxp-debugfs.c index e1b199b..ae31914 100644 --- a/gxp-debugfs.c +++ b/gxp-debugfs.c @@ -8,8 +8,10 @@ #include <linux/acpm_dvfs.h> #include "gxp-client.h" +#include "gxp-core-telemetry.h" #include "gxp-debug-dump.h" #include "gxp-debugfs.h" +#include "gxp-dma.h" #include "gxp-firmware-data.h" #include "gxp-firmware.h" #include "gxp-internal.h" @@ -17,14 +19,17 @@ #include "gxp-lpm.h" #include "gxp-mailbox.h" #include "gxp-pm.h" -#include "gxp-telemetry.h" #include "gxp-vd.h" #include "gxp-wakelock.h" #include "gxp.h" +#if GXP_HAS_MCU +#include "gxp-mcu-platform.h" +#endif + static int gxp_debugfs_lpm_test(void *data, u64 val) { - struct gxp_dev *gxp = (struct gxp_dev *) data; + struct gxp_dev *gxp = (struct gxp_dev *)data; dev_info(gxp->dev, "%llu\n", val); @@ -35,49 +40,87 @@ DEFINE_DEBUGFS_ATTRIBUTE(gxp_lpm_test_fops, NULL, gxp_debugfs_lpm_test, static int gxp_debugfs_mailbox(void *data, u64 val) { - int core; - struct gxp_command cmd; - struct gxp_response resp; + int core = 0, retval; + u16 status; struct gxp_dev *gxp = (struct gxp_dev *)data; + struct gxp_mailbox *mbx; + struct gxp_power_states power_states = { + .power = GXP_POWER_STATE_NOM, + .memory = MEMORY_POWER_STATE_UNDEFINED, + }; + u16 cmd_code; + int ret; - core = val / 1000; - if (core >= GXP_NUM_CORES) { - dev_notice(gxp->dev, - "Mailbox for core %d doesn't exist.\n", core); - return -EINVAL; - } + mutex_lock(&gxp->debugfs_client_lock); - if (gxp->mailbox_mgr == NULL || - gxp->mailbox_mgr->mailboxes[core] == NULL) { - dev_notice(gxp->dev, - "Unable to send mailbox command -- mailbox %d not ready\n", - core); - return -EINVAL; - } +#if GXP_HAS_MCU + if (gxp_is_direct_mode(gxp)) { +#endif + core = val / 1000; + if (core >= GXP_NUM_CORES) { + dev_notice(gxp->dev, + "Mailbox for core %d doesn't exist.\n", + core); + ret = -EINVAL; + goto out; + } + + if (gxp->mailbox_mgr->mailboxes[core] == NULL) { + dev_notice( + gxp->dev, + "Unable to send mailbox command -- mailbox %d not ready\n", + core); + ret = -EINVAL; + goto out; + } - cmd.code = (u16) val; - cmd.priority = 0; - cmd.buffer_descriptor.address = 0; - cmd.buffer_descriptor.size = 0; - cmd.buffer_descriptor.flags = 0; + mbx = gxp->mailbox_mgr->mailboxes[core]; + cmd_code = GXP_MBOX_CODE_DISPATCH; +#if GXP_HAS_MCU + } else { + if (!gxp->debugfs_client) { + dev_err(gxp->dev, + "You should load firmwares via gxp/firmware_run first\n"); + ret = -EIO; + goto out; + } + + mbx = to_mcu_dev(gxp)->mcu.uci.mbx; + if (!mbx) { + dev_err(gxp->dev, "UCI is not initialized.\n"); + ret = -EIO; + goto out; + } + + cmd_code = CORE_COMMAND; + } +#endif down_read(&gxp->vd_semaphore); - gxp_mailbox_execute_cmd(gxp->mailbox_mgr->mailboxes[core], &cmd, &resp); + /* In direct mode, gxp->debugfs_client and core will be ignored. */ + retval = gxp->mailbox_mgr->execute_cmd(gxp->debugfs_client, mbx, core, + cmd_code, 0, 0, 0, 0, 1, + power_states, NULL, &status); up_read(&gxp->vd_semaphore); - dev_info(gxp->dev, - "Mailbox Command Sent: cmd.code=%d, resp.status=%d, resp.retval=%d\n", - cmd.code, resp.status, resp.retval); - return 0; + dev_info( + gxp->dev, + "Mailbox Command Sent: core=%d, resp.status=%d, resp.retval=%d\n", + core, status, retval); + ret = 0; +out: + mutex_unlock(&gxp->debugfs_client_lock); + return ret; } DEFINE_DEBUGFS_ATTRIBUTE(gxp_mailbox_fops, NULL, gxp_debugfs_mailbox, "%llu\n"); static int gxp_firmware_run_set(void *data, u64 val) { - struct gxp_dev *gxp = (struct gxp_dev *) data; + struct gxp_dev *gxp = (struct gxp_dev *)data; struct gxp_client *client; int ret = 0; uint core; + bool acquired_block_wakelock; ret = gxp_firmware_request_if_needed(gxp); if (ret) { @@ -89,7 +132,7 @@ static int gxp_firmware_run_set(void *data, u64 val) if (val) { if (gxp->debugfs_client) { - dev_err(gxp->dev, "Firmware already running!\n"); + dev_err(gxp->dev, "Firmware is already running!\n"); ret = -EIO; goto out; } @@ -109,6 +152,7 @@ static int gxp_firmware_run_set(void *data, u64 val) goto out; } } + up_write(&gxp->vd_semaphore); /* * Cleanup any bad state or corruption the device might've @@ -124,34 +168,31 @@ static int gxp_firmware_run_set(void *data, u64 val) } gxp->debugfs_client = client; - gxp->debugfs_client->vd = gxp_vd_allocate(gxp, GXP_NUM_CORES); - if (IS_ERR(gxp->debugfs_client->vd)) { + down_write(&client->semaphore); + + ret = gxp_client_allocate_virtual_device(client, GXP_NUM_CORES, 0); + if (ret) { dev_err(gxp->dev, "Failed to allocate VD\n"); - ret = PTR_ERR(gxp->debugfs_client->vd); - goto err_wakelock; + goto err_destroy_client; } - ret = gxp_wakelock_acquire(gxp); + ret = gxp_client_acquire_block_wakelock( + client, &acquired_block_wakelock); if (ret) { dev_err(gxp->dev, "Failed to acquire BLOCK wakelock\n"); - goto err_wakelock; + goto err_destroy_client; } - gxp->debugfs_client->has_block_wakelock = true; - gxp_pm_update_requested_power_states(gxp, AUR_OFF, true, - AUR_UUD, true, - AUR_MEM_UNDEFINED, - AUR_MEM_UNDEFINED); - ret = gxp_vd_start(gxp->debugfs_client->vd); - up_write(&gxp->vd_semaphore); + ret = gxp_client_acquire_vd_wakelock(client, uud_states); if (ret) { - dev_err(gxp->dev, "Failed to start VD\n"); - goto err_start; + dev_err(gxp->dev, "Failed to acquire VD wakelock\n"); + goto err_release_block_wakelock; } - gxp->debugfs_client->has_vd_wakelock = true; + + up_write(&client->semaphore); } else { if (!gxp->debugfs_client) { - dev_err(gxp->dev, "Firmware not running!\n"); + dev_err(gxp->dev, "Firmware is not running!\n"); ret = -EIO; goto out; } @@ -162,10 +203,6 @@ static int gxp_firmware_run_set(void *data, u64 val) */ gxp_client_destroy(gxp->debugfs_client); gxp->debugfs_client = NULL; - gxp_pm_update_requested_power_states(gxp, AUR_UUD, true, - AUR_OFF, true, - AUR_MEM_UNDEFINED, - AUR_MEM_UNDEFINED); } out: @@ -173,14 +210,12 @@ out: return ret; -err_start: - gxp_wakelock_release(gxp); - gxp_pm_update_requested_power_states(gxp, AUR_UUD, true, AUR_OFF, true, - AUR_MEM_UNDEFINED, - AUR_MEM_UNDEFINED); -err_wakelock: +err_release_block_wakelock: + gxp_client_release_block_wakelock(client); +err_destroy_client: + up_write(&client->semaphore); /* Destroying a client cleans up any VDss or wakelocks it held. */ - gxp_client_destroy(gxp->debugfs_client); + gxp_client_destroy(client); gxp->debugfs_client = NULL; mutex_unlock(&gxp->debugfs_client_lock); return ret; @@ -188,10 +223,10 @@ err_wakelock: static int gxp_firmware_run_get(void *data, u64 *val) { - struct gxp_dev *gxp = (struct gxp_dev *) data; + struct gxp_dev *gxp = (struct gxp_dev *)data; down_read(&gxp->vd_semaphore); - *val = gxp->firmware_running; + *val = gxp->firmware_mgr->firmware_running; up_read(&gxp->vd_semaphore); return 0; @@ -224,10 +259,8 @@ static int gxp_wakelock_set(void *data, u64 val) goto out; } gxp->debugfs_wakelock_held = true; - gxp_pm_update_requested_power_states(gxp, AUR_OFF, true, - AUR_UUD, true, - AUR_MEM_UNDEFINED, - AUR_MEM_UNDEFINED); + gxp_pm_update_requested_power_states(gxp, off_states, + uud_states); } else { /* Wakelock Release */ if (!gxp->debugfs_wakelock_held) { @@ -238,10 +271,8 @@ static int gxp_wakelock_set(void *data, u64 val) gxp_wakelock_release(gxp); gxp->debugfs_wakelock_held = false; - gxp_pm_update_requested_power_states(gxp, AUR_UUD, true, - AUR_OFF, true, - AUR_MEM_UNDEFINED, - AUR_MEM_UNDEFINED); + gxp_pm_update_requested_power_states(gxp, uud_states, + off_states); } out: @@ -321,29 +352,24 @@ static int gxp_log_buff_set(void *data, u64 val) { struct gxp_dev *gxp = (struct gxp_dev *)data; int i; - u64 **buffers; + struct gxp_coherent_buf *buffers; u64 *ptr; - mutex_lock(&gxp->telemetry_mgr->lock); + mutex_lock(&gxp->core_telemetry_mgr->lock); - if (!gxp->telemetry_mgr->logging_buff_data) { - dev_err(gxp->dev, "%s: Logging buffer has not been created\n", - __func__); - mutex_unlock(&gxp->telemetry_mgr->lock); + if (!gxp->core_telemetry_mgr->logging_buff_data_legacy) { + dev_err(gxp->dev, "Logging buffer has not been created"); + mutex_unlock(&gxp->core_telemetry_mgr->lock); return -ENODEV; } - buffers = (u64 **)gxp->telemetry_mgr->logging_buff_data->buffers; + buffers = gxp->core_telemetry_mgr->logging_buff_data_legacy->buffers; for (i = 0; i < GXP_NUM_CORES; i++) { - ptr = buffers[i]; + ptr = buffers[i].vaddr; *ptr = val; } - dev_dbg(gxp->dev, - "%s: log buff first bytes: [0] = %llu, [1] = %llu, [2] = %llu, [3] = %llu (val=%llu)\n", - __func__, *buffers[0], *buffers[1], *buffers[2], *buffers[3], - val); - mutex_unlock(&gxp->telemetry_mgr->lock); + mutex_unlock(&gxp->core_telemetry_mgr->lock); return 0; } @@ -351,25 +377,21 @@ static int gxp_log_buff_set(void *data, u64 val) static int gxp_log_buff_get(void *data, u64 *val) { struct gxp_dev *gxp = (struct gxp_dev *)data; - u64 **buffers; + struct gxp_coherent_buf *buffers; - mutex_lock(&gxp->telemetry_mgr->lock); + mutex_lock(&gxp->core_telemetry_mgr->lock); - if (!gxp->telemetry_mgr->logging_buff_data) { - dev_err(gxp->dev, "%s: Logging buffer has not been created\n", - __func__); - mutex_unlock(&gxp->telemetry_mgr->lock); + if (!gxp->core_telemetry_mgr->logging_buff_data_legacy) { + dev_err(gxp->dev, "Logging buffer has not been created"); + mutex_unlock(&gxp->core_telemetry_mgr->lock); return -ENODEV; } - buffers = (u64 **)gxp->telemetry_mgr->logging_buff_data->buffers; - dev_dbg(gxp->dev, - "%s: log buff first bytes: [0] = %llu, [1] = %llu, [2] = %llu, [3] = %llu\n", - __func__, *buffers[0], *buffers[1], *buffers[2], *buffers[3]); + buffers = gxp->core_telemetry_mgr->logging_buff_data_legacy->buffers; - *val = *buffers[0]; + *val = *(u64 *)(buffers[0].vaddr); - mutex_unlock(&gxp->telemetry_mgr->lock); + mutex_unlock(&gxp->core_telemetry_mgr->lock); return 0; } @@ -382,17 +404,17 @@ static int gxp_log_eventfd_signal_set(void *data, u64 val) struct gxp_dev *gxp = (struct gxp_dev *)data; int ret = 0; - mutex_lock(&gxp->telemetry_mgr->lock); + mutex_lock(&gxp->core_telemetry_mgr->lock); - if (!gxp->telemetry_mgr->logging_efd) { + if (!gxp->core_telemetry_mgr->logging_efd) { ret = -ENODEV; goto out; } - ret = eventfd_signal(gxp->telemetry_mgr->logging_efd, 1); + ret = eventfd_signal(gxp->core_telemetry_mgr->logging_efd, 1); out: - mutex_unlock(&gxp->telemetry_mgr->lock); + mutex_unlock(&gxp->core_telemetry_mgr->lock); return ret; } @@ -400,37 +422,33 @@ out: DEFINE_DEBUGFS_ATTRIBUTE(gxp_log_eventfd_signal_fops, NULL, gxp_log_eventfd_signal_set, "%llu\n"); -/* TODO: Remove these mux entry once experiment is done */ static int gxp_cmu_mux1_set(void *data, u64 val) { struct gxp_dev *gxp = (struct gxp_dev *)data; - void *addr; + if (IS_ERR_OR_NULL(gxp->cmu.vaddr)) { + dev_err(gxp->dev, "CMU registers are not mapped"); + return -ENODEV; + } if (val > 1) { - dev_err(gxp->dev, "Incorrect val for cmu_mux1, only 0 and 1 allowed\n"); + dev_err(gxp->dev, + "Incorrect val for cmu_mux1, only 0 and 1 allowed\n"); return -EINVAL; } - addr = ioremap(gxp->regs.paddr - GXP_CMU_OFFSET, 0x1000); - - if (!addr) { - dev_err(gxp->dev, "Cannot map CMU1 address\n"); - return -EIO; - } - - writel(val << 4, addr + PLL_CON0_PLL_AUR); - iounmap(addr); + writel(val << 4, gxp->cmu.vaddr + PLL_CON0_PLL_AUR); return 0; } static int gxp_cmu_mux1_get(void *data, u64 *val) { struct gxp_dev *gxp = (struct gxp_dev *)data; - void *addr; - addr = ioremap(gxp->regs.paddr - GXP_CMU_OFFSET, 0x1000); - *val = readl(addr + PLL_CON0_PLL_AUR); - iounmap(addr); + if (IS_ERR_OR_NULL(gxp->cmu.vaddr)) { + dev_err(gxp->dev, "CMU registers are not mapped"); + return -ENODEV; + } + *val = readl(gxp->cmu.vaddr + PLL_CON0_PLL_AUR); return 0; } @@ -440,33 +458,30 @@ DEFINE_DEBUGFS_ATTRIBUTE(gxp_cmu_mux1_fops, gxp_cmu_mux1_get, gxp_cmu_mux1_set, static int gxp_cmu_mux2_set(void *data, u64 val) { struct gxp_dev *gxp = (struct gxp_dev *)data; - void *addr; + if (IS_ERR_OR_NULL(gxp->cmu.vaddr)) { + dev_err(gxp->dev, "CMU registers are not mapped"); + return -ENODEV; + } if (val > 1) { - dev_err(gxp->dev, "Incorrect val for cmu_mux2, only 0 and 1 allowed\n"); + dev_err(gxp->dev, + "Incorrect val for cmu_mux2, only 0 and 1 allowed\n"); return -EINVAL; } - addr = ioremap(gxp->regs.paddr - GXP_CMU_OFFSET, 0x1000); - - if (!addr) { - dev_err(gxp->dev, "Cannot map CMU2 address\n"); - return -EIO; - } - - writel(val << 4, addr + PLL_CON0_NOC_USER); - iounmap(addr); + writel(val << 4, gxp->cmu.vaddr + PLL_CON0_NOC_USER); return 0; } static int gxp_cmu_mux2_get(void *data, u64 *val) { struct gxp_dev *gxp = (struct gxp_dev *)data; - void *addr; - addr = ioremap(gxp->regs.paddr - GXP_CMU_OFFSET, 0x1000); - *val = readl(addr + 0x610); - iounmap(addr); + if (IS_ERR_OR_NULL(gxp->cmu.vaddr)) { + dev_err(gxp->dev, "CMU registers are not mapped"); + return -ENODEV; + } + *val = readl(gxp->cmu.vaddr + PLL_CON0_NOC_USER); return 0; } @@ -505,6 +520,8 @@ void gxp_create_debugfs(struct gxp_dev *gxp) void gxp_remove_debugfs(struct gxp_dev *gxp) { + if (IS_GXP_TEST && !gxp->d_entry) + return; debugfs_remove_recursive(gxp->d_entry); /* |