Skip to content

Commit ad60ad4

Browse files
committed
Rebuild rocky9_8 with kernel-5.14.0-687.39.1.el9_8
Rebuild_History BUILDABLE Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50% Number of commits in upstream range v5.14~1..kernel-mainline: 394115 Number of commits in rpm: 8 Number of commits matched with upstream: 3 (37.50%) Number of commits in upstream but not in rpm: 394112 Number of commits NOT found in upstream: 5 (62.50%) Rebuilding Kernel on Branch rocky9_8_rebuild_kernel-5.14.0-687.39.1.el9_8 for kernel-5.14.0-687.39.1.el9_8 Clean Cherry Picks: 3 (100.00%) Empty Cherry Picks: 0 (0.00%) _______________________________ Full Details Located here: ciq/ciq_backports/kernel-5.14.0-687.39.1.el9_8/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 881e5da commit ad60ad4

32 files changed

Lines changed: 131887 additions & 18 deletions

Makefile.rhelver

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

1717
#
1818
# ZSTREAM

arch/x86/include/asm/kvm_host.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1710,7 +1710,7 @@ struct kvm_x86_ops {
17101710
* Can potentially get non-canonical addresses through INVLPGs, which
17111711
* the implementation may choose to ignore if appropriate.
17121712
*/
1713-
void (*flush_tlb_gva)(struct kvm_vcpu *vcpu, gva_t addr);
1713+
void (*flush_tlb_gva)(struct kvm_vcpu *vcpu, gva_t addr, bool *full);
17141714

17151715
/*
17161716
* Flush any TLB entries created by the guest. Like tlb_flush_gva(),

arch/x86/include/asm/pgtable_types.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,10 @@
145145
* instance, and is *not* included in this mask since
146146
* pte_modify() does modify it.
147147
*/
148-
#define _COMMON_PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \
149-
_PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY |\
150-
_PAGE_SOFT_DIRTY | _PAGE_DEVMAP | _PAGE_CC | \
148+
#define _COMMON_PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \
149+
_PAGE_SPECIAL | _PAGE_ACCESSED | \
150+
_PAGE_DIRTY_BITS | _PAGE_SOFT_DIRTY | \
151+
_PAGE_DEVMAP | _PAGE_CC | \
151152
_PAGE_UFFD_WP)
152153
#define _PAGE_CHG_MASK (_COMMON_PAGE_CHG_MASK | _PAGE_PAT)
153154
#define _HPAGE_CHG_MASK (_COMMON_PAGE_CHG_MASK | _PAGE_PSE | _PAGE_PAT_LARGE)

arch/x86/kvm/hyperv.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1968,6 +1968,7 @@ int kvm_hv_vcpu_flush_tlb(struct kvm_vcpu *vcpu)
19681968
u64 entries[KVM_HV_TLB_FLUSH_FIFO_SIZE];
19691969
int i, j, count;
19701970
gva_t gva;
1971+
bool full = false;
19711972

19721973
if (!tdp_enabled || !hv_vcpu)
19731974
return -EINVAL;
@@ -1976,7 +1977,7 @@ int kvm_hv_vcpu_flush_tlb(struct kvm_vcpu *vcpu)
19761977

19771978
count = kfifo_out(&tlb_flush_fifo->entries, entries, KVM_HV_TLB_FLUSH_FIFO_SIZE);
19781979

