Что делает pci=nommconf?

Ситуация

Lenovo Thinkpad X1 Carbon под управлением Arch Linux обновил свои пакеты 15 декабря с 22 октября. После перезагрузки перестали работать светодиодные индикаторы клавиш Mute Mic и Mute Speakers.

Расследование

Я начал свое расследование с простого поиска таких фраз, как «Приглушение светодиода не работает», но не смог найти ничего нового. Я знал, что это должно было быть недавним, так как симптомы появились сразу после обновления.

Другие кнопки работали нормально, Caps Lock, Fn Lock, но не работали только кнопки отключения звука.

Поиск ответственного пакета

В /var/log/pacman.log/я проверил пакеты, которые были обновлены. Это было много, но ничего, что могло бы помешать моим кнопкам Thinkpad, за исключением обновления PulseAudio, ALSA и ядра Linux.

Я решил сначала проверить ядро. Чтобы понизить ядро ​​до предыдущей версии, я выполнил

~ # pacman -U /var/cache/pacman/linux-4.18.16.arch1-1-x86_64.pkg.tar.xz

После перезагрузки фары снова заработали. Теперь я точно знал, что проблема возникла из-за обновления ядра Linux.

Поиск ответственной версии ядра

Теперь я знаю, что ядро ​​4.18.16 работает, а ядро ​​4.19.8 — нет!

Из архива пакетов Arch Linux(https://archive.archlinux.org/)Я загрузил версии с 4.19 по 4.19.8, зная, что ядро ​​сломалось где-то посередине.

Так как у меня была версия 4.18.16, я обновился до 4.19.4. Версия 19.4 работала так же, как и версия 18.16, поэтому ошибка появилась после версии 19.4, но до версии 19.8

.

Следующим было 19,6. Эта версия также работает нормально, так что теперь я знаю, что ошибка появилась в 19.7. После еще одного обновления, конечно же, 4.19.7 стал первым выпуском, в котором произошла эта "регрессия" (, как они ее называют ).

Поиск ответственного коммита

Благодаря открытому исходному коду Linux,вы можете просмотреть журнал изменений каждого выпуска Linux наhttps://kernel.org

Вот журнал изменений для версии 4.19.7:https://cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.9

Внимание, он очень большой! Чтобы найти какое-то указание на то, где возникла проблема, я решил добавить в файл несколько ключевых слов, нажав CTRL+F. Сначала я попробовал «водить», но не было коммитов, которые выглядели бы многообещающе. Потом я искал "mute", но опять безрезультатно.

После нескольких других ключевых слов я попробовал «углерод» и нашел коммит с именем:

dcd51305cd41e77bf775992e6d6cee52f83426b7
ALSA: hda/realtek - fix the pop noise on headphone for lenovo laptops

Моей первой мыслью было «О, отлично, они это исправили!», но, поскольку это был также единственный коммит, в котором упоминалась Lenovo, и это был журнал изменений регрессивного ядра, мне лучше всего было провести расследование.

К счастью, этот коммит содержал BugLink на launchpad.net:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1805079

Я подумал, что там я могу спросить разработчиков, есть ли у них проблемы со светодиодами. Но мне даже не нужно было спрашивать, так как другой пользователь уже описал мою проблему:(Ссылка)

I'm on Lenovo ThinkPad X1 Carbon 6th, model 20KH006JGE. 
After upgrading to Linux 4.19.7, the audio mute and 
microphone mute LEDs (on F1 and F4 keys) stopped working.

Создатель коммита уже ответил и даже предложил решение! Отличный материал, но что теперь? Я не хочу компилировать собственное ядро... Фу! Мне нужно знать, когда это исправление будет реализовано.

Поиск фиксирующего исправления

К счастью, все ядро ​​Linux находится на GitHub!https://github.com/torvalds/linux

Я погрузился в историю коммитов, нажал CTRL+F для "LED" и, конечно же, на странице 4 я нашел исправляющий коммит!(ссылка)

6ba189c5c1a4bda70dc1e4826c58b0246068bb8d
ALSA: hda/realtek - Fix the mute LED regresion on Lenovo X1 Carbon

Круто, кажется, этот коммит уже опубликован и проверен, так где же он сейчас? Когда выйдет исправление?

Узнать, когда будет выпущено исправление

Таким образом, выпуски Linux поддерживаются Грегом Кроа -Хартманом. Возможно, вы видели его имя в списке изменений, который мы рассматривали ранее. Каждые несколько дней он собирает полезные коммиты из репозитория и объединяет их в новую стабильную версию.

Вы можете следить за ходом и обсуждением цикла выпуска в списке рассылки stable на kernel.org. Если вы не хотите подписываться, а просто читаете, вы можете найти архив прямо здесь:https://www.spinics.net/lists/stable/

Там я просто еще раз вытащил свой верный CTRL+F и поискал «LED», и, черт возьми, да, конечно же :[PATCH 4.19 140/142] был тем коммитом, который я искал.

Грег включил коммит, который мы хотели, и в настоящее время проверяет его выпуск. Осталось всего пару дней, прежде чем я закрою обсуждение, за которым последует выпуск 4.19.10.

Наконец :Решение

Чтобы решить эту проблему, понизьте версию ядра до версии не выше 4.19.6.

Вы также можете подождать пару дней, так как версия 4.19.10 исправит регрессию, а ее релиз ожидается 16 или 17 декабря.

Я надеюсь, что мое путешествие было немного интересным для чтения и поможет вам решить ваши проблемы в будущем. Я узнал о журналах изменений, коммитах, репозиториях, релизах, списках рассылки и многом другом, так что просто не мог не поделиться.

С уважением и удачи!

0
10.12.2020, 09:05
1 ответ

Это не функция, это флаг, который отключает определенные функции в ядре. MMCONFIG — это отображаемые в память регистры конфигурации PCI, также известные как расширенная конфигурация PCIe. Если вы не хотите, чтобы ядро ​​считывало эти регистры, отключите его. Некоторые устройства в прошлом имели проблемы при чтении регистров.

Некоторая важная информация:https://lwn.net/Articles/263288/

1
18.03.2021, 22:43

Теги

Похожие вопросы