Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
2 changes: 1 addition & 1 deletion Makefile.rhelver
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ RHEL_MINOR = 0
#
# Use this spot to avoid future merge conflicts.
# Do not trim this comment.
RHEL_RELEASE = 55.41.1
RHEL_RELEASE = 55.42.1

#
# RHEL_REBASE_NUM
Expand Down
107 changes: 78 additions & 29 deletions arch/arm64/kvm/sys_regs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1509,6 +1509,9 @@ static u8 pmuver_to_perfmon(u8 pmuver)
}
}

static u64 sanitise_id_aa64pfr0_el1(const struct kvm_vcpu *vcpu, u64 val);
static u64 sanitise_id_aa64dfr0_el1(const struct kvm_vcpu *vcpu, u64 val);

/* Read a sanitised cpufeature ID register by sys_reg_desc */
static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,
const struct sys_reg_desc *r)
Expand All @@ -1522,6 +1525,12 @@ static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,
val = read_sanitised_ftr_reg(id);

switch (id) {
case SYS_ID_AA64DFR0_EL1:
val = sanitise_id_aa64dfr0_el1(vcpu, val);
break;
case SYS_ID_AA64PFR0_EL1:
val = sanitise_id_aa64pfr0_el1(vcpu, val);
break;
case SYS_ID_AA64PFR1_EL1:
if (!kvm_has_mte(vcpu->kvm))
val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_MTE);
Expand All @@ -1535,6 +1544,7 @@ static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,
val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_MTEX);
val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_DF2);
val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_PFAR);
val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_MPAM_frac);
break;
case SYS_ID_AA64PFR2_EL1:
/* We only expose FPMR */
Expand Down Expand Up @@ -1692,11 +1702,8 @@ static unsigned int fp8_visibility(const struct kvm_vcpu *vcpu,
return REG_HIDDEN;
}

static u64 read_sanitised_id_aa64pfr0_el1(struct kvm_vcpu *vcpu,
const struct sys_reg_desc *rd)
static u64 sanitise_id_aa64pfr0_el1(const struct kvm_vcpu *vcpu, u64 val)
{
u64 val = read_sanitised_ftr_reg(SYS_ID_AA64PFR0_EL1);

if (!vcpu_has_sve(vcpu))
val &= ~ID_AA64PFR0_EL1_SVE_MASK;

Expand Down Expand Up @@ -1724,6 +1731,13 @@ static u64 read_sanitised_id_aa64pfr0_el1(struct kvm_vcpu *vcpu,

val &= ~ID_AA64PFR0_EL1_AMU_MASK;

/*
* MPAM is disabled by default as KVM also needs a set of PARTID to
* program the MPAMVPMx_EL2 PARTID remapping registers with. But some
* older kernels let the guest see the ID bit.
*/
val &= ~ID_AA64PFR0_EL1_MPAM_MASK;

return val;
}

Expand All @@ -1737,11 +1751,8 @@ static u64 read_sanitised_id_aa64pfr0_el1(struct kvm_vcpu *vcpu,
(val); \
})

static u64 read_sanitised_id_aa64dfr0_el1(struct kvm_vcpu *vcpu,
const struct sys_reg_desc *rd)
static u64 sanitise_id_aa64dfr0_el1(const struct kvm_vcpu *vcpu, u64 val)
{
u64 val = read_sanitised_ftr_reg(SYS_ID_AA64DFR0_EL1);

val = ID_REG_LIMIT_FIELD_ENUM(val, ID_AA64DFR0_EL1, DebugVer, V8P8);

/*
Expand Down Expand Up @@ -1834,6 +1845,42 @@ static int set_id_dfr0_el1(struct kvm_vcpu *vcpu,
return set_id_reg(vcpu, rd, val);
}

static int set_id_aa64pfr0_el1(struct kvm_vcpu *vcpu,
const struct sys_reg_desc *rd, u64 user_val)
{
u64 hw_val = read_sanitised_ftr_reg(SYS_ID_AA64PFR0_EL1);
u64 mpam_mask = ID_AA64PFR0_EL1_MPAM_MASK;

/*
* Commit 011e5f5bf529f ("arm64/cpufeature: Add remaining feature bits
* in ID_AA64PFR0 register") exposed the MPAM field of AA64PFR0_EL1 to
* guests, but didn't add trap handling. KVM doesn't support MPAM and
* always returns an UNDEF for these registers. The guest must see 0
* for this field.
*
* But KVM must also accept values from user-space that were provided
* by KVM. On CPUs that support MPAM, permit user-space to write
* the sanitizied value to ID_AA64PFR0_EL1.MPAM, but ignore this field.
*/
if ((hw_val & mpam_mask) == (user_val & mpam_mask))
user_val &= ~ID_AA64PFR0_EL1_MPAM_MASK;

return set_id_reg(vcpu, rd, user_val);
}

static int set_id_aa64pfr1_el1(struct kvm_vcpu *vcpu,
const struct sys_reg_desc *rd, u64 user_val)
{
u64 hw_val = read_sanitised_ftr_reg(SYS_ID_AA64PFR1_EL1);
u64 mpam_mask = ID_AA64PFR1_EL1_MPAM_frac_MASK;

/* See set_id_aa64pfr0_el1 for comment about MPAM */
if ((hw_val & mpam_mask) == (user_val & mpam_mask))
user_val &= ~ID_AA64PFR1_EL1_MPAM_frac_MASK;

return set_id_reg(vcpu, rd, user_val);
}