1979-
for (i = 0; i < count; i++) {
1980+
for (i = 0; i < count && !full; i++) {
19801981
if (entries[i] == KVM_HV_TLB_FLUSHALL_ENTRY)
19811982
goto out_flush_all;
19821983

@@ -1985,11 +1986,11 @@ int kvm_hv_vcpu_flush_tlb(struct kvm_vcpu *vcpu)
19851986
* pages to flush.
19861987
*/
19871988
gva = entries[i] & PAGE_MASK;
1988-
for (j = 0; j < (entries[i] & ~PAGE_MASK) + 1; j++) {
1989+
for (j = 0; j < (entries[i] & ~PAGE_MASK) + 1 && !full; j++) {
19891990
if (is_noncanonical_invlpg_address(gva + j * PAGE_SIZE, vcpu))
19901991
continue;
19911992

1992-
kvm_x86_call(flush_tlb_gva)(vcpu, gva + j * PAGE_SIZE);
1993+
kvm_x86_call(flush_tlb_gva)(vcpu, gva + j * PAGE_SIZE, &full);
19931994
}
19941995

19951996
++vcpu->stat.tlb_flush;

arch/x86/kvm/mmu/mmu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6141,7 +6141,7 @@ void kvm_mmu_invalidate_addr(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
61416141
if (is_noncanonical_invlpg_address(addr, vcpu))
61426142
return;
61436143

6144-
kvm_x86_call(flush_tlb_gva)(vcpu, addr);
6144+
kvm_x86_call(flush_tlb_gva)(vcpu, addr, NULL);
61456145
}
61466146

61476147
if (!mmu->sync_spte)

arch/x86/kvm/svm/svm.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4083,11 +4083,24 @@ static void svm_flush_tlb_all(struct kvm_vcpu *vcpu)
40834083
svm_flush_tlb_asid(vcpu);
40844084
}
40854085

4086-
static void svm_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t gva)
4086+
static void svm_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t gva, bool *full)
40874087
{
40884088
struct vcpu_svm *svm = to_svm(vcpu);
40894089

4090-
invlpga(gva, svm->vmcb->control.asid);
4090+
/*
4091+
* INVLPGA has had errata on Genoa and Turin, and even on older
4092+
* generations there were reports of Windows BSODs if INVLPGA
4093+
* was used for Hyper-V tlbflush. Use it only for shadow paging
4094+
* where it seems to be okay.
4095+
*/
4096+
if (!npt_enabled) {
4097+
invlpga(gva, svm->vmcb->control.asid);
4098+
return;
4099+
}
4100+
4101+
svm_flush_tlb_asid(vcpu);
4102+
if (full)
4103+
*full = true;
40914104
}
40924105

40934106
static inline void sync_cr8_to_lapic(struct kvm_vcpu *vcpu)

arch/x86/kvm/vmx/main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -571,12 +571,12 @@ static void vt_flush_tlb_current(struct kvm_vcpu *vcpu)
571571
vmx_flush_tlb_current(vcpu);
572572
}
573573

574-
static void vt_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr)
574+
static void vt_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr, bool *full)
575575
{
576576
if (is_td_vcpu(vcpu))
577577
return;
578578

579-
vmx_flush_tlb_gva(vcpu, addr);
579+
vmx_flush_tlb_gva(vcpu, addr, full);
580580
}
581581

582582
static void vt_flush_tlb_guest(struct kvm_vcpu *vcpu)

arch/x86/kvm/vmx/vmx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3218,7 +3218,7 @@ void vmx_flush_tlb_current(struct kvm_vcpu *vcpu)
32183218
vpid_sync_context(vmx_get_current_vpid(vcpu));
32193219
}
32203220

3221-
void vmx_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr)
3221+
void vmx_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr, bool *full)
32223222
{
32233223
/*
32243224
* vpid_sync_vcpu_addr() is a nop if vpid==0, see the comment in

arch/x86/kvm/vmx/x86_ops.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags);
8181
bool vmx_get_if_flag(struct kvm_vcpu *vcpu);
8282
void vmx_flush_tlb_all(struct kvm_vcpu *vcpu);
8383
void vmx_flush_tlb_current(struct kvm_vcpu *vcpu);
84-
void vmx_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr);
84+
void vmx_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr, bool *full);
8585
void vmx_flush_tlb_guest(struct kvm_vcpu *vcpu);
8686
void vmx_set_interrupt_shadow(struct kvm_vcpu *vcpu, int mask);
8787
u32 vmx_get_interrupt_shadow(struct kvm_vcpu *vcpu);

0 commit comments

Comments
 (0)