Linux Kernel 7.3: виправлено проблему з SSD Samsung 990 PRO

Linux Kernel 7.3 отримав важливе оновлення, яке вирішує проблему сумісності з серією твердотільних накопичувачів Samsung 990 PRO та 990 EVO Plus. Виправлення стосується функції «Immediate Readiness» (Миттєва готовність), яка могла спричиняти затримки до 7 мілісекунд під час скидання пристрою.
Що таке «Immediate Readiness»?
«Immediate Readiness» — це не ексклюзивна технологія Samsung, а функція, запроваджена стандартом PCIe 4.0. Вона вказує на те, що пристрій готовий до конфігураційного доступу системи одразу після скидання (reset). Це дозволяє системі пропустити етап очікування, прискорюючи процес відновлення працездатності накопичувача.
Суть проблеми
Згідно з описом виправлень у ядрі Linux 7.3, виникла невідповідність між тим, що декларують пристрої, та їхньою фактичною поведінкою після оновлення прошивки. Зокрема:
- Samsung 990 PRO: З версіями прошивки (наприклад, 1B2QJXD7) накопичувач декларував підтримку «Immediate Readiness». Однак після скидання (Function Level Reset – FLR) конфігураційне читання даних могло тривати до 7 мілісекунд, не повертаючи коректної інформації.
- Samsung 990 PRO (прошивка 8B2QJXD7): Ця версія прошивки вже виправлена і коректно реагує одразу після скидання.
- Samsung 990 EVO Plus (прошивка 2B2QKXG7): Ця модель також мала схожі проблеми.
Проблема полягала в тому, що Linux, довіряючи прапорцю «Immediate Readiness», не чекав завершення повного відновлення пристрою після FLR. Це призводило до збоїв у конфігураційному доступі.
Рішення в Linux Kernel 7.3
Виправлення, інтегроване в Linux Kernel 7.3, полягає в тому, що ядро тепер не покладається беззастережно на декларовані пристроєм можливості «Immediate Readiness». Після процедури Function Level Reset (FLR) ядро спочатку робить паузу, перш ніж розпочати конфігураційне відновлення PCI. Це запобігає помилкам, що виникали через невідповідність між заявленими та фактичними можливостями накопичувача.
Цей підхід також має перевагу в тому, що він не потребує ідентифікації конкретних версій прошивки. Система просто чекає, забезпечуючи стабільність роботи, що особливо важливо для таких сценаріїв, як віртуалізація (VFIO passthrough), де стабільність доступу до пристроїв є критично важливою.
Деталі в Git:
Samsung 990 PRO [144d:a80c] декларує функцію «Immediate Ready», тому pcie_flr() не чекає після FLR, але диск повертає ~0 протягом до 7 мілісекунд.
З моменту коміту 10baa9b4df40 («PCI: відкидання непотрібних повторних спроб під час відновлення BAR») конфігураційне відновлення після FLR втрачається, що порушує функцію VFIO passthrough диска. Прошивка 8B2QJXD7 реагує одразу після FLR, але старіші версії прошивки (наприклад, 1B2QJXD7) — ні, і версія прошивки тут не вказана.
[bhelgaas: Samsung 990 EVO Plus [144d:a80d] з прошивкою 2B2QKXG7, схоже, має ту ж проблему.]
Таким чином, оновлення Linux Kernel 7.3 робить роботу з сучасними SSD-накопичувачами Samsung більш стабільною та надійною, усуваючи потенційні проблеми з продуктивністю та сумісністю.
Джерело: https://www.ithome.com/1/015/324.htm