/*
* cpufeature ID register user accessors
*
Expand Down Expand Up @@ -2150,6 +2197,15 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
.val = mask, \
}

/* sys_reg_desc initialiser for cpufeature ID registers that need filtering */
#define ID_FILTERED(sysreg, name, mask) { \
ID_DESC(sysreg), \
.set_user = set_##name, \
.visibility = id_visibility, \
.reset = kvm_read_sanitised_id_reg, \
.val = (mask), \
}

/*
* sys_reg_desc initialiser for architecturally unallocated cpufeature ID
* register with encoding Op0=3, Op1=0, CRn=0, CRm=crm, Op2=op2
Expand Down Expand Up @@ -2374,18 +2430,15 @@ static const struct sys_reg_desc sys_reg_descs[] = {

/* AArch64 ID registers */
/* CRm=4 */
{ SYS_DESC(SYS_ID_AA64PFR0_EL1),
.access = access_id_reg,
.get_user = get_id_reg,
.set_user = set_id_reg,
.reset = read_sanitised_id_aa64pfr0_el1,
.val = ~(ID_AA64PFR0_EL1_AMU |
ID_AA64PFR0_EL1_MPAM |
ID_AA64PFR0_EL1_SVE |
ID_AA64PFR0_EL1_RAS |
ID_AA64PFR0_EL1_AdvSIMD |
ID_AA64PFR0_EL1_FP), },
ID_WRITABLE(ID_AA64PFR1_EL1, ~(ID_AA64PFR1_EL1_PFAR |
ID_FILTERED(ID_AA64PFR0_EL1, id_aa64pfr0_el1,
~(ID_AA64PFR0_EL1_AMU |
ID_AA64PFR0_EL1_MPAM |
ID_AA64PFR0_EL1_SVE |
ID_AA64PFR0_EL1_RAS |
ID_AA64PFR0_EL1_AdvSIMD |
ID_AA64PFR0_EL1_FP)),
ID_FILTERED(ID_AA64PFR1_EL1, id_aa64pfr1_el1,
~(ID_AA64PFR1_EL1_PFAR |
ID_AA64PFR1_EL1_DF2 |
ID_AA64PFR1_EL1_MTEX |
ID_AA64PFR1_EL1_THE |
Expand All @@ -2406,11 +2459,6 @@ static const struct sys_reg_desc sys_reg_descs[] = {
ID_WRITABLE(ID_AA64FPFR0_EL1, ~ID_AA64FPFR0_EL1_RES0),

/* CRm=5 */
{ SYS_DESC(SYS_ID_AA64DFR0_EL1),
.access = access_id_reg,
.get_user = get_id_reg,
.set_user = set_id_aa64dfr0_el1,
.reset = read_sanitised_id_aa64dfr0_el1,
/*
* Prior to FEAT_Debugv8.9, the architecture defines context-aware
* breakpoints (CTX_CMPs) as the highest numbered breakpoints (BRPs).
Expand All @@ -2423,10 +2471,11 @@ static const struct sys_reg_desc sys_reg_descs[] = {
* See DDI0487K.a, section D2.8.3 Breakpoint types and linking
* of breakpoints for more details.
*/
.val = ID_AA64DFR0_EL1_DoubleLock_MASK |
ID_AA64DFR0_EL1_WRPs_MASK |
ID_AA64DFR0_EL1_PMUVer_MASK |
ID_AA64DFR0_EL1_DebugVer_MASK, },
ID_FILTERED(ID_AA64DFR0_EL1, id_aa64dfr0_el1,
ID_AA64DFR0_EL1_DoubleLock_MASK |
ID_AA64DFR0_EL1_WRPs_MASK |
ID_AA64DFR0_EL1_PMUVer_MASK |
ID_AA64DFR0_EL1_DebugVer_MASK),
ID_SANITISED(ID_AA64DFR1_EL1),
ID_UNALLOCATED(5,2),
ID_UNALLOCATED(5,3),
Expand Down
20 changes: 20 additions & 0 deletions ciq/ciq_backports/kernel-6.12.0-55.42.1.el10_0/rebuild.details.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Rebuild_History BUILDABLE
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
Number of commits in upstream range v6.12~1..kernel-mainline: 66177
Number of commits in rpm: 10
Number of commits matched with upstream: 6 (60.00%)
Number of commits in upstream but not in rpm: 66171
Number of commits NOT found in upstream: 4 (40.00%)

Rebuilding Kernel on Branch rocky10_0_rebuild_kernel-6.12.0-55.42.1.el10_0 for kernel-6.12.0-55.42.1.el10_0
Clean Cherry Picks: 6 (100.00%)
Empty Cherry Picks: 0 (0.00%)
_______________________________

__EMPTY COMMITS__________________________

__CHANGES NOT IN UPSTREAM________________
Porting to Rocky Linux 10, debranding and Rocky Linux branding'
Add partial riscv64 support for build root'
Provide basic VisionFive 2 support'
redhat: rpminspect: update emptyrpm list for kernel variants
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-64k-debug.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-64k.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-automotive-debug.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-automotive.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-debug.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-rt-64k-debug.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-rt-64k.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-rt-debug.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64-rt.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-aarch64.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-ppc64le-debug.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-ppc64le.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-riscv64-debug.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-riscv64.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-s390x-debug.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
4 changes: 2 additions & 2 deletions configs/kernel-6.12.0-s390x-zfcpdump.config
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ CONFIG_AS_VERSION=25000
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=25000
CONFIG_LLD_VERSION=0
CONFIG_RUSTC_VERSION=0
CONFIG_RUSTC_LLVM_VERSION=0
CONFIG_RUSTC_VERSION=107600
CONFIG_RUSTC_LLVM_VERSION=170006
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
Expand Down
Loading