cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

knav-qmss.rst (3049B)


      1======================================================================
      2Texas Instruments Keystone Navigator Queue Management SubSystem driver
      3======================================================================
      4
      5Driver source code path
      6  drivers/soc/ti/knav_qmss.c
      7  drivers/soc/ti/knav_qmss_acc.c
      8
      9The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
     10the main hardware sub system which forms the backbone of the Keystone
     11multi-core Navigator. QMSS consist of queue managers, packed-data structure
     12processors(PDSP), linking RAM, descriptor pools and infrastructure
     13Packet DMA.
     14The Queue Manager is a hardware module that is responsible for accelerating
     15management of the packet queues. Packets are queued/de-queued by writing or
     16reading descriptor address to a particular memory mapped location. The PDSPs
     17perform QMSS related functions like accumulation, QoS, or event management.
     18Linking RAM registers are used to link the descriptors which are stored in
     19descriptor RAM. Descriptor RAM is configurable as internal or external memory.
     20The QMSS driver manages the PDSP setups, linking RAM regions,
     21queue pool management (allocation, push, pop and notify) and descriptor
     22pool management.
     23
     24knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
     25allocate descriptor pools, map the descriptors, push/pop to queues etc. For
     26details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
     27
     28DT documentation is available at
     29Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
     30
     31Accumulator QMSS queues using PDSP firmware
     32============================================
     33The QMSS PDSP firmware support accumulator channel that can monitor a single
     34queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the
     35driver that interface with the accumulator PDSP. This configures
     36accumulator channels defined in DTS (example in DT documentation) to monitor
     371 or 32 queues per channel. More description on the firmware is available in
     38CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at
     39
     40	git://git.ti.com/keystone-rtos/qmss-lld.git
     41
     42k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator
     43channels. This firmware is available under ti-keystone folder of
     44firmware.git at
     45
     46   git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
     47
     48To use copy the firmware image to lib/firmware folder of the initramfs or
     49ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin
     50in the file system and boot up the kernel. User would see
     51
     52 "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
     53
     54in the boot up log if loading of firmware to PDSP is successful.
     55
     56Use of accumulated queues requires the firmware image to be present in the
     57file system. The driver doesn't acc queues to the supported queue range if
     58PDSP is not running in the SoC. The API call fails if there is a queue open
     59request to an acc queue and PDSP is not running. So make sure to copy firmware
     60to file system before using these queue types.