mirror of
https://github.com/torvalds/linux.git
synced 2025-11-30 23:16:01 +07:00
Compare commits
12 Commits
7a0892d283
...
f824272b6e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f824272b6e | ||
|
|
b8a2c32b22 | ||
|
|
bb1a6ddcfa | ||
|
|
fa3ade5e8e | ||
|
|
e256f7b4e5 | ||
|
|
e0fd4d42e2 | ||
|
|
14473a1f88 | ||
|
|
31475b8811 | ||
|
|
dd14022a7c | ||
|
|
e1a97a627c | ||
|
|
0a8fb03fe7 | ||
|
|
ebd4469e7a |
2
.mailmap
2
.mailmap
@@ -426,7 +426,7 @@ Kenneth W Chen <kenneth.w.chen@intel.com>
|
||||
Kenneth Westfield <quic_kwestfie@quicinc.com> <kwestfie@codeaurora.org>
|
||||
Kiran Gunda <quic_kgunda@quicinc.com> <kgunda@codeaurora.org>
|
||||
Kirill Tkhai <tkhai@ya.ru> <ktkhai@virtuozzo.com>
|
||||
Kirill A. Shutemov <kas@kernel.org> <kirill.shutemov@linux.intel.com>
|
||||
Kiryl Shutsemau <kas@kernel.org> <kirill.shutemov@linux.intel.com>
|
||||
Kishon Vijay Abraham I <kishon@kernel.org> <kishon@ti.com>
|
||||
Konrad Dybcio <konradybcio@kernel.org> <konrad.dybcio@linaro.org>
|
||||
Konrad Dybcio <konradybcio@kernel.org> <konrad.dybcio@somainline.org>
|
||||
|
||||
@@ -27851,7 +27851,7 @@ F: arch/x86/kernel/stacktrace.c
|
||||
F: arch/x86/kernel/unwind_*.c
|
||||
|
||||
X86 TRUST DOMAIN EXTENSIONS (TDX)
|
||||
M: Kirill A. Shutemov <kas@kernel.org>
|
||||
M: Kiryl Shutsemau <kas@kernel.org>
|
||||
R: Dave Hansen <dave.hansen@linux.intel.com>
|
||||
R: Rick Edgecombe <rick.p.edgecombe@intel.com>
|
||||
L: x86@kernel.org
|
||||
|
||||
@@ -1154,17 +1154,15 @@ static inline pte_t pte_mkhuge(pte_t pte)
|
||||
#define IPTE_NODAT 0x400
|
||||
#define IPTE_GUEST_ASCE 0x800
|
||||
|
||||
static __always_inline void __ptep_rdp(unsigned long addr, pte_t *ptep,
|
||||
unsigned long opt, unsigned long asce,
|
||||
int local)
|
||||
static __always_inline void __ptep_rdp(unsigned long addr, pte_t *ptep, int local)
|
||||
{
|
||||
unsigned long pto;
|
||||
|
||||
pto = __pa(ptep) & ~(PTRS_PER_PTE * sizeof(pte_t) - 1);
|
||||
asm volatile(".insn rrf,0xb98b0000,%[r1],%[r2],%[asce],%[m4]"
|
||||
asm volatile(".insn rrf,0xb98b0000,%[r1],%[r2],%%r0,%[m4]"
|
||||
: "+m" (*ptep)
|
||||
: [r1] "a" (pto), [r2] "a" ((addr & PAGE_MASK) | opt),
|
||||
[asce] "a" (asce), [m4] "i" (local));
|
||||
: [r1] "a" (pto), [r2] "a" (addr & PAGE_MASK),
|
||||
[m4] "i" (local));
|
||||
}
|
||||
|
||||
static __always_inline void __ptep_ipte(unsigned long address, pte_t *ptep,
|
||||
@@ -1348,7 +1346,7 @@ static inline void flush_tlb_fix_spurious_fault(struct vm_area_struct *vma,
|
||||
* A local RDP can be used to do the flush.
|
||||
*/
|
||||
if (cpu_has_rdp() && !(pte_val(*ptep) & _PAGE_PROTECT))
|
||||
__ptep_rdp(address, ptep, 0, 0, 1);
|
||||
__ptep_rdp(address, ptep, 1);
|
||||
}
|
||||
#define flush_tlb_fix_spurious_fault flush_tlb_fix_spurious_fault
|
||||
|
||||
|
||||
@@ -274,9 +274,9 @@ void ptep_reset_dat_prot(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
|
||||
preempt_disable();
|
||||
atomic_inc(&mm->context.flush_count);
|
||||
if (cpumask_equal(mm_cpumask(mm), cpumask_of(smp_processor_id())))
|
||||
__ptep_rdp(addr, ptep, 0, 0, 1);
|
||||
__ptep_rdp(addr, ptep, 1);
|
||||
else
|
||||
__ptep_rdp(addr, ptep, 0, 0, 0);
|
||||
__ptep_rdp(addr, ptep, 0);
|
||||
/*
|
||||
* PTE is not invalidated by RDP, only _PAGE_PROTECT is cleared. That
|
||||
* means it is still valid and active, and must not be changed according
|
||||
|
||||
@@ -1037,7 +1037,14 @@ static void init_amd_zen4(struct cpuinfo_x86 *c)
|
||||
|
||||
static const struct x86_cpu_id zen5_rdseed_microcode[] = {
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x02, 0x1, 0x0b00215a),
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x08, 0x1, 0x0b008121),
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x11, 0x0, 0x0b101054),
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x24, 0x0, 0x0b204037),
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x44, 0x0, 0x0b404035),
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x44, 0x1, 0x0b404108),
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x60, 0x0, 0x0b600037),
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x68, 0x0, 0x0b608038),
|
||||
ZEN_MODEL_STEP_UCODE(0x1a, 0x70, 0x0, 0x0b700037),
|
||||
{},
|
||||
};
|
||||
|
||||
|
||||
@@ -224,6 +224,7 @@ static bool need_sha_check(u32 cur_rev)
|
||||
case 0xb1010: return cur_rev <= 0xb101046; break;
|
||||
case 0xb2040: return cur_rev <= 0xb204031; break;
|
||||
case 0xb4040: return cur_rev <= 0xb404031; break;
|
||||
case 0xb4041: return cur_rev <= 0xb404101; break;
|
||||
case 0xb6000: return cur_rev <= 0xb600031; break;
|
||||
case 0xb6080: return cur_rev <= 0xb608031; break;
|
||||
case 0xb7000: return cur_rev <= 0xb700031; break;
|
||||
|
||||
@@ -166,7 +166,8 @@ static int riscv_intc_domain_alloc(struct irq_domain *domain,
|
||||
static const struct irq_domain_ops riscv_intc_domain_ops = {
|
||||
.map = riscv_intc_domain_map,
|
||||
.xlate = irq_domain_xlate_onecell,
|
||||
.alloc = riscv_intc_domain_alloc
|
||||
.alloc = riscv_intc_domain_alloc,
|
||||
.free = irq_domain_free_irqs_top,
|
||||
};
|
||||
|
||||
static struct fwnode_handle *riscv_intc_hwnode(void)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
*/
|
||||
static inline int arch_xfer_to_guest_mode_handle_work(unsigned long ti_work);
|
||||
|
||||
#ifndef arch_xfer_to_guest_mode_work
|
||||
#ifndef arch_xfer_to_guest_mode_handle_work
|
||||
static inline int arch_xfer_to_guest_mode_handle_work(unsigned long ti_work)
|
||||
{
|
||||
return 0;
|
||||
|
||||
@@ -475,12 +475,6 @@ static int do_timer_create(clockid_t which_clock, struct sigevent *event,
|
||||
if (!kc->timer_create)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
new_timer = alloc_posix_timer();
|
||||
if (unlikely(!new_timer))
|
||||
return -EAGAIN;
|
||||
|
||||
spin_lock_init(&new_timer->it_lock);
|
||||
|
||||
/* Special case for CRIU to restore timers with a given timer ID. */
|
||||
if (unlikely(current->signal->timer_create_restore_ids)) {
|
||||
if (copy_from_user(&req_id, created_timer_id, sizeof(req_id)))
|
||||
@@ -490,6 +484,12 @@ static int do_timer_create(clockid_t which_clock, struct sigevent *event,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
new_timer = alloc_posix_timer();
|
||||
if (unlikely(!new_timer))
|
||||
return -EAGAIN;
|
||||
|
||||
spin_lock_init(&new_timer->it_lock);
|
||||
|
||||
/*
|
||||
* Add the timer to the hash table. The timer is not yet valid
|
||||
* after insertion, but has a unique ID allocated.
|
||||
|
||||
Reference in New Issue
Block a user