Bug 51637

Summary: При выполнении команды регистра контроллера NVMe в двоичном формате ошибка get-property: No such file or directory
Product: Sisyphus Reporter: Pivkin Denis <pivkindyu>
Component: nvmeAssignee: Konstantin A Lepikhov (L.A. Kostis) <lakostis>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: lakostis, shaba
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
подтверждение работы с включенным iomem=relaxed none

Description Pivkin Denis 2024-10-04 17:03:04 MSK
# rpm -qa | grep nvme
libblockdev-nvme-3.2.0-alt1.x86_64
libnvme1-1.10-alt1.x86_64
nvme-2.10.2-alt1.x86_64

Стенд обновленный до Sisyphus:
Alt Workstation K 10.3 x86_64

Шаги воспроизведения:
Выполнить команду:
# nvme show-regs /dev/nvme0n1

Результат:
get-property: No such file or directory

Ожидаемый результат:
cap     : 2030a2030fff
version : 10400
cc      : 460001
csts    : 1
nssr    : 0
crto    : 0
intms   : 0
intmc   : 0
aqa     : 1f001f
asq     : ffffe000
acq     : fffff000
cmbloc  : 0
cmbsz   : 0
bpinfo  : 1
bprsel  : 0
bpmbl   : 0
cmbmsc  : 0
cmbsts  : 0
pmrcap  : 0
pmrctl  : 0
pmrsts  : 0
pmrebs  : 0
pmrswtp : 0
pmrmscl : 0
pmrmscu : 0
Comment 1 Konstantin A Lepikhov (L.A. Kostis) 2024-10-05 10:38:41 MSK
Это известная проблема, и она связана с конфигурацией ядра, точнее с опцией CONFIG_IO_STRICT_DEVMEM

В ядрах ALTLinux эта опция включена, поэтому чтобы get-regs команда работала, нужно загрузить систему с параметром iomem=relaxed

см. баги в апстриме:

https://github.com/linux-nvme/nvme-cli/issues/1846
https://github.com/linux-nvme/nvme-cli/issues/1941
Comment 2 Pivkin Denis 2024-10-07 17:19:43 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #1)
> Это известная проблема, и она связана с конфигурацией ядра, точнее с опцией
> CONFIG_IO_STRICT_DEVMEM
> 
> В ядрах ALTLinux эта опция включена, поэтому чтобы get-regs команда
> работала, нужно загрузить систему с параметром iomem=relaxed
> 
> см. баги в апстриме:
> 
> https://github.com/linux-nvme/nvme-cli/issues/1846
> https://github.com/linux-nvme/nvme-cli/issues/1941

