Skip to content

Commit 8cc6f28

Browse files
committed
Rebuild rocky9_6 with kernel-5.14.0-570.26.1.el9_6
Rebuild_History BUILDABLE Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50% Number of commits in upstream range v5.14~1..kernel-mainline: 309912 Number of commits in rpm: 41 Number of commits matched with upstream: 39 (95.12%) Number of commits in upstream but not in rpm: 309873 Number of commits NOT found in upstream: 2 (4.88%) Rebuilding Kernel on Branch rocky9_6_rebuild_kernel-5.14.0-570.26.1.el9_6 for kernel-5.14.0-570.26.1.el9_6 Clean Cherry Picks: 14 (35.90%) Empty Cherry Picks: 22 (56.41%) _______________________________ Full Details Located here: ciq/ciq_backports/kernel-5.14.0-570.26.1.el9_6/rebuild.details.txt Includes: * git commit header above * Empty Commits with upstream SHA * RPM ChangeLog Entries that could not be matched Individual Empty Commit failures contained in the same containing directory. The git message for empty commits will have the path for the failed commit. File names are the first 8 characters of the upstream SHA
1 parent 88a999f commit 8cc6f28

26 files changed

+550
-448
lines changed

Makefile.rhelver

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ RHEL_MINOR = 6
1212
#
1313
# Use this spot to avoid future merge conflicts.
1414
# Do not trim this comment.
15-
RHEL_RELEASE = 570.25.1
15+
RHEL_RELEASE = 570.26.1
1616

1717
#
1818
# ZSTREAM

arch/arm64/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ config ARM64
9797
select ARCH_SUPPORTS_NUMA_BALANCING
9898
select ARCH_SUPPORTS_PAGE_TABLE_CHECK
9999
select ARCH_SUPPORTS_PER_VMA_LOCK
100+
select ARCH_SUPPORTS_HUGE_PFNMAP if TRANSPARENT_HUGEPAGE
100101
select ARCH_SUPPORTS_RT
101102
select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
102103
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT

arch/arm64/include/asm/pgtable.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,14 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd)
528528
return pte_pmd(set_pte_bit(pmd_pte(pmd), __pgprot(PTE_DEVMAP)));
529529
}
530530

531+
#ifdef CONFIG_ARCH_SUPPORTS_PMD_PFNMAP
532+
#define pmd_special(pte) (!!((pmd_val(pte) & PTE_SPECIAL)))
533+
static inline pmd_t pmd_mkspecial(pmd_t pmd)
534+
{
535+
return set_pmd_bit(pmd, __pgprot(PTE_SPECIAL));
536+
}
537+
#endif
538+
531539
#define __pmd_to_phys(pmd) __pte_to_phys(pmd_pte(pmd))
532540
#define __phys_to_pmd_val(phys) __phys_to_pte_val(phys)
533541
#define pmd_pfn(pmd) ((__pmd_to_phys(pmd) & PMD_MASK) >> PAGE_SHIFT)
@@ -545,6 +553,27 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd)
545553
#define pud_pfn(pud) ((__pud_to_phys(pud) & PUD_MASK) >> PAGE_SHIFT)
546554
#define pfn_pud(pfn,prot) __pud(__phys_to_pud_val((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))
547555

556+
#ifdef CONFIG_ARCH_SUPPORTS_PUD_PFNMAP
557+
#define pud_special(pte) pte_special(pud_pte(pud))
558+
#define pud_mkspecial(pte) pte_pud(pte_mkspecial(pud_pte(pud)))
559+
#endif
560+
561+
#define pmd_pgprot pmd_pgprot
562+
static inline pgprot_t pmd_pgprot(pmd_t pmd)
563+
{
564+
unsigned long pfn = pmd_pfn(pmd);
565+
566+
return __pgprot(pmd_val(pfn_pmd(pfn, __pgprot(0))) ^ pmd_val(pmd));
567+
}
568+
569+
#define pud_pgprot pud_pgprot
570+
static inline pgprot_t pud_pgprot(pud_t pud)
571+
{
572+
unsigned long pfn = pud_pfn(pud);
573+
574+
return __pgprot(pud_val(pfn_pud(pfn, __pgprot(0))) ^ pud_val(pud));
575+
}
576+
548577
static inline void __set_pte_at(struct mm_struct *mm,
549578
unsigned long __always_unused addr,
550579
pte_t *ptep, pte_t pte, unsigned int nr)

