All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Xiaoyao Li <xiaoyao.li@intel.com>,
	Sean Christopherson <sean.j.christopherson@intel.com>,
	Chenyi Qiang <chenyi.qiang@intel.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.10 093/103] KVM: VMX: Convert vcpu_vmx.exit_reason to a union
Date: Mon, 19 Apr 2021 15:06:44 +0200	[thread overview]
Message-ID: <20210419130530.985524656@linuxfoundation.org> (raw)
In-Reply-To: <20210419130527.791982064@linuxfoundation.org>

From: Sean Christopherson <sean.j.christopherson@intel.com>

[ Upstream commit 8e53324021645f820a01bf8aa745711c802c8542 ]

Convert vcpu_vmx.exit_reason from a u32 to a union (of size u32).  The
full VM_EXIT_REASON field is comprised of a 16-bit basic exit reason in
bits 15:0, and single-bit modifiers in bits 31:16.

Historically, KVM has only had to worry about handling the "failed
VM-Entry" modifier, which could only be set in very specific flows and
required dedicated handling.  I.e. manually stripping the FAILED_VMENTRY
bit was a somewhat viable approach.  But even with only a single bit to
worry about, KVM has had several bugs related to comparing a basic exit
reason against the full exit reason store in vcpu_vmx.

Upcoming Intel features, e.g. SGX, will add new modifier bits that can
be set on more or less any VM-Exit, as opposed to the significantly more
restricted FAILED_VMENTRY, i.e. correctly handling everything in one-off
flows isn't scalable.  Tracking exit reason in a union forces code to
explicitly choose between consuming the full exit reason and the basic
exit, and is a convenient way to document and access the modifiers.

No functional change intended.

Cc: Xiaoyao Li <xiaoyao.li@intel.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Chenyi Qiang <chenyi.qiang@intel.com>
Message-Id: <20201106090315.18606-2-chenyi.qiang@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/kvm/vmx/nested.c | 42 +++++++++++++++---------
 arch/x86/kvm/vmx/vmx.c    | 68 ++++++++++++++++++++-------------------
 arch/x86/kvm/vmx/vmx.h    | 25 +++++++++++++-
 3 files changed, 86 insertions(+), 49 deletions(-)

diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
index f3eca4526778..15532feb19f1 100644
--- a/arch/x86/kvm/vmx/nested.c
+++ b/arch/x86/kvm/vmx/nested.c
@@ -3329,7 +3329,11 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
 	struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
 	enum vm_entry_failure_code entry_failure_code;
 	bool evaluate_pending_interrupts;
-	u32 exit_reason, failed_index;
+	union vmx_exit_reason exit_reason = {
+		.basic = EXIT_REASON_INVALID_STATE,
+		.failed_vmentry = 1,
+	};
+	u32 failed_index;
 
 	if (kvm_check_request(KVM_REQ_TLB_FLUSH_CURRENT, vcpu))
 		kvm_vcpu_flush_tlb_current(vcpu);
@@ -3381,7 +3385,7 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
 
 		if (nested_vmx_check_guest_state(vcpu, vmcs12,
 						 &entry_failure_code)) {
-			exit_reason = EXIT_REASON_INVALID_STATE;
+			exit_reason.basic = EXIT_REASON_INVALID_STATE;
 			vmcs12->exit_qualification = entry_failure_code;
 			goto vmentry_fail_vmexit;
 		}
@@ -3392,7 +3396,7 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
 		vcpu->arch.tsc_offset += vmcs12->tsc_offset;
 
 	if (prepare_vmcs02(vcpu, vmcs12, &entry_failure_code)) {
-		exit_reason = EXIT_REASON_INVALID_STATE;
+		exit_reason.basic = EXIT_REASON_INVALID_STATE;
 		vmcs12->exit_qualification = entry_failure_code;
 		goto vmentry_fail_vmexit_guest_mode;
 	}
@@ -3402,7 +3406,7 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
 						   vmcs12->vm_entry_msr_load_addr,
 						   vmcs12->vm_entry_msr_load_count);
 		if (failed_index) {
-			exit_reason = EXIT_REASON_MSR_LOAD_FAIL;
+			exit_reason.basic = EXIT_REASON_MSR_LOAD_FAIL;
 			vmcs12->exit_qualification = failed_index;
 			goto vmentry_fail_vmexit_guest_mode;
 		}