Загрузить систему с параметром ядра iomem=relaxed - не помогло
Опции ядра:
/boot/config-6.6.52-un-def-alt0.p11.1:#CONFIG_IO_STRICT_DEVMEM is not set
/boot/config-6.6.52-un-def-alt0.p11.1:CONFIG_STRICT_DEVMEM=y
Comment 3 Konstantin A Lepikhov (L.A. Kostis) 2024-10-07 22:03:19 MSK
(In reply to Pivkin Denis from comment #2)
> (Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #1)
> > Это известная проблема, и она связана с конфигурацией ядра, точнее с опцией
> > CONFIG_IO_STRICT_DEVMEM
> > 
> > В ядрах ALTLinux эта опция включена, поэтому чтобы get-regs команда
> > работала, нужно загрузить систему с параметром iomem=relaxed
> > 
> > см. баги в апстриме:
> > 
> > https://github.com/linux-nvme/nvme-cli/issues/1846
> > https://github.com/linux-nvme/nvme-cli/issues/1941
> 
> Загрузить систему с параметром ядра iomem=relaxed - не помогло
> Опции ядра:
> /boot/config-6.6.52-un-def-alt0.p11.1:#CONFIG_IO_STRICT_DEVMEM is not set
> /boot/config-6.6.52-un-def-alt0.p11.1:CONFIG_STRICT_DEVMEM=y

ничего не понял, CONFIG_STRICT_DEVMEM включен или нет?
Comment 4 Pivkin Denis 2024-10-08 09:03:00 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #3)

> ничего не понял, CONFIG_STRICT_DEVMEM включен или нет?

CONFIG_IO_STRICT_DEVMEM - закомментирован
CONFIG_STRICT_DEVMEM - включен
Comment 5 Pivkin Denis 2024-10-08 09:23:20 MSK
Ошибку переоткрываю, т.к загрузить систему с параметром ядра iomem=relaxed - не помогло решить ошибку
Comment 6 Konstantin A Lepikhov (L.A. Kostis) 2024-10-09 14:26:20 MSK
(In reply to Pivkin Denis from comment #5)
> Ошибку переоткрываю, т.к загрузить систему с параметром ядра iomem=relaxed -
> не помогло решить ошибку

я проверил но своем ядре, все работает как нужно:

- у меня включен CONFIG_IO_STRICT_DEVMEM и CONFIG_STRICT_DEVMEM, поэтому я перегрузился и передал iomem=relaxed как параметр ядра. После этого команда show-regs заработала (см. снимок экрана).

Можете запустить команду nvme через strace -Ffs1024 и приложить вывод?
Comment 7 Konstantin A Lepikhov (L.A. Kostis) 2024-10-09 14:33:20 MSK
Created attachment 16986 [details]
подтверждение работы с включенным iomem=relaxed
Comment 8 Konstantin A Lepikhov (L.A. Kostis) 2024-10-09 14:39:51 MSK
(In reply to Pivkin Denis from comment #2)
> (Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #1)
> > Это известная проблема, и она связана с конфигурацией ядра, точнее с опцией
> > CONFIG_IO_STRICT_DEVMEM
> > 
> > В ядрах ALTLinux эта опция включена, поэтому чтобы get-regs команда
> > работала, нужно загрузить систему с параметром iomem=relaxed
> > 
> > см. баги в апстриме:
> > 
> > https://github.com/linux-nvme/nvme-cli/issues/1846
> > https://github.com/linux-nvme/nvme-cli/issues/1941
> 
> Загрузить систему с параметром ядра iomem=relaxed - не помогло
> Опции ядра:
> /boot/config-6.6.52-un-def-alt0.p11.1:#CONFIG_IO_STRICT_DEVMEM is not set
> /boot/config-6.6.52-un-def-alt0.p11.1:CONFIG_STRICT_DEVMEM=y

кстати, ядро у вас из p11, а не сизифа.
Comment 9 Pivkin Denis 2024-10-09 14:53:14 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #7)
> Создано вложение 16986 [details] [подробности]
> подтверждение работы с включенным iomem=relaxed

Так без этой опции будет работать # nvme show-regs /dev/nvme0
А ошибка с командой # nvme show-regs /dev/nvme0n1
Comment 10 Konstantin A Lepikhov (L.A. Kostis) 2024-10-09 15:13:54 MSK
(In reply to Pivkin Denis from comment #9)
> (Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #7)
> > Создано вложение 16986 [details] [подробности]
> > подтверждение работы с включенным iomem=relaxed
> 
> Так без этой опции будет работать # nvme show-regs /dev/nvme0
> А ошибка с командой # nvme show-regs /dev/nvme0n1

хмм, тогда какую проблему мы решаем? /dev/nvme0n1 это неправильный синтаксис,  т.к. DEVICE это nvmeN
Comment 11 Pivkin Denis 2024-10-09 15:39:14 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #10)
> (In reply to Pivkin Denis from comment #9)
> > (Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #7)
> > > Создано вложение 16986 [details] [подробности] [details] [подробности]
> > > подтверждение работы с включенным iomem=relaxed

> хмм, тогда какую проблему мы решаем? /dev/nvme0n1 это неправильный
> синтаксис,  т.к. DEVICE это nvmeN

На версии nvme-2.5-alt1.x86_64 таких проблем не было и при выводе
# nvme list пути диска
/dev/nvme0n1 и /dev/ng0n1 и команда отрабатывала # nvme show-regs /dev/nvme0n1 без ошибки

На версии nvme-2.10.2-alt1.x86_64
При выполнении команды # nvme list
В dmesg сообщение:
block nvme0n1: No UUID available providing old NGUID

Скорее всего ошибка возникает как раз из-за этих сообщений

Если достаточно такого пути диска /dev/nvme0, тогда вопросов у меня нет
Comment 12 Konstantin A Lepikhov (L.A. Kostis) 2024-10-09 16:28:54 MSK
(In reply to Pivkin Denis from comment #11)
> (Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #10)
> > (In reply to Pivkin Denis from comment #9)
> > > (Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #7)
> > > > Создано вложение 16986 [details] [подробности] [details] [подробности]
> > > > подтверждение работы с включенным iomem=relaxed
> 
> > хмм, тогда какую проблему мы решаем? /dev/nvme0n1 это неправильный
> > синтаксис,  т.к. DEVICE это nvmeN
> 
> На версии nvme-2.5-alt1.x86_64 таких проблем не было и при выводе
> # nvme list пути диска
> /dev/nvme0n1 и /dev/ng0n1 и команда отрабатывала # nvme show-regs
> /dev/nvme0n1 без ошибки
> 
> На версии nvme-2.10.2-alt1.x86_64
> При выполнении команды # nvme list
> В dmesg сообщение:
> block nvme0n1: No UUID available providing old NGUID
> 
> Скорее всего ошибка возникает как раз из-за этих сообщений
> 
> Если достаточно такого пути диска /dev/nvme0, тогда вопросов у меня нет

да, начиная с версии 2.9 namespace указывать не нужно, достаточно устройства:
https://github.com/linux-nvme/nvme-cli/commit/a31081a3fa1476ee4e74ec928f51a2879f533963