← Documents Documentation/arch/arm/keystone/knav-qmss.rst GitHub 원문 ↗

Linux 6.18.37 · Architecture

Keystone Navigator QMSS driver

Keystone queue manager, PDSP·linking RAM·descriptor pool과 accumulator firmware 배포 조건을 설명합니다.

Source pathDocumentation/arch/arm/keystone/knav-qmss.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

knav-qmss.rst:1-60

QMSS는 descriptor address를 memory-mapped queue에 push/pop해 packet 흐름을 관리합니다. accumulator queue는 PDSP firmware가 실제 실행 중일 때만 API에 노출되므로 filesystem 배포가 기능 availability의 전제입니다.

QMSS packet queue 경로
client driver APIdescriptor poollinking RAMQueue ManagerPacket DMA
PDSP firmwareaccumulator channel1 또는 32 queuesnotification

driver API가 queue와 descriptor resource를 관리하고 PDSP가 accumulation·QoS·event 기능을 보조합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Texas Instruments Keystone Navigator Queue Management SubSystem driver

1-30

driver source는 `drivers/soc/ti/knav_qmss.c`와 `drivers/soc/ti/knav_qmss_acc.c`입니다.

Keystone SoC의 QMSS(Queue Manager SubSystem)는 multi-core Navigator의 backbone을 이루는 주요 hardware subsystem입니다. queue manager, packed-data structure processor(PDSP), linking RAM, descriptor pool, infrastructure Packet DMA로 구성됩니다.

Queue Manager는 packet queue 관리를 가속하는 hardware module입니다. 특정 memory-mapped location에 descriptor address를 쓰거나 읽어 packet을 enqueue/dequeue합니다. PDSP는 accumulation, QoS, event management 같은 QMSS 기능을 수행합니다.

linking RAM register는 descriptor RAM에 저장한 descriptor를 연결합니다. descriptor RAM은 internal 또는 external memory로 구성할 수 있습니다.

QMSS driver는 PDSP setup, linking RAM region, queue pool의 allocation·push·pop·notification, descriptor pool을 관리합니다.

knav QMSS driver는 다른 driver가 QMSS queue를 open/close하고 descriptor pool을 allocate하며 descriptor mapping과 queue push/pop 등을 수행할 API를 제공합니다. 전체 API는 `include/linux/soc/ti/knav_qmss.h`를 참고합니다.

DT binding 문서는 `Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt`에 있습니다.

Accumulator QMSS queues using PDSP firmware

31-60

QMSS PDSP firmware는 queue 하나 또는 연속한 여러 queue를 monitor하는 accumulator channel을 지원합니다. `drivers/soc/ti/knav_qmss_acc.c`가 accumulator PDSP와 interface하며 DTS에 정의된 channel을 channel당 1개 또는 32개 queue monitor로 구성합니다.

firmware 설명은 `git://git.ti.com/keystone-rtos/qmss-lld.git`의 `docs/CPPI_QMSS_LLD_SDS.pdf`에 있습니다.

`k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin`은 최대 48 accumulator channel을 지원합니다. `git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git`의 `ti-keystone` 디렉터리에서 구할 수 있습니다.

사용하려면 firmware image를 initramfs 또는 UBIFS filesystem의 `lib/firmware`에 복사하고 filesystem에서 `k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin`을 가리키는 symbolic link를 제공한 뒤 kernel을 부팅합니다.

PDSP firmware load가 성공하면 boot log에 `firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP`가 나타납니다.

accumulated queue를 사용하려면 filesystem에 firmware image가 반드시 있어야 합니다. PDSP가 SoC에서 실행 중이 아니면 driver는 accumulator queue를 지원 queue range에 추가하지 않으며, 해당 queue open API도 실패합니다. 그러므로 이 queue type을 쓰기 전에 firmware를 복사해야 합니다.