요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0
====================
iosm devlink support
====================
This document describes the devlink features implemented by the ``iosm``
device driver.
Parameters
==========
The ``iosm`` driver implements the following driver-specific parameters.
.. list-table:: Driver-specific parameters implemented
:widths: 5 5 5 85
* - Name
- Type
- Mode
- Description
* - ``erase_full_flash``
- u8
- runtime
- erase_full_flash parameter is used to check if full erase is required for
the device during firmware flashing.
If set, Full nand erase command will be sent to the device. By default,
only conditional erase support is enabled.
Flash Update
============
The ``iosm`` driver implements support for flash update using the
``devlink-flash`` interface.
It supports updating the device flash using a combined flash image which contains
the Bootloader images and other modem software images.
The driver uses DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT to identify type of
firmware image that need to be flashed as requested by user space application.
Supported firmware image types.
.. list-table:: Firmware Image types
:widths: 15 85
* - Name
- Description
* - ``PSI RAM``
- Primary Signed Image
* - ``EBL``
- External Bootloader
* - ``FLS``
- Modem Software Image
PSI RAM and EBL are the RAM images which are injected to the device when the
device is in BOOT ROM stage. Once this is successful, the actual modem firmware
image is flashed to the device. The modem software image contains multiple files
each having one secure bin file and at least one Loadmap/Region file. For flashing
these files, appropriate commands are sent to the modem device along with the
data required for flashing. The data like region count and address of each region
has to be passed to the driver using the devlink param command.
If the device has to be fully erased before firmware flashing, user application
need to set the erase_full_flash parameter using devlink param command.
By default, conditional erase feature is supported.
Flash Commands:
===============
1) When modem is in Boot ROM stage, user can use below command to inject PSI RAM
image using devlink flash command.
$ devlink dev flash pci/0000:02:00.0 file <PSI_RAM_File_name>
2) If user want to do a full erase, below command need to be issued to set the
erase full flash param (To be set only if full erase required).
$ devlink dev param set pci/0000:02:00.0 name erase_full_flash value true cmode runtime
3) Inject EBL after the modem is in PSI stage.
$ devlink dev flash pci/0000:02:00.0 file <EBL_File_name>
4) Once EBL is injected successfully, then the actual firmware flashing takes
place. Below is the sequence of commands used for each of the firmware images.
a) Flash secure bin file.
$ devlink dev flash pci/0000:02:00.0 file <Secure_bin_file_name>
b) Flashing the Loadmap/Region file
$ devlink dev flash pci/0000:02:00.0 file <Load_map_file_name>
Regions
=======
The ``iosm`` driver supports dumping the coredump logs.
In case a firmware encounters an exception, a snapshot will be taken by the
driver. Following regions are accessed for device internal data.
.. list-table:: Regions implemented
:widths: 15 85
* - Name
- Description
* - ``report.json``
- The summary of exception details logged as part of this region.
* - ``coredump.fcd``
- This region contains the details related to the exception occurred in the
device (RAM dump).
* - ``cdd.log``
- This region contains the logs related to the modem CDD driver.
* - ``eeprom.bin``
- This region contains the eeprom logs.
* - ``bootcore_trace.bin``
- This region contains the current instance of bootloader logs.
* - ``bootcore_prev_trace.bin``
- This region contains the previous instance of bootloader logs.
Region commands
===============
$ devlink region show
$ devlink region new pci/0000:02:00.0/report.json
$ devlink region dump pci/0000:02:00.0/report.json snapshot 0
$ devlink region del pci/0000:02:00.0/report.json snapshot 0
$ devlink region new pci/0000:02:00.0/coredump.fcd
$ devlink region dump pci/0000:02:00.0/coredump.fcd snapshot 1
$ devlink region del pci/0000:02:00.0/coredump.fcd snapshot 1
$ devlink region new pci/0000:02:00.0/cdd.log
$ devlink region dump pci/0000:02:00.0/cdd.log snapshot 2
$ devlink region del pci/0000:02:00.0/cdd.log snapshot 2
$ devlink region new pci/0000:02:00.0/eeprom.bin
$ devlink region dump pci/0000:02:00.0/eeprom.bin snapshot 3
$ devlink region del pci/0000:02:00.0/eeprom.bin snapshot 3
$ devlink region new pci/0000:02:00.0/bootcore_trace.bin
$ devlink region dump pci/0000:02:00.0/bootcore_trace.bin snapshot 4
$ devlink region del pci/0000:02:00.0/bootcore_trace.bin snapshot 4
$ devlink region new pci/0000:02:00.0/bootcore_prev_trace.bin
$ devlink region dump pci/0000:02:00.0/bootcore_prev_trace.bin snapshot 5
$ devlink region del pci/0000:02:00.0/bootcore_prev_trace.bin snapshot 5
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
iosm devlink 지원
1-9이 문서는 `GPL-2.0` 라이선스를 따릅니다.
iosm devlink 지원
이 문서는 `iosm` device driver가 구현한 devlink 기능을 설명합니다.
.. SPDX-License-Identifier: GPL-2.0
====================
iosm devlink support
====================
This document describes the devlink features implemented by the ``iosm``
device driver.
Parameter
10-30Parameter
`iosm` driver는 다음 driver 전용 parameter를 구현합니다.
Firmware flashing 전에 전체 NAND erase를 수행할지 선택합니다.
Parameters
==========
The ``iosm`` driver implements the following driver-specific parameters.
.. list-table:: Driver-specific parameters implemented
:widths: 5 5 5 85
* - Name
- Type
- Mode
- Description
* - ``erase_full_flash``
- u8
- runtime
- erase_full_flash parameter is used to check if full erase is required for
the device during firmware flashing.
If set, Full nand erase command will be sent to the device. By default,
only conditional erase support is enabled.
Flash update 개요
31-67Flash update
`iosm` driver는 `devlink-flash` interface를 통한 flash update를 지원합니다. Bootloader image와 기타 modem software image를 포함한 결합 flash image로 장치 flash를 update할 수 있습니다.
Driver는 `DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT`를 사용해 user space application이 요청한 firmware image type을 식별합니다.
BOOT ROM·PSI 단계에서 주입하는 RAM image와 실제 modem software image를 구분합니다.
PSI RAM과 EBL은 장치가 BOOT ROM 단계일 때 주입하는 RAM image입니다. 이 과정이 성공하면 실제 modem firmware image를 장치에 flash합니다.
Modem software image는 여러 file로 구성되며 각 file에는 secure bin file 하나와 Loadmap/Region file이 최소 하나 있습니다. Driver는 flashing에 필요한 data와 적절한 command를 modem 장치로 보냅니다. Region count와 각 region address 같은 data는 devlink param command로 driver에 전달해야 합니다.
Firmware flashing 전에 장치를 완전히 지워야 한다면 user application이 devlink param command로 `erase_full_flash`를 설정해야 합니다. 기본값은 conditional erase입니다.
BOOT ROM에서 RAM image를 순서대로 주입한 뒤 secure bin과 Loadmap/Region을 flash합니다.
Flash Update
============
The ``iosm`` driver implements support for flash update using the
``devlink-flash`` interface.
It supports updating the device flash using a combined flash image which contains
the Bootloader images and other modem software images.
The driver uses DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT to identify type of
firmware image that need to be flashed as requested by user space application.
Supported firmware image types.
.. list-table:: Firmware Image types
:widths: 15 85
* - Name
- Description
* - ``PSI RAM``
- Primary Signed Image
* - ``EBL``
- External Bootloader
* - ``FLS``
- Modem Software Image
PSI RAM and EBL are the RAM images which are injected to the device when the
device is in BOOT ROM stage. Once this is successful, the actual modem firmware
image is flashed to the device. The modem software image contains multiple files
each having one secure bin file and at least one Loadmap/Region file. For flashing
these files, appropriate commands are sent to the modem device along with the
data required for flashing. The data like region count and address of each region
has to be passed to the driver using the devlink param command.
If the device has to be fully erased before firmware flashing, user application
need to set the erase_full_flash parameter using devlink param command.
By default, conditional erase feature is supported.
Flash command
68-94Flash command
Modem이 Boot ROM 단계일 때 devlink flash command로 PSI RAM image를 주입합니다.
$ devlink dev flash pci/0000:02:00.0 file <PSI_RAM_File_name>
Full erase가 필요할 때만 다음 command로 `erase_full_flash` parameter를 설정합니다.
$ devlink dev param set pci/0000:02:00.0 name erase_full_flash value true cmode runtime
Modem이 PSI 단계에 들어간 뒤 EBL을 주입합니다.
$ devlink dev flash pci/0000:02:00.0 file <EBL_File_name>
EBL 주입이 성공하면 실제 firmware flashing을 시작합니다. 각 firmware image에 대해 secure bin file을 먼저 flash하고 Loadmap/Region file을 flash합니다.
$ devlink dev flash pci/0000:02:00.0 file <Secure_bin_file_name>
$ devlink dev flash pci/0000:02:00.0 file <Load_map_file_name>
Flash Commands:
===============
1) When modem is in Boot ROM stage, user can use below command to inject PSI RAM
image using devlink flash command.
$ devlink dev flash pci/0000:02:00.0 file <PSI_RAM_File_name>
2) If user want to do a full erase, below command need to be issued to set the
erase full flash param (To be set only if full erase required).
$ devlink dev param set pci/0000:02:00.0 name erase_full_flash value true cmode runtime
3) Inject EBL after the modem is in PSI stage.
$ devlink dev flash pci/0000:02:00.0 file <EBL_File_name>
4) Once EBL is injected successfully, then the actual firmware flashing takes
place. Below is the sequence of commands used for each of the firmware images.
a) Flash secure bin file.
$ devlink dev flash pci/0000:02:00.0 file <Secure_bin_file_name>
b) Flashing the Loadmap/Region file
$ devlink dev flash pci/0000:02:00.0 file <Load_map_file_name>
Coredump region
95-122Region
`iosm` driver는 coredump log dump를 지원합니다.
Firmware에서 exception이 발생하면 driver가 snapshot을 생성합니다. 다음 region으로 장치 내부 data에 접근합니다.
Exception 요약, RAM dump, modem driver log, EEPROM과 현재·이전 bootloader log를 분리합니다.
Regions
=======
The ``iosm`` driver supports dumping the coredump logs.
In case a firmware encounters an exception, a snapshot will be taken by the
driver. Following regions are accessed for device internal data.
.. list-table:: Regions implemented
:widths: 15 85
* - Name
- Description
* - ``report.json``
- The summary of exception details logged as part of this region.
* - ``coredump.fcd``
- This region contains the details related to the exception occurred in the
device (RAM dump).
* - ``cdd.log``
- This region contains the logs related to the modem CDD driver.
* - ``eeprom.bin``
- This region contains the eeprom logs.
* - ``bootcore_trace.bin``
- This region contains the current instance of bootloader logs.
* - ``bootcore_prev_trace.bin``
- This region contains the previous instance of bootloader logs.
Region command
123-162Region command
다음 command는 region을 조회하고 각 region의 snapshot을 생성·dump·삭제합니다. Snapshot ID 0~5는 원문의 예를 그대로 보존합니다.
$ devlink region show
$ devlink region new pci/0000:02:00.0/report.json
$ devlink region dump pci/0000:02:00.0/report.json snapshot 0
$ devlink region del pci/0000:02:00.0/report.json snapshot 0
$ devlink region new pci/0000:02:00.0/coredump.fcd
$ devlink region dump pci/0000:02:00.0/coredump.fcd snapshot 1
$ devlink region del pci/0000:02:00.0/coredump.fcd snapshot 1
$ devlink region new pci/0000:02:00.0/cdd.log
$ devlink region dump pci/0000:02:00.0/cdd.log snapshot 2
$ devlink region del pci/0000:02:00.0/cdd.log snapshot 2
$ devlink region new pci/0000:02:00.0/eeprom.bin
$ devlink region dump pci/0000:02:00.0/eeprom.bin snapshot 3
$ devlink region del pci/0000:02:00.0/eeprom.bin snapshot 3
$ devlink region new pci/0000:02:00.0/bootcore_trace.bin
$ devlink region dump pci/0000:02:00.0/bootcore_trace.bin snapshot 4
$ devlink region del pci/0000:02:00.0/bootcore_trace.bin snapshot 4
$ devlink region new pci/0000:02:00.0/bootcore_prev_trace.bin
$ devlink region dump pci/0000:02:00.0/bootcore_prev_trace.bin snapshot 5
$ devlink region del pci/0000:02:00.0/bootcore_prev_trace.bin snapshot 5
Region commands
===============
$ devlink region show
$ devlink region new pci/0000:02:00.0/report.json
$ devlink region dump pci/0000:02:00.0/report.json snapshot 0
$ devlink region del pci/0000:02:00.0/report.json snapshot 0
$ devlink region new pci/0000:02:00.0/coredump.fcd
$ devlink region dump pci/0000:02:00.0/coredump.fcd snapshot 1
$ devlink region del pci/0000:02:00.0/coredump.fcd snapshot 1
$ devlink region new pci/0000:02:00.0/cdd.log
$ devlink region dump pci/0000:02:00.0/cdd.log snapshot 2
$ devlink region del pci/0000:02:00.0/cdd.log snapshot 2
$ devlink region new pci/0000:02:00.0/eeprom.bin
$ devlink region dump pci/0000:02:00.0/eeprom.bin snapshot 3
$ devlink region del pci/0000:02:00.0/eeprom.bin snapshot 3
$ devlink region new pci/0000:02:00.0/bootcore_trace.bin
$ devlink region dump pci/0000:02:00.0/bootcore_trace.bin snapshot 4
$ devlink region del pci/0000:02:00.0/bootcore_trace.bin snapshot 4
$ devlink region new pci/0000:02:00.0/bootcore_prev_trace.bin
$ devlink region dump pci/0000:02:00.0/bootcore_prev_trace.bin snapshot 5
$ devlink region del pci/0000:02:00.0/bootcore_prev_trace.bin snapshot 5
요약·해설
iosm.rst:1-162IOSM firmware update는 BOOT ROM에서 PSI RAM과 EBL을 차례로 주입한 뒤 secure bin 및 Loadmap/Region file을 flash하는 단계적 절차입니다. Full NAND erase는 필요한 경우에만 `erase_full_flash`로 요청합니다. Firmware exception이 발생하면 6개 region에서 요약, RAM dump와 여러 log를 snapshot으로 수집할 수 있습니다.
정상 update 경로와 exception 뒤 coredump 수집 경로를 구분합니다.