arch/s390/pci/pci_mmio.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,11 @@ static inline int __memcpy_toio_inuser(void __iomem *dst,
118118
SYSCALL_DEFINE3(s390_pci_mmio_write, unsigned long, mmio_addr,
119119
const void __user *, user_buffer, size_t, length)
120120
{
121+
struct follow_pfnmap_args args = { };
121122
u8 local_buf[64];
122123
void __iomem *io_addr;
123124
void *buf;
124125
struct vm_area_struct *vma;
125-
pte_t *ptep;
126-
spinlock_t *ptl;
127126
long ret;
128127

129128
if (!zpci_is_enabled())
@@ -169,19 +168,21 @@ SYSCALL_DEFINE3(s390_pci_mmio_write, unsigned long, mmio_addr,
169168
if (!(vma->vm_flags & VM_WRITE))
170169
goto out_unlock_mmap;
171170

172-
ret = follow_pte(vma->vm_mm, mmio_addr, &ptep, &ptl);
171+
args.address = mmio_addr;
172+
args.vma = vma;
173+
ret = follow_pfnmap_start(&args);
173174
if (ret)
174175
goto out_unlock_mmap;
175176

176-
io_addr = (void __iomem *)((pte_pfn(*ptep) << PAGE_SHIFT) |
177+
io_addr = (void __iomem *)((args.pfn << PAGE_SHIFT) |
177178
(mmio_addr & ~PAGE_MASK));
178179

179180
if ((unsigned long) io_addr < ZPCI_IOMAP_ADDR_BASE)
180181
goto out_unlock_pt;
181182

182183
ret = zpci_memcpy_toio(io_addr, buf, length);
183184
out_unlock_pt:
184-
pte_unmap_unlock(ptep, ptl);
185+
follow_pfnmap_end(&args);
185186
out_unlock_mmap:
186187
mmap_read_unlock(current->mm);
187188
out_free:
@@ -260,12 +261,11 @@ static inline int __memcpy_fromio_inuser(void __user *dst,
260261
SYSCALL_DEFINE3(s390_pci_mmio_read, unsigned long, mmio_addr,
261262
void __user *, user_buffer, size_t, length)
262263
{
264+
struct follow_pfnmap_args args = { };
263265
u8 local_buf[64];
264266
void __iomem *io_addr;
265267
void *buf;
266268
struct vm_area_struct *vma;
267-
pte_t *ptep;
268-
spinlock_t *ptl;
269269
long ret;
270270

271271
if (!zpci_is_enabled())
@@ -308,11 +308,13 @@ SYSCALL_DEFINE3(s390_pci_mmio_read, unsigned long, mmio_addr,
308308
if (!(vma->vm_flags & VM_WRITE))
309309
goto out_unlock_mmap;
310310

311-
ret = follow_pte(vma->vm_mm, mmio_addr, &ptep, &ptl);
311+
args.vma = vma;
312+
args.address = mmio_addr;
313+
ret = follow_pfnmap_start(&args);
312314
if (ret)
313315
goto out_unlock_mmap;
314316

315-
io_addr = (void __iomem *)((pte_pfn(*ptep) << PAGE_SHIFT) |
317+
io_addr = (void __iomem *)((args.pfn << PAGE_SHIFT) |
316318
(mmio_addr & ~PAGE_MASK));
317319

318320
if ((unsigned long) io_addr < ZPCI_IOMAP_ADDR_BASE) {
@@ -322,7 +324,7 @@ SYSCALL_DEFINE3(s390_pci_mmio_read, unsigned long, mmio_addr,
322324
ret = zpci_memcpy_fromio(buf, io_addr, length);
323325

324326
out_unlock_pt:
325-
pte_unmap_unlock(ptep, ptl);
327+
follow_pfnmap_end(&args);
326328
out_unlock_mmap:
327329
mmap_read_unlock(current->mm);
328330

arch/x86/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ config X86_64
2828
select ARCH_HAS_GIGANTIC_PAGE
2929
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
3030
select ARCH_SUPPORTS_PER_VMA_LOCK
31+
select ARCH_SUPPORTS_HUGE_PFNMAP if TRANSPARENT_HUGEPAGE
3132
select ARCH_SUPPORTS_RT
3233
select HAVE_ARCH_SOFT_DIRTY
3334
select MODULES_USE_ELF_RELA

arch/x86/include/asm/pgtable.h

Lines changed: 52 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,34 @@ extern pmdval_t early_pmd_flags;
121121
#define arch_end_context_switch(prev) do {} while(0)
122122
#endif /* CONFIG_PARAVIRT_XXL */
123123

124+
static inline pmd_t pmd_set_flags(pmd_t pmd, pmdval_t set)
125+
{
126+
pmdval_t v = native_pmd_val(pmd);
127+
128+
return native_make_pmd(v | set);
129+
}
130+
131+
static inline pmd_t pmd_clear_flags(pmd_t pmd, pmdval_t clear)
132+
{
133+
pmdval_t v = native_pmd_val(pmd);
134+
135+
return native_make_pmd(v & ~clear);
136+
}
137+
138+
static inline pud_t pud_set_flags(pud_t pud, pudval_t set)
139+
{
140+
pudval_t v = native_pud_val(pud);
141+
142+
return native_make_pud(v | set);
143+
}
144+
145+
static inline pud_t pud_clear_flags(pud_t pud, pudval_t clear)
146+
{
147+
pudval_t v = native_pud_val(pud);
148+
149+
return native_make_pud(v & ~clear);
150+
}
151+
124152
/*
125153
* The following only work if pte_present() is true.
126154
* Undefined behaviour if not..
@@ -310,6 +338,30 @@ static inline int pud_devmap(pud_t pud)
310338
}
311339
#endif
312340

341+
#ifdef CONFIG_ARCH_SUPPORTS_PMD_PFNMAP
342+
static inline bool pmd_special(pmd_t pmd)
343+
{
344+
return pmd_flags(pmd) & _PAGE_SPECIAL;
345+
}
346+
347+
static inline pmd_t pmd_mkspecial(pmd_t pmd)
348+
{
349+
return pmd_set_flags(pmd, _PAGE_SPECIAL);
350+
}
351+
#endif /* CONFIG_ARCH_SUPPORTS_PMD_PFNMAP */
352+
353+
#ifdef CONFIG_ARCH_SUPPORTS_PUD_PFNMAP
354+
static inline bool pud_special(pud_t pud)
355+
{
356+
return pud_flags(pud) & _PAGE_SPECIAL;
357+
}
358+
359+
static inline pud_t pud_mkspecial(pud_t pud)
360+
{
361+
return pud_set_flags(pud, _PAGE_SPECIAL);
362+
}
363+
#endif /* CONFIG_ARCH_SUPPORTS_PUD_PFNMAP */
364+
313365
static inline int pgd_devmap(pgd_t pgd)
314366
{
315367
return 0;
@@ -480,20 +532,6 @@ static inline pte_t pte_mkdevmap(pte_t pte)
480532
return pte_set_flags(pte, _PAGE_SPECIAL|_PAGE_DEVMAP);
481533
}
482534

483-
static inline pmd_t pmd_set_flags(pmd_t pmd, pmdval_t set)
484-
{
485-
pmdval_t v = native_pmd_val(pmd);
486-
487-
return native_make_pmd(v | set);
488-
}
489-
490-
static inline pmd_t pmd_clear_flags(pmd_t pmd, pmdval_t clear)
491-
{
492-
pmdval_t v = native_pmd_val(pmd);
493-
494-
return native_make_pmd(v & ~clear);
495-
}
496-
497535
/* See comments above mksaveddirty_shift() */
498536
static inline pmd_t pmd_mksaveddirty(pmd_t pmd)
499537
{
@@ -588,20 +626,6 @@ static inline pmd_t pmd_mkwrite_novma(pmd_t pmd)
588626
pmd_t pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma);
589627
#define pmd_mkwrite pmd_mkwrite
590628

591-
static inline pud_t pud_set_flags(pud_t pud, pudval_t set)
592-
{
593-
pudval_t v = native_pud_val(pud);
594-
595-
return native_make_pud(v | set);
596-
}
597-
598-
static inline pud_t pud_clear_flags(pud_t pud, pudval_t clear)
599-
{
600-
pudval_t v = native_pud_val(pud);
601-
602-
return native_make_pud(v & ~clear);
603-
}
604-
605629
/* See comments above mksaveddirty_shift() */
606630
static inline pud_t pud_mksaveddirty(pud_t pud)
607631
{

arch/x86/mm/pat/memtype.c

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include <linux/pfn_t.h>
4040
#include <linux/slab.h>
4141
#include <linux/mm.h>
42+
#include <linux/highmem.h>
4243
#include <linux/fs.h>
4344
#include <linux/rbtree.h>
4445

@@ -947,6 +948,26 @@ static void free_pfn_range(u64 paddr, unsigned long size)
947948
memtype_free(paddr, paddr + size);
948949
}
949950

951+
static int follow_phys(struct vm_area_struct *vma, unsigned long *prot,
952+
resource_size_t *phys)
953+
{
954+
struct follow_pfnmap_args args = { .vma = vma, .address = vma->vm_start };
955+
956+
if (follow_pfnmap_start(&args))
957+
return -EINVAL;
958+
959+
/* Never return PFNs of anon folios in COW mappings. */
960+
if (!args.special) {
961+
follow_pfnmap_end(&args);
962+
return -EINVAL;
963+
}
964+
965+
*prot = pgprot_val(args.pgprot);
966+
*phys = (resource_size_t)args.pfn << PAGE_SHIFT;
967+
follow_pfnmap_end(&args);
968+
return 0;
969+
}
970+
950971
static int get_pat_info(struct vm_area_struct *vma, resource_size_t *paddr,
951972
pgprot_t *pgprot)
952973
{
@@ -964,7 +985,7 @@ static int get_pat_info(struct vm_area_struct *vma, resource_size_t *paddr,
964985
* detect the PFN. If we need the cachemode as well, we're out of luck
965986
* for now and have to fail fork().
966987
*/
967-
if (!follow_phys(vma, vma->vm_start, 0, &prot, paddr)) {
988+
if (!follow_phys(vma, &prot, paddr)) {
968989
if (pgprot)
969990
*pgprot = __pgprot(prot);
970991
return 0;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
Rebuild_History BUILDABLE
2+
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
3+
Number of commits in upstream range v5.14~1..kernel-mainline: 309912
4+
Number of commits in rpm: 41
5+
Number of commits matched with upstream: 39 (95.12%)
6+
Number of commits in upstream but not in rpm: 309873
7+
Number of commits NOT found in upstream: 2 (4.88%)
8+
9+
Rebuilding Kernel on Branch rocky9_6_rebuild_kernel-5.14.0-570.26.1.el9_6 for kernel-5.14.0-570.26.1.el9_6
10+
Clean Cherry Picks: 14 (35.90%)
11+
Empty Cherry Picks: 22 (56.41%)
12+
_______________________________
13+
14+
__EMPTY COMMITS__________________________
15+
6857be5fecaebd9773ff27b6d29b6fff3b1abbce mm: introduce ARCH_SUPPORTS_HUGE_PFNMAP and special bits to pmd/pud
16+
ef713ec3a566d3e5e011c5d6201eb661ebf94c1f mm: drop is_huge_zero_pud()
17+
10d83d7781a8a6ff02bafd172c1ab183b27f8d5a mm/pagewalk: check pfnmap for folio_walk_start()
18+
cb10c28ac82c9b7a5e9b3b1dc7157036c20c36dd mm: remove follow_pfn
19+
6da8e9634bb7e3fdad9ae0e4db873a05036c4343 mm: new follow_pfnmap API
20+
b1b46751671be5a426982f037a47ae05f37ff80b mm: fix follow_pfnmap API lockdep assert
21+
5b34b76cb0cd8a21dee5c7677eae98480b0d05cc mm: move follow_phys to arch/x86/mm/pat/memtype.c
22+
29ae7d96d166fa08c7232daf8a314ef5ba1efd20 mm: pass VMA instead of MM to follow_pte()
23+
5731aacd54a883dd2c1a5e8c85e1fe78fc728dc7 KVM: use follow_pfnmap API
24+
bd8c2d18bf5cccd8842d00b17d6f222beb98b1b3 s390/pci_mmio: use follow_pfnmap API
25+
cbea8536d933d546ceb1005bf9c04f9d01da8092 mm/x86/pat: use the new follow_pfnmap API
26+
a77f9489f1d7873a56e1d6640cc0c4865f64176b vfio: use the new follow_pfnmap API
27+
b17269a51cc7f046a6f2cf9a6c314a0de885e5a5 mm/access_process_vm: use the new follow_pfnmap API
28+
c5541ba378e3d36ea88bf5839d5b23e33e7d1627 mm: follow_pte() improvements
29+
b0a1c0d0edcd75a0f8ec5fd19dbd64b8d097f534 mm: remove follow_pte()
30+
75182022a0439788415b2dd1db3086e07aa506f7 mm/x86: support large pfn mappings
31+
3e509c9b03f9abc7804c80bed266a6cc4286a5a8 mm/arm64: support large pfn mappings
32+
f9e54c3a2f5b79ecc57c7bc7d0d3521e461a2101 vfio/pci: implement huge_fault support
33+
09dfc8a5f2ce897005a94bf66cca4f91e4e03700 vfio/pci: Fallback huge faults for unaligned pfn
34+
62fb8adc43afad5fa1c9cadc6f3a8e9fb72af194 mm: Provide address mask in struct follow_pfnmap_args
35+
0fd06844de5d063cb384384e06a11ec7141a35d5 vfio/type1: Use mapping page mask for pfnmaps
36+
c1d9dac0db168198b6f63f460665256dedad9b6e vfio/pci: Align huge faults to order
37+
38+
__CHANGES NOT IN UPSTREAM________________
39+
Porting to Rocky Linux 9, debranding and Rocky branding'
40+
Ensure aarch64 kernel is not compressed'

configs/kernel-5.14.0-aarch64-64k-debug.config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,6 +1076,8 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
10761076
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
10771077
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
10781078
# CONFIG_READ_ONLY_THP_FOR_FS is not set
1079+
CONFIG_ARCH_SUPPORTS_HUGE_PFNMAP=y
1080+
CONFIG_ARCH_SUPPORTS_PMD_PFNMAP=y
10791081
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
10801082
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
10811083
CONFIG_USE_PERCPU_NUMA_NODE_ID=y

0 commit comments

Comments
 (0)