public inbox for linux-kernel@vger.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, Nana Liu <nanliu@redhat.com>,
	Peter Xu <peterx@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.15 094/135] kvm: selftests: do not use bitfields larger than 32-bits for PTEs
Date: Tue, 10 May 2022 15:07:56 +0200	[thread overview]
Message-ID: <20220510130743.106775674@linuxfoundation.org> (raw)
In-Reply-To: <20220510130740.392653815@linuxfoundation.org>

From: Paolo Bonzini <pbonzini@redhat.com>

[ Upstream commit f18b4aebe107d092e384b1ae680b1e1de7a0196d ]

Red Hat's QE team reported test failure on access_tracking_perf_test:

Testing guest mode: PA-bits:ANY, VA-bits:48,  4K pages
guest physical test memory offset: 0x3fffbffff000

Populating memory             : 0.684014577s
Writing to populated memory   : 0.006230175s
Reading from populated memory : 0.004557805s
==== Test Assertion Failure ====
  lib/kvm_util.c:1411: false
  pid=125806 tid=125809 errno=4 - Interrupted system call
     1  0x0000000000402f7c: addr_gpa2hva at kvm_util.c:1411
     2   (inlined by) addr_gpa2hva at kvm_util.c:1405
     3  0x0000000000401f52: lookup_pfn at access_tracking_perf_test.c:98
     4   (inlined by) mark_vcpu_memory_idle at access_tracking_perf_test.c:152
     5   (inlined by) vcpu_thread_main at access_tracking_perf_test.c:232
     6  0x00007fefe9ff81ce: ?? ??:0
     7  0x00007fefe9c64d82: ?? ??:0
  No vm physical memory at 0xffbffff000

I can easily reproduce it with a Intel(R) Xeon(R) CPU E5-2630 with 46 bits
PA.

It turns out that the address translation for clearing idle page tracking
returned a wrong result; addr_gva2gpa()'s last step, which is based on
"pte[index[0]].pfn", did the calculation with 40 bits length and the
high 12 bits got truncated.  In above case the GPA address to be returned
should be 0x3fffbffff000 for GVA 0xc0000000, but it got truncated into
0xffbffff000 and the subsequent gpa2hva lookup failed.

The width of operations on bit fields greater than 32-bit is
implementation defined, and differs between GCC (which uses the bitfield
precision) and clang (which uses 64-bit arithmetic), so this is a
potential minefield.  Remove the bit fields and using manual masking
instead.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2075036
Reported-by: Nana Liu <nanliu@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Tested-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../selftests/kvm/include/x86_64/processor.h  |  15 ++
 .../selftests/kvm/lib/x86_64/processor.c      | 192 +++++++-----------
 2 files changed, 92 insertions(+), 115 deletions(-)

diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools/testing/selftests/kvm/include/x86_64/processor.h
index 05e65ca1c30c..23861c8faa61 100644
--- a/tools/testing/selftests/kvm/include/x86_64/processor.h
+++ b/tools/testing/selftests/kvm/include/x86_64/processor.h
@@ -58,6 +58,21 @@
 /* CPUID.0x8000_0001.EDX */
 #define CPUID_GBPAGES		(1ul << 26)
 
+/* Page table bitfield declarations */
+#define PTE_PRESENT_MASK        BIT_ULL(0)
+#define PTE_WRITABLE_MASK       BIT_ULL(1)
+#define PTE_USER_MASK           BIT_ULL(2)
+#define PTE_ACCESSED_MASK       BIT_ULL(5)
+#define PTE_DIRTY_MASK          BIT_ULL(6)
+#define PTE_LARGE_MASK          BIT_ULL(7)
+#define PTE_GLOBAL_MASK         BIT_ULL(8)
+#define PTE_NX_MASK             BIT_ULL(63)
+
+#define PAGE_SHIFT		12
+
+#define PHYSICAL_PAGE_MASK      GENMASK_ULL(51, 12)
+#define PTE_GET_PFN(pte)        (((pte) & PHYSICAL_PAGE_MASK) >> PAGE_SHIFT)
+
 /* General Registers in 64-Bit Mode */
 struct gpr64_regs {
 	u64 rax;
diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/testing/selftests/kvm/lib/x86_64/processor.c
index da73b97e1e6d..46057079d8bb 100644
--- a/tools/testing/selftests/kvm/lib/x86_64/processor.c
+++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c
@@ -19,38 +19,6 @@
 
 vm_vaddr_t exception_handlers;
 
-/* Virtual translation table structure declarations */
-struct pageUpperEntry {
-	uint64_t present:1;
-	uint64_t writable:1;
-	uint64_t user:1;
-	uint64_t write_through:1;
-	uint64_t cache_disable:1;
-	uint64_t accessed:1;
-	uint64_t ignored_06:1;
-	uint64_t page_size:1;
-	uint64_t ignored_11_08:4;
-	uint64_t pfn:40;
-	uint64_t ignored_62_52:11;
-	uint64_t execute_disable:1;
-};
-
-struct pageTableEntry {
-	uint64_t present:1;
-	uint64_t writable:1;
-	uint64_t user:1;
-	uint64_t write_through:1;
-	uint64_t cache_disable:1;
-	uint64_t accessed:1;
-	uint64_t dirty:1;
-	uint64_t reserved_07:1;
-	uint64_t global:1;
-	uint64_t ignored_11_09:3;
-	uint64_t pfn:40;
-	uint64_t ignored_62_52:11;
-	uint64_t execute_disable:1;
-};
-
 void regs_dump(FILE *stream, struct kvm_regs *regs,
 	       uint8_t indent)
 {
@@ -195,23 +163,21 @@ static void *virt_get_pte(struct kvm_vm *vm, uint64_t pt_pfn, uint64_t vaddr,
 	return &page_table[index];
 }
 
-static struct pageUpperEntry *virt_create_upper_pte(struct kvm_vm *vm,
-						    uint64_t pt_pfn,
-						    uint64_t vaddr,
-						    uint64_t paddr,
-						    int level,
-						    enum x86_page_size page_size)
+static uint64_t *virt_create_upper_pte(struct kvm_vm *vm,
+				       uint64_t pt_pfn,
+				       uint64_t vaddr,
+				       uint64_t paddr,
+				       int level,
+				       enum x86_page_size page_size)
 {
-	struct pageUpperEntry *pte = virt_get_pte(vm, pt_pfn, vaddr, level);
-
-	if (!pte->present) {
-		pte->writable = true;
-		pte->present = true;
-		pte->page_size = (level == page_size);
-		if (pte->page_size)
-			pte->pfn = paddr >> vm->page_shift;
+	uint64_t *pte = virt_get_pte(vm, pt_pfn, vaddr, level);
+
+	if (!(*pte & PTE_PRESENT_MASK)) {
+		*pte = PTE_PRESENT_MASK | PTE_WRITABLE_MASK;
+		if (level == page_size)
+			*pte |= PTE_LARGE_MASK | (paddr & PHYSICAL_PAGE_MASK);
 		else
-			pte->pfn = vm_alloc_page_table(vm) >> vm->page_shift;
+			*pte |= vm_alloc_page_table(vm) & PHYSICAL_PAGE_MASK;
 	} else {
 		/*
 		 * Entry already present.  Assert that the caller doesn't want
@@ -221,7 +187,7 @@ static struct pageUpperEntry *virt_create_upper_pte(struct kvm_vm *vm,
 		TEST_ASSERT(level != page_size,
 			    "Cannot create hugepage at level: %u, vaddr: 0x%lx\n",
 			    page_size, vaddr);
-		TEST_ASSERT(!pte->page_size,
+		TEST_ASSERT(!(*pte & PTE_LARGE_MASK),
 			    "Cannot create page table at level: %u, vaddr: 0x%lx\n",
 			    level, vaddr);
 	}
@@ -232,8 +198,8 @@ void __virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr,
 		   enum x86_page_size page_size)
 {
 	const uint64_t pg_size = 1ull << ((page_size * 9) + 12);
-	struct pageUpperEntry *pml4e, *pdpe, *pde;
-	struct pageTableEntry *pte;
+	uint64_t *pml4e, *pdpe, *pde;
+	uint64_t *pte;
 
 	TEST_ASSERT(vm->mode == VM_MODE_PXXV48_4K,
 		    "Unknown or unsupported guest mode, mode: 0x%x", vm->mode);
@@ -257,24 +223,22 @@ void __virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr,
 	 */
 	pml4e = virt_create_upper_pte(vm, vm->pgd >> vm->page_shift,
 				      vaddr, paddr, 3, page_size);
-	if (pml4e->page_size)
+	if (*pml4e & PTE_LARGE_MASK)
 		return;
 
-	pdpe = virt_create_upper_pte(vm, pml4e->pfn, vaddr, paddr, 2, page_size);
-	if (pdpe->page_size)
+	pdpe = virt_create_upper_pte(vm, PTE_GET_PFN(*pml4e), vaddr, paddr, 2, page_size);
+	if (*pdpe & PTE_LARGE_MASK)
 		return;
 
-	pde = virt_create_upper_pte(vm, pdpe->pfn, vaddr, paddr, 1, page_size);
-	if (pde->page_size)
+	pde = virt_create_upper_pte(vm, PTE_GET_PFN(*pdpe), vaddr, paddr, 1, page_size);
+	if (*pde & PTE_LARGE_MASK)
 		return;
 
 	/* Fill in page table entry. */
-	pte = virt_get_pte(vm, pde->pfn, vaddr, 0);
-	TEST_ASSERT(!pte->present,
+	pte = virt_get_pte(vm, PTE_GET_PFN(*pde), vaddr, 0);
+	TEST_ASSERT(!(*pte & PTE_PRESENT_MASK),
 		    "PTE already present for 4k page at vaddr: 0x%lx\n", vaddr);
-	pte->pfn = paddr >> vm->page_shift;
-	pte->writable = true;
-	pte->present = 1;
+	*pte = PTE_PRESENT_MASK | PTE_WRITABLE_MASK | (paddr & PHYSICAL_PAGE_MASK);
 }
 
 void virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr)
@@ -282,12 +246,12 @@ void virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr)
 	__virt_pg_map(vm, vaddr, paddr, X86_PAGE_SIZE_4K);
 }
 
-static struct pageTableEntry *_vm_get_page_table_entry(struct kvm_vm *vm, int vcpuid,
+static uint64_t *_vm_get_page_table_entry(struct kvm_vm *vm, int vcpuid,
 						       uint64_t vaddr)
 {
 	uint16_t index[4];
-	struct pageUpperEntry *pml4e, *pdpe, *pde;
-	struct pageTableEntry *pte;
+	uint64_t *pml4e, *pdpe, *pde;
+	uint64_t *pte;
 	struct kvm_cpuid_entry2 *entry;
 	struct kvm_sregs sregs;
 	int max_phy_addr;
@@ -329,30 +293,29 @@ static struct pageTableEntry *_vm_get_page_table_entry(struct kvm_vm *vm, int vc
 	index[3] = (vaddr >> 39) & 0x1ffu;
 
 	pml4e = addr_gpa2hva(vm, vm->pgd);
-	TEST_ASSERT(pml4e[index[3]].present,
+	TEST_ASSERT(pml4e[index[3]] & PTE_PRESENT_MASK,
 		"Expected pml4e to be present for gva: 0x%08lx", vaddr);
-	TEST_ASSERT((*(uint64_t*)(&pml4e[index[3]]) &
-		(rsvd_mask | (1ull << 7))) == 0,
+	TEST_ASSERT((pml4e[index[3]] & (rsvd_mask | PTE_LARGE_MASK)) == 0,
 		"Unexpected reserved bits set.");
 
-	pdpe = addr_gpa2hva(vm, pml4e[index[3]].pfn * vm->page_size);
-	TEST_ASSERT(pdpe[index[2]].present,
+	pdpe = addr_gpa2hva(vm, PTE_GET_PFN(pml4e[index[3]]) * vm->page_size);
+	TEST_ASSERT(pdpe[index[2]] & PTE_PRESENT_MASK,
 		"Expected pdpe to be present for gva: 0x%08lx", vaddr);
-	TEST_ASSERT(pdpe[index[2]].page_size == 0,
+	TEST_ASSERT(!(pdpe[index[2]] & PTE_LARGE_MASK),
 		"Expected pdpe to map a pde not a 1-GByte page.");
-	TEST_ASSERT((*(uint64_t*)(&pdpe[index[2]]) & rsvd_mask) == 0,
+	TEST_ASSERT((pdpe[index[2]] & rsvd_mask) == 0,
 		"Unexpected reserved bits set.");
 
-	pde = addr_gpa2hva(vm, pdpe[index[2]].pfn * vm->page_size);
-	TEST_ASSERT(pde[index[1]].present,
+	pde = addr_gpa2hva(vm, PTE_GET_PFN(pdpe[index[2]]) * vm->page_size);
+	TEST_ASSERT(pde[index[1]] & PTE_PRESENT_MASK,
 		"Expected pde to be present for gva: 0x%08lx", vaddr);
-	TEST_ASSERT(pde[index[1]].page_size == 0,
+	TEST_ASSERT(!(pde[index[1]] & PTE_LARGE_MASK),
 		"Expected pde to map a pte not a 2-MByte page.");
-	TEST_ASSERT((*(uint64_t*)(&pde[index[1]]) & rsvd_mask) == 0,
+	TEST_ASSERT((pde[index[1]] & rsvd_mask) == 0,
 		"Unexpected reserved bits set.");
 
-	pte = addr_gpa2hva(vm, pde[index[1]].pfn * vm->page_size);
-	TEST_ASSERT(pte[index[0]].present,
+	pte = addr_gpa2hva(vm, PTE_GET_PFN(pde[index[1]]) * vm->page_size);
+	TEST_ASSERT(pte[index[0]] & PTE_PRESENT_MASK,
 		"Expected pte to be present for gva: 0x%08lx", vaddr);
 
 	return &pte[index[0]];
@@ -360,7 +323,7 @@ static struct pageTableEntry *_vm_get_page_table_entry(struct kvm_vm *vm, int vc
 
 uint64_t vm_get_page_table_entry(struct kvm_vm *vm, int vcpuid, uint64_t vaddr)
 {
-	struct pageTableEntry *pte = _vm_get_page_table_entry(vm, vcpuid, vaddr);
+	uint64_t *pte = _vm_get_page_table_entry(vm, vcpuid, vaddr);
 
 	return *(uint64_t *)pte;
 }
@@ -368,18 +331,17 @@ uint64_t vm_get_page_table_entry(struct kvm_vm *vm, int vcpuid, uint64_t vaddr)
 void vm_set_page_table_entry(struct kvm_vm *vm, int vcpuid, uint64_t vaddr,
 			     uint64_t pte)
 {
-	struct pageTableEntry *new_pte = _vm_get_page_table_entry(vm, vcpuid,
-								  vaddr);
+	uint64_t *new_pte = _vm_get_page_table_entry(vm, vcpuid, vaddr);
 
 	*(uint64_t *)new_pte = pte;
 }
 
 void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent)
 {
-	struct pageUpperEntry *pml4e, *pml4e_start;
-	struct pageUpperEntry *pdpe, *pdpe_start;
-	struct pageUpperEntry *pde, *pde_start;
-	struct pageTableEntry *pte, *pte_start;
+	uint64_t *pml4e, *pml4e_start;
+	uint64_t *pdpe, *pdpe_start;
+	uint64_t *pde, *pde_start;
+	uint64_t *pte, *pte_start;
 
 	if (!vm->pgd_created)
 		return;
@@ -389,58 +351,58 @@ void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent)
 	fprintf(stream, "%*s      index hvaddr         gpaddr         "
 		"addr         w exec dirty\n",
 		indent, "");
-	pml4e_start = (struct pageUpperEntry *) addr_gpa2hva(vm, vm->pgd);
+	pml4e_start = (uint64_t *) addr_gpa2hva(vm, vm->pgd);
 	for (uint16_t n1 = 0; n1 <= 0x1ffu; n1++) {
 		pml4e = &pml4e_start[n1];
-		if (!pml4e->present)
+		if (!(*pml4e & PTE_PRESENT_MASK))
 			continue;
-		fprintf(stream, "%*spml4e 0x%-3zx %p 0x%-12lx 0x%-10lx %u "
+		fprintf(stream, "%*spml4e 0x%-3zx %p 0x%-12lx 0x%-10llx %u "
 			" %u\n",
 			indent, "",
 			pml4e - pml4e_start, pml4e,
-			addr_hva2gpa(vm, pml4e), (uint64_t) pml4e->pfn,
-			pml4e->writable, pml4e->execute_disable);
+			addr_hva2gpa(vm, pml4e), PTE_GET_PFN(*pml4e),
+			!!(*pml4e & PTE_WRITABLE_MASK), !!(*pml4e & PTE_NX_MASK));
 
-		pdpe_start = addr_gpa2hva(vm, pml4e->pfn * vm->page_size);
+		pdpe_start = addr_gpa2hva(vm, *pml4e & PHYSICAL_PAGE_MASK);
 		for (uint16_t n2 = 0; n2 <= 0x1ffu; n2++) {
 			pdpe = &pdpe_start[n2];
-			if (!pdpe->present)
+			if (!(*pdpe & PTE_PRESENT_MASK))
 				continue;
-			fprintf(stream, "%*spdpe  0x%-3zx %p 0x%-12lx 0x%-10lx "
+			fprintf(stream, "%*spdpe  0x%-3zx %p 0x%-12lx 0x%-10llx "
 				"%u  %u\n",
 				indent, "",
 				pdpe - pdpe_start, pdpe,
 				addr_hva2gpa(vm, pdpe),
-				(uint64_t) pdpe->pfn, pdpe->writable,
-				pdpe->execute_disable);
+				PTE_GET_PFN(*pdpe), !!(*pdpe & PTE_WRITABLE_MASK),
+				!!(*pdpe & PTE_NX_MASK));
 
-			pde_start = addr_gpa2hva(vm, pdpe->pfn * vm->page_size);
+			pde_start = addr_gpa2hva(vm, *pdpe & PHYSICAL_PAGE_MASK);
 			for (uint16_t n3 = 0; n3 <= 0x1ffu; n3++) {
 				pde = &pde_start[n3];
-				if (!pde->present)
+				if (!(*pde & PTE_PRESENT_MASK))
 					continue;
 				fprintf(stream, "%*spde   0x%-3zx %p "
-					"0x%-12lx 0x%-10lx %u  %u\n",
+					"0x%-12lx 0x%-10llx %u  %u\n",
 					indent, "", pde - pde_start, pde,
 					addr_hva2gpa(vm, pde),
-					(uint64_t) pde->pfn, pde->writable,
-					pde->execute_disable);
+					PTE_GET_PFN(*pde), !!(*pde & PTE_WRITABLE_MASK),
+					!!(*pde & PTE_NX_MASK));
 
-				pte_start = addr_gpa2hva(vm, pde->pfn * vm->page_size);
+				pte_start = addr_gpa2hva(vm, *pde & PHYSICAL_PAGE_MASK);
 				for (uint16_t n4 = 0; n4 <= 0x1ffu; n4++) {
 					pte = &pte_start[n4];
-					if (!pte->present)
+					if (!(*pte & PTE_PRESENT_MASK))
 						continue;
 					fprintf(stream, "%*spte   0x%-3zx %p "
-						"0x%-12lx 0x%-10lx %u  %u "
+						"0x%-12lx 0x%-10llx %u  %u "
 						"    %u    0x%-10lx\n",
 						indent, "",
 						pte - pte_start, pte,
 						addr_hva2gpa(vm, pte),
-						(uint64_t) pte->pfn,
-						pte->writable,
-						pte->execute_disable,
-						pte->dirty,
+						PTE_GET_PFN(*pte),
+						!!(*pte & PTE_WRITABLE_MASK),
+						!!(*pte & PTE_NX_MASK),
+						!!(*pte & PTE_DIRTY_MASK),
 						((uint64_t) n1 << 27)
 							| ((uint64_t) n2 << 18)
 							| ((uint64_t) n3 << 9)
@@ -558,8 +520,8 @@ static void kvm_seg_set_kernel_data_64bit(struct kvm_vm *vm, uint16_t selector,
 vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
 {
 	uint16_t index[4];
-	struct pageUpperEntry *pml4e, *pdpe, *pde;
-	struct pageTableEntry *pte;
+	uint64_t *pml4e, *pdpe, *pde;
+	uint64_t *pte;
 
 	TEST_ASSERT(vm->mode == VM_MODE_PXXV48_4K, "Attempt to use "
 		"unknown or unsupported guest mode, mode: 0x%x", vm->mode);
@@ -572,22 +534,22 @@ vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva)
 	if (!vm->pgd_created)
 		goto unmapped_gva;
 	pml4e = addr_gpa2hva(vm, vm->pgd);
-	if (!pml4e[index[3]].present)
+	if (!(pml4e[index[3]] & PTE_PRESENT_MASK))
 		goto unmapped_gva;
 
-	pdpe = addr_gpa2hva(vm, pml4e[index[3]].pfn * vm->page_size);
-	if (!pdpe[index[2]].present)
+	pdpe = addr_gpa2hva(vm, PTE_GET_PFN(pml4e[index[3]]) * vm->page_size);
+	if (!(pdpe[index[2]] & PTE_PRESENT_MASK))
 		goto unmapped_gva;
 
-	pde = addr_gpa2hva(vm, pdpe[index[2]].pfn * vm->page_size);
-	if (!pde[index[1]].present)
+	pde = addr_gpa2hva(vm, PTE_GET_PFN(pdpe[index[2]]) * vm->page_size);
+	if (!(pde[index[1]] & PTE_PRESENT_MASK))
 		goto unmapped_gva;
 
-	pte = addr_gpa2hva(vm, pde[index[1]].pfn * vm->page_size);
-	if (!pte[index[0]].present)
+	pte = addr_gpa2hva(vm, PTE_GET_PFN(pde[index[1]]) * vm->page_size);
+	if (!(pte[index[0]] & PTE_PRESENT_MASK))
 		goto unmapped_gva;
 
-	return (pte[index[0]].pfn * vm->page_size) + (gva & 0xfffu);
+	return (PTE_GET_PFN(pte[index[0]]) * vm->page_size) + (gva & 0xfffu);
 
 unmapped_gva:
 	TEST_FAIL("No mapping for vm virtual address, gva: 0x%lx", gva);
-- 
2.35.1




  parent reply	other threads:[~2022-05-10 14:05 UTC|newest]

Thread overview: 148+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-10 13:06 [PATCH 5.15 000/135] 5.15.39-rc1 review Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 001/135] MIPS: Fix CP0 counter erratum detection for R4k CPUs Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 002/135] parisc: Merge model and model name into one line in /proc/cpuinfo Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 003/135] ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 004/135] ALSA: fireworks: fix wrong return count shorter than expected by 4 bytes Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 005/135] mmc: sdhci-msm: Reset GCC_SDCC_BCR register for SDHC Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 006/135] mmc: sunxi-mmc: Fix DMA descriptors allocated above 32 bits Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 007/135] mmc: core: Set HS clock speed before sending HS CMD13 Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 008/135] gpiolib: of: fix bounds check for gpio-reserved-ranges Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 009/135] x86/fpu: Prevent FPU state corruption Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 010/135] KVM: x86/svm: Account for family 17h event renumberings in amd_pmc_perf_hw_id Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 011/135] iommu/vt-d: Calculate mask for non-aligned flushes Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 012/135] iommu/arm-smmu-v3: Fix size calculation in arm_smmu_mm_invalidate_range() Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 013/135] drm/amd/display: Avoid reading audio pattern past AUDIO_CHANNELS_COUNT Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 014/135] drm/amdgpu: do not use passthrough mode in Xen dom0 Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 015/135] RISC-V: relocate DTB if its outside memory region Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 016/135] Revert "SUNRPC: attempt AF_LOCAL connect on setup" Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 017/135] timekeeping: Mark NMI safe time accessors as notrace Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 018/135] firewire: fix potential uaf in outbound_phy_packet_callback() Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 019/135] firewire: remove check of list iterator against head past the loop body Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 020/135] firewire: core: extend card->lock in fw_core_handle_bus_reset Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 021/135] net: stmmac: disable Split Header (SPH) for Intel platforms Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 022/135] genirq: Synchronize interrupt thread startup Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 023/135] ASoC: da7219: Fix change notifications for tone generator frequency Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 024/135] ASoC: wm8958: Fix change notifications for DSP controls Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 025/135] ASoC: meson: Fix event generation for AUI ACODEC mux Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 026/135] ASoC: meson: Fix event generation for G12A tohdmi mux Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 027/135] ASoC: meson: Fix event generation for AUI CODEC mux Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 028/135] s390/dasd: fix data corruption for ESE devices Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 029/135] s390/dasd: prevent double format of tracks " Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 030/135] s390/dasd: Fix read for ESE with blksize < 4k Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 031/135] s390/dasd: Fix read inconsistency for ESE DASD devices Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 032/135] can: grcan: grcan_close(): fix deadlock Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 033/135] can: isotp: remove re-binding of bound socket Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 034/135] can: grcan: use ofdev->dev when allocating DMA memory Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 035/135] can: grcan: grcan_probe(): fix broken system id check for errata workaround needs Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 036/135] can: grcan: only use the NAPI poll budget for RX Greg Kroah-Hartman
2022-05-10 13:06 ` [PATCH 5.15 037/135] nfc: replace improper check device_is_registered() in netlink related functions Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 038/135] nfc: nfcmrvl: main: reorder destructive operations in nfcmrvl_nci_unregister_dev to avoid bugs Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 039/135] NFC: netlink: fix sleep in atomic bug when firmware download timeout Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 040/135] gpio: visconti: Fix fwnode of GPIO IRQ Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 041/135] gpio: pca953x: fix irq_stat not updated when irq is disabled (irq_mask not set) Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 042/135] hwmon: (adt7470) Fix warning on module removal Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 043/135] hwmon: (pmbus) disable PEC if not enabled Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 044/135] ASoC: dmaengine: Restore NULL prepare_slave_config() callback Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 045/135] ASoC: soc-ops: fix error handling Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 046/135] iommu/vt-d: Drop stop marker messages Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 047/135] iommu/dart: check return value after calling platform_get_resource() Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 048/135] net/mlx5e: Fix trust state reset in reload Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 049/135] net/mlx5e: Dont match double-vlan packets if cvlan is not set Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 050/135] net/mlx5e: CT: Fix queued up restore put() executing after relevant ft release Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 051/135] net/mlx5e: Fix the calling of update_buffer_lossy() API Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 052/135] net/mlx5: Avoid double clear or set of sync reset requested Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 053/135] net/mlx5: Fix deadlock in sync reset flow Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 054/135] selftests/seccomp: Dont call read() on TTY from background pgrp Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 055/135] SUNRPC release the transport of a relocated task with an assigned transport Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 056/135] RDMA/siw: Fix a condition race issue in MPA request processing Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 057/135] RDMA/irdma: Flush iWARP QP if modified to ERR from RTR state Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 058/135] RDMA/irdma: Reduce iWARP QP destroy time Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 059/135] RDMA/irdma: Fix possible crash due to NULL netdev in notifier Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 060/135] NFSv4: Dont invalidate inode attributes on delegation return Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 061/135] net: ethernet: mediatek: add missing of_node_put() in mtk_sgmii_init() Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 062/135] net: dsa: mt7530: add missing of_node_put() in mt7530_setup() Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 063/135] net: stmmac: dwmac-sun8i: add missing of_node_put() in sun8i_dwmac_register_mdio_mux() Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 064/135] net: mdio: Fix ENOMEM return value in BCM6368 mux bus controller Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 065/135] net: cpsw: add missing of_node_put() in cpsw_probe_dt() Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 066/135] net: igmp: respect RCU rules in ip_mc_source() and ip_mc_msfilter() Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 067/135] net: emaclite: Add error handling for of_address_to_resource() Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 068/135] selftests/net: so_txtime: fix parsing of start time stamp on 32 bit systems Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 069/135] selftests/net: so_txtime: usage(): fix documentation of default clock Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 070/135] drm/msm/dp: remove fail safe mode related code Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 071/135] btrfs: do not BUG_ON() on failure to update inode when setting xattr Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 072/135] hinic: fix bug of wq out of bound access Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 073/135] mld: respect RCU rules in ip6_mc_source() and ip6_mc_msfilter() Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 074/135] rxrpc: Enable IPv6 checksums on transport socket Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 075/135] selftests: mirror_gre_bridge_1q: Avoid changing PVID while interface is operational Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 076/135] bnxt_en: Fix possible bnxt_open() failure caused by wrong RFS flag Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 077/135] bnxt_en: Fix unnecessary dropping of RX packets Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 078/135] selftests: ocelot: tc_flower_chains: specify conform-exceed action for policer Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 079/135] smsc911x: allow using IRQ0 Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 080/135] btrfs: force v2 space cache usage for subpage mount Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 081/135] btrfs: always log symlinks in full mode Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 082/135] drm/amdgpu: unify BO evicting method in amdgpu_ttm Greg Kroah-Hartman
2022-05-10 15:15   ` Christian König
2022-05-10 15:17     ` Limonciello, Mario
2022-05-10 15:23       ` Christian König
2022-05-10 13:07 ` [PATCH 5.15 083/135] drm/amdgpu: explicitly check for s0ix when evicting resources Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 084/135] drm/amdgpu: dont set s3 and s0ix at the same time Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 085/135] drm/amdgpu: Ensure HDA function is suspended before ASIC reset Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 086/135] gpio: mvebu: drop pwm base assignment Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 087/135] kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural PMU Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 088/135] fbdev: Make fb_release() return -ENODEV if fbdev was unregistered Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 089/135] net/mlx5: Fix slab-out-of-bounds while reading resource dump menu Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 090/135] net/mlx5e: Lag, Fix use-after-free in fib event handler Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 091/135] net/mlx5e: Lag, Fix fib_info pointer assignment Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 092/135] net/mlx5e: Lag, Dont skip fib events on current dst Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 093/135] iommu/dart: Add missing module owner to ops structure Greg Kroah-Hartman
2022-05-10 13:07 ` Greg Kroah-Hartman [this message]
2022-05-10 13:07 ` [PATCH 5.15 095/135] KVM: selftests: Silence compiler warning in the kvm_page_table_test Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 096/135] x86/kvm: Preserve BSP MSR_KVM_POLL_CONTROL across suspend/resume Greg Kroah-Hartman
2022-05-10 13:07 ` [PATCH 5.15 097/135] KVM: x86: Do not change ICR on write to APIC_SELF_IPI Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 098/135] KVM: x86/mmu: avoid NULL-pointer dereference on page freeing bugs Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 099/135] KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is advertised Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 100/135] selftest/vm: verify mmap addr in mremap_test Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 101/135] selftest/vm: verify remap destination address " Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 102/135] mmc: rtsx: add 74 Clocks in power on flow Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 103/135] Revert "parisc: Mark sched_clock unstable only if clocks are not syncronized" Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 104/135] rcu: Fix callbacks processing time limit retaining cond_resched() Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 105/135] rcu: Apply callbacks processing time limit only on softirq Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 106/135] PCI: pci-bridge-emul: Add description for class_revision field Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 107/135] PCI: pci-bridge-emul: Add definitions for missing capabilities registers Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 108/135] PCI: aardvark: Add support for DEVCAP2, DEVCTL2, LNKCAP2 and LNKCTL2 registers on emulated bridge Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 109/135] PCI: aardvark: Clear all MSIs at setup Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 110/135] PCI: aardvark: Comment actions in driver remove method Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 111/135] PCI: aardvark: Disable bus mastering when unbinding driver Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 112/135] PCI: aardvark: Mask all interrupts " Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 113/135] PCI: aardvark: Fix memory leak in driver unbind Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 114/135] PCI: aardvark: Assert PERST# when unbinding driver Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 115/135] PCI: aardvark: Disable link training " Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 116/135] PCI: aardvark: Disable common PHY " Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 117/135] PCI: aardvark: Replace custom PCIE_CORE_INT_* macros with PCI_INTERRUPT_* Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 118/135] PCI: aardvark: Rewrite IRQ code to chained IRQ handler Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 119/135] PCI: aardvark: Check return value of generic_handle_domain_irq() when processing INTx IRQ Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 120/135] PCI: aardvark: Make MSI irq_chip structures static driver structures Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 121/135] PCI: aardvark: Make msi_domain_info structure a static driver structure Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 122/135] PCI: aardvark: Use dev_fwnode() instead of of_node_to_fwnode(dev->of_node) Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 123/135] PCI: aardvark: Refactor unmasking summary MSI interrupt Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 124/135] PCI: aardvark: Add support for masking MSI interrupts Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 125/135] PCI: aardvark: Fix setting MSI address Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 126/135] PCI: aardvark: Enable MSI-X support Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 127/135] PCI: aardvark: Add support for ERR interrupt on emulated bridge Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 128/135] PCI: aardvark: Optimize writing PCI_EXP_RTCTL_PMEIE and PCI_EXP_RTSTA_PME " Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 129/135] PCI: aardvark: Add support for PME interrupts Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 130/135] PCI: aardvark: Fix support for PME requester on emulated bridge Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 131/135] PCI: aardvark: Use separate INTA interrupt for emulated root bridge Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 132/135] PCI: aardvark: Remove irq_mask_ack() callback for INTx interrupts Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 133/135] PCI: aardvark: Dont mask irq when mapping Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 134/135] PCI: aardvark: Drop __maybe_unused from advk_pcie_disable_phy() Greg Kroah-Hartman
2022-05-10 13:08 ` [PATCH 5.15 135/135] PCI: aardvark: Update comment about link going down after link-up Greg Kroah-Hartman
2022-05-10 16:18 ` [PATCH 5.15 000/135] 5.15.39-rc1 review Fox Chen
2022-05-10 17:50 ` Florian Fainelli
2022-05-10 21:28 ` Slade Watkins
2022-05-10 22:42 ` Shuah Khan
2022-05-11  1:12 ` Guenter Roeck
2022-05-11  5:16 ` Naresh Kamboju
2022-05-11  8:37 ` Ron Economos
2022-05-11 10:12 ` Sudip Mukherjee
2022-05-12 15:40   ` Allen Pais

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=20220510130743.106775674@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nanliu@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox