summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--conf/machine/include/intel-common-pkgarch.inc2
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_21.40.21182.bb1
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-Don-t-accept-nullptr-as-GEP-element-type.patch182
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/igc/files/0002-LLVM13-changed-MCContext-constructor.patch41
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.8744.bb2
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2021.4.1.bb4
-rw-r--r--recipes-core/microcode/intel-microcode_20220809.bb (renamed from recipes-core/microcode/intel-microcode_20210608.bb)2
-rw-r--r--recipes-core/zlib/files/CVE-2018-25032-fuzz-fixed.patch351
-rw-r--r--recipes-core/zlib/files/fix-removed-last-lit.patch41
-rw-r--r--recipes-core/zlib/zlib-intel_1.2.11.1.jtkv6.3.bb8
-rw-r--r--recipes-kernel/linux/linux-intel-rt_5.10.bb6
-rw-r--r--recipes-kernel/linux/linux-intel-rt_5.4.bb6
-rw-r--r--recipes-kernel/linux/linux-intel/0001-io-mapping-Cleanup-atomic-iomap.patch94
-rw-r--r--recipes-kernel/linux/linux-intel_5.10.bb7
-rw-r--r--recipes-kernel/linux/linux-intel_5.4.bb6
15 files changed, 732 insertions, 21 deletions
diff --git a/conf/machine/include/intel-common-pkgarch.inc b/conf/machine/include/intel-common-pkgarch.inc
index e50d9cb4..94d77e06 100644
--- a/conf/machine/include/intel-common-pkgarch.inc
+++ b/conf/machine/include/intel-common-pkgarch.inc
@@ -11,5 +11,5 @@ PACKAGE_ARCH:pn-intel-microcode = "${INTEL_COMMON_PACKAGE_ARCH}"
11PACKAGE_ARCH:pn-backport-iwlwifi = "${INTEL_COMMON_PACKAGE_ARCH}" 11PACKAGE_ARCH:pn-backport-iwlwifi = "${INTEL_COMMON_PACKAGE_ARCH}"
12PACKAGE_ARCH:pn-ixgbe = "${INTEL_COMMON_PACKAGE_ARCH}" 12PACKAGE_ARCH:pn-ixgbe = "${INTEL_COMMON_PACKAGE_ARCH}"
13PACKAGE_ARCH:pn-ixgbevf = "${INTEL_COMMON_PACKAGE_ARCH}" 13PACKAGE_ARCH:pn-ixgbevf = "${INTEL_COMMON_PACKAGE_ARCH}"
14PACKAGE_EXTRA_ARCHS:append += "${INTEL_COMMON_PACKAGE_ARCH}" 14PACKAGE_EXTRA_ARCHS:append = " ${INTEL_COMMON_PACKAGE_ARCH}"
15MACHINEOVERRIDES =. "${INTEL_COMMON_PACKAGE_ARCH}:" 15MACHINEOVERRIDES =. "${INTEL_COMMON_PACKAGE_ARCH}:"
diff --git a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_21.40.21182.bb b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_21.40.21182.bb
index 59ebaf89..c99dfa96 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_21.40.21182.bb
+++ b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_21.40.21182.bb
@@ -34,7 +34,6 @@ EXTRA_OECMAKE = " \
34 -DCCACHE_ALLOWED=FALSE \ 34 -DCCACHE_ALLOWED=FALSE \
35 -DNEO_DISABLE_LD_LLD=ON \ 35 -DNEO_DISABLE_LD_LLD=ON \
36 -DNEO_DISABLE_LD_GOLD=ON \ 36 -DNEO_DISABLE_LD_GOLD=ON \
37 -DNEO_DISABLE_BUILTINS_COMPILATION=ON \
38 " 37 "
39EXTRA_OECMAKE:append:class-target = " \ 38EXTRA_OECMAKE:append:class-target = " \
40 -Dcloc_cmd_prefix=ocloc \ 39 -Dcloc_cmd_prefix=ocloc \
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-Don-t-accept-nullptr-as-GEP-element-type.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-Don-t-accept-nullptr-as-GEP-element-type.patch
new file mode 100644
index 00000000..0e90023f
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-Don-t-accept-nullptr-as-GEP-element-type.patch
@@ -0,0 +1,182 @@
1From 9c68deb3f913a3d055112a28103ec2933ca7b09c Mon Sep 17 00:00:00 2001
2From: Marcin Naczk <marcin.naczk@intel.com>
3Date: Tue, 17 May 2022 10:36:56 +0000
4Subject: [PATCH 1/2] Don't accept nullptr as GEP element type
5
6LLVM13 IR don't accept nullptr as GEP element type
7https://reviews.llvm.org/D105653
8
9Upstream-Status: Backport
10Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
11---
12 IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp | 5 +++--
13 IGC/Compiler/CustomSafeOptPass.cpp | 8 +++++---
14 IGC/Compiler/LegalizationPass.cpp | 3 ++-
15 .../IGCInstCombiner/7.0/InstructionCombining.cpp | 3 ++-
16 .../OpenCLPasses/LocalBuffers/InlineLocalsResolution.cpp | 5 +++--
17 .../ProgramScopeConstantResolution.cpp | 3 ++-
18 IGC/Compiler/Optimizer/Scalarizer.cpp | 3 ++-
19 IGC/Compiler/PromoteResourceToDirectAS.cpp | 6 +++---
20 8 files changed, 22 insertions(+), 14 deletions(-)
21
22diff --git a/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp b/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
23index ae5510c6a..0f4fca87c 100644
24--- a/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
25+++ b/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
26@@ -3368,17 +3368,18 @@ SPIRVToLLVM::transValueWithoutDecoration(SPIRVValue *BV, Function *F,
27 case OpInBoundsPtrAccessChain: {
28 auto AC = static_cast<SPIRVAccessChainBase *>(BV);
29 auto Base = transValue(AC->getBase(), F, BB);
30+ Type *BaseTy = cast<PointerType>(Base->getType())->getPointerElementType();
31 auto Index = transValue(AC->getIndices(), F, BB);
32 if (!AC->hasPtrIndex())
33 Index.insert(Index.begin(), getInt32(M, 0));
34 auto IsInbound = AC->isInBounds();
35 Value *V = nullptr;
36 if (BB) {
37- auto GEP = GetElementPtrInst::Create(nullptr, Base, Index, BV->getName(), BB);
38+ auto GEP = GetElementPtrInst::Create(BaseTy, Base, Index, BV->getName(), BB);
39 GEP->setIsInBounds(IsInbound);
40 V = GEP;
41 } else {
42- V = ConstantExpr::getGetElementPtr(nullptr, dyn_cast<Constant>(Base), Index, IsInbound);
43+ V = ConstantExpr::getGetElementPtr(BaseTy, dyn_cast<Constant>(Base), Index, IsInbound);
44 }
45 return mapValue(BV, V);
46 }
47diff --git a/IGC/Compiler/CustomSafeOptPass.cpp b/IGC/Compiler/CustomSafeOptPass.cpp
48index 83223b3cb..33547077e 100644
49--- a/IGC/Compiler/CustomSafeOptPass.cpp
50+++ b/IGC/Compiler/CustomSafeOptPass.cpp
51@@ -410,7 +410,8 @@ void CustomSafeOptPass::visitAllocaInst(AllocaInst& I)
52 gepArg1 = BinaryOperator::CreateSub(pGEP->getOperand(2), IRB.getInt32(index_lb), "reducedIndex", pGEP);
53 }
54 llvm::Value* gepArg[] = { pGEP->getOperand(1), gepArg1 };
55- llvm::Value* pGEPnew = GetElementPtrInst::Create(nullptr, newAlloca, gepArg, "", pGEP);
56+ Type *BaseTy = cast<PointerType>(newAlloca->getType())->getPointerElementType();
57+ llvm::Value* pGEPnew = GetElementPtrInst::Create(BaseTy, newAlloca, gepArg, "", pGEP);
58 pGEP->replaceAllUsesWith(pGEPnew);
59 }
60 }
61@@ -478,10 +479,11 @@ void CustomSafeOptPass::visitLoadInst(LoadInst& load)
62 SmallVector<Value*, 8> indices;
63 indices.append(gep->idx_begin(), gep->idx_end());
64 indices[selIdx] = sel->getOperand(1);
65- GetElementPtrInst* gep1 = GetElementPtrInst::Create(nullptr, gep->getPointerOperand(), indices, gep->getName(), gep);
66+ Type *BaseTy = cast<PointerType>(gep->getPointerOperand()->getType())->getPointerElementType();
67+ GetElementPtrInst* gep1 = GetElementPtrInst::Create(BaseTy, gep->getPointerOperand(), indices, gep->getName(), gep);
68 gep1->setDebugLoc(gep->getDebugLoc());
69 indices[selIdx] = sel->getOperand(2);
70- GetElementPtrInst* gep2 = GetElementPtrInst::Create(nullptr, gep->getPointerOperand(), indices, gep->getName(), gep);
71+ GetElementPtrInst* gep2 = GetElementPtrInst::Create(BaseTy, gep->getPointerOperand(), indices, gep->getName(), gep);
72 gep2->setDebugLoc(gep->getDebugLoc());
73 LoadInst* load1 = cast<LoadInst>(load.clone());
74 load1->insertBefore(&load);
75diff --git a/IGC/Compiler/LegalizationPass.cpp b/IGC/Compiler/LegalizationPass.cpp
76index 0586e1b40..fbb3fe894 100644
77--- a/IGC/Compiler/LegalizationPass.cpp
78+++ b/IGC/Compiler/LegalizationPass.cpp
79@@ -1568,7 +1568,8 @@ void Legalization::RecursivelyChangePointerType(Instruction* oldPtr, Instruction
80 if (GetElementPtrInst * gep = dyn_cast<GetElementPtrInst>(*II))
81 {
82 SmallVector<Value*, 8> Idx(gep->idx_begin(), gep->idx_end());
83- GetElementPtrInst* newGep = GetElementPtrInst::Create(nullptr, newPtr, Idx, "", gep);
84+ Type *BaseTy = cast<PointerType>(newPtr->getType())->getPointerElementType();
85+ GetElementPtrInst* newGep = GetElementPtrInst::Create(BaseTy, newPtr, Idx, "", gep);
86 RecursivelyChangePointerType(gep, newGep);
87 }
88 else if (LoadInst * load = dyn_cast<LoadInst>(*II))
89diff --git a/IGC/Compiler/Optimizer/IGCInstCombiner/7.0/InstructionCombining.cpp b/IGC/Compiler/Optimizer/IGCInstCombiner/7.0/InstructionCombining.cpp
90index ea5c450fb..94b6bd2be 100644
91--- a/IGC/Compiler/Optimizer/IGCInstCombiner/7.0/InstructionCombining.cpp
92+++ b/IGC/Compiler/Optimizer/IGCInstCombiner/7.0/InstructionCombining.cpp
93@@ -1675,7 +1675,8 @@ Instruction* InstCombiner::visitGetElementPtrInst(GetElementPtrInst& GEP) {
94 auto* NewSrc = cast<GetElementPtrInst>(
95 Builder.CreateGEP(SO0, GO1, Src->getName()));
96 NewSrc->setIsInBounds(Src->isInBounds());
97- auto* NewGEP = GetElementPtrInst::Create(nullptr, NewSrc, { SO1 });
98+ Type *BaseTy = cast<PointerType>(NewSrc->getType())->getPointerElementType();
99+ auto* NewGEP = GetElementPtrInst::Create(BaseTy, NewSrc, { SO1 });
100 NewGEP->setIsInBounds(GEP.isInBounds());
101 return NewGEP;
102 }
103diff --git a/IGC/Compiler/Optimizer/OpenCLPasses/LocalBuffers/InlineLocalsResolution.cpp b/IGC/Compiler/Optimizer/OpenCLPasses/LocalBuffers/InlineLocalsResolution.cpp
104index be585df75..4a31ca474 100644
105--- a/IGC/Compiler/Optimizer/OpenCLPasses/LocalBuffers/InlineLocalsResolution.cpp
106+++ b/IGC/Compiler/Optimizer/OpenCLPasses/LocalBuffers/InlineLocalsResolution.cpp
107@@ -179,9 +179,10 @@ bool InlineLocalsResolution::runOnModule(Module& M)
108 Value* sizeConstant = ConstantInt::get(Type::getInt32Ty(C), Offset);
109 SmallVector<Value*, 1> idx(1, sizeConstant);
110 Instruction* pInsertBefore = &(*F.begin()->getFirstInsertionPt());
111- Type* pLocalCharPtrType = Type::getInt8Ty(C)->getPointerTo(ADDRESS_SPACE_LOCAL);
112+ Type* pCharType = Type::getInt8Ty(C);
113+ Type* pLocalCharPtrType = pCharType->getPointerTo(ADDRESS_SPACE_LOCAL);
114 Instruction* pCharPtr = BitCastInst::CreatePointerCast(arg, pLocalCharPtrType, "localToChar", pInsertBefore);
115- Value* pMovedCharPtr = GetElementPtrInst::Create(nullptr, pCharPtr, idx, "movedLocal", pInsertBefore);
116+ Value* pMovedCharPtr = GetElementPtrInst::Create(pCharType, pCharPtr, idx, "movedLocal", pInsertBefore);
117
118 Value* pMovedPtr = CastInst::CreatePointerCast(pMovedCharPtr, ptrType, "charToLocal", pInsertBefore);
119
120diff --git a/IGC/Compiler/Optimizer/OpenCLPasses/ProgramScopeConstants/ProgramScopeConstantResolution.cpp b/IGC/Compiler/Optimizer/OpenCLPasses/ProgramScopeConstants/ProgramScopeConstantResolution.cpp
121index 64e48a247..d56472191 100644
122--- a/IGC/Compiler/Optimizer/OpenCLPasses/ProgramScopeConstants/ProgramScopeConstantResolution.cpp
123+++ b/IGC/Compiler/Optimizer/OpenCLPasses/ProgramScopeConstants/ProgramScopeConstantResolution.cpp
124@@ -190,7 +190,8 @@ bool ProgramScopeConstantResolution::runOnModule(Module& M)
125 Instruction* pEntryPoint = &(*userFunc->getEntryBlock().getFirstInsertionPt());
126
127 // Create a GEP to get to the right offset in the constant buffer
128- GetElementPtrInst* gep = GetElementPtrInst::Create(nullptr, &*bufArg, pOffset, "off" + pGlobalVar->getName(), pEntryPoint);
129+ Type *BaseTy = cast<PointerType>((&*bufArg)->getType())->getPointerElementType();
130+ GetElementPtrInst* gep = GetElementPtrInst::Create(BaseTy, &*bufArg, pOffset, "off" + pGlobalVar->getName(), pEntryPoint);
131 // Cast it back to the correct type.
132 CastInst* pNewVal = CastInst::CreatePointerCast(gep, pGlobalVar->getType(), "cast" + pGlobalVar->getName(), pEntryPoint);
133
134diff --git a/IGC/Compiler/Optimizer/Scalarizer.cpp b/IGC/Compiler/Optimizer/Scalarizer.cpp
135index 768cb6da2..75ec2ff0d 100644
136--- a/IGC/Compiler/Optimizer/Scalarizer.cpp
137+++ b/IGC/Compiler/Optimizer/Scalarizer.cpp
138@@ -994,7 +994,8 @@ void ScalarizeFunction::scalarizeInstruction(GetElementPtrInst* GI)
139 auto op1 = baseValue->getType()->isVectorTy() ? operand1[i] : baseValue;
140 auto op2 = indexValue->getType()->isVectorTy() ? operand2[i] : indexValue;
141
142- Value* newGEP = GetElementPtrInst::Create(nullptr, op1, op2, "", GI);
143+ Type *BaseTy = cast<PointerType>(op1->getType())->getPointerElementType();
144+ Value* newGEP = GetElementPtrInst::Create(BaseTy, op1, op2, "", GI);
145 Value* constIndex = ConstantInt::get(Type::getInt32Ty(context()), i);
146 Instruction* insert = InsertElementInst::Create(assembledVector,
147 newGEP, constIndex, "assembled.vect", GI);
148diff --git a/IGC/Compiler/PromoteResourceToDirectAS.cpp b/IGC/Compiler/PromoteResourceToDirectAS.cpp
149index 4d9ccf20c..555b1f9a8 100644
150--- a/IGC/Compiler/PromoteResourceToDirectAS.cpp
151+++ b/IGC/Compiler/PromoteResourceToDirectAS.cpp
152@@ -297,6 +297,7 @@ bool PatchGetElementPtr(const std::vector<Value*>& instList, Type* dstTy, unsign
153 unsigned numInstructions = instList.size();
154 Value* patchedInst = patchedSourcePtr;
155 dstPtr = nullptr;
156+ Type* patchTy = nullptr;
157
158 // Find all the instructions we need to patch, starting from the top.
159 // If there is more than one GEP instruction, we need to patch all of them, as well
160@@ -326,7 +327,6 @@ bool PatchGetElementPtr(const std::vector<Value*>& instList, Type* dstTy, unsign
161
162 if (!patchedInst)
163 {
164- Type* patchTy = nullptr;
165 if (patchInstructions.size() > 0)
166 {
167 // Get the original pointer type before any GEPs or bitcasts modifies it
168@@ -349,9 +349,9 @@ bool PatchGetElementPtr(const std::vector<Value*>& instList, Type* dstTy, unsign
169 llvm::SmallVector<llvm::Value*, 4> gepArgs(gepInst->idx_begin(), gepInst->idx_end());
170 // Create the new GEP instruction
171 if (gepInst->isInBounds())
172- patchedInst = GetElementPtrInst::CreateInBounds(nullptr, patchedInst, gepArgs, "", gepInst);
173+ patchedInst = GetElementPtrInst::CreateInBounds(patchTy, patchedInst, gepArgs, "", gepInst);
174 else
175- patchedInst = GetElementPtrInst::Create(nullptr, patchedInst, gepArgs, "", gepInst);
176+ patchedInst = GetElementPtrInst::Create(patchTy, patchedInst, gepArgs, "", gepInst);
177
178 if (GetElementPtrInst* gepPatchedInst = dyn_cast<GetElementPtrInst>(patchedInst))
179 {
180--
1812.35.3
182
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0002-LLVM13-changed-MCContext-constructor.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0002-LLVM13-changed-MCContext-constructor.patch
new file mode 100644
index 00000000..df6fa613
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0002-LLVM13-changed-MCContext-constructor.patch
@@ -0,0 +1,41 @@
1From 049cbc1bf259ab109160987cbd43a485069957a6 Mon Sep 17 00:00:00 2001
2From: Marcin Naczk <marcin.naczk@intel.com>
3Date: Tue, 17 May 2022 09:50:31 +0000
4Subject: [PATCH 2/2] LLVM13 changed MCContext constructor
5
6For LLVM13, MCContext constructor changed.
7In the list of arguments appeared MCSubtargetInfo which is not used by us.
8ObjectFileInfo was removed from the list of arguments, so we need to set
9it in the next command.
10
11Upstream-Status: Backport
12Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
13---
14 IGC/WrapperLLVM/include/llvmWrapper/MC/MCContext.h | 11 +++++++----
15 1 file changed, 7 insertions(+), 4 deletions(-)
16
17diff --git a/IGC/WrapperLLVM/include/llvmWrapper/MC/MCContext.h b/IGC/WrapperLLVM/include/llvmWrapper/MC/MCContext.h
18index 3725864ef..f3e7e2b4e 100644
19--- a/IGC/WrapperLLVM/include/llvmWrapper/MC/MCContext.h
20+++ b/IGC/WrapperLLVM/include/llvmWrapper/MC/MCContext.h
21@@ -24,10 +24,13 @@ namespace IGCLLVM
22 bool DoAutoReset = true)
23 {
24 #if LLVM_VERSION_MAJOR >= 13
25- std::string Err;
26- const llvm::Target *T = llvm::TargetRegistry::lookupTarget(TheTriple.str(), Err);
27- std::unique_ptr<llvm::MCSubtargetInfo> STI(T->createMCSubtargetInfo(TheTriple.str(), "", ""));
28- return new llvm::MCContext(TheTriple, MAI, MRI, STI.get(), Mgr, TargetOpts, DoAutoReset);
29+// Refactor MCObjectFileInfo initialization and allow targets to create MCObjectFileInfo
30+//
31+// Differential Revision: https://reviews.llvm.org/D101921
32+
33+ auto *Context = new llvm::MCContext(TheTriple, MAI, MRI, nullptr, Mgr, TargetOpts, DoAutoReset);
34+ Context->setObjectFileInfo(MOFI);
35+ return Context;
36 #elif LLVM_VERSION_MAJOR >= 10
37 return new llvm::MCContext(MAI, MRI, MOFI, Mgr, TargetOpts, DoAutoReset);
38 #else
39--
402.35.3
41
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.8744.bb b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.8744.bb
index 9bbe08c9..51c372ca 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.8744.bb
+++ b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.8744.bb
@@ -14,6 +14,8 @@ SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https;nam
14 file://0003-Improve-Reproducibility-for-src-package.patch \ 14 file://0003-Improve-Reproducibility-for-src-package.patch \
15 file://0004-find-external-llvm-tblgen.patch \ 15 file://0004-find-external-llvm-tblgen.patch \
16 file://0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch \ 16 file://0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch \
17 file://0001-Don-t-accept-nullptr-as-GEP-element-type.patch \
18 file://0002-LLVM13-changed-MCContext-constructor.patch \
17 " 19 "
18 20
19SRCREV_igc = "3ba8dde8c414a0e47df58b1bba12a64f8ba2089e" 21SRCREV_igc = "3ba8dde8c414a0e47df58b1bba12a64f8ba2089e"
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2021.4.1.bb b/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2021.4.1.bb
index 0709fce4..abc9fa65 100644
--- a/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2021.4.1.bb
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2021.4.1.bb
@@ -67,10 +67,6 @@ DEPENDS += "libusb1 \
67COMPATIBLE_HOST = '(x86_64).*-linux' 67COMPATIBLE_HOST = '(x86_64).*-linux'
68COMPATIBLE_HOST:libc-musl = "null" 68COMPATIBLE_HOST:libc-musl = "null"
69 69
70#Disable opencl temporarily. intel-compute-runtime depends on
71#intel-graphics-compiler and vc-intrinsics and these two recipes fail to
72#compile with LLVM13. Enable it after upstream has fixed it.
73#PACKAGECONFIG ?= "vpu opencl"
74PACKAGECONFIG ?= "vpu" 70PACKAGECONFIG ?= "vpu"
75PACKAGECONFIG[opencl] = "-DENABLE_CLDNN=1 -DCLDNN__IOCL_ICD_INCDIRS=${STAGING_INCDIR} -DCLDNN__IOCL_ICD_STLDIRS=${STAGING_LIBDIR} -DCLDNN__IOCL_ICD_SHLDIRS=${STAGING_LIBDIR}, -DENABLE_CLDNN=0, ocl-icd opencl-headers libva, intel-compute-runtime" 71PACKAGECONFIG[opencl] = "-DENABLE_CLDNN=1 -DCLDNN__IOCL_ICD_INCDIRS=${STAGING_INCDIR} -DCLDNN__IOCL_ICD_STLDIRS=${STAGING_LIBDIR} -DCLDNN__IOCL_ICD_SHLDIRS=${STAGING_LIBDIR}, -DENABLE_CLDNN=0, ocl-icd opencl-headers libva, intel-compute-runtime"
76PACKAGECONFIG[python3] = "-DENABLE_PYTHON=ON -DPYTHON_LIBRARY=${PYTHON_LIBRARY} -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR}, -DENABLE_PYTHON=OFF, python3-cython-native, python3 python3-numpy python3-opencv python3-progress python3-cython" 72PACKAGECONFIG[python3] = "-DENABLE_PYTHON=ON -DPYTHON_LIBRARY=${PYTHON_LIBRARY} -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR}, -DENABLE_PYTHON=OFF, python3-cython-native, python3 python3-numpy python3-opencv python3-progress python3-cython"
diff --git a/recipes-core/microcode/intel-microcode_20210608.bb b/recipes-core/microcode/intel-microcode_20220809.bb
index 0487b219..5d2d2469 100644
--- a/recipes-core/microcode/intel-microcode_20210608.bb
+++ b/recipes-core/microcode/intel-microcode_20220809.bb
@@ -16,7 +16,7 @@ LIC_FILES_CHKSUM = "file://license;md5=d8405101ec6e90c1d84b082b0c40c721"
16SRC_URI = "git://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git;protocol=https;branch=main \ 16SRC_URI = "git://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git;protocol=https;branch=main \
17 " 17 "
18 18
19SRCREV = "3f97690f0da8011f52209b232450a1e5c4f2e1f6" 19SRCREV = "cffdeb848e2302a60b665a78141ee88464e98af4"
20 20
21DEPENDS = "iucode-tool-native" 21DEPENDS = "iucode-tool-native"
22S = "${WORKDIR}/git" 22S = "${WORKDIR}/git"
diff --git a/recipes-core/zlib/files/CVE-2018-25032-fuzz-fixed.patch b/recipes-core/zlib/files/CVE-2018-25032-fuzz-fixed.patch
new file mode 100644
index 00000000..778b3b9a
--- /dev/null
+++ b/recipes-core/zlib/files/CVE-2018-25032-fuzz-fixed.patch
@@ -0,0 +1,351 @@
1From c3970bb352f4f8cdb27d31e78c558bd1eb332f48 Mon Sep 17 00:00:00 2001
2From: Mark Adler <madler@alumni.caltech.edu>
3Date: Tue, 17 Apr 2018 22:09:22 -0700
4Subject: [PATCH] Fix a bug that can crash deflate on some input when using
5 Z_FIXED.
6
7This bug was reported by Danilo Ramos of Eideticom, Inc. It has
8lain in wait 13 years before being found! The bug was introduced
9in zlib 1.2.2.2, with the addition of the Z_FIXED option. That
10option forces the use of fixed Huffman codes. For rare inputs with
11a large number of distant matches, the pending buffer into which
12the compressed data is written can overwrite the distance symbol
13table which it overlays. That results in corrupted output due to
14invalid distances, and can result in out-of-bound accesses,
15crashing the application.
16
17The fix here combines the distance buffer and literal/length
18buffers into a single symbol buffer. Now three bytes of pending
19buffer space are opened up for each literal or length/distance
20pair consumed, instead of the previous two bytes. This assures
21that the pending buffer cannot overwrite the symbol table, since
22the maximum fixed code compressed length/distance is 31 bits, and
23since there are four bytes of pending space for every three bytes
24of symbol space.
25
26Upstream-Status: Backport
27[https://github.com/madler/zlib/commit/5c44459c3b28a9bd3283aaceab7c615f8020c531]
28CVE: CVE-2018-25032
29Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
30---
31 deflate.c | 74 ++++++++++++++++++++++++++++++++++++++++---------------
32 deflate.h | 25 +++++++++----------
33 trees.c | 50 +++++++++++--------------------------
34 3 files changed, 79 insertions(+), 70 deletions(-)
35
36diff --git a/deflate.c b/deflate.c
37index b5e7849..2730035 100644
38--- a/deflate.c
39+++ b/deflate.c
40@@ -237,11 +237,6 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
41 int wrap = 1;
42 static const char my_version[] = ZLIB_VERSION;
43
44- ushf *overlay;
45- /* We overlay pending_buf and d_buf+l_buf. This works since the average
46- * output size for (length,distance) codes is <= 24 bits.
47- */
48-
49 if (version == Z_NULL || version[0] != my_version[0] ||
50 stream_size != sizeof(z_stream)) {
51 return Z_VERSION_ERROR;
52@@ -324,9 +319,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
53
54 s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
55
56- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
57- s->pending_buf = (uchf *) overlay;
58- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
59+ /* We overlay pending_buf and sym_buf. This works since the average size
60+ * for length/distance pairs over any compressed block is assured to be 31
61+ * bits or less.
62+ *
63+ * Analysis: The longest fixed codes are a length code of 8 bits plus 5
64+ * extra bits, for lengths 131 to 257. The longest fixed distance codes are
65+ * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
66+ * possible fixed-codes length/distance pair is then 31 bits total.
67+ *
68+ * sym_buf starts one-fourth of the way into pending_buf. So there are
69+ * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
70+ * in sym_buf is three bytes -- two for the distance and one for the
71+ * literal/length. As each symbol is consumed, the pointer to the next
72+ * sym_buf value to read moves forward three bytes. From that symbol, up to
73+ * 31 bits are written to pending_buf. The closest the written pending_buf
74+ * bits gets to the next sym_buf symbol to read is just before the last
75+ * code is written. At that time, 31*(n-2) bits have been written, just
76+ * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
77+ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
78+ * symbols are written.) The closest the writing gets to what is unread is
79+ * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
80+ * can range from 128 to 32768.
81+ *
82+ * Therefore, at a minimum, there are 142 bits of space between what is
83+ * written and what is read in the overlain buffers, so the symbols cannot
84+ * be overwritten by the compressed data. That space is actually 139 bits,
85+ * due to the three-bit fixed-code block header.
86+ *
87+ * That covers the case where either Z_FIXED is specified, forcing fixed
88+ * codes, or when the use of fixed codes is chosen, because that choice
89+ * results in a smaller compressed block than dynamic codes. That latter
90+ * condition then assures that the above analysis also covers all dynamic
91+ * blocks. A dynamic-code block will only be chosen to be emitted if it has
92+ * fewer bits than a fixed-code block would for the same set of symbols.
93+ * Therefore its average symbol length is assured to be less than 31. So
94+ * the compressed data for a dynamic block also cannot overwrite the
95+ * symbols from which it is being constructed.
96+ */
97+
98+ s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4);
99+ s->pending_buf_size = (ulg)s->lit_bufsize * 4;
100
101 if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
102 s->pending_buf == Z_NULL) {
103@@ -335,8 +368,12 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
104 deflateEnd (strm);
105 return Z_MEM_ERROR;
106 }
107- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
108- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
109+ s->sym_buf = s->pending_buf + s->lit_bufsize;
110+ s->sym_end = (s->lit_bufsize - 1) * 3;
111+ /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
112+ * on 16 bit machines and because stored blocks are restricted to
113+ * 64K-1 bytes.
114+ */
115
116 s->level = level;
117 s->strategy = strategy;
118@@ -553,7 +590,7 @@ int ZEXPORT deflatePrime (strm, bits, value)
119
120 if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
121 s = strm->state;
122- if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
123+ if (s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3))
124 return Z_BUF_ERROR;
125 do {
126 put = Buf_size - s->bi_valid;
127@@ -1125,7 +1162,6 @@ int ZEXPORT deflateCopy (dest, source)
128 #else
129 deflate_state *ds;
130 deflate_state *ss;
131- ushf *overlay;
132
133
134 if (deflateStateCheck(source) || dest == Z_NULL) {
135@@ -1145,8 +1181,7 @@ int ZEXPORT deflateCopy (dest, source)
136 ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
137 ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
138 ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
139- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
140- ds->pending_buf = (uchf *) overlay;
141+ ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4);
142
143 if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
144 ds->pending_buf == Z_NULL) {
145@@ -1160,8 +1195,7 @@ int ZEXPORT deflateCopy (dest, source)
146 zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
147
148 ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
149- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
150- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
151+ ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
152
153 ds->l_desc.dyn_tree = ds->dyn_ltree;
154 ds->d_desc.dyn_tree = ds->dyn_dtree;
155@@ -1717,7 +1751,7 @@ local block_state deflate_fast(s, flush)
156 FLUSH_BLOCK(s, 1);
157 return finish_done;
158 }
159- if (s->last_lit)
160+ if (s->sym_next)
161 FLUSH_BLOCK(s, 0);
162 return block_done;
163 }
164@@ -1848,7 +1882,7 @@ local block_state deflate_slow(s, flush)
165 FLUSH_BLOCK(s, 1);
166 return finish_done;
167 }
168- if (s->last_lit)
169+ if (s->sym_next)
170 FLUSH_BLOCK(s, 0);
171 return block_done;
172 }
173@@ -1923,7 +1957,7 @@ local block_state deflate_rle(s, flush)
174 FLUSH_BLOCK(s, 1);
175 return finish_done;
176 }
177- if (s->last_lit)
178+ if (s->sym_next)
179 FLUSH_BLOCK(s, 0);
180 return block_done;
181 }
182@@ -1962,7 +1996,7 @@ local block_state deflate_huff(s, flush)
183 FLUSH_BLOCK(s, 1);
184 return finish_done;
185 }
186- if (s->last_lit)
187+ if (s->sym_next)
188 FLUSH_BLOCK(s, 0);
189 return block_done;
190 }
191diff --git a/deflate.h b/deflate.h
192index 7f31b54..8d84f8e 100644
193--- a/deflate.h
194+++ b/deflate.h
195@@ -230,7 +230,7 @@ typedef struct internal_state {
196 /* Depth of each subtree used as tie breaker for trees of equal frequency
197 */
198
199- uchf *l_buf; /* buffer for literals or lengths */
200+ uchf *sym_buf; /* buffer for distances and literals/lengths */
201
202 uInt lit_bufsize;
203 /* Size of match buffer for literals/lengths. There are 4 reasons for
204@@ -252,13 +252,8 @@ typedef struct internal_state {
205 * - I can't count above 4
206 */
207
208- uInt last_lit; /* running index in l_buf */
209-
210- ushf *d_buf;
211- /* Buffer for distances. To simplify the code, d_buf and l_buf have
212- * the same number of elements. To use different lengths, an extra flag
213- * array would be necessary.
214- */
215+ uInt sym_next; /* running index in sym_buf */
216+ uInt sym_end; /* symbol table full when sym_next reaches this */
217
218 ulg opt_len; /* bit length of current block with optimal trees */
219 ulg static_len; /* bit length of current block with static trees */
220@@ -344,20 +339,22 @@ void ZLIB_INTERNAL bi_windup OF((deflate_state *s));
221
222 # define _tr_tally_lit(s, c, flush) \
223 { uch cc = (c); \
224- s->d_buf[s->last_lit] = 0; \
225- s->l_buf[s->last_lit++] = cc; \
226+ s->sym_buf[s->sym_next++] = 0; \
227+ s->sym_buf[s->sym_next++] = 0; \
228+ s->sym_buf[s->sym_next++] = cc; \
229 s->dyn_ltree[cc].Freq++; \
230- flush = (s->last_lit == s->lit_bufsize-1); \
231+ flush = (s->sym_next == s->sym_end); \
232 }
233 # define _tr_tally_dist(s, distance, length, flush) \
234 { uch len = (uch)(length); \
235 ush dist = (ush)(distance); \
236- s->d_buf[s->last_lit] = dist; \
237- s->l_buf[s->last_lit++] = len; \
238+ s->sym_buf[s->sym_next++] = dist; \
239+ s->sym_buf[s->sym_next++] = dist >> 8; \
240+ s->sym_buf[s->sym_next++] = len; \
241 dist--; \
242 s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
243 s->dyn_dtree[d_code(dist)].Freq++; \
244- flush = (s->last_lit == s->lit_bufsize-1); \
245+ flush = (s->sym_next == s->sym_end); \
246 }
247 #else
248 # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
249diff --git a/trees.c b/trees.c
250index 7480efc..2fc7860 100644
251--- a/trees.c
252+++ b/trees.c
253@@ -343,7 +343,7 @@ local void init_block(s)
254
255 s->dyn_ltree[END_BLOCK].Freq = 1;
256 s->opt_len = s->static_len = 0L;
257- s->last_lit = s->matches = 0;
258+ s->sym_next = s->matches = 0;
259 }
260
261 #define SMALLEST 1
262@@ -875,7 +875,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
263
264 Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
265 opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
266- s->last_lit));
267+ s->sym_next / 3));
268
269 if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
270
271@@ -944,8 +944,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
272 unsigned dist; /* distance of matched string */
273 unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
274 {
275- s->d_buf[s->last_lit] = (ush)dist;
276- s->l_buf[s->last_lit++] = (uch)lc;
277+ s->sym_buf[s->sym_next++] = dist;
278+ s->sym_buf[s->sym_next++] = dist >> 8;
279+ s->sym_buf[s->sym_next++] = lc;
280 if (dist == 0) {
281 /* lc is the unmatched char */
282 s->dyn_ltree[lc].Freq++;
283@@ -960,30 +961,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
284 s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
285 s->dyn_dtree[d_code(dist)].Freq++;
286 }
287-
288-#ifdef TRUNCATE_BLOCK
289- /* Try to guess if it is profitable to stop the current block here */
290- if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
291- /* Compute an upper bound for the compressed length */
292- ulg out_length = (ulg)s->last_lit*8L;
293- ulg in_length = (ulg)((long)s->strstart - s->block_start);
294- int dcode;
295- for (dcode = 0; dcode < D_CODES; dcode++) {
296- out_length += (ulg)s->dyn_dtree[dcode].Freq *
297- (5L+extra_dbits[dcode]);
298- }
299- out_length >>= 3;
300- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
301- s->last_lit, in_length, out_length,
302- 100L - out_length*100L/in_length));
303- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
304- }
305-#endif
306- return (s->last_lit == s->lit_bufsize-1);
307- /* We avoid equality with lit_bufsize because of wraparound at 64K
308- * on 16 bit machines and because stored blocks are restricted to
309- * 64K-1 bytes.
310- */
311+ return (s->sym_next == s->sym_end);
312 }
313
314 /* ===========================================================================
315@@ -996,13 +974,14 @@ local void compress_block(s, ltree, dtree)
316 {
317 unsigned dist; /* distance of matched string */
318 int lc; /* match length or unmatched char (if dist == 0) */
319- unsigned lx = 0; /* running index in l_buf */
320+ unsigned sx = 0; /* running index in sym_buf */
321 unsigned code; /* the code to send */
322 int extra; /* number of extra bits to send */
323
324- if (s->last_lit != 0) do {
325- dist = s->d_buf[lx];
326- lc = s->l_buf[lx++];
327+ if (s->sym_next != 0) do {
328+ dist = s->sym_buf[sx++] & 0xff;
329+ dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
330+ lc = s->sym_buf[sx++];
331 if (dist == 0) {
332 send_code(s, lc, ltree); /* send a literal byte */
333 Tracecv(isgraph(lc), (stderr," '%c' ", lc));
334@@ -1027,11 +1006,10 @@ local void compress_block(s, ltree, dtree)
335 }
336 } /* literal or match pair ? */
337
338- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
339- Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
340- "pendingBuf overflow");
341+ /* Check that the overlay between pending_buf and sym_buf is ok: */
342+ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
343
344- } while (lx < s->last_lit);
345+ } while (sx < s->sym_next);
346
347 send_code(s, END_BLOCK, ltree);
348 }
349--
3502.35.1
351
diff --git a/recipes-core/zlib/files/fix-removed-last-lit.patch b/recipes-core/zlib/files/fix-removed-last-lit.patch
new file mode 100644
index 00000000..238ecfbe
--- /dev/null
+++ b/recipes-core/zlib/files/fix-removed-last-lit.patch
@@ -0,0 +1,41 @@
1From bf7f8fd281afee27c160cd1e904b2ff52eb9e493 Mon Sep 17 00:00:00 2001
2From: Chee Yang Lee <chee.yang.lee@intel.com>
3Date: Thu, 31 Mar 2022 22:00:10 +0800
4Subject: [PATCH] fix removed last_lit
5
6last_lit removed and replaced with sym_next while fix for
7CVE-2018-25032. causing build error for deflate_medium.c.
8
9| deflate_medium.c: In function 'deflate_medium':
10| deflate_medium.c:308:12: error: 'deflate_state' {aka 'struct
11internal_state'} has no member named 'last_lit'; did you mean
12'last_flush'?
13| 308 | if (s->last_lit)
14| | ^~~~~~~~
15| | last_flush
16| make: *** [Makefile:307: deflate_medium.lo] Error 1
17
18
19Upstream-Status: Inappropriate
20[upstream have not taken the CVE fix patches]
21Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
22---
23 deflate_medium.c | 2 +-
24 1 file changed, 1 insertion(+), 1 deletion(-)
25
26diff --git a/deflate_medium.c b/deflate_medium.c
27index 582e8b2..30f7633 100644
28--- a/deflate_medium.c
29+++ b/deflate_medium.c
30@@ -305,7 +305,7 @@ block_state deflate_medium(deflate_state *s, int flush)
31 FLUSH_BLOCK(s, 1);
32 return finish_done;
33 }
34- if (s->last_lit)
35+ if (s->sym_next)
36 FLUSH_BLOCK(s, 0);
37 return block_done;
38 }
39--
402.35.1
41
diff --git a/recipes-core/zlib/zlib-intel_1.2.11.1.jtkv6.3.bb b/recipes-core/zlib/zlib-intel_1.2.11.1.jtkv6.3.bb
index 71c21a04..ecaf38b4 100644
--- a/recipes-core/zlib/zlib-intel_1.2.11.1.jtkv6.3.bb
+++ b/recipes-core/zlib/zlib-intel_1.2.11.1.jtkv6.3.bb
@@ -6,8 +6,12 @@ SUMMARY = "Zlib Compression Library (Intel-tuned)"
6 6
7PROVIDES = "zlib" 7PROVIDES = "zlib"
8 8
9SRC_URI:remove = "${SOURCEFORGE_MIRROR}/libpng/${BPN}/${PV}/${BPN}-${PV}.tar.xz" 9SRC_URI = "git://github.com/jtkukunas/zlib.git;protocol=https;branch=master \
10SRC_URI:prepend = "git://github.com/jtkukunas/zlib.git;protocol=https;branch=master " 10 file://ldflags-tests.patch \
11 file://run-ptest \
12 file://CVE-2018-25032-fuzz-fixed.patch \
13 file://fix-removed-last-lit.patch \
14 "
11 15
12SRCREV = "a43a247bfa16ec5368747b5b64f11ea5ca033010" 16SRCREV = "a43a247bfa16ec5368747b5b64f11ea5ca033010"
13S = "${WORKDIR}/git" 17S = "${WORKDIR}/git"
diff --git a/recipes-kernel/linux/linux-intel-rt_5.10.bb b/recipes-kernel/linux/linux-intel-rt_5.10.bb
index bba48759..c0f534e9 100644
--- a/recipes-kernel/linux/linux-intel-rt_5.10.bb
+++ b/recipes-kernel/linux/linux-intel-rt_5.10.bb
@@ -18,9 +18,9 @@ KMETA_BRANCH = "yocto-5.10"
18 18
19DEPENDS += "elfutils-native openssl-native util-linux-native" 19DEPENDS += "elfutils-native openssl-native util-linux-native"
20 20
21LINUX_VERSION ?= "5.10.59" 21LINUX_VERSION ?= "5.10.100"
22SRCREV_machine ?= "3ab3139402e6adc34f10481f1c1c60459bcd0a7e" 22SRCREV_machine ?= "ff3955ce463b15f419cfaf1f86d31851483c76d0"
23SRCREV_meta ?= "f8afd84b117f336477846b9e22178ebefb26c08d" 23SRCREV_meta ?= "64fb693a6c11f21bab3ff9bb8dcb65a70abe05e3"
24 24
25LINUX_KERNEL_TYPE = "preempt-rt" 25LINUX_KERNEL_TYPE = "preempt-rt"
26 26
diff --git a/recipes-kernel/linux/linux-intel-rt_5.4.bb b/recipes-kernel/linux/linux-intel-rt_5.4.bb
index adc01e6b..464dfedb 100644
--- a/recipes-kernel/linux/linux-intel-rt_5.4.bb
+++ b/recipes-kernel/linux/linux-intel-rt_5.4.bb
@@ -18,9 +18,9 @@ KMETA_BRANCH = "yocto-5.4"
18 18
19DEPENDS += "elfutils-native openssl-native util-linux-native" 19DEPENDS += "elfutils-native openssl-native util-linux-native"
20 20
21LINUX_VERSION ?= "5.4.143" 21LINUX_VERSION ?= "5.4.170"
22SRCREV_machine ?= "2dc0f2c1ee89b9ce92944e397f2619062ebb77f8" 22SRCREV_machine ?= "196e38246d15096460031f4a17913922c006b12d"
23SRCREV_meta ?= "e14d587eec888fba8693da2a072f729219acfb41" 23SRCREV_meta ?= "98cce1c95fcc9a26965cbc5f038fd71d53c387c8"
24 24
25LINUX_KERNEL_TYPE = "preempt-rt" 25LINUX_KERNEL_TYPE = "preempt-rt"
26 26
diff --git a/recipes-kernel/linux/linux-intel/0001-io-mapping-Cleanup-atomic-iomap.patch b/recipes-kernel/linux/linux-intel/0001-io-mapping-Cleanup-atomic-iomap.patch
new file mode 100644
index 00000000..e3608238
--- /dev/null
+++ b/recipes-kernel/linux/linux-intel/0001-io-mapping-Cleanup-atomic-iomap.patch
@@ -0,0 +1,94 @@
1From cc3ff5fe73139251070775308dcaadf474566b4b Mon Sep 17 00:00:00 2001
2From: Thomas Gleixner <tglx@linutronix.de>
3Date: Tue, 3 Nov 2020 10:27:32 +0100
4Subject: [PATCH] io-mapping: Cleanup atomic iomap
5
6Switch the atomic iomap implementation over to kmap_local and stick the
7preempt/pagefault mechanics into the generic code similar to the
8kmap_atomic variants.
9
10Rename the x86 map function in preparation for a non-atomic variant.
11
12Upstream-Status: Backport [https://github.com/torvalds/linux/commit/351191ad55c8a1eccaf23e4187c62056229c0779]
13
14Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
15Cc: Linus Torvalds <torvalds@linuxfoundation.org>
16Cc: Christoph Hellwig <hch@lst.de>
17Cc: Andrew Morton <akpm@linux-foundation.org>
18Link: https://lore.kernel.org/r/20201103095858.625310005@linutronix.de
19---
20 arch/x86/include/asm/iomap.h | 9 +--------
21 arch/x86/mm/iomap_32.c | 6 ++----
22 include/linux/io-mapping.h | 8 ++++++--
23 3 files changed, 9 insertions(+), 14 deletions(-)
24
25diff --git a/arch/x86/include/asm/iomap.h b/arch/x86/include/asm/iomap.h
26index 0be7a30fd6bc..e2de092fc38c 100644
27--- a/arch/x86/include/asm/iomap.h
28+++ b/arch/x86/include/asm/iomap.h
29@@ -13,14 +13,7 @@
30 #include <asm/cacheflush.h>
31 #include <asm/tlbflush.h>
32
33-void __iomem *iomap_atomic_pfn_prot(unsigned long pfn, pgprot_t prot);
34-
35-static inline void iounmap_atomic(void __iomem *vaddr)
36-{
37- kunmap_local_indexed((void __force *)vaddr);
38- pagefault_enable();
39- preempt_enable();
40-}
41+void __iomem *__iomap_local_pfn_prot(unsigned long pfn, pgprot_t prot);
42
43 int iomap_create_wc(resource_size_t base, unsigned long size, pgprot_t *prot);
44
45diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c
46index e0a40d7cc66c..9aaa756ddf21 100644
47--- a/arch/x86/mm/iomap_32.c
48+++ b/arch/x86/mm/iomap_32.c
49@@ -44,7 +44,7 @@ void iomap_free(resource_size_t base, unsigned long size)
50 }
51 EXPORT_SYMBOL_GPL(iomap_free);
52
53-void __iomem *iomap_atomic_pfn_prot(unsigned long pfn, pgprot_t prot)
54+void __iomem *__iomap_local_pfn_prot(unsigned long pfn, pgprot_t prot)
55 {
56 /*
57 * For non-PAT systems, translate non-WB request to UC- just in
58@@ -60,8 +60,6 @@ void __iomem *iomap_atomic_pfn_prot(unsigned long pfn, pgprot_t prot)
59 /* Filter out unsupported __PAGE_KERNEL* bits: */
60 pgprot_val(prot) &= __default_kernel_pte_mask;
61
62- preempt_disable();
63- pagefault_disable();
64 return (void __force __iomem *)__kmap_local_pfn_prot(pfn, prot);
65 }
66-EXPORT_SYMBOL_GPL(iomap_atomic_pfn_prot);
67+EXPORT_SYMBOL_GPL(__iomap_local_pfn_prot);
68diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h
69index 0a1a186a43c5..e9743cfd8585 100644
70--- a/include/linux/io-mapping.h
71+++ b/include/linux/io-mapping.h
72@@ -69,13 +69,17 @@ io_mapping_map_atomic_wc(struct io_mapping *mapping,
73
74 BUG_ON(offset >= mapping->size);
75 phys_addr = mapping->base + offset;
76- return iomap_atomic_pfn_prot(PHYS_PFN(phys_addr), mapping->prot);
77+ preempt_disable();
78+ pagefault_disable();
79+ return __iomap_local_pfn_prot(PHYS_PFN(phys_addr), mapping->prot);
80 }
81
82 static inline void
83 io_mapping_unmap_atomic(void __iomem *vaddr)
84 {
85- iounmap_atomic(vaddr);
86+ kunmap_local_indexed((void __force *)vaddr);
87+ pagefault_enable();
88+ preempt_enable();
89 }
90
91 static inline void __iomem *
92--
932.17.1
94
diff --git a/recipes-kernel/linux/linux-intel_5.10.bb b/recipes-kernel/linux/linux-intel_5.10.bb
index 90a95db2..26790d9f 100644
--- a/recipes-kernel/linux/linux-intel_5.10.bb
+++ b/recipes-kernel/linux/linux-intel_5.10.bb
@@ -6,13 +6,14 @@ KMETA_BRANCH = "yocto-5.10"
6LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 6LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
7 7
8SRC_URI:append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch \ 8SRC_URI:append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch \
9 file://0001-io-mapping-Cleanup-atomic-iomap.patch \
9 " 10 "
10 11
11DEPENDS += "elfutils-native openssl-native util-linux-native" 12DEPENDS += "elfutils-native openssl-native util-linux-native"
12 13
13LINUX_VERSION ?= "5.10.59" 14LINUX_VERSION ?= "5.10.100"
14SRCREV_machine ?= "9efba09f984bb30bd3ea01a811c500eb26356a15" 15SRCREV_machine ?= "8e5c6f8269920b343e40bdf7b3b1a33918009395"
15SRCREV_meta ?= "f8afd84b117f336477846b9e22178ebefb26c08d" 16SRCREV_meta ?= "64fb693a6c11f21bab3ff9bb8dcb65a70abe05e3"
16 17
17# For Crystalforest and Romley 18# For Crystalforest and Romley
18KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " uio" 19KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " uio"
diff --git a/recipes-kernel/linux/linux-intel_5.4.bb b/recipes-kernel/linux/linux-intel_5.4.bb
index 570f692b..24a6fa0e 100644
--- a/recipes-kernel/linux/linux-intel_5.4.bb
+++ b/recipes-kernel/linux/linux-intel_5.4.bb
@@ -9,9 +9,9 @@ SRC_URI:append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurs
9 9
10DEPENDS += "elfutils-native openssl-native util-linux-native" 10DEPENDS += "elfutils-native openssl-native util-linux-native"
11 11
12LINUX_VERSION ?= "5.4.143" 12LINUX_VERSION ?= "5.4.170"
13SRCREV_machine ?= "8246417e2e14117a0a9f3625c2122fc26c92c6bd" 13SRCREV_machine ?= "36f93ff941f127f4137ab369aecbdd995fb58c66"
14SRCREV_meta ?= "e14d587eec888fba8693da2a072f729219acfb41" 14SRCREV_meta ?= "98cce1c95fcc9a26965cbc5f038fd71d53c387c8"
15 15
16# For Crystalforest and Romley 16# For Crystalforest and Romley
17KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " uio" 17KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " uio"