@@ -3470,7 +3474,7 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
 		return NVMX_VMENTRY_VMEXIT;
 
 	load_vmcs12_host_state(vcpu, vmcs12);
-	vmcs12->vm_exit_reason = exit_reason | VMX_EXIT_REASONS_FAILED_VMENTRY;
+	vmcs12->vm_exit_reason = exit_reason.full;
 	if (enable_shadow_vmcs || vmx->nested.hv_evmcs)
 		vmx->nested.need_vmcs12_to_shadow_sync = true;
 	return NVMX_VMENTRY_VMEXIT;
@@ -5533,7 +5537,12 @@ static int handle_vmfunc(struct kvm_vcpu *vcpu)
 	return kvm_skip_emulated_instruction(vcpu);
 
 fail:
-	nested_vmx_vmexit(vcpu, vmx->exit_reason,
+	/*
+	 * This is effectively a reflected VM-Exit, as opposed to a synthesized
+	 * nested VM-Exit.  Pass the original exit reason, i.e. don't hardcode
+	 * EXIT_REASON_VMFUNC as the exit reason.
+	 */
+	nested_vmx_vmexit(vcpu, vmx->exit_reason.full,
 			  vmx_get_intr_info(vcpu),
 			  vmx_get_exit_qual(vcpu));
 	return 1;
@@ -5601,7 +5610,8 @@ static bool nested_vmx_exit_handled_io(struct kvm_vcpu *vcpu,
  * MSR bitmap. This may be the case even when L0 doesn't use MSR bitmaps.
  */
 static bool nested_vmx_exit_handled_msr(struct kvm_vcpu *vcpu,
-	struct vmcs12 *vmcs12, u32 exit_reason)
+					struct vmcs12 *vmcs12,
+					union vmx_exit_reason exit_reason)
 {
 	u32 msr_index = kvm_rcx_read(vcpu);
 	gpa_t bitmap;
@@ -5615,7 +5625,7 @@ static bool nested_vmx_exit_handled_msr(struct kvm_vcpu *vcpu,
 	 * First we need to figure out which of the four to use:
 	 */
 	bitmap = vmcs12->msr_bitmap;
-	if (exit_reason == EXIT_REASON_MSR_WRITE)
+	if (exit_reason.basic == EXIT_REASON_MSR_WRITE)
 		bitmap += 2048;
 	if (msr_index >= 0xc0000000) {
 		msr_index -= 0xc0000000;
@@ -5752,11 +5762,12 @@ static bool nested_vmx_exit_handled_mtf(struct vmcs12 *vmcs12)
  * Return true if L0 wants to handle an exit from L2 regardless of whether or not
  * L1 wants the exit.  Only call this when in is_guest_mode (L2).
  */
-static bool nested_vmx_l0_wants_exit(struct kvm_vcpu *vcpu, u32 exit_reason)
+static bool nested_vmx_l0_wants_exit(struct kvm_vcpu *vcpu,
+				     union vmx_exit_reason exit_reason)
 {
 	u32 intr_info;
 
-	switch ((u16)exit_reason) {
+	switch ((u16)exit_reason.basic) {
 	case EXIT_REASON_EXCEPTION_NMI:
 		intr_info = vmx_get_intr_info(vcpu);
 		if (is_nmi(intr_info))
@@ -5812,12 +5823,13 @@ static bool nested_vmx_l0_wants_exit(struct kvm_vcpu *vcpu, u32 exit_reason)
  * Return 1 if L1 wants to intercept an exit from L2.  Only call this when in
  * is_guest_mode (L2).
  */
-static bool nested_vmx_l1_wants_exit(struct kvm_vcpu *vcpu, u32 exit_reason)
+static bool nested_vmx_l1_wants_exit(struct kvm_vcpu *vcpu,
+				     union vmx_exit_reason exit_reason)
 {
 	struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
 	u32 intr_info;
 
-	switch ((u16)exit_reason) {
+	switch ((u16)exit_reason.basic) {
 	case EXIT_REASON_EXCEPTION_NMI:
 		intr_info = vmx_get_intr_info(vcpu);
 		if (is_nmi(intr_info))
@@ -5936,7 +5948,7 @@ static bool nested_vmx_l1_wants_exit(struct kvm_vcpu *vcpu, u32 exit_reason)
 bool nested_vmx_reflect_vmexit(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
-	u32 exit_reason = vmx->exit_reason;
+	union vmx_exit_reason exit_reason = vmx->exit_reason;
 	unsigned long exit_qual;
 	u32 exit_intr_info;
 
@@ -5955,7 +5967,7 @@ bool nested_vmx_reflect_vmexit(struct kvm_vcpu *vcpu)
 		goto reflect_vmexit;
 	}
 
-	trace_kvm_nested_vmexit(exit_reason, vcpu, KVM_ISA_VMX);
+	trace_kvm_nested_vmexit(exit_reason.full, vcpu, KVM_ISA_VMX);
 
 	/* If L0 (KVM) wants the exit, it trumps L1's desires. */
 	if (nested_vmx_l0_wants_exit(vcpu, exit_reason))
@@ -5981,7 +5993,7 @@ bool nested_vmx_reflect_vmexit(struct kvm_vcpu *vcpu)
 	exit_qual = vmx_get_exit_qual(vcpu);
 
 reflect_vmexit:
-	nested_vmx_vmexit(vcpu, exit_reason, exit_intr_info, exit_qual);
+	nested_vmx_vmexit(vcpu, exit_reason.full, exit_intr_info, exit_qual);
 	return true;
 }
 
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index 82af43e14b09..0b229282dd50 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -1578,7 +1578,7 @@ static int skip_emulated_instruction(struct kvm_vcpu *vcpu)
 	 * i.e. we end up advancing IP with some random value.
 	 */
 	if (!static_cpu_has(X86_FEATURE_HYPERVISOR) ||
-	    to_vmx(vcpu)->exit_reason != EXIT_REASON_EPT_MISCONFIG) {
+	    to_vmx(vcpu)->exit_reason.basic != EXIT_REASON_EPT_MISCONFIG) {
 		orig_rip = kvm_rip_read(vcpu);
 		rip = orig_rip + vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
 #ifdef CONFIG_X86_64
@@ -5687,7 +5687,7 @@ static void vmx_get_exit_info(struct kvm_vcpu *vcpu, u64 *info1, u64 *info2,
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
 
 	*info1 = vmx_get_exit_qual(vcpu);
-	if (!(vmx->exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY)) {
+	if (!(vmx->exit_reason.failed_vmentry)) {
 		*info2 = vmx->idt_vectoring_info;
 		*intr_info = vmx_get_intr_info(vcpu);
 		if (is_exception_with_error_code(*intr_info))
@@ -5931,8 +5931,9 @@ void dump_vmcs(void)
 static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
 {
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
-	u32 exit_reason = vmx->exit_reason;
+	union vmx_exit_reason exit_reason = vmx->exit_reason;
 	u32 vectoring_info = vmx->idt_vectoring_info;
+	u16 exit_handler_index;
 
 	/*
 	 * Flush logged GPAs PML buffer, this will make dirty_bitmap more
@@ -5974,11 +5975,11 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
 			return 1;
 	}
 
-	if (exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY) {
+	if (exit_reason.failed_vmentry) {
 		dump_vmcs();
 		vcpu->run->exit_reason = KVM_EXIT_FAIL_ENTRY;
 		vcpu->run->fail_entry.hardware_entry_failure_reason
-			= exit_reason;
+			= exit_reason.full;
 		vcpu->run->fail_entry.cpu = vcpu->arch.last_vmentry_cpu;
 		return 0;
 	}
@@ -6000,18 +6001,18 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
 	 * will cause infinite loop.
 	 */
 	if ((vectoring_info & VECTORING_INFO_VALID_MASK) &&
-			(exit_reason != EXIT_REASON_EXCEPTION_NMI &&
-			exit_reason != EXIT_REASON_EPT_VIOLATION &&
-			exit_reason != EXIT_REASON_PML_FULL &&
-			exit_reason != EXIT_REASON_APIC_ACCESS &&
-			exit_reason != EXIT_REASON_TASK_SWITCH)) {
+	    (exit_reason.basic != EXIT_REASON_EXCEPTION_NMI &&
+	     exit_reason.basic != EXIT_REASON_EPT_VIOLATION &&
+	     exit_reason.basic != EXIT_REASON_PML_FULL &&
+	     exit_reason.basic != EXIT_REASON_APIC_ACCESS &&
+	     exit_reason.basic != EXIT_REASON_TASK_SWITCH)) {
 		vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
 		vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV;
 		vcpu->run->internal.ndata = 3;
 		vcpu->run->internal.data[0] = vectoring_info;
-		vcpu->run->internal.data[1] = exit_reason;
+		vcpu->run->internal.data[1] = exit_reason.full;
 		vcpu->run->internal.data[2] = vcpu->arch.exit_qualification;
-		if (exit_reason == EXIT_REASON_EPT_MISCONFIG) {
+		if (exit_reason.basic == EXIT_REASON_EPT_MISCONFIG) {
 			vcpu->run->internal.ndata++;
 			vcpu->run->internal.data[3] =
 				vmcs_read64(GUEST_PHYSICAL_ADDRESS);
@@ -6043,38 +6044,39 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
 	if (exit_fastpath != EXIT_FASTPATH_NONE)
 		return 1;
 
-	if (exit_reason >= kvm_vmx_max_exit_handlers)
+	if (exit_reason.basic >= kvm_vmx_max_exit_handlers)
 		goto unexpected_vmexit;
 #ifdef CONFIG_RETPOLINE
-	if (exit_reason == EXIT_REASON_MSR_WRITE)
+	if (exit_reason.basic == EXIT_REASON_MSR_WRITE)
 		return kvm_emulate_wrmsr(vcpu);
-	else if (exit_reason == EXIT_REASON_PREEMPTION_TIMER)
+	else if (exit_reason.basic == EXIT_REASON_PREEMPTION_TIMER)
 		return handle_preemption_timer(vcpu);
-	else if (exit_reason == EXIT_REASON_INTERRUPT_WINDOW)
+	else if (exit_reason.basic == EXIT_REASON_INTERRUPT_WINDOW)
 		return handle_interrupt_window(vcpu);
-	else if (exit_reason == EXIT_REASON_EXTERNAL_INTERRUPT)
+	else if (exit_reason.basic == EXIT_REASON_EXTERNAL_INTERRUPT)
 		return handle_external_interrupt(vcpu);
-	else if (exit_reason == EXIT_REASON_HLT)
+	else if (exit_reason.basic == EXIT_REASON_HLT)
 		return kvm_emulate_halt(vcpu);
-	else if (exit_reason == EXIT_REASON_EPT_MISCONFIG)
+	else if (exit_reason.basic == EXIT_REASON_EPT_MISCONFIG)
 		return handle_ept_misconfig(vcpu);
 #endif
 
-	exit_reason = array_index_nospec(exit_reason,
-					 kvm_vmx_max_exit_handlers);
-	if (!kvm_vmx_exit_handlers[exit_reason])
+	exit_handler_index = array_index_nospec((u16)exit_reason.basic,
+						kvm_vmx_max_exit_handlers);
+	if (!kvm_vmx_exit_handlers[exit_handler_index])
 		goto unexpected_vmexit;
 
-	return kvm_vmx_exit_handlers[exit_reason](vcpu);
+	return kvm_vmx_exit_handlers[exit_handler_index](vcpu);
 
 unexpected_vmexit:
-	vcpu_unimpl(vcpu, "vmx: unexpected exit reason 0x%x\n", exit_reason);
+	vcpu_unimpl(vcpu, "vmx: unexpected exit reason 0x%x\n",
+		    exit_reason.full);
 	dump_vmcs();
 	vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
 	vcpu->run->internal.suberror =
 			KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON;
 	vcpu->run->internal.ndata = 2;
-	vcpu->run->internal.data[0] = exit_reason;
+	vcpu->run->internal.data[0] = exit_reason.full;
 	vcpu->run->internal.data[1] = vcpu->arch.last_vmentry_cpu;
 	return 0;
 }
@@ -6393,9 +6395,9 @@ static void vmx_handle_exit_irqoff(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
 
-	if (vmx->exit_reason == EXIT_REASON_EXTERNAL_INTERRUPT)
+	if (vmx->exit_reason.basic == EXIT_REASON_EXTERNAL_INTERRUPT)
 		handle_external_interrupt_irqoff(vcpu);
-	else if (vmx->exit_reason == EXIT_REASON_EXCEPTION_NMI)
+	else if (vmx->exit_reason.basic == EXIT_REASON_EXCEPTION_NMI)
 		handle_exception_nmi_irqoff(vmx);
 }
 
@@ -6583,7 +6585,7 @@ void noinstr vmx_update_host_rsp(struct vcpu_vmx *vmx, unsigned long host_rsp)
 
 static fastpath_t vmx_exit_handlers_fastpath(struct kvm_vcpu *vcpu)
 {
-	switch (to_vmx(vcpu)->exit_reason) {
+	switch (to_vmx(vcpu)->exit_reason.basic) {
 	case EXIT_REASON_MSR_WRITE:
 		return handle_fastpath_set_msr_irqoff(vcpu);
 	case EXIT_REASON_PREEMPTION_TIMER:
@@ -6782,17 +6784,17 @@ static fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu)
 	vmx->idt_vectoring_info = 0;
 
 	if (unlikely(vmx->fail)) {
-		vmx->exit_reason = 0xdead;
+		vmx->exit_reason.full = 0xdead;
 		return EXIT_FASTPATH_NONE;
 	}
 
-	vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
-	if (unlikely((u16)vmx->exit_reason == EXIT_REASON_MCE_DURING_VMENTRY))
+	vmx->exit_reason.full = vmcs_read32(VM_EXIT_REASON);
+	if (unlikely((u16)vmx->exit_reason.basic == EXIT_REASON_MCE_DURING_VMENTRY))
 		kvm_machine_check();
 
-	trace_kvm_exit(vmx->exit_reason, vcpu, KVM_ISA_VMX);
+	trace_kvm_exit(vmx->exit_reason.full, vcpu, KVM_ISA_VMX);
 
-	if (unlikely(vmx->exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY))
+	if (unlikely(vmx->exit_reason.failed_vmentry))
 		return EXIT_FASTPATH_NONE;
 
 	vmx->loaded_vmcs->launched = 1;
diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h
index f6f66e5c6510..ae3a89ac0600 100644
--- a/arch/x86/kvm/vmx/vmx.h
+++ b/arch/x86/kvm/vmx/vmx.h
@@ -70,6 +70,29 @@ struct pt_desc {
 	struct pt_ctx guest;
 };
 
+union vmx_exit_reason {
+	struct {
+		u32	basic			: 16;
+		u32	reserved16		: 1;
+		u32	reserved17		: 1;
+		u32	reserved18		: 1;
+		u32	reserved19		: 1;
+		u32	reserved20		: 1;
+		u32	reserved21		: 1;
+		u32	reserved22		: 1;
+		u32	reserved23		: 1;
+		u32	reserved24		: 1;
+		u32	reserved25		: 1;
+		u32	reserved26		: 1;
+		u32	enclave_mode		: 1;
+		u32	smi_pending_mtf		: 1;
+		u32	smi_from_vmx_root	: 1;
+		u32	reserved30		: 1;
+		u32	failed_vmentry		: 1;
+	};
+	u32 full;
+};
+
 /*
  * The nested_vmx structure is part of vcpu_vmx, and holds information we need
  * for correct emulation of VMX (i.e., nested VMX) on this vcpu.
@@ -244,7 +267,7 @@ struct vcpu_vmx {
 	int vpid;
 	bool emulation_required;
 
-	u32 exit_reason;
+	union vmx_exit_reason exit_reason;
 
 	/* Posted interrupt descriptor */
 	struct pi_desc pi_desc;
-- 
2.30.2




  parent reply	other threads:[~2021-04-19 13:30 UTC|newest]

Thread overview: 125+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-19 13:05 [PATCH 5.10 000/103] 5.10.32-rc1 review Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 001/103] net/sctp: fix race condition in sctp_destroy_sock Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 002/103] mtd: rawnand: mtk: Fix WAITRDY break condition and timeout Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 003/103] Input: nspire-keypad - enable interrupts only when opened Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 004/103] gpio: sysfs: Obey valid_mask Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 005/103] dmaengine: idxd: Fix clobbering of SWERR overflow bit on writeback Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 006/103] dmaengine: idxd: fix delta_rec and crc size field for completion record Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 007/103] dmaengine: idxd: fix opcap sysfs attribute output Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 008/103] dmaengine: idxd: fix wq size store permission state Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 009/103] dmaengine: dw: Make it dependent to HAS_IOMEM Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 010/103] dmaengine: Fix a double free in dma_async_device_register Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 011/103] dmaengine: plx_dma: add a missing put_device() on error path Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 012/103] dmaengine: idxd: fix wq cleanup of WQCFG registers Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 013/103] ACPI: x86: Call acpi_boot_table_init() after acpi_table_upgrade() Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 014/103] ARM: dts: Drop duplicate sha2md5_fck to fix clk_disable race Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 015/103] ARM: dts: Fix moving mmc devices with aliases for omap4 & 5 Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 016/103] lockdep: Add a missing initialization hint to the "INFO: Trying to register non-static key" message Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 017/103] arc: kernel: Return -EFAULT if copy_to_user() fails Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 018/103] iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_enqueue_hcmd() Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 019/103] xfrm: BEET mode doesnt support fragments for inner packets Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 020/103] ASoC: max98373: Changed amp shutdown register as volatile Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 021/103] ASoC: max98373: Added 30ms turn on/off time delay Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 022/103] gpu/xen: Fix a use after free in xen_drm_drv_init Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 023/103] neighbour: Disregard DEAD dst in neigh_update Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 024/103] ARM: keystone: fix integer overflow warning Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 025/103] ARM: omap1: fix building with clang IAS Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 026/103] drm/msm: Fix a5xx/a6xx timestamps Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 027/103] ASoC: fsl_esai: Fix TDM slot setup for I2S mode Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 028/103] scsi: scsi_transport_srp: Dont block target in SRP_PORT_LOST state Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 029/103] iwlwifi: add support for Qu with AX201 device Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 030/103] net: ieee802154: stop dump llsec keys for monitors Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 031/103] net: ieee802154: forbid monitor for add llsec key Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 032/103] net: ieee802154: forbid monitor for del " Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 033/103] net: ieee802154: stop dump llsec devs for monitors Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 034/103] net: ieee802154: forbid monitor for add llsec dev Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 035/103] net: ieee802154: forbid monitor for del " Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 036/103] net: ieee802154: stop dump llsec devkeys for monitors Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 037/103] net: ieee802154: forbid monitor for add llsec devkey Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 038/103] net: ieee802154: forbid monitor for del " Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 039/103] net: ieee802154: stop dump llsec seclevels for monitors Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 040/103] net: ieee802154: forbid monitor for add llsec seclevel Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 041/103] pcnet32: Use pci_resource_len to validate PCI resource Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 042/103] net/rds: Avoid potential use after free in rds_send_remove_from_sock Greg Kroah-Hartman
2021-04-19 21:29   ` Pavel Machek
2021-04-20  7:21     ` Greg Kroah-Hartman
2021-04-20  7:13   ` Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 043/103] net: tipc: Fix spelling errors in net/tipc module Greg Kroah-Hartman
2021-04-19 21:32   ` Pavel Machek
2021-04-20  7:34     ` Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 044/103] mac80211: clear sta->fast_rx when STA removed from 4-addr VLAN Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 045/103] virt_wifi: Return micros for BSS TSF values Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 046/103] lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 047/103] Input: s6sy761 - fix coordinate read bit shift Greg Kroah-Hartman
2021-04-19 13:05 ` [PATCH 5.10 048/103] Input: i8042 - fix Pegatron C15B ID entry Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 049/103] HID: wacom: set EV_KEY and EV_ABS only for non-HID_GENERIC type of devices Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 050/103] dm verity fec: fix misaligned RS roots IO Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 051/103] readdir: make sure to verify directory entry for legacy interfaces too Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 052/103] arm64: fix inline asm in load_unaligned_zeropad() Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 053/103] arm64: alternatives: Move length validation in alternative_{insn, endif} Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 054/103] vfio/pci: Add missing range check in vfio_pci_mmap Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 055/103] riscv: Fix spelling mistake "SPARSEMEM" to "SPARSMEM" Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 056/103] scsi: libsas: Reset num_scatter if libata marks qc as NODATA Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 057/103] ixgbe: fix unbalanced device enable/disable in suspend/resume Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 058/103] netfilter: flowtable: fix NAT IPv6 offload mangling Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 059/103] netfilter: conntrack: do not print icmpv6 as unknown via /proc Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 060/103] ice: Fix potential infinite loop when using u8 loop counter Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 061/103] libnvdimm/region: Fix nvdimm_has_flush() to handle ND_REGION_ASYNC Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 062/103] netfilter: bridge: add pre_exit hooks for ebtable unregistration Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 063/103] netfilter: arp_tables: add pre_exit hook for table unregister Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 064/103] libbpf: Fix potential NULL pointer dereference Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 065/103] net: macb: fix the restore of cmp registers Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 066/103] net/mlx5e: fix ingress_ifindex check in mlx5e_flower_parse_meta Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 067/103] netfilter: nft_limit: avoid possible divide error in nft_limit_init Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 068/103] net/mlx5e: Fix setting of RS FEC mode Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 069/103] net: davicom: Fix regulator not turned off on failed probe Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 070/103] net: sit: Unregister catch-all devices Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 071/103] net: ip6_tunnel: " Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 072/103] mm: ptdump: fix build failure Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 073/103] net: Make tcp_allowed_congestion_control readonly in non-init netns Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 074/103] i40e: fix the panic when running bpf in xdpdrv mode Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 075/103] ethtool: pause: make sure we init driver stats Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 076/103] ia64: remove duplicate entries in generic_defconfig Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 077/103] ia64: tools: remove inclusion of ia64-specific version of errno.h header Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 078/103] ibmvnic: avoid calling napi_disable() twice Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 079/103] ibmvnic: remove duplicate napi_schedule call in do_reset function Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 080/103] ibmvnic: remove duplicate napi_schedule call in open function Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 081/103] ch_ktls: Fix kernel panic Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 082/103] ch_ktls: fix device connection close Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 083/103] ch_ktls: tcb close causes tls connection failure Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 084/103] ch_ktls: do not send snd_una update to TCB in middle Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 085/103] gro: ensure frag0 meets IP header alignment Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 086/103] ARM: OMAP2+: Fix warning for omap_init_time_of() Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 087/103] ARM: 9069/1: NOMMU: Fix conversion for_each_membock() to for_each_mem_range() Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 088/103] ARM: footbridge: fix PCI interrupt mapping Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 089/103] ARM: OMAP2+: Fix uninitialized sr_inst Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 090/103] arm64: dts: allwinner: Fix SD card CD GPIO for SOPine systems Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 091/103] arm64: dts: allwinner: h6: beelink-gs1: Remove ext. 32 kHz osc reference Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 092/103] bpf: Use correct permission flag for mixed signed bounds arithmetic Greg Kroah-Hartman
2021-04-19 13:06 ` Greg Kroah-Hartman [this message]
2021-04-19 13:06 ` [PATCH 5.10 094/103] KVM: VMX: Dont use vcpu->run->internal.ndata as an array index Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 095/103] r8169: tweak max read request size for newer chips also in jumbo mtu mode Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 096/103] r8169: dont advertise pause in jumbo mode Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 097/103] bpf: Ensure off_reg has no mixed signed bounds for all types Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 098/103] bpf: Move off_reg into sanitize_ptr_alu Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 099/103] ARM: 9071/1: uprobes: Dont hook on thumb instructions Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 100/103] arm64: mte: Ensure TIF_MTE_ASYNC_FAULT is set atomically Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 101/103] bpf: Rework ptr_limit into alu_limit and add common error path Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 102/103] bpf: Improve verifier error messages for users Greg Kroah-Hartman
2021-04-19 13:06 ` [PATCH 5.10 103/103] bpf: Move sanitize_val_alu out of op switch Greg Kroah-Hartman
2021-04-19 17:27 ` [PATCH 5.10 000/103] 5.10.32-rc1 review Fox Chen
2021-04-19 19:16   ` Patrick Mccormick
2021-04-23 15:10     ` Greg Kroah-Hartman
2021-04-19 21:07 ` Florian Fainelli
2021-04-23 15:11   ` Greg Kroah-Hartman
2021-04-19 21:30 ` Pavel Machek
2021-04-23 15:11   ` Greg Kroah-Hartman
2021-04-20  0:08 ` Shuah Khan
2021-04-20  6:13 ` Jon Hunter
2021-04-20  6:50 ` Naresh Kamboju
2021-04-20  9:15 ` Sudip Mukherjee
2021-04-23 15:12   ` Greg Kroah-Hartman
2021-04-20 11:54 ` Andrei Rabusov
2021-04-23 15:12   ` Greg Kroah-Hartman
2021-04-21  6:20 ` Samuel Zou
2021-04-23 15:13   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210419130530.985524656@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=chenyi.qiang@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=sashal@kernel.org \
    --cc=sean.j.christopherson@intel.com \
    --cc=stable@vger.kernel.org \
    --cc=xiaoyao.li@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.