Compare commits

..

3 Commits

4 changed files with 321 additions and 393 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/linux-firmware-20230824.tar.xz SOURCES/linux-firmware-20240610.tar.xz

View File

@ -1 +1 @@
074c0923c1a85e1ea5843bf77d5e88d2da87522b SOURCES/linux-firmware-20230824.tar.xz f91bfe3caf40b89bd4fc81364f1b752653c6130b SOURCES/linux-firmware-20240610.tar.xz

View File

@ -1,374 +0,0 @@
#!/usr/bin/python3
# SPDX-License-Identifier: MIT License
# Copyright (C) 2020 Advanced Micro Devices, Inc.
"""
Parse an amd-ucode container file and print the family, model, stepping number,
and patch level for each patch in the file. The --extract option will dump the
raw microcode patches to a provided directory.
"""
import argparse
import sys
import os
from collections import namedtuple
from collections import OrderedDict
EQ_TABLE_ENTRY_SIZE = 16
EQ_TABLE_LEN_OFFSET = 8
EQ_TABLE_OFFSET = 12
EQ_TABLE_TYPE = 0
PATCH_TYPE = 1
VERBOSE_DEBUG = 2
FMS = namedtuple("FMS", ("family", "model", "stepping"))
EquivTableEntry = namedtuple("EquivTableEntry", ("cpuid", "equiv_id", "data", "offset"))
PatchEntry = namedtuple("PatchEntry", ("file", "offset", "size", "equiv_id", "level"))
def read_int32(ucode_file):
""" Read four bytes of binary data and return as a 32 bit int """
return int.from_bytes(ucode_file.read(4), 'little')
def read_int16(ucode_file):
""" Read two bytes of binary data and return as a 16 bit int """
return int.from_bytes(ucode_file.read(2), 'little')
def read_int8(ucode_file):
""" Read one byte of binary data and return as a 8 bit int """
return int.from_bytes(ucode_file.read(1), 'little')
def cpuid2fms(cpu_id):
family = (cpu_id >> 8) & 0xf
family += (cpu_id >> 20) & 0xff
model = (cpu_id >> 4) & 0xf
model |= (cpu_id >> 12) & 0xf0
stepping = cpu_id & 0xf
return FMS(family, model, stepping)
def fms2str(fms):
return "Family=%#04x Model=%#04x Stepping=%#04x" % \
(fms.family, fms.model, fms.stepping)
def parse_equiv_table(opts, ucode_file, start_offset, eq_table_len):
"""
Read equivalence table and return a list of the equivalence ids contained
"""
table = {}
raw_table = []
# For sanity check only
cpuid_map = {}
table_item = start_offset + EQ_TABLE_OFFSET
table_stop = start_offset + EQ_TABLE_OFFSET + eq_table_len
while table_item < table_stop:
ucode_file.seek(table_item, 0)
data = ucode_file.read(EQ_TABLE_ENTRY_SIZE)
ucode_file.seek(table_item, 0)
cpu_id = read_int32(ucode_file)
if opts.verbose >= VERBOSE_DEBUG:
errata_mask = read_int32(ucode_file)
errata_compare = read_int32(ucode_file)
else:
# Skip errata mask and compare fields
ucode_file.seek(8, 1)
equiv_id = read_int16(ucode_file)
if opts.verbose >= VERBOSE_DEBUG:
res = read_int16(ucode_file)
if equiv_id != 0:
if equiv_id not in table:
table[equiv_id] = OrderedDict()
if cpu_id in table[equiv_id]:
print("WARNING: Duplicate CPUID %#010x (%s) in the equivalence table for equiv_id %#06x " %
(fms2str(cpuid2fms(cpu_id)), equiv_id))
if cpu_id in cpuid_map:
if equiv_id != cpuid_map[cpu_id]:
print("WARNING: Different equiv_id's (%#06x and %#06x) are present in the equivalence table for CPUID %#010x (%s)" %
(equiv_id, cpuid_map[cpu_id], cpu_id,
fms2str(cpuid2fms(cpu_id))))
else:
cpuid_map[cpu_id] = equiv_id
entry = EquivTableEntry(cpu_id, equiv_id, data, table_item)
table[equiv_id][cpu_id] = entry
raw_table.append(entry)
if opts.verbose >= VERBOSE_DEBUG:
print(" [equiv entry@%#010x: cpuid %#010x, equiv id %#06x, errata mask %#010x, errata compare %#010x, res %#06x]" %
(table_item, cpu_id, equiv_id, errata_mask, errata_compare, res))
table_item += EQ_TABLE_ENTRY_SIZE
return (table, raw_table)
def extract_patch(opts, out_dir, ucode_file, patch, equiv_table=None):
"""
Extract raw microcode patch starting at patch_start to the directory
provided by the -o option or the current directory if not specified.
Directory will be created if it doesn't already exist.
"""
cwd = os.getcwd()
if not os.path.exists(out_dir):
os.makedirs(out_dir)
os.chdir(out_dir)
if equiv_table is None:
# Raw patch
out_file_name = "mc_patch_0%x.bin" % patch.level
else:
out_file_name = "mc_equivid_%#06x" % patch.equiv_id
for cpuid in equiv_table[patch.equiv_id]:
out_file_name += '_cpuid_%#010x' % cpuid
out_file_name += "_patch_%#010x.bin" % patch.level
out_path = "%s/%s" % (os.getcwd(), out_file_name)
out_file = open(out_file_name, "wb")
os.chdir(cwd)
if equiv_table is not None:
cpuids = equiv_table[patch.equiv_id].values() if patch.equiv_id in equiv_table else []
else:
cpuids = None
write_mc(opts, out_file, [patch], ucode_file, cpuids)
out_file.close()
print(" Patch extracted to %s" % out_path)
def merge_mc(opts, out_path, table, patches):
# Do some sanity checks, ut only warn about the issues
equivid_map = {}
cpuid_map = {}
for entry in table:
if entry.equiv_id not in equivid_map:
equivid_map[entry.equiv_id] = dict()
if entry.cpuid in equivid_map[entry.equiv_id]:
print("WARNING: Duplicate CPUID %#010x (%s) in the equivalence table for equiv_id %#06x " %
(fms2str(cpuid2fms(entry.cpuid)), entry.equiv_id))
else:
equivid_map[entry.equiv_id][entry.cpuid] = entry
if entry.cpuid in cpuid_map:
if entry.equiv_id != cpuid_map[entry.cpuid]:
print("WARNING: Different equiv_id's (%#06x and %#06x) are present in the equivalence table for CPUID %#010x (%s)" %
(entry.equiv_id, cpuid_map[entry.cpuid], entry.cpuid,
fms2str(cpuid2fms(entry.cpuid))))
else:
cpuid_map[entry.cpuid] = entry.equiv_id
with open(out_path, "wb") as out_file:
write_mc(opts, out_file, patches, equiv_table=table)
print("Microcode written to %s" % out_path)
def write_mc(opts, out_file, patches, ucode_file=None, equiv_table=None):
"""
Writes microcode data to the specified file.
"""
if equiv_table is not None:
# Container header
out_file.write(b'DMA\x00')
# Equivalence table header
out_file.write(EQ_TABLE_TYPE.to_bytes(4, 'little'))
table_size = EQ_TABLE_ENTRY_SIZE * (len(equiv_table) + 1)
out_file.write(table_size.to_bytes(4, 'little'))
# Equivalence table
for cpuid in equiv_table:
out_file.write(cpuid.data)
out_file.write(b'\0' * EQ_TABLE_ENTRY_SIZE)
for patch in patches:
# Patch header
if equiv_table is not None:
out_file.write(PATCH_TYPE.to_bytes(4, 'little'))
out_file.write(patch.size.to_bytes(4, 'little'))
if ucode_file is None:
in_file = open(patch.file, "rb")
else:
in_file = ucode_file
in_file.seek(patch.offset, 0)
out_file.write(in_file.read(patch.size))
if ucode_file is None:
in_file.close()
def parse_ucode_file(opts, path, start_offset):
"""
Scan through microcode container file printing the microcode patch level
for each model contained in the file.
"""
table = None
patches = []
with open(path, "rb") as ucode_file:
print("Microcode patches in %s%s:" %
(path, "+%#x" % start_offset if start_offset else ""))
# Seek to end of file to determine file size
ucode_file.seek(0, 2)
end_of_file = ucode_file.tell()
# Check magic number
ucode_file.seek(start_offset, 0)
if ucode_file.read(4) != b'DMA\x00':
print("ERROR: Missing magic number at beginning of container")
return (None, None, None)
# Check the equivalence table type
eq_table_type = read_int32(ucode_file)
if eq_table_type != EQ_TABLE_TYPE:
print("ERROR: Invalid equivalence table identifier: %#010x" %
eq_table_type)
return (None, None, None)
# Read the equivalence table length
eq_table_len = read_int32(ucode_file)
ids, table = parse_equiv_table(opts, ucode_file, start_offset, eq_table_len)
cursor = start_offset + EQ_TABLE_OFFSET + eq_table_len
while cursor < end_of_file:
# Seek to the start of the patch information
ucode_file.seek(cursor, 0)
patch_start = cursor + 8
patch_type_bytes = ucode_file.read(4)
# Beginning of a new container
if patch_type_bytes == b'DMA\x00':
return (cursor, table, patches)
patch_type = int.from_bytes(patch_type_bytes, 'little')
if patch_type != PATCH_TYPE:
print("Invalid patch identifier: %#010x" % (patch_type))
return (None, table, patches)
patch_length = read_int32(ucode_file)
if opts.verbose:
data_code = read_int32(ucode_file)
else:
ucode_file.seek(4, 1)
ucode_level = read_int32(ucode_file)
if opts.verbose >= VERBOSE_DEBUG:
mc_patch_data_id = read_int16(ucode_file)
mc_patch_data_len = read_int8(ucode_file)
init_flag = read_int8(ucode_file)
mc_patch_data_checksum = read_int32(ucode_file)
nb_dev_id = read_int32(ucode_file)
sb_dev_id = read_int32(ucode_file)
else:
ucode_file.seek(16, 1)
equiv_id = read_int16(ucode_file)
if opts.verbose >= VERBOSE_DEBUG:
nb_rev_id = read_int8(ucode_file)
sb_rev_id = read_int8(ucode_file)
bios_api_rev = read_int8(ucode_file)
reserved1 = [read_int8(ucode_file) for _ in range(3)]
match_reg = [read_int32(ucode_file) for _ in range(8)]
if opts.verbose:
add_info = " Start=%u bytes Date=%04x-%02x-%02x Equiv_id=%#06x" % \
(patch_start, data_code & 0xffff, data_code >> 24,
(data_code >> 16) & 0xff, equiv_id)
else:
add_info = ""
if equiv_id not in ids:
print("Patch equivalence id not present in equivalence table (%#06x)"
% (equiv_id))
print(" Family=???? Model=???? Stepping=????: Patch=%#010x Length=%u bytes%s"
% (ucode_level, patch_length, add_info))
# The cpu_id is the equivalent to CPUID_Fn00000001_EAX
for cpuid in ids[equiv_id]:
print(" %s: Patch=%#010x Length=%u bytes%s"
% (fms2str(cpuid2fms(cpuid)), ucode_level, patch_length, add_info))
if opts.verbose >= VERBOSE_DEBUG:
print(" [data_code=%#010x, mc_patch_data_id=%#06x, mc_patch_data_len=%#04x, init_flag=%#04x, mc_patch_data_checksum=%#010x]" %
(data_code, mc_patch_data_id, mc_patch_data_len, init_flag, mc_patch_data_checksum))
print(" [nb_dev_id=%#010x, sb_dev_id=%#010x, nb_rev_id=%#04x, sb_rev_id=%#04x, bios_api_rev=%#04x, reserved=[%#04x, %#04x, %#04x]]" %
(nb_dev_id, sb_dev_id, nb_rev_id, sb_rev_id, bios_api_rev, reserved1[0], reserved1[1], reserved1[2]))
patch = PatchEntry(path, patch_start, patch_length, equiv_id, ucode_level)
patches.append(patch)
if opts.extract:
extract_patch(opts, opts.extract, ucode_file, patch)
if opts.split:
extract_patch(opts, opts.split, ucode_file, patch, ids)
cursor = cursor + patch_length + 8
return (None, table, patches)
def parse_ucode_files(opts):
all_tables = []
all_patches = []
for f in opts.container_file:
offset = 0
while offset is not None:
offset, table, patches = parse_ucode_file(opts, f, offset)
if opts.merge:
if table is not None:
all_tables += table
if patches is not None:
all_patches += patches
if opts.merge:
merge_mc(opts, opts.merge, all_tables, all_patches)
def parse_options():
""" Parse options """
parser = argparse.ArgumentParser(description="Print information about an amd-ucode container")
parser.add_argument("container_file", nargs='+')
parser.add_argument("-e", "--extract",
help="Dump each patch in container to the specified directory")
parser.add_argument("-s", "--split",
help="Split out each patch in a separate container to the specified directory")
parser.add_argument("-m", "--merge",
help="Write a merged container to the specified file")
parser.add_argument("-v", "--verbose", action="count", default=0,
help="Be verbose about the information in the container file")
opts = parser.parse_args()
for f in opts.container_file:
if not os.path.isfile(f):
parser.print_help()
print()
print("ERROR: Container file \"%s\" does not exist" % f)
sys.exit()
return opts
def main():
""" main """
opts = parse_options()
parse_ucode_files(opts)
if __name__ == "__main__":
main()

View File

@ -1,12 +1,12 @@
%global checkout 0e048b06 %global checkout 90df68d2
%global firmware_release 119 %global firmware_release 122
%global _firmwarepath /usr/lib/firmware %global _firmwarepath /usr/lib/firmware
%define _binaries_in_noarch_packages_terminate_build 0 %define _binaries_in_noarch_packages_terminate_build 0
Name: linux-firmware Name: linux-firmware
Version: 20230824 Version: 20240610
Release: %{firmware_release}.git%{checkout}%{?dist} Release: %{firmware_release}.git%{checkout}%{?dist}
Summary: Firmware files used by the Linux kernel Summary: Firmware files used by the Linux kernel
License: GPL+ and GPLv2+ and MIT and Redistributable, no modification permitted License: GPL+ and GPLv2+ and MIT and Redistributable, no modification permitted
@ -18,7 +18,6 @@ BuildArch: noarch
# This is still causing problems in RHEL9 (see bug 1959913) and because of that we should keep out of RHEL8 too # This is still causing problems in RHEL9 (see bug 1959913) and because of that we should keep out of RHEL8 too
# 2) git archive --worktree-attributes --format=tar --prefix=linux-firmware-%%{checkout}/ %%{checkout} | xz > linux-firmware-%%{version}.tar.xz # 2) git archive --worktree-attributes --format=tar --prefix=linux-firmware-%%{checkout}/ %%{checkout} | xz > linux-firmware-%%{version}.tar.xz
Source0: %{name}-%{version}.tar.xz Source0: %{name}-%{version}.tar.xz
Source1: amd_ucode_info.py
Provides: kernel-firmware = %{version} xorg-x11-drv-ati-firmware = 7.0 Provides: kernel-firmware = %{version} xorg-x11-drv-ati-firmware = 7.0
Obsoletes: kernel-firmware < %{version} xorg-x11-drv-ati-firmware < 6.13.0-0.22 Obsoletes: kernel-firmware < %{version} xorg-x11-drv-ati-firmware < 6.13.0-0.22
@ -42,7 +41,6 @@ Conflicts: microcode_ctl < 2.1-0
Obsoletes: ivtv-firmware < 2:20080701-28 Obsoletes: ivtv-firmware < 2:20080701-28
BuildRequires: git make BuildRequires: git make
BuildRequires: python3
%description %description
This package includes firmware files required for some devices to This package includes firmware files required for some devices to
@ -260,14 +258,6 @@ Firmware for Marvell Libertas SD 8787 Network Adapter
%prep %prep
%setup -q -n linux-firmware-%{checkout} %setup -q -n linux-firmware-%{checkout}
# Repack AMD Family 19h microcode
/usr/bin/python3 %{SOURCE1} -vv -s amd-ucode/fam19 amd-ucode/microcode_amd_fam19h.bin
rm -rvf amd-ucode/fam19/*cpuid_0x00aa0f0*.bin
/usr/bin/python3 %{SOURCE1} -vv amd-ucode/fam19/* -m amd-ucode/microcode_amd_fam19h.bin
/usr/bin/python3 %{SOURCE1} -vv amd-ucode/microcode_amd_fam19h.bin
rm -rvf amd-ucode/fam19
%if 0 %if 0
git init . git init .
if [ -z "$GIT_COMMITTER_NAME" ]; then if [ -z "$GIT_COMMITTER_NAME" ]; then
@ -286,7 +276,13 @@ git am %{patches}
%install %install
mkdir -p $RPM_BUILD_ROOT/%{_firmwarepath} mkdir -p $RPM_BUILD_ROOT/%{_firmwarepath}
mkdir -p $RPM_BUILD_ROOT/%{_firmwarepath}/updates mkdir -p $RPM_BUILD_ROOT/%{_firmwarepath}/updates
make DESTDIR=%{buildroot}/ FIRMWAREDIR=%{_firmwarepath} install
# Move amd-ucode readme to docs directory due to dracut issue (RHEL-16799)
mkdir -p %{buildroot}/%{_defaultdocdir}/%{name}/amd-ucode
mv -f amd-ucode/README %{buildroot}/%{_defaultdocdir}/%{name}/amd-ucode
# copy-firmware.sh requires rdfind unless we pass --ignore-duplicates.
make DESTDIR=%{buildroot}/ FIRMWAREDIR=%{_firmwarepath} COPYOPTS="--ignore-duplicates" install
pushd $RPM_BUILD_ROOT/%{_firmwarepath} pushd $RPM_BUILD_ROOT/%{_firmwarepath}
# Remove firmware shipped in separate packages already # Remove firmware shipped in separate packages already
@ -411,6 +407,10 @@ sed -e 's/^/%%dir /' linux-firmware.dirs >> linux-firmware.files
%{_firmwarepath}/iwlwifi-ty-a0-gf-a0*.pnvm %{_firmwarepath}/iwlwifi-ty-a0-gf-a0*.pnvm
%{_firmwarepath}/iwlwifi-so-a0-*.ucode %{_firmwarepath}/iwlwifi-so-a0-*.ucode
%{_firmwarepath}/iwlwifi-so-a0-*.pnvm %{_firmwarepath}/iwlwifi-so-a0-*.pnvm
%{_firmwarepath}/iwlwifi-gl-*.ucode
%{_firmwarepath}/iwlwifi-gl-*.pnvm
%{_firmwarepath}/iwlwifi-ma-*.ucode
%{_firmwarepath}/iwlwifi-ma-*.pnvm
%files -n libertas-usb8388-firmware %files -n libertas-usb8388-firmware
%license WHENCE LICENCE.Marvell %license WHENCE LICENCE.Marvell
@ -434,13 +434,315 @@ sed -e 's/^/%%dir /' linux-firmware.dirs >> linux-firmware.files
%files -f linux-firmware.files %files -f linux-firmware.files
%dir %{_firmwarepath} %dir %{_firmwarepath}
%doc %{_defaultdocdir}/%{name}
%license WHENCE LICENCE.* %license WHENCE LICENCE.*
%config(noreplace) %{_firmwarepath}/netronome/nic_AMDA* %config(noreplace) %{_firmwarepath}/netronome/nic_AMDA*
%changelog %changelog
* Tue Sep 26 2023 Patrick Talbert <ptalbert@redhat.com> - 20230824-119.git0e048b06 * Mon Jun 10 2024 Denys Vlasenko <dvlasenk@redhat.com> - 20240610-122.git90df68d2
- Exclude AMD cpu ucode for fam19/*cpuid_0x00aa0f0* - [Intel 8.10 FEAT] [SPR][EMR] QAT firmware update available (RHEL-15607)
Resolves: RHEL-3903 - CVE-2023-31346 AMD SEV: Reserved fields in guest message responses may not be zero initialized [rhel-8.10.0] (RHEL-35596)
- amd-ucode early loading broken [rhel-8] (RHEL-16799)
  Changes since the last update are noted on items below, copied from
  the git changelog of upstream linux-firmware repository.
- linux-firmware: Add firmware for Lenovo Thinkbooks
- amdgpu: update yellow carp firmware
- amdgpu: update VCN 4.0.4 firmware
- amdgpu: update SDMA 6.0.2 firmware
- amdgpu: update PSP 13.0.7 firmware
- amdgpu: update GC 11.0.2 firmware
- amdgpu: update navi10 firmware
- amdgpu: update raven2 firmware
- amdgpu: update raven firmware
- amdgpu: update SMU 13.0.10 firmware
- amdgpu: update SDMA 6.0.3 firmware
- amdgpu: update PSP 13.0.10 firmware
- amdgpu: update GC 11.0.3 firmware
- amdgpu: update VCN 3.1.2 firmware
- amdgpu: update PSP 13.0.5 firmware
- amdgpu: update psp 13.0.8 firmware
- amdgpu: update vega20 firmware
- amdgpu: update vega12 firmware
- amdgpu: update vega10 firmware
- amdgpu: update VCN 4.0.0 firmware
- amdgpu: update smu 13.0.0 firmware
- amdgpu: update SDMA 6.0.0 firmware
- amdgpu: update PSP 13.0.0 firmware
- amdgpu: update GC 11.0.0 firmware
- amdgpu: update picasso firmware
- amdgpu: update beige goby firmware
- amdgpu: update vangogh firmware
- amdgpu: update dimgrey cavefish firmware
- amdgpu: update green sardine firmware
- amdgpu: update navy flounder firmware
- amdgpu: update PSP 13.0.11 firmware
- amdgpu: update GC 11.0.4 firmware
- amdgpu: update VCN 4.0.2 firmware
- amdgpu: update SDMA 6.0.1 firmware
- amdgpu: update PSP 13.0.4 firmware
- amdgpu: update GC 11.0.1 firmware
- amdgpu: update sienna cichlid firmware
- amdgpu: update VCN 4.0.5 firmware
- amdgpu: update PSP 14.0.0 firmware
- amdgpu: update GC 11.5.0 firmware
- amdgpu: update navi14 firmware
- amdgpu: update SMU 13.0.6 firmware
- amdgpu: update PSP 13.0.6 firmware
- amdgpu: update GC 9.4.3 firmware
- amdgpu: update renoir firmware
- amdgpu: update navi12 firmware
- amdgpu: update aldebaran firmware
- amdgpu: add support for PSP 14.0.1
- amdgpu: add support for VPE 6.1.1
- amdgpu: add support for VCN 4.0.6
- amdgpu: add support for SDMA 6.1.1
- amdgpu: add support for GC 11.5.1
- amdgpu: Add support for DCN 3.5.1
- cnm: update chips&media wave521c firmware.
- linux-firmware: Add ordinary firmware for RTL8821AU device
- amdgpu: add new ISP 4.1.1 firmware
- amdgpu: DMCUB updates for various AMDGPU ASICs
- linux-firmware: Amphion: Update vpu firmware
- linux-firmware: Update firmware file for Intel BlazarU core
- linux-firmware: Update firmware file for Intel Bluetooth Magnetor core
- linux-firmware: Update firmware file for Intel Bluetooth Solar core
- linux-firmware: Update firmware file for Intel Bluetooth Solar core
- i915: Add BMG DMC v2.06
- linux-firmware: Add CS35L41 HDA Firmware for Asus HN7306
- linux-firmware: Update firmware tuning for HP Consumer Laptop
- amdgpu: DMCUB updates for various AMDGPU ASICs
- rtl_bt: Update RTL8822C BT UART firmware to 0x0FD6_407B
- rtl_bt: Update RTL8822C BT USB firmware to 0x0ED6_407B
- cirrus: cs35l56: Add firmware for Cirrus CS35L56 for various ASUS laptops
- linux-firmware: Add firmware and tuning for Lenovo Y770S
- amdgpu: DMCUB updates for various AMDGPU ASICs
- linux-firmware: Add firmware for Cirrus CS35L56 for various HP laptops
- i915: Update Xe2LPD DMC to v2.20
- linux-firmware: Remove Calibration Firmware and Tuning for CS35L41
- linux-firmware: Add firmware for Lenovo Thinkbook 13X
- ASoC: tas2781: Add dsp firmware for Thinkpad ICE-1 laptop
- amdgpu: add DMCUB 3.5 firmware
- amdgpu: add VPE 6.1.0 firmware
- amdgpu: add VCN 4.0.5 firmware
- amdgpu: add UMSCH 4.0.0 firmware
- amdgpu: add SDMA 6.1.0 firmware
- amdgpu: add PSP 14.0.0 firmware
- amdgpu: add GC 11.5.0 firmware
- amdgpu: update license date
- Montage: update firmware for Mont-TSSE
- linux-firmware: Add tuning parameter configs for CS35L41 Firmware
- linux-firmware: Fix firmware names for Laptop SSID 104316a3
- linux-firmware: Add CS35L41 HDA Firmware for Lenovo Legion Slim 7 16ARHA7
- linux-firmware: update firmware for mediatek bluetooth chip (MT7922)
- linux-firmware: update firmware for MT7922 WiFi device
- iwlwifi: add gl FW for core87-44 release
- iwlwifi: add ty/So/Ma firmwares for core87-44 release
- iwlwifi: update cc/Qu/QuZ firmwares for core87-44 release
- nvidia: Update Tegra210 XUSB firmware to v50.29
- amdgpu: update beige goby firmware
- amdgpu: update dimgrey cavefish firmware
- amdgpu: update psp 13.0.11 firmware
- amdgpu: update gc 11.0.4 firmware
- amdgpu: update navy flounder firmware
- amdgpu: update renoir firmware
- amdgpu: update vcn 4.0.2 firmware
- amdgpu: update sdma 6.0.1 firmware
- amdgpu: update psp 13.0.4 firmware
- amdgpu: update gc 11.0.1 firmware
- amdgpu: update sienna cichlid firmware
- amdgpu: update vega20 firmware
- amdgpu: update yellow carp firmware
- amdgpu: update green sardine firmware
- amdgpu: update vega12 firmware
- amdgpu: update raven2 firmware
- amdgpu: update vcn 4.0.4 firmware
- amdgpu: update smu 13.0.7 firmware
- amdgpu: update sdma 6.0.2 firmware
- amdgpu: update ipsp 13.0.7 firmware
- amdgpu: update gc 11.0.2 firmware
- amdgpu: update vega10 firmware
- amdgpu: update raven firmware
- amdgpu: update navi14 firmware
- amdgpu: update smu 13.0.10 firmware
- amdgpu: update sdma 6.0.3 firmware
- amdgpu: update psp 13.0.10 firmware
- amdgpu: update gc 11.0.3 firmware
- amdgpu: update vcn 3.1.2 firmware
- amdgpu: update psp 13.0.5 firmware
- amdgpu: update gc 10.3.6 firmware
- amdgpu: update navi12 firmware
- amdgpu: update arcturus firmware
- amdgpu: update vangogh firmware
- amdgpu: update navi10 firmware
- amdgpu: update vcn 4.0.3 firmware
- amdgpu: update smu 13.0.6 firmware
- amdgpu: update psp 13.0.6 firmware
- amdgpu: update gc 9.4.3 firmware
- amdgpu: update vcn 4.0.0 firmware
- amdgpu: update smu 13.0.0 firmware
- amdgpu: update sdma 6.0.0 firmware
- amdgpu: update psp 13.0.0 firmware
- amdgpu: update gc 11.0.0 firmware
- amdgpu: update firmware
- amdgpu: update aldebaran firmware
- amdgpu: update psp 13.0.8 firmware
- amdgpu: update gc 10.3.7 firmware
- linux-firmware: mediatek: Update MT8173 VPU firmware to v1.1.9
- Merge https://github.com/pkshih/linux-firmware into rtw
- ath10k: WCN3990: hw1.0: add qcm2290 firmware API file
- ath10k: WCN3990: hw1.0: move firmware back from qcom/ location
- i915: Add DG2 HuC 7.10.15
- amdgpu: DMCUB updates for various AMDGPU ASICs
- linux-firmware: update firmware for en8811h 2.5G ethernet phy
- mekdiatek: Update mt8186 SOF firmware to v2.0.1
- rtw89: 8852c: update fw to v0.27.56.14
- rtw89: 8922a: add firmware v0.35.18.0
- rtw88: Add RTL8703B firmware v11.0.0
- linux-firmware: Add firmware for Cirrus CS35L56 for Dell laptops
- Montage: update firmware for Mont-TSSE
- WHENCE: Link the Raspberry Pi CM4 and 5B to the 4B
- Intel Bluetooth: Update firmware file for Intel Bluetooth BE200
- Intel Bluetooth: Update firmware file for Magnetor Intel Bluetooth AX101
- Intel Bluetooth: Update firmware file for Magnetor Intel Bluetooth AX203
- Intel Bluetooth: Update firmware file for Magnetor Intel Bluetooth AX211
- Intel Bluetooth: Update firmware file for SolarF Intel Bluetooth AX101
- Intel Bluetooth: Update firmware file for Solar Intel Bluetooth AX101
- Intel Bluetooth: Update firmware file for SolarF Intel Bluetooth AX203
- Intel Bluetooth: Update firmware file for Solar Intel Bluetooth AX203
- Intel Bluetooth: Update firmware file for SolarF Intel Bluetooth AX211
- Intel Bluetooth: Update firmware file for Solar Intel Bluetooth AX211
- Intel Bluetooth: Update firmware file for Solar Intel Bluetooth AX210
- Intel Bluetooth: Update firmware file for Intel Bluetooth AX200
- Intel Bluetooth: Update firmware file for Intel Bluetooth AX201
- Intel Bluetooth: Update firmware file for Intel Bluetooth 9560
- Intel Bluetooth: Update firmware file for Intel Bluetooth 9260
- amdgpu: DMCUB updates for various AMDGPU ASICs
- linux-firmware: mediatek: Update MT8173 VPU firmware to v1.1.8
- imx: sdma: update firmware to v3.6/v4.6
- linux-firmware: update firmware for mediatek bluetooth chip (MT7921)
- iwlwifi: update 9000-family firmwares to core85-89
- rtl_bt: Update RTL8852A BT USB firmware to 0xD9D6_17DA
- linux-firmware: update firmware for MT7921 WiFi device
- linux-firmware: update firmware for mediatek bluetooth chip (MT7922)
- linux-firmware: update firmware for MT7922 WiFi device
- linux-firmware: Add CS35L41 HDA Firmware for Lenovo Thinkbook 16P Laptops
- amdgpu: Update VCN firmware binaries
- Intel IPU2: Add firmware files
- brcm: Add nvram for the Acer Iconia One 7 B1-750 tablet
- i915: Add Xe2LPD DMC v2.18
- i915: Update MTL DMC v2.21
- linux-firmware: update firmware for en8811h 2.5G ethernet phy
- linux-firmware: add firmware for MT7996
- xe: First GuC release for LNL and Xe
- i915: Add GuC v70.20.0 for ADL-P, DG1, DG2, MTL and TGL
- linux-firmware: Add CS35L41 firmware for Lenovo Legion 7i gen7 laptop (16IAX7)
- brcm: Add nvram for the Asus Memo Pad 7 ME176C tablet
- ice: update ice DDP package to 1.3.36.0
- Intel IPU3 ImgU: Move firmware file under intel/ipu
- Intel IPU6: Move firmware binaries under ipu/
- check_whence: Add a check for duplicate link entries
- WHENCE: Clean up section separators
- linux-firmware: Add CS35L41 firmware for additional ASUS Zenbook 2023 models
- panthor: Add initial firmware for Gen10 Arm Mali GPUs
- amdgpu: DMCUB Updates for DCN321: 7.0.38.0
- amdgpu: DMCUB updates for Yellow Carp: 4.0.68.0
- qcom: update venus firmware file for v5.4
- Montage: add firmware for Mont-TSSE
- amdgpu: update DMCUB to v0.0.203.0 for DCN314 and DCN32
- linux-firmware: Remove 2 HP laptops using CS35L41 Audio Firmware
- linux-firmware: Fix filenames for some CS35L41 firmwares for HP
- linux-firmware: wilc1000: update WILC1000 firmware to v16.1.2
- rtl_nic: add firmware for RTL8126A
- linux-firmware: intel: Add IPU6 firmware binaries
- ath11k: WCN6855 hw2.0: update to WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37
- qcom: Add Audio firmware for SM8550 HDK
- Merge tag 'amd-2024-01-30.2' into mlimonci/amd-2024-01-30.2
- Revert "amdgpu: DMCUB updates for various AMDGPU ASICs"
- amdgpu: update SMU 13.0.0 firmware
- amdgpu: update PSP 13.0.0 firmware
- amdgpu: update GC 11.0.0 firmware
- brcm: Add brcmfmac43430-sdio.xxx.txt nvram for the Chuwi Hi8 (CWI509) tablet
- amdgpu: DMCUB updates for various AMDGPU ASICs
- qcom: Add Audio firmware for SM8650 MTP
- linux-firmware: Add firmware for Cirrus CS35L41 on HP Consumer Laptops
- Intel Bluetooth: Make spacing consistent with rest of WHENCE
- amdgpu: update raven2 firmware
- amdgpu: update raven firmware
- amdgpu: update SDMA 5.2.7 firmware
- amdgpu: update PSP 13.0.8 firmware
- amdgpu: update VCN 3.1.2 firmware
- amdgpu: update SDMA 5.2.6 firmware
- amdgpu: update PSP 13.0.5 firmware
- amdgpu: update GC 10.3.6 firmware
- amdgpu: add GC 11.0.1 rlc_1 firmware
- amdgpu: update vega20 firmware
- amdgpu: update VCN 4.0.0 firmware
- amdgpu: update SMU 13.0.0 firmware
- amdgpu: update PSP 13.0.0 firmware
- amdgpu: update GC 11.0.0 firmware
- amdgpu: update vega12 firmware
- amdgpu: update vega10 firmware
- amdgpu: update beige goby firmware
- amdgpu: update picasso firmware
- amdgpu: update dimgrey cavefish firmware
- amdgpu: update vangogh firmware
- amdgpu: update navy flounder firmware
- amdgpu: update green sardine firmware
- amdgpu: update sienna cichlid firmware
- amdgpu: update PSP 13.0.11 firmware
- amdgpu: update GC 11.0.4 firmware
- amdgpu: update VCN 4.0.2 firmware
- amdgpu: update PSP 13.0.4 firmware
- amdgpu: update GC 11.0.1 firmware
- amdgpu: update arcturus firmware
- amdgpu: update navi14 firmware
- amdgpu: add VCN 4.0.3 firmware
- amdgpu: add SDMA 4.4.2 firmware
- amdgpu: add SMU 13.0.6 firmware
- amdgpu: add PSP 13.0.6 firmware
- amdgpu: Add GC 9.4.3 firmware
- amdgpu: update renoir firmware
- amdgpu: update VCN 4.0.4 firmware
- amdgpu: update SMU 13.0.7 firmware
- amdgpu: update PSP 13.0.7 firmware
- amdgpu: update GC 11.0.2 firmware
- amdgpu: update navi12 firmware
- amdgpu: update yellow carp firmware
- amdgpu: update SMU 13.0.10 firmware
- amdgpu: update SDMA 6.0.3 firmware
- amdgpu: update PSP 13.0.10 firmware
- amdgpu: update GC 11.0.3 firmware
- amdgpu: update navi10 firmware
- amdgpu: update aldebaran firmware
- linux-firmware: Update AMD cpu microcode
- RTL8192E: Remove old realtek WiFi firmware
- Intel Bluetooth: Update firmware file for Magnetor Intel Bluetooth AX101
- Intel Bluetooth: Update firmware file for Magnetor Intel Bluetooth AX203
- Intel Bluetooth: Update firmware file for SolarF Intel Bluetooth AX203
- Intel Bluetooth: Update firmware file for SolarF Intel Bluetooth AX211
- Intel Bluetooth: Update firmware file for Solar Intel Bluetooth AX211
- amdgpu: DMCUB updates for DCN314
- qcom: Update the firmware for Adreno a630 family of GPUs
- cirrus: Add CS35L41 firmware for Legion Slim 7 Gen 8 laptops
- linux-firmware: Add firmware for Cirrus CS35L41 for various Dell laptops
- linux-firmware: update firmware for qat_4xxx devices
Resolves: RHEL-35596, RHEL-16799, RHEL-15607
* Thu Jan 11 2024 Denys Vlasenko <dvlasenk@redhat.com> - 20240111-121.gitb3132c18
- Pass --ignore-duplicates to copy-firmware.sh
- AMD Zen3 and Zen4: fix for INVD instruction causing loss of SEV-ES guest machine memory integrity
Resolves: RHEL-13982
* Wed Nov 22 2023 Denys Vlasenko <dvlasenk@redhat.com> - 20231121-120.git9552083a
- Work around absense of rdfind during build
- Add file directives for new iwlwifi files
Resolves: RHEL-16721, RHEL-14260
* Tue Nov 21 2023 Denys Vlasenko <dvlasenk@redhat.com> - 20231121-119.git9552083a
- Update to latest upstream linux-firmware image for assorted updates
- Update AMD cpu microcode
- hw: intel: Fix protection mechanism failure for some Intel(R) PROSet/Wireless WiFi
Resolves: RHEL-16721, RHEL-14260
* Thu Aug 24 2023 Denys Vlasenko <dvlasenk@redhat.com> - 20230824-118.git0e048b06 * Thu Aug 24 2023 Denys Vlasenko <dvlasenk@redhat.com> - 20230824-118.git0e048b06
- Update to latest upstream linux-firmware image for assorted updates - Update to latest upstream linux-firmware image for assorted updates