summaryrefslogtreecommitdiff
path: root/gxp-firmware-data.c
diff options
context:
space:
mode:
authorAurora pro automerger <aurora-pro-automerger@google.com>2023-01-06 06:59:41 +0000
committerdavidchiang <davidchiang@google.com>2023-01-06 08:08:49 +0000
commit8a4b0d93e1f8b9ae23fb476eef4d43f18bc3cc1d (patch)
tree77a55bc81515aae0827a3cdb0f2ef0d68a46f677 /gxp-firmware-data.c
parent9cc533bf4e533f90504fe355b5fcc726c1c549e0 (diff)
downloadgs201-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-firmware-data.c')
-rw-r--r--gxp-firmware-data.c98
1 files changed, 66 insertions, 32 deletions
diff --git a/gxp-firmware-data.c b/gxp-firmware-data.c
index d1def41..6f22f8d 100644
--- a/gxp-firmware-data.c
+++ b/gxp-firmware-data.c
@@ -70,7 +70,7 @@ struct gxp_fw_data_manager {
/* Doorbells allocator and reserved doorbell IDs */
struct range_alloc *doorbell_allocator;
- int core_wakeup_doorbells[GXP_NUM_CORES];
+ int core_wakeup_doorbells[GXP_NUM_WAKEUP_DOORBELLS];
int semaphore_doorbells[GXP_NUM_CORES];
/* Sync barriers allocator and reserved sync barrier IDs */
@@ -87,7 +87,7 @@ struct gxp_fw_data_manager {
struct fw_memory_allocator *allocator;
struct fw_memory sys_desc_mem;
struct fw_memory wdog_mem;
- struct fw_memory telemetry_mem;
+ struct fw_memory core_telemetry_mem;
struct fw_memory debug_dump_mem;
};
@@ -266,18 +266,18 @@ static struct fw_memory init_watchdog(struct gxp_fw_data_manager *mgr)
return mem;
}
-static struct fw_memory init_telemetry(struct gxp_fw_data_manager *mgr)
+static struct fw_memory init_core_telemetry(struct gxp_fw_data_manager *mgr)
{
- struct gxp_telemetry_descriptor *tel_region;
+ struct gxp_core_telemetry_descriptor *tel_region;
struct fw_memory mem;
mem_alloc_allocate(mgr->allocator, &mem, sizeof(*tel_region),
- __alignof__(struct gxp_telemetry_descriptor));
+ __alignof__(struct gxp_core_telemetry_descriptor));
tel_region = mem.host_addr;
/*
- * Telemetry is disabled for now.
+ * Core telemetry is disabled for now.
* Subsuequent calls to the FW data module can be used to populate or
* depopulate the descriptor pointers on demand.
*/
@@ -292,7 +292,7 @@ static struct fw_memory init_debug_dump(struct gxp_dev *gxp)
if (gxp->debug_dump_mgr) {
mem.host_addr = gxp->debug_dump_mgr->buf.vaddr;
- mem.device_addr = gxp->debug_dump_mgr->buf.daddr;
+ mem.device_addr = gxp->debug_dump_mgr->buf.dsp_addr;
mem.sz = gxp->debug_dump_mgr->buf.size;
} else {
mem.host_addr = 0;
@@ -510,7 +510,7 @@ int gxp_fw_data_init(struct gxp_dev *gxp)
/* Allocate doorbells */
/* Pinned: Cores wakeup doorbell */
- for (i = 0; i < GXP_NUM_CORES; i++) {
+ for (i = 0; i < GXP_NUM_WAKEUP_DOORBELLS; i++) {
mgr->core_wakeup_doorbells[i] = DOORBELL_ID_CORE_WAKEUP(i);
res = range_alloc_get(mgr->doorbell_allocator,
mgr->core_wakeup_doorbells[i]);
@@ -589,9 +589,10 @@ int gxp_fw_data_init(struct gxp_dev *gxp)
mgr->wdog_mem = init_watchdog(mgr);
mgr->system_desc->watchdog_dev_addr = mgr->wdog_mem.device_addr;
- /* Allocate the descriptor for device-side telemetry */
- mgr->telemetry_mem = init_telemetry(mgr);
- mgr->system_desc->telemetry_dev_addr = mgr->telemetry_mem.device_addr;
+ /* Allocate the descriptor for device-side core telemetry */
+ mgr->core_telemetry_mem = init_core_telemetry(mgr);
+ mgr->system_desc->core_telemetry_dev_addr =
+ mgr->core_telemetry_mem.device_addr;
/* Set the debug dump region parameters if available */
mgr->debug_dump_mem = init_debug_dump(gxp);
@@ -610,6 +611,7 @@ void *gxp_fw_data_create_app(struct gxp_dev *gxp, uint core_list)
{
struct gxp_fw_data_manager *mgr = gxp->data_mgr;
struct app_metadata *app;
+ void *err;
int i;
app = kzalloc(sizeof(struct app_metadata), GFP_KERNEL);
@@ -626,6 +628,11 @@ void *gxp_fw_data_create_app(struct gxp_dev *gxp, uint core_list)
app->user_doorbells_count = DEFAULT_APP_USER_DOORBELL_COUNT;
app->user_doorbells =
kcalloc(app->user_doorbells_count, sizeof(int), GFP_KERNEL);
+ if (!app->user_doorbells) {
+ err = ERR_PTR(-ENOMEM);
+ goto err_user_doorbells;
+ }
+
for (i = 0; i < app->user_doorbells_count; i++) {
range_alloc_get_any(mgr->doorbell_allocator,
&app->user_doorbells[i]);
@@ -635,6 +642,11 @@ void *gxp_fw_data_create_app(struct gxp_dev *gxp, uint core_list)
app->user_barriers_count = DEFAULT_APP_USER_BARRIER_COUNT;
app->user_barriers =
kcalloc(app->user_barriers_count, sizeof(int), GFP_KERNEL);
+ if (!app->user_barriers) {
+ err = ERR_PTR(-ENOMEM);
+ goto err_user_barriers;
+ }
+
for (i = 0; i < app->user_barriers_count; i++) {
range_alloc_get_any(mgr->sync_barrier_allocator,
&app->user_barriers[i]);
@@ -650,6 +662,16 @@ void *gxp_fw_data_create_app(struct gxp_dev *gxp, uint core_list)
}
return app;
+
+err_user_barriers:
+ for (i = 0; i < app->user_doorbells_count; i++)
+ range_alloc_put(mgr->doorbell_allocator,
+ app->user_doorbells[i]);
+ kfree(app->user_doorbells);
+err_user_doorbells:
+ kfree(app);
+
+ return err;
}
void gxp_fw_data_destroy_app(struct gxp_dev *gxp, void *application)
@@ -689,7 +711,7 @@ void gxp_fw_data_destroy(struct gxp_dev *gxp)
if (!mgr)
return;
- mem_alloc_free(mgr->allocator, &mgr->telemetry_mem);
+ mem_alloc_free(mgr->allocator, &mgr->core_telemetry_mem);
mem_alloc_free(mgr->allocator, &mgr->wdog_mem);
mem_alloc_free(mgr->allocator, &mgr->sys_desc_mem);
mem_alloc_destroy(mgr->allocator);
@@ -709,15 +731,16 @@ void gxp_fw_data_destroy(struct gxp_dev *gxp)
}
}
-int gxp_fw_data_set_telemetry_descriptors(struct gxp_dev *gxp, u8 type,
- u32 host_status,
- dma_addr_t *buffer_addrs,
- u32 per_buffer_size)
+int gxp_fw_data_set_core_telemetry_descriptors(struct gxp_dev *gxp, u8 type,
+ u32 host_status,
+ struct gxp_coherent_buf *buffers,
+ u32 per_buffer_size)
{
- struct gxp_telemetry_descriptor *descriptor =
- gxp->data_mgr->telemetry_mem.host_addr;
- struct telemetry_descriptor *core_descriptors;
+ struct gxp_core_telemetry_descriptor *descriptor =
+ gxp->data_mgr->core_telemetry_mem.host_addr;
+ struct core_telemetry_descriptor *core_descriptors;
uint core;
+ bool enable;
if (type == GXP_TELEMETRY_TYPE_LOGGING)
core_descriptors = descriptor->per_core_loggers;
@@ -726,26 +749,37 @@ int gxp_fw_data_set_telemetry_descriptors(struct gxp_dev *gxp, u8 type,
else
return -EINVAL;
- /* Validate that the provided IOVAs are addressable (i.e. 32-bit) */
- for (core = 0; core < GXP_NUM_CORES; core++) {
- if (buffer_addrs[core] > U32_MAX)
- return -EINVAL;
- }
+ enable = (host_status & GXP_CORE_TELEMETRY_HOST_STATUS_ENABLED);
- for (core = 0; core < GXP_NUM_CORES; core++) {
- core_descriptors[core].host_status = host_status;
- core_descriptors[core].buffer_addr = (u32)buffer_addrs[core];
- core_descriptors[core].buffer_size = per_buffer_size;
+ if (enable) {
+ /* Validate that the provided IOVAs are addressable (i.e. 32-bit) */
+ for (core = 0; core < GXP_NUM_CORES; core++) {
+ if (buffers && buffers[core].dsp_addr > U32_MAX &&
+ buffers[core].size == per_buffer_size)
+ return -EINVAL;
+ }
+
+ for (core = 0; core < GXP_NUM_CORES; core++) {
+ core_descriptors[core].host_status = host_status;
+ core_descriptors[core].buffer_addr = (u32)buffers[core].dsp_addr;
+ core_descriptors[core].buffer_size = per_buffer_size;
+ }
+ } else {
+ for (core = 0; core < GXP_NUM_CORES; core++) {
+ core_descriptors[core].host_status = host_status;
+ core_descriptors[core].buffer_addr = 0;
+ core_descriptors[core].buffer_size = 0;
+ }
}
return 0;
}
-u32 gxp_fw_data_get_telemetry_device_status(struct gxp_dev *gxp, uint core,
- u8 type)
+u32 gxp_fw_data_get_core_telemetry_device_status(struct gxp_dev *gxp, uint core,
+ u8 type)
{
- struct gxp_telemetry_descriptor *descriptor =
- gxp->data_mgr->telemetry_mem.host_addr;
+ struct gxp_core_telemetry_descriptor *descriptor =
+ gxp->data_mgr->core_telemetry_mem.host_addr;
if (core >= GXP_NUM_CORES)
return 0;