Bug 34456 - Stage ucode should be after compress
Summary: Stage ucode should be after compress
Status: CLOSED FIXED
Alias: None
Product: Branch p8
Classification: Distributions
Component: make-initrd-ucode (show other bugs)
Version: не указана
Hardware: all Linux
: P3 normal
Assignee: Andrey Cherepanov
QA Contact: qa-p8@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-01-14 14:16 MSK by Andrey Liakhovets
Modified: 2018-03-14 21:38 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Liakhovets 2018-01-14 14:16:06 MSK
Branch P8.
make-initrd-ucode-0.8.15-alt1.M80P.2
firmware-intel-ucode-3-alt2.20180108
iucode_tool-2.2-alt0.M80P.1
kernel-image-std-def-4.9.75-alt0.M80P.1
kernel-image-un-def-4.14.12-alt0.M80P.1

При создании initrd для текущих ядер un-def и std-def на компьютерах с CPU Intel стадии ucode и compress могут выполняться в произвольном порядке --
насколько мне удалось понять.
В случае, если сначала выполнено ucode, а потом compress (как произошло у меня), early microcode update не выполняется.

Если приложить такой патч:

--- /usr/share/make-initrd/features/ucode/rules.mk.orig 2017-12-04 11:56:16.000000000 +0300
+++ /usr/share/make-initrd/features/ucode/rules.mk      2018-01-14 13:30:29.495788524 +0300
@@ -1,4 +1,4 @@
-ucode:
+ucode: compress
        @echo "Adding CPU microcode ..."
        @$(ADD_UCODE)
        @if [ -s "$(WORKDIR)/ucode.cpio" ]; then \

то микрокод начинает добавляться всегда после сжатия initrd, и при загрузке нормально отрабатывает early microcode update (видно по первой строке dmesg).

(Вопрос только, как быть, если нужен несжатый initrd с early microcode.)
Comment 1 Lenar Shakirov 2018-02-26 21:33:14 MSK
2legion@: Подскажи, пожалуйста, что нибудь по этой баге
Comment 2 Alexey Gladkov 2018-02-27 12:52:53 MSK
Хоть я ни разу такого не видел, да такое возможно т.к. compress и ucode создают зависимость у install:

<===========================
install:
	@echo INSTALL

compress:
	@echo COMPRESS

ucode:
	@echo UCODE

install: ucode
install: compress
===========================>

Тогда получится:

$ make install -j100 
UCODE
COMPRESS
INSTALL

Наверно, нужно добавить что-то типа:

<===========================
install:
	@echo INSTALL

compress:
	@echo COMPRESS

ucode:
	@echo UCODE

define stage_template =
install-stage-$(1): $(if $(filter-out 0,$(1)),install-stage-$(shell echo $$(($(1)-1))))
install: install-stage-$(1)
endef

$(foreach num,$(shell seq 0 99),$(eval $(call stage_template,$(num))))

install-stage-80: ucode
install-stage-70: compress
===========================>

$ make install -j100
COMPRESS
UCODE
INSTALL
Comment 3 Alexey Gladkov 2018-02-27 16:39:18 MSK
Нет, так плохо. Можно проще.
Comment 5 Lenar Shakirov 2018-02-27 17:39:00 MSK
legion@, спасибо большое!!

Andrey, проверьте, пожалуйста: http://git.altlinux.org/tasks/201055/
Comment 6 Repository Robot 2018-02-28 13:04:53 MSK
make-initrd-0.8.15-alt1.M80P.3 -> p8:

Tue Feb 27 2018 Lenar Shakirov <snejok@altlinux.ru> 0.8.15-alt1.M80P.3
- stage ucode after compress (closes: #34456)
Comment 7 Andrey Liakhovets 2018-03-14 21:38:33 MSK
(In reply to comment #5)
Спасибо, всё работает.