All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 0/6] Support for H_RPT_INVALIDATE in PowerPC KVM
@ 2021-06-21  8:50 ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:49 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

This patchset adds support for the new hcall H_RPT_INVALIDATE
and replaces the nested tlb flush calls with this new hcall
if support for the same exists.

Changes in v8:
-------------
- Used tlb_single_page_flush_ceiling in the process-scoped range
  flush routine to switch to full PID invalation if
  the number of pages is above the threshold
- Moved iterating over page sizes into the actual routine that
  handles the eventual flushing thereby limiting the page size
  iteration only to range based flushing
- Converted #if 0 section into a comment section to avoid
  checkpatch from complaining.
- Used a threshold in the partition-scoped range flushing
  to switch to full LPID invalidation

v7: https://lore.kernel.org/linuxppc-dev/20210505154642.178702-1-bharata@linux.ibm.com/

Aneesh Kumar K.V (1):
  KVM: PPC: Book3S HV: Fix comments of H_RPT_INVALIDATE arguments

Bharata B Rao (5):
  powerpc/book3s64/radix: Add H_RPT_INVALIDATE pgsize encodings to
    mmu_psize_def
  KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
  KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
  KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability
  KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM

 Documentation/virt/kvm/api.rst                |  18 ++
 arch/powerpc/include/asm/book3s/64/mmu.h      |   1 +
 .../include/asm/book3s/64/tlbflush-radix.h    |   4 +
 arch/powerpc/include/asm/hvcall.h             |   4 +-
 arch/powerpc/include/asm/kvm_book3s.h         |   3 +
 arch/powerpc/include/asm/mmu_context.h        |   9 +
 arch/powerpc/kvm/book3s_64_mmu_radix.c        |  27 ++-
 arch/powerpc/kvm/book3s_hv.c                  |  89 +++++++++
 arch/powerpc/kvm/book3s_hv_nested.c           | 129 ++++++++++++-
 arch/powerpc/kvm/powerpc.c                    |   3 +
 arch/powerpc/mm/book3s64/radix_pgtable.c      |   5 +
 arch/powerpc/mm/book3s64/radix_tlb.c          | 176 +++++++++++++++++-
 include/uapi/linux/kvm.h                      |   1 +
 13 files changed, 456 insertions(+), 13 deletions(-)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH v8 1/6] KVM: PPC: Book3S HV: Fix comments of H_RPT_INVALIDATE arguments
  2021-06-21  8:50 ` Bharata B Rao
@ 2021-06-21  8:50   ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:49 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>

The type values H_RPTI_TYPE_PRT and H_RPTI_TYPE_PAT indicate
invalidating the caching of process and partition scoped entries
respectively.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 arch/powerpc/include/asm/hvcall.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/hvcall.h b/arch/powerpc/include/asm/hvcall.h
index e3b29eda8074..7e4b2cef40c2 100644
--- a/arch/powerpc/include/asm/hvcall.h
+++ b/arch/powerpc/include/asm/hvcall.h
@@ -413,9 +413,9 @@
 #define H_RPTI_TYPE_NESTED	0x0001	/* Invalidate nested guest partition-scope */
 #define H_RPTI_TYPE_TLB		0x0002	/* Invalidate TLB */
 #define H_RPTI_TYPE_PWC		0x0004	/* Invalidate Page Walk Cache */
-/* Invalidate Process Table Entries if H_RPTI_TYPE_NESTED is clear */
+/* Invalidate caching of Process Table Entries if H_RPTI_TYPE_NESTED is clear */
 #define H_RPTI_TYPE_PRT		0x0008
-/* Invalidate Partition Table Entries if H_RPTI_TYPE_NESTED is set */
+/* Invalidate caching of Partition Table Entries if H_RPTI_TYPE_NESTED is set */
 #define H_RPTI_TYPE_PAT		0x0008
 #define H_RPTI_TYPE_ALL		(H_RPTI_TYPE_TLB | H_RPTI_TYPE_PWC | \
 				 H_RPTI_TYPE_PRT)
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 2/6] powerpc/book3s64/radix: Add H_RPT_INVALIDATE pgsize encodings to mmu_psize_def
  2021-06-21  8:50 ` Bharata B Rao
@ 2021-06-21  8:50   ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:49 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

Add a field to mmu_psize_def to store the page size encodings
of H_RPT_INVALIDATE hcall. Initialize this while scanning the radix
AP encodings. This will be used when invalidating with required
page size encoding in the hcall.

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 arch/powerpc/include/asm/book3s/64/mmu.h | 1 +
 arch/powerpc/mm/book3s64/radix_pgtable.c | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
index eace8c3f7b0a..c02f42d1031e 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu.h
@@ -19,6 +19,7 @@ struct mmu_psize_def {
 	int		penc[MMU_PAGE_COUNT];	/* HPTE encoding */
 	unsigned int	tlbiel;	/* tlbiel supported for that page size */
 	unsigned long	avpnm;	/* bits to mask out in AVPN in the HPTE */
+	unsigned long   h_rpt_pgsize; /* H_RPT_INVALIDATE page size encoding */
 	union {
 		unsigned long	sllp;	/* SLB L||LP (exact mask to use in slbmte) */
 		unsigned long ap;	/* Ap encoding used by PowerISA 3.0 */
diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c
index 5fef8db3b463..637db10d841e 100644
--- a/arch/powerpc/mm/book3s64/radix_pgtable.c
+++ b/arch/powerpc/mm/book3s64/radix_pgtable.c
@@ -486,6 +486,7 @@ static int __init radix_dt_scan_page_sizes(unsigned long node,
 		def = &mmu_psize_defs[idx];
 		def->shift = shift;
 		def->ap  = ap;
+		def->h_rpt_pgsize = psize_to_rpti_pgsize(idx);
 	}
 
 	/* needed ? */
@@ -560,9 +561,13 @@ void __init radix__early_init_devtree(void)
 		 */
 		mmu_psize_defs[MMU_PAGE_4K].shift = 12;
 		mmu_psize_defs[MMU_PAGE_4K].ap = 0x0;
+		mmu_psize_defs[MMU_PAGE_4K].h_rpt_pgsize =
+			psize_to_rpti_pgsize(MMU_PAGE_4K);
 
 		mmu_psize_defs[MMU_PAGE_64K].shift = 16;
 		mmu_psize_defs[MMU_PAGE_64K].ap = 0x5;
+		mmu_psize_defs[MMU_PAGE_64K].h_rpt_pgsize =
+			psize_to_rpti_pgsize(MMU_PAGE_64K);
 	}
 
 	/*
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
  2021-06-21  8:50 ` Bharata B Rao
@ 2021-06-21  8:50   ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

H_RPT_INVALIDATE does two types of TLB invalidations:

1. Process-scoped invalidations for guests when LPCR[GTSE]=0.
   This is currently not used in KVM as GTSE is not usually
   disabled in KVM.
2. Partition-scoped invalidations that an L1 hypervisor does on
   behalf of an L2 guest. This is currently handled
   by H_TLB_INVALIDATE hcall and this new replaces the old that.

This commit enables process-scoped invalidations for L1 guests.
Support for process-scoped and partition-scoped invalidations
from/for nested guests will be added separately.

Process scoped tlbie invalidations from L1 and nested guests
need RS register for TLBIE instruction to contain both PID and
LPID.  This patch introduces primitives that execute tlbie
instruction with both PID and LPID set in prepartion for
H_RPT_INVALIDATE hcall.

A description of H_RPT_INVALIDATE follows:

int64   /* H_Success: Return code on successful completion */
        /* H_Busy - repeat the call with the same */
        /* H_Parameter, H_P2, H_P3, H_P4, H_P5 : Invalid
	   parameters */
hcall(const uint64 H_RPT_INVALIDATE, /* Invalidate RPT
					translation
					lookaside information */
      uint64 id,        /* PID/LPID to invalidate */
      uint64 target,    /* Invalidation target */
      uint64 type,      /* Type of lookaside information */
      uint64 pg_sizes,  /* Page sizes */
      uint64 start,     /* Start of Effective Address (EA)
			   range (inclusive) */
      uint64 end)       /* End of EA range (exclusive) */

Invalidation targets (target)
-----------------------------
Core MMU        0x01 /* All virtual processors in the
			partition */
Core local MMU  0x02 /* Current virtual processor */
Nest MMU        0x04 /* All nest/accelerator agents
			in use by the partition */

A combination of the above can be specified,
except core and core local.

Type of translation to invalidate (type)
---------------------------------------
NESTED       0x0001  /* invalidate nested guest partition-scope */
TLB          0x0002  /* Invalidate TLB */
PWC          0x0004  /* Invalidate Page Walk Cache */
PRT          0x0008  /* Invalidate caching of Process Table
			Entries if NESTED is clear */
PAT          0x0008  /* Invalidate caching of Partition Table
			Entries if NESTED is set */

A combination of the above can be specified.

Page size mask (pages)
----------------------
4K              0x01
64K             0x02
2M              0x04
1G              0x08
All sizes       (-1UL)

A combination of the above can be specified.
All page sizes can be selected with -1.

Semantics: Invalidate radix tree lookaside information
           matching the parameters given.
* Return H_P2, H_P3 or H_P4 if target, type, or pageSizes parameters
  are different from the defined values.
* Return H_PARAMETER if NESTED is set and pid is not a valid nested
  LPID allocated to this partition
* Return H_P5 if (start, end) doesn't form a valid range. Start and
  end should be a valid Quadrant address and  end > start.
* Return H_NotSupported if the partition is not in running in radix
  translation mode.
* May invalidate more translation information than requested.
* If start = 0 and end = -1, set the range to cover all valid
  addresses. Else start and end should be aligned to 4kB (lower 11
  bits clear).
* If NESTED is clear, then invalidate process scoped lookaside
  information. Else pid specifies a nested LPID, and the invalidation
  is performed   on nested guest partition table and nested guest
  partition scope real addresses.
* If pid = 0 and NESTED is clear, then valid addresses are quadrant 3
  and quadrant 0 spaces, Else valid addresses are quadrant 0.
* Pages which are fully covered by the range are to be invalidated.
  Those which are partially covered are considered outside
  invalidation range, which allows a caller to optimally invalidate
  ranges that may   contain mixed page sizes.
* Return H_SUCCESS on success.

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
---
 arch/powerpc/include/asm/mmu_context.h |   9 ++
 arch/powerpc/kvm/book3s_hv.c           |  36 ++++++
 arch/powerpc/mm/book3s64/radix_tlb.c   | 172 +++++++++++++++++++++++++
 3 files changed, 217 insertions(+)

diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
index 4bc45d3ed8b0..b44f291fc909 100644
--- a/arch/powerpc/include/asm/mmu_context.h
+++ b/arch/powerpc/include/asm/mmu_context.h
@@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
 
 #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
 extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
+void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
+			     unsigned long type, unsigned long pg_sizes,
+			     unsigned long start, unsigned long end);
 #else
 static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
+static inline void do_h_rpt_invalidate_prt(unsigned long pid,
+					   unsigned long lpid,
+					   unsigned long type,
+					   unsigned long pg_sizes,
+					   unsigned long start,
+					   unsigned long end) { }
 #endif
 
 extern void switch_cop(struct mm_struct *next);
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index bc0813644666..7e6da4687d88 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -76,6 +76,7 @@
 #include <asm/kvm_book3s_uvmem.h>
 #include <asm/ultravisor.h>
 #include <asm/dtl.h>
+#include <asm/plpar_wrappers.h>
 
 #include "book3s.h"
 
@@ -924,6 +925,32 @@ static int kvmppc_get_yield_count(struct kvm_vcpu *vcpu)
 	return yield_count;
 }
 
+static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
+				    unsigned long id, unsigned long target,
+				    unsigned long type, unsigned long pg_sizes,
+				    unsigned long start, unsigned long end)
+{
+	if (!kvm_is_radix(vcpu->kvm))
+		return H_UNSUPPORTED;
+
+	if (end < start)
+		return H_P5;
+
+	/*
+	 * Partition-scoped invalidation for nested guests.
+	 * Not yet supported
+	 */
+	if (type & H_RPTI_TYPE_NESTED)
+		return H_P3;
+
+	/*
+	 * Process-scoped invalidation for L1 guests.
+	 */
+	do_h_rpt_invalidate_prt(id, vcpu->kvm->arch.lpid,
+				type, pg_sizes, start, end);
+	return H_SUCCESS;
+}
+
 int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
 {
 	unsigned long req = kvmppc_get_gpr(vcpu, 3);
@@ -1132,6 +1159,14 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
 		 */
 		ret = kvmppc_h_svm_init_abort(vcpu->kvm);
 		break;
+	case H_RPT_INVALIDATE:
+		ret = kvmppc_h_rpt_invalidate(vcpu, kvmppc_get_gpr(vcpu, 4),
+					      kvmppc_get_gpr(vcpu, 5),
+					      kvmppc_get_gpr(vcpu, 6),
+					      kvmppc_get_gpr(vcpu, 7),
+					      kvmppc_get_gpr(vcpu, 8),
+					      kvmppc_get_gpr(vcpu, 9));
+		break;
 
 	default:
 		return RESUME_HOST;
@@ -1178,6 +1213,7 @@ static int kvmppc_hcall_impl_hv(unsigned long cmd)
 	case H_XIRR_X:
 #endif
 	case H_PAGE_INIT:
+	case H_RPT_INVALIDATE:
 		return 1;
 	}
 
diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
index 409e61210789..cdd98b9e7b15 100644
--- a/arch/powerpc/mm/book3s64/radix_tlb.c
+++ b/arch/powerpc/mm/book3s64/radix_tlb.c
@@ -130,6 +130,21 @@ static __always_inline void __tlbie_pid(unsigned long pid, unsigned long ric)
 	trace_tlbie(0, 0, rb, rs, ric, prs, r);
 }
 
+static __always_inline void __tlbie_pid_lpid(unsigned long pid,
+					     unsigned long lpid,
+					     unsigned long ric)
+{
+	unsigned long rb, rs, prs, r;
+
+	rb = PPC_BIT(53); /* IS = 1 */
+	rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
+	prs = 1; /* process scoped */
+	r = 1;   /* radix format */
+
+	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
+		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
+	trace_tlbie(0, 0, rb, rs, ric, prs, r);
+}
 static __always_inline void __tlbie_lpid(unsigned long lpid, unsigned long ric)
 {
 	unsigned long rb,rs,prs,r;
@@ -190,6 +205,23 @@ static __always_inline void __tlbie_va(unsigned long va, unsigned long pid,
 	trace_tlbie(0, 0, rb, rs, ric, prs, r);
 }
 
+static __always_inline void __tlbie_va_lpid(unsigned long va, unsigned long pid,
+					    unsigned long lpid,
+					    unsigned long ap, unsigned long ric)
+{
+	unsigned long rb, rs, prs, r;
+
+	rb = va & ~(PPC_BITMASK(52, 63));
+	rb |= ap << PPC_BITLSHIFT(58);
+	rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
+	prs = 1; /* process scoped */
+	r = 1;   /* radix format */
+
+	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
+		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
+	trace_tlbie(0, 0, rb, rs, ric, prs, r);
+}
+
 static __always_inline void __tlbie_lpid_va(unsigned long va, unsigned long lpid,
 					    unsigned long ap, unsigned long ric)
 {
@@ -235,6 +267,22 @@ static inline void fixup_tlbie_va_range(unsigned long va, unsigned long pid,
 	}
 }
 
+static inline void fixup_tlbie_va_range_lpid(unsigned long va,
+					     unsigned long pid,
+					     unsigned long lpid,
+					     unsigned long ap)
+{
+	if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
+		asm volatile("ptesync" : : : "memory");
+		__tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
+	}
+
+	if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
+		asm volatile("ptesync" : : : "memory");
+		__tlbie_va_lpid(va, pid, lpid, ap, RIC_FLUSH_TLB);
+	}
+}
+
 static inline void fixup_tlbie_pid(unsigned long pid)
 {
 	/*
@@ -254,6 +302,25 @@ static inline void fixup_tlbie_pid(unsigned long pid)
 	}
 }
 
+static inline void fixup_tlbie_pid_lpid(unsigned long pid, unsigned long lpid)
+{
+	/*
+	 * We can use any address for the invalidation, pick one which is
+	 * probably unused as an optimisation.
+	 */
+	unsigned long va = ((1UL << 52) - 1);
+
+	if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
+		asm volatile("ptesync" : : : "memory");
+		__tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
+	}
+
+	if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
+		asm volatile("ptesync" : : : "memory");
+		__tlbie_va_lpid(va, pid, lpid, mmu_get_ap(MMU_PAGE_64K),
+				RIC_FLUSH_TLB);
+	}
+}
 
 static inline void fixup_tlbie_lpid_va(unsigned long va, unsigned long lpid,
 				       unsigned long ap)
@@ -344,6 +411,31 @@ static inline void _tlbie_pid(unsigned long pid, unsigned long ric)
 	asm volatile("eieio; tlbsync; ptesync": : :"memory");
 }
 
+static inline void _tlbie_pid_lpid(unsigned long pid, unsigned long lpid,
+				   unsigned long ric)
+{
+	asm volatile("ptesync" : : : "memory");
+
+	/*
+	 * Workaround the fact that the "ric" argument to __tlbie_pid
+	 * must be a compile-time contraint to match the "i" constraint
+	 * in the asm statement.
+	 */
+	switch (ric) {
+	case RIC_FLUSH_TLB:
+		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
+		fixup_tlbie_pid_lpid(pid, lpid);
+		break;
+	case RIC_FLUSH_PWC:
+		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
+		break;
+	case RIC_FLUSH_ALL:
+	default:
+		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
+		fixup_tlbie_pid_lpid(pid, lpid);
+	}
+	asm volatile("eieio; tlbsync; ptesync" : : : "memory");
+}
 struct tlbiel_pid {
 	unsigned long pid;
 	unsigned long ric;
@@ -469,6 +561,20 @@ static inline void __tlbie_va_range(unsigned long start, unsigned long end,
 	fixup_tlbie_va_range(addr - page_size, pid, ap);
 }
 
+static inline void __tlbie_va_range_lpid(unsigned long start, unsigned long end,
+					 unsigned long pid, unsigned long lpid,
+					 unsigned long page_size,
+					 unsigned long psize)
+{
+	unsigned long addr;
+	unsigned long ap = mmu_get_ap(psize);
+
+	for (addr = start; addr < end; addr += page_size)
+		__tlbie_va_lpid(addr, pid, lpid, ap, RIC_FLUSH_TLB);
+
+	fixup_tlbie_va_range_lpid(addr - page_size, pid, lpid, ap);
+}
+
 static __always_inline void _tlbie_va(unsigned long va, unsigned long pid,
 				      unsigned long psize, unsigned long ric)
 {
@@ -549,6 +655,18 @@ static inline void _tlbie_va_range(unsigned long start, unsigned long end,
 	asm volatile("eieio; tlbsync; ptesync": : :"memory");
 }
 
+static inline void _tlbie_va_range_lpid(unsigned long start, unsigned long end,
+					unsigned long pid, unsigned long lpid,
+					unsigned long page_size,
+					unsigned long psize, bool also_pwc)
+{
+	asm volatile("ptesync" : : : "memory");
+	if (also_pwc)
+		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
+	__tlbie_va_range_lpid(start, end, pid, lpid, page_size, psize);
+	asm volatile("eieio; tlbsync; ptesync" : : : "memory");
+}
+
 static inline void _tlbiel_va_range_multicast(struct mm_struct *mm,
 				unsigned long start, unsigned long end,
 				unsigned long pid, unsigned long page_size,
@@ -1381,4 +1499,58 @@ extern void radix_kvm_prefetch_workaround(struct mm_struct *mm)
 	}
 }
 EXPORT_SYMBOL_GPL(radix_kvm_prefetch_workaround);
+
+/*
+ * Performs process-scoped invalidations for a given LPID
+ * as part of H_RPT_INVALIDATE hcall.
+ */
+void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
+			     unsigned long type, unsigned long pg_sizes,
+			     unsigned long start, unsigned long end)
+{
+	unsigned long psize, nr_pages;
+	struct mmu_psize_def *def;
+	bool flush_pid;
+
+	/*
+	 * A H_RPTI_TYPE_ALL request implies RIC=3, hence
+	 * do a single IS=1 based flush.
+	 */
+	if ((type & H_RPTI_TYPE_ALL) == H_RPTI_TYPE_ALL) {
+		_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
+		return;
+	}
+
+	if (type & H_RPTI_TYPE_PWC)
+		_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
+
+	/* Full PID flush */
+	if (start == 0 && end == -1)
+		return _tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
+
+	/* Do range invalidation for all the valid page sizes */
+	for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
+		def = &mmu_psize_defs[psize];
+		if (!(pg_sizes & def->h_rpt_pgsize))
+			continue;
+
+		nr_pages = (end - start) >> def->shift;
+		flush_pid = nr_pages > tlb_single_page_flush_ceiling;
+
+		/*
+		 * If the number of pages spanning the range is above
+		 * the ceiling, convert the request into a full PID flush.
+		 * And since PID flush takes out all the page sizes, there
+		 * is no need to consider remaining page sizes.
+		 */
+		if (flush_pid) {
+			_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
+			return;
+		}
+		_tlbie_va_range_lpid(start, end, pid, lpid,
+				     (1UL << def->shift), psize, false);
+	}
+}
+EXPORT_SYMBOL_GPL(do_h_rpt_invalidate_prt);
+
 #endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
  2021-06-21  8:50 ` Bharata B Rao
@ 2021-06-21  8:50   ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

Enable support for process-scoped invalidations from nested
guests and partition-scoped invalidations for nested guests.

Process-scoped invalidations for any level of nested guests
are handled by implementing H_RPT_INVALIDATE handler in the
nested guest exit path in L0.

Partition-scoped invalidation requests are forwarded to the
right nested guest, handled there and passed down to L0
for eventual handling.

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
	[Nested guest partition-scoped invalidation changes]
---
 .../include/asm/book3s/64/tlbflush-radix.h    |   4 +
 arch/powerpc/include/asm/kvm_book3s.h         |   3 +
 arch/powerpc/kvm/book3s_hv.c                  |  59 ++++++++-
 arch/powerpc/kvm/book3s_hv_nested.c           | 117 ++++++++++++++++++
 arch/powerpc/mm/book3s64/radix_tlb.c          |   4 -
 5 files changed, 180 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
index 8b33601cdb9d..a46fd37ad552 100644
--- a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
+++ b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
@@ -4,6 +4,10 @@
 
 #include <asm/hvcall.h>
 
+#define RIC_FLUSH_TLB 0
+#define RIC_FLUSH_PWC 1
+#define RIC_FLUSH_ALL 2
+
 struct vm_area_struct;
 struct mm_struct;
 struct mmu_gather;
diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h
index e6b53c6e21e3..caaa0f592d8e 100644
--- a/arch/powerpc/include/asm/kvm_book3s.h
+++ b/arch/powerpc/include/asm/kvm_book3s.h
@@ -307,6 +307,9 @@ void kvmhv_set_ptbl_entry(unsigned int lpid, u64 dw0, u64 dw1);
 void kvmhv_release_all_nested(struct kvm *kvm);
 long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu);
 long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu);
+long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
+			     unsigned long type, unsigned long pg_sizes,
+			     unsigned long start, unsigned long end);
 int kvmhv_run_single_vcpu(struct kvm_vcpu *vcpu,
 			  u64 time_limit, unsigned long lpcr);
 void kvmhv_save_hv_regs(struct kvm_vcpu *vcpu, struct hv_guest_state *hr);
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 7e6da4687d88..3d5b8ba3786d 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -925,6 +925,34 @@ static int kvmppc_get_yield_count(struct kvm_vcpu *vcpu)
 	return yield_count;
 }
 
+/*
+ * H_RPT_INVALIDATE hcall handler for nested guests.
+ *
+ * Handles only nested process-scoped invalidation requests in L0.
+ */
+static int kvmppc_nested_h_rpt_invalidate(struct kvm_vcpu *vcpu)
+{
+	unsigned long type = kvmppc_get_gpr(vcpu, 6);
+	unsigned long pid, pg_sizes, start, end;
+
+	/*
+	 * The partition-scoped invalidations aren't handled here in L0.
+	 */
+	if (type & H_RPTI_TYPE_NESTED)
+		return RESUME_HOST;
+
+	pid = kvmppc_get_gpr(vcpu, 4);
+	pg_sizes = kvmppc_get_gpr(vcpu, 7);
+	start = kvmppc_get_gpr(vcpu, 8);
+	end = kvmppc_get_gpr(vcpu, 9);
+
+	do_h_rpt_invalidate_prt(pid, vcpu->arch.nested->shadow_lpid,
+				type, pg_sizes, start, end);
+
+	kvmppc_set_gpr(vcpu, 3, H_SUCCESS);
+	return RESUME_GUEST;
+}
+
 static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
 				    unsigned long id, unsigned long target,
 				    unsigned long type, unsigned long pg_sizes,
@@ -938,10 +966,18 @@ static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
 
 	/*
 	 * Partition-scoped invalidation for nested guests.
-	 * Not yet supported
 	 */
-	if (type & H_RPTI_TYPE_NESTED)
-		return H_P3;
+	if (type & H_RPTI_TYPE_NESTED) {
+		if (!nesting_enabled(vcpu->kvm))
+			return H_FUNCTION;
+
+		/* Support only cores as target */
+		if (target != H_RPTI_TARGET_CMMU)
+			return H_P2;
+
+		return do_h_rpt_invalidate_pat(vcpu, id, type, pg_sizes,
+					       start, end);
+	}
 
 	/*
 	 * Process-scoped invalidation for L1 guests.
@@ -1629,6 +1665,23 @@ static int kvmppc_handle_nested_exit(struct kvm_vcpu *vcpu)
 		if (!xics_on_xive())
 			kvmppc_xics_rm_complete(vcpu, 0);
 		break;
+	case BOOK3S_INTERRUPT_SYSCALL:
+	{
+		unsigned long req = kvmppc_get_gpr(vcpu, 3);
+
+		/*
+		 * The H_RPT_INVALIDATE hcalls issued by nested
+		 * guests for process-scoped invalidations when
+		 * GTSE=0, are handled here in L0.
+		 */
+		if (req == H_RPT_INVALIDATE) {
+			r = kvmppc_nested_h_rpt_invalidate(vcpu);
+			break;
+		}
+
+		r = RESUME_HOST;
+		break;
+	}
 	default:
 		r = RESUME_HOST;
 		break;
diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
index 60724f674421..056d3df68de1 100644
--- a/arch/powerpc/kvm/book3s_hv_nested.c
+++ b/arch/powerpc/kvm/book3s_hv_nested.c
@@ -1214,6 +1214,123 @@ long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu)
 	return H_SUCCESS;
 }
 
+static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
+					 unsigned long lpid,
+					 unsigned long page_size,
+					 unsigned long ap,
+					 unsigned long start,
+					 unsigned long end)
+{
+	unsigned long addr = start;
+	int ret;
+
+	do {
+		ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
+						   get_epn(addr));
+		if (ret)
+			return ret;
+		addr += page_size;
+	} while (addr < end);
+
+	return ret;
+}
+
+static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
+					 unsigned long lpid, unsigned long ric)
+{
+	struct kvm *kvm = vcpu->kvm;
+	struct kvm_nested_guest *gp;
+
+	gp = kvmhv_get_nested(kvm, lpid, false);
+	if (gp) {
+		kvmhv_emulate_tlbie_lpid(vcpu, gp, ric);
+		kvmhv_put_nested(gp);
+	}
+	return H_SUCCESS;
+}
+
+/*
+ * Number of pages above which we invalidate the entire LPID rather than
+ * flush individual pages.
+ */
+static unsigned long tlb_range_flush_page_ceiling __read_mostly = 33;
+
+/*
+ * Performs partition-scoped invalidations for nested guests
+ * as part of H_RPT_INVALIDATE hcall.
+ */
+long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
+			     unsigned long type, unsigned long pg_sizes,
+			     unsigned long start, unsigned long end)
+{
+	struct kvm_nested_guest *gp;
+	long ret;
+	unsigned long psize, ap;
+
+	/*
+	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
+	 *
+	 * However, nested KVM issues a L2 lpid flush call when creating
+	 * partition table entries for L2. This happens even before the
+	 * corresponding shadow lpid is created in HV which happens in
+	 * H_ENTER_NESTED call. Since we can't differentiate this case from
+	 * the invalid case, we ignore such flush requests and return success.
+	 */
+	gp = kvmhv_find_nested(vcpu->kvm, lpid);
+	if (!gp)
+		return H_SUCCESS;
+
+	/*
+	 * A flush all request can be handled by a full lpid flush only.
+	 */
+	if ((type & H_RPTI_TYPE_NESTED_ALL) == H_RPTI_TYPE_NESTED_ALL)
+		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_ALL);
+
+	/*
+	 * We don't need to handle a PWC flush like process table here,
+	 * because intermediate partition scoped table in nested guest doesn't
+	 * really have PWC. Only level we have PWC is in L0 and for nested
+	 * invalidate at L0 we always do kvm_flush_lpid() which does
+	 * radix__flush_all_lpid(). For range invalidate at any level, we
+	 * are not removing the higher level page tables and hence there is
+	 * no PWC invalidate needed.
+	 *
+	 * if (type & H_RPTI_TYPE_PWC) {
+	 *	ret = do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_PWC);
+	 *	if (ret)
+	 *		return H_P4;
+	 * }
+	 */
+
+	if (start == 0 && end == -1)
+		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
+
+	if (type & H_RPTI_TYPE_TLB) {
+		struct mmu_psize_def *def;
+		bool flush_lpid;
+		unsigned long nr_pages;
+
+		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
+			def = &mmu_psize_defs[psize];
+			if (!(pg_sizes & def->h_rpt_pgsize))
+				continue;
+
+			nr_pages = (end - start) >> def->shift;
+			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
+			if (flush_lpid)
+				return do_tlb_invalidate_nested_all(vcpu, lpid,
+								RIC_FLUSH_TLB);
+
+			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
+							   (1UL << def->shift),
+							   ap, start, end);
+			if (ret)
+				return H_P4;
+		}
+	}
+	return H_SUCCESS;
+}
+
 /* Used to convert a nested guest real address to a L1 guest real address */
 static int kvmhv_translate_addr_nested(struct kvm_vcpu *vcpu,
 				       struct kvm_nested_guest *gp,
diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
index cdd98b9e7b15..4f38cf34ea40 100644
--- a/arch/powerpc/mm/book3s64/radix_tlb.c
+++ b/arch/powerpc/mm/book3s64/radix_tlb.c
@@ -20,10 +20,6 @@
 
 #include "internal.h"
 
-#define RIC_FLUSH_TLB 0
-#define RIC_FLUSH_PWC 1
-#define RIC_FLUSH_ALL 2
-
 /*
  * tlbiel instruction for radix, set invalidation
  * i.e., r=1 and is=01 or is=10 or is=11
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 5/6] KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability
  2021-06-21  8:50 ` Bharata B Rao
@ 2021-06-21  8:50   ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

Now that we have H_RPT_INVALIDATE fully implemented, enable
support for the same via KVM_CAP_PPC_RPT_INVALIDATE KVM capability

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 Documentation/virt/kvm/api.rst | 18 ++++++++++++++++++
 arch/powerpc/kvm/powerpc.c     |  3 +++
 include/uapi/linux/kvm.h       |  1 +
 3 files changed, 22 insertions(+)

diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
index 7fcb2fd38f42..9977e845633f 100644
--- a/Documentation/virt/kvm/api.rst
+++ b/Documentation/virt/kvm/api.rst
@@ -6362,6 +6362,24 @@ default.
 
 See Documentation/x86/sgx/2.Kernel-internals.rst for more details.
 
+7.26 KVM_CAP_PPC_RPT_INVALIDATE
+-------------------------------
+
+:Capability: KVM_CAP_PPC_RPT_INVALIDATE
+:Architectures: ppc
+:Type: vm
+
+This capability indicates that the kernel is capable of handling
+H_RPT_INVALIDATE hcall.
+
+In order to enable the use of H_RPT_INVALIDATE in the guest,
+user space might have to advertise it for the guest. For example,
+IBM pSeries (sPAPR) guest starts using it if "hcall-rpt-invalidate" is
+present in the "ibm,hypertas-functions" device-tree property.
+
+This capability is enabled for hypervisors on platforms like POWER9
+that support radix MMU.
+
 8. Other capabilities.
 ======================
 
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index a2a68a958fa0..be33b5321a76 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -682,6 +682,9 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 		r = !!(hv_enabled && kvmppc_hv_ops->enable_dawr1 &&
 		       !kvmppc_hv_ops->enable_dawr1(NULL));
 		break;
+	case KVM_CAP_PPC_RPT_INVALIDATE:
+		r = 1;
+		break;
 #endif
 	default:
 		r = 0;
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 79d9c44d1ad7..9016e96de971 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1083,6 +1083,7 @@ struct kvm_ppc_resize_hpt {
 #define KVM_CAP_SGX_ATTRIBUTE 196
 #define KVM_CAP_VM_COPY_ENC_CONTEXT_FROM 197
 #define KVM_CAP_PTP_KVM 198
+#define KVM_CAP_PPC_RPT_INVALIDATE 199
 
 #ifdef KVM_CAP_IRQ_ROUTING
 
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 6/6] KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM
  2021-06-21  8:50 ` Bharata B Rao
@ 2021-06-21  8:50   ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

In the nested KVM case, replace H_TLB_INVALIDATE by the new hcall
H_RPT_INVALIDATE if available. The availability of this hcall
is determined from "hcall-rpt-invalidate" string in ibm,hypertas-functions
DT property.

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 arch/powerpc/kvm/book3s_64_mmu_radix.c | 27 +++++++++++++++++++++-----
 arch/powerpc/kvm/book3s_hv_nested.c    | 12 ++++++++++--
 2 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c
index d909c069363e..b5905ae4377c 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_radix.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c
@@ -21,6 +21,7 @@
 #include <asm/pte-walk.h>
 #include <asm/ultravisor.h>
 #include <asm/kvm_book3s_uvmem.h>
+#include <asm/plpar_wrappers.h>
 
 /*
  * Supported radix tree geometry.
@@ -318,9 +319,19 @@ void kvmppc_radix_tlbie_page(struct kvm *kvm, unsigned long addr,
 	}
 
 	psi = shift_to_mmu_psize(pshift);
-	rb = addr | (mmu_get_ap(psi) << PPC_BITLSHIFT(58));
-	rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(0, 0, 1),
-				lpid, rb);
+
+	if (!firmware_has_feature(FW_FEATURE_RPT_INVALIDATE)) {
+		rb = addr | (mmu_get_ap(psi) << PPC_BITLSHIFT(58));
+		rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(0, 0, 1),
+					lpid, rb);
+	} else {
+		rc = pseries_rpt_invalidate(lpid, H_RPTI_TARGET_CMMU,
+					    H_RPTI_TYPE_NESTED |
+					    H_RPTI_TYPE_TLB,
+					    psize_to_rpti_pgsize(psi),
+					    addr, addr + psize);
+	}
+
 	if (rc)
 		pr_err("KVM: TLB page invalidation hcall failed, rc=%ld\n", rc);
 }
@@ -334,8 +345,14 @@ static void kvmppc_radix_flush_pwc(struct kvm *kvm, unsigned int lpid)
 		return;
 	}
 
-	rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(1, 0, 1),
-				lpid, TLBIEL_INVAL_SET_LPID);
+	if (!firmware_has_feature(FW_FEATURE_RPT_INVALIDATE))
+		rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(1, 0, 1),
+					lpid, TLBIEL_INVAL_SET_LPID);
+	else
+		rc = pseries_rpt_invalidate(lpid, H_RPTI_TARGET_CMMU,
+					    H_RPTI_TYPE_NESTED |
+					    H_RPTI_TYPE_PWC, H_RPTI_PAGE_ALL,
+					    0, -1UL);
 	if (rc)
 		pr_err("KVM: TLB PWC invalidation hcall failed, rc=%ld\n", rc);
 }
diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
index 056d3df68de1..d78efb5f5bb3 100644
--- a/arch/powerpc/kvm/book3s_hv_nested.c
+++ b/arch/powerpc/kvm/book3s_hv_nested.c
@@ -19,6 +19,7 @@
 #include <asm/pgalloc.h>
 #include <asm/pte-walk.h>
 #include <asm/reg.h>
+#include <asm/plpar_wrappers.h>
 
 static struct patb_entry *pseries_partition_tb;
 
@@ -467,8 +468,15 @@ static void kvmhv_flush_lpid(unsigned int lpid)
 		return;
 	}
 
-	rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(2, 0, 1),
-				lpid, TLBIEL_INVAL_SET_LPID);
+	if (!firmware_has_feature(FW_FEATURE_RPT_INVALIDATE))
+		rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(2, 0, 1),
+					lpid, TLBIEL_INVAL_SET_LPID);
+	else
+		rc = pseries_rpt_invalidate(lpid, H_RPTI_TARGET_CMMU,
+					    H_RPTI_TYPE_NESTED |
+					    H_RPTI_TYPE_TLB | H_RPTI_TYPE_PWC |
+					    H_RPTI_TYPE_PAT,
+					    H_RPTI_PAGE_ALL, 0, -1UL);
 	if (rc)
 		pr_err("KVM: TLB LPID invalidation hcall failed, rc=%ld\n", rc);
 }
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
@ 2021-06-21  8:50   ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

H_RPT_INVALIDATE does two types of TLB invalidations:

1. Process-scoped invalidations for guests when LPCR[GTSE]=0.
   This is currently not used in KVM as GTSE is not usually
   disabled in KVM.
2. Partition-scoped invalidations that an L1 hypervisor does on
   behalf of an L2 guest. This is currently handled
   by H_TLB_INVALIDATE hcall and this new replaces the old that.

This commit enables process-scoped invalidations for L1 guests.
Support for process-scoped and partition-scoped invalidations
from/for nested guests will be added separately.

Process scoped tlbie invalidations from L1 and nested guests
need RS register for TLBIE instruction to contain both PID and
LPID.  This patch introduces primitives that execute tlbie
instruction with both PID and LPID set in prepartion for
H_RPT_INVALIDATE hcall.

A description of H_RPT_INVALIDATE follows:

int64   /* H_Success: Return code on successful completion */
        /* H_Busy - repeat the call with the same */
        /* H_Parameter, H_P2, H_P3, H_P4, H_P5 : Invalid
	   parameters */
hcall(const uint64 H_RPT_INVALIDATE, /* Invalidate RPT
					translation
					lookaside information */
      uint64 id,        /* PID/LPID to invalidate */
      uint64 target,    /* Invalidation target */
      uint64 type,      /* Type of lookaside information */
      uint64 pg_sizes,  /* Page sizes */
      uint64 start,     /* Start of Effective Address (EA)
			   range (inclusive) */
      uint64 end)       /* End of EA range (exclusive) */

Invalidation targets (target)
-----------------------------
Core MMU        0x01 /* All virtual processors in the
			partition */
Core local MMU  0x02 /* Current virtual processor */
Nest MMU        0x04 /* All nest/accelerator agents
			in use by the partition */

A combination of the above can be specified,
except core and core local.

Type of translation to invalidate (type)
---------------------------------------
NESTED       0x0001  /* invalidate nested guest partition-scope */
TLB          0x0002  /* Invalidate TLB */
PWC          0x0004  /* Invalidate Page Walk Cache */
PRT          0x0008  /* Invalidate caching of Process Table
			Entries if NESTED is clear */
PAT          0x0008  /* Invalidate caching of Partition Table
			Entries if NESTED is set */

A combination of the above can be specified.

Page size mask (pages)
----------------------
4K              0x01
64K             0x02
2M              0x04
1G              0x08
All sizes       (-1UL)

A combination of the above can be specified.
All page sizes can be selected with -1.

Semantics: Invalidate radix tree lookaside information
           matching the parameters given.
* Return H_P2, H_P3 or H_P4 if target, type, or pageSizes parameters
  are different from the defined values.
* Return H_PARAMETER if NESTED is set and pid is not a valid nested
  LPID allocated to this partition
* Return H_P5 if (start, end) doesn't form a valid range. Start and
  end should be a valid Quadrant address and  end > start.
* Return H_NotSupported if the partition is not in running in radix
  translation mode.
* May invalidate more translation information than requested.
* If start = 0 and end = -1, set the range to cover all valid
  addresses. Else start and end should be aligned to 4kB (lower 11
  bits clear).
* If NESTED is clear, then invalidate process scoped lookaside
  information. Else pid specifies a nested LPID, and the invalidation
  is performed   on nested guest partition table and nested guest
  partition scope real addresses.
* If pid = 0 and NESTED is clear, then valid addresses are quadrant 3
  and quadrant 0 spaces, Else valid addresses are quadrant 0.
* Pages which are fully covered by the range are to be invalidated.
  Those which are partially covered are considered outside
  invalidation range, which allows a caller to optimally invalidate
  ranges that may   contain mixed page sizes.
* Return H_SUCCESS on success.

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
---
 arch/powerpc/include/asm/mmu_context.h |   9 ++
 arch/powerpc/kvm/book3s_hv.c           |  36 ++++++
 arch/powerpc/mm/book3s64/radix_tlb.c   | 172 +++++++++++++++++++++++++
 3 files changed, 217 insertions(+)

diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
index 4bc45d3ed8b0..b44f291fc909 100644
--- a/arch/powerpc/include/asm/mmu_context.h
+++ b/arch/powerpc/include/asm/mmu_context.h
@@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
 
 #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
 extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
+void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
+			     unsigned long type, unsigned long pg_sizes,
+			     unsigned long start, unsigned long end);
 #else
 static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
+static inline void do_h_rpt_invalidate_prt(unsigned long pid,
+					   unsigned long lpid,
+					   unsigned long type,
+					   unsigned long pg_sizes,
+					   unsigned long start,
+					   unsigned long end) { }
 #endif
 
 extern void switch_cop(struct mm_struct *next);
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index bc0813644666..7e6da4687d88 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -76,6 +76,7 @@
 #include <asm/kvm_book3s_uvmem.h>
 #include <asm/ultravisor.h>
 #include <asm/dtl.h>
+#include <asm/plpar_wrappers.h>
 
 #include "book3s.h"
 
@@ -924,6 +925,32 @@ static int kvmppc_get_yield_count(struct kvm_vcpu *vcpu)
 	return yield_count;
 }
 
+static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
+				    unsigned long id, unsigned long target,
+				    unsigned long type, unsigned long pg_sizes,
+				    unsigned long start, unsigned long end)
+{
+	if (!kvm_is_radix(vcpu->kvm))
+		return H_UNSUPPORTED;
+
+	if (end < start)
+		return H_P5;
+
+	/*
+	 * Partition-scoped invalidation for nested guests.
+	 * Not yet supported
+	 */
+	if (type & H_RPTI_TYPE_NESTED)
+		return H_P3;
+
+	/*
+	 * Process-scoped invalidation for L1 guests.
+	 */
+	do_h_rpt_invalidate_prt(id, vcpu->kvm->arch.lpid,
+				type, pg_sizes, start, end);
+	return H_SUCCESS;
+}
+
 int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
 {
 	unsigned long req = kvmppc_get_gpr(vcpu, 3);
@@ -1132,6 +1159,14 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
 		 */
 		ret = kvmppc_h_svm_init_abort(vcpu->kvm);
 		break;
+	case H_RPT_INVALIDATE:
+		ret = kvmppc_h_rpt_invalidate(vcpu, kvmppc_get_gpr(vcpu, 4),
+					      kvmppc_get_gpr(vcpu, 5),
+					      kvmppc_get_gpr(vcpu, 6),
+					      kvmppc_get_gpr(vcpu, 7),
+					      kvmppc_get_gpr(vcpu, 8),
+					      kvmppc_get_gpr(vcpu, 9));
+		break;
 
 	default:
 		return RESUME_HOST;
@@ -1178,6 +1213,7 @@ static int kvmppc_hcall_impl_hv(unsigned long cmd)
 	case H_XIRR_X:
 #endif
 	case H_PAGE_INIT:
+	case H_RPT_INVALIDATE:
 		return 1;
 	}
 
diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
index 409e61210789..cdd98b9e7b15 100644
--- a/arch/powerpc/mm/book3s64/radix_tlb.c
+++ b/arch/powerpc/mm/book3s64/radix_tlb.c
@@ -130,6 +130,21 @@ static __always_inline void __tlbie_pid(unsigned long pid, unsigned long ric)
 	trace_tlbie(0, 0, rb, rs, ric, prs, r);
 }
 
+static __always_inline void __tlbie_pid_lpid(unsigned long pid,
+					     unsigned long lpid,
+					     unsigned long ric)
+{
+	unsigned long rb, rs, prs, r;
+
+	rb = PPC_BIT(53); /* IS = 1 */
+	rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
+	prs = 1; /* process scoped */
+	r = 1;   /* radix format */
+
+	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
+		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
+	trace_tlbie(0, 0, rb, rs, ric, prs, r);
+}
 static __always_inline void __tlbie_lpid(unsigned long lpid, unsigned long ric)
 {
 	unsigned long rb,rs,prs,r;
@@ -190,6 +205,23 @@ static __always_inline void __tlbie_va(unsigned long va, unsigned long pid,
 	trace_tlbie(0, 0, rb, rs, ric, prs, r);
 }
 
+static __always_inline void __tlbie_va_lpid(unsigned long va, unsigned long pid,
+					    unsigned long lpid,
+					    unsigned long ap, unsigned long ric)
+{
+	unsigned long rb, rs, prs, r;
+
+	rb = va & ~(PPC_BITMASK(52, 63));
+	rb |= ap << PPC_BITLSHIFT(58);
+	rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
+	prs = 1; /* process scoped */
+	r = 1;   /* radix format */
+
+	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
+		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
+	trace_tlbie(0, 0, rb, rs, ric, prs, r);
+}
+
 static __always_inline void __tlbie_lpid_va(unsigned long va, unsigned long lpid,
 					    unsigned long ap, unsigned long ric)
 {
@@ -235,6 +267,22 @@ static inline void fixup_tlbie_va_range(unsigned long va, unsigned long pid,
 	}
 }
 
+static inline void fixup_tlbie_va_range_lpid(unsigned long va,
+					     unsigned long pid,
+					     unsigned long lpid,
+					     unsigned long ap)
+{
+	if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
+		asm volatile("ptesync" : : : "memory");
+		__tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
+	}
+
+	if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
+		asm volatile("ptesync" : : : "memory");
+		__tlbie_va_lpid(va, pid, lpid, ap, RIC_FLUSH_TLB);
+	}
+}
+
 static inline void fixup_tlbie_pid(unsigned long pid)
 {
 	/*
@@ -254,6 +302,25 @@ static inline void fixup_tlbie_pid(unsigned long pid)
 	}
 }
 
+static inline void fixup_tlbie_pid_lpid(unsigned long pid, unsigned long lpid)
+{
+	/*
+	 * We can use any address for the invalidation, pick one which is
+	 * probably unused as an optimisation.
+	 */
+	unsigned long va = ((1UL << 52) - 1);
+
+	if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
+		asm volatile("ptesync" : : : "memory");
+		__tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
+	}
+
+	if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
+		asm volatile("ptesync" : : : "memory");
+		__tlbie_va_lpid(va, pid, lpid, mmu_get_ap(MMU_PAGE_64K),
+				RIC_FLUSH_TLB);
+	}
+}
 
 static inline void fixup_tlbie_lpid_va(unsigned long va, unsigned long lpid,
 				       unsigned long ap)
@@ -344,6 +411,31 @@ static inline void _tlbie_pid(unsigned long pid, unsigned long ric)
 	asm volatile("eieio; tlbsync; ptesync": : :"memory");
 }
 
+static inline void _tlbie_pid_lpid(unsigned long pid, unsigned long lpid,
+				   unsigned long ric)
+{
+	asm volatile("ptesync" : : : "memory");
+
+	/*
+	 * Workaround the fact that the "ric" argument to __tlbie_pid
+	 * must be a compile-time contraint to match the "i" constraint
+	 * in the asm statement.
+	 */
+	switch (ric) {
+	case RIC_FLUSH_TLB:
+		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
+		fixup_tlbie_pid_lpid(pid, lpid);
+		break;
+	case RIC_FLUSH_PWC:
+		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
+		break;
+	case RIC_FLUSH_ALL:
+	default:
+		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
+		fixup_tlbie_pid_lpid(pid, lpid);
+	}
+	asm volatile("eieio; tlbsync; ptesync" : : : "memory");
+}
 struct tlbiel_pid {
 	unsigned long pid;
 	unsigned long ric;
@@ -469,6 +561,20 @@ static inline void __tlbie_va_range(unsigned long start, unsigned long end,
 	fixup_tlbie_va_range(addr - page_size, pid, ap);
 }
 
+static inline void __tlbie_va_range_lpid(unsigned long start, unsigned long end,
+					 unsigned long pid, unsigned long lpid,
+					 unsigned long page_size,
+					 unsigned long psize)
+{
+	unsigned long addr;
+	unsigned long ap = mmu_get_ap(psize);
+
+	for (addr = start; addr < end; addr += page_size)
+		__tlbie_va_lpid(addr, pid, lpid, ap, RIC_FLUSH_TLB);
+
+	fixup_tlbie_va_range_lpid(addr - page_size, pid, lpid, ap);
+}
+
 static __always_inline void _tlbie_va(unsigned long va, unsigned long pid,
 				      unsigned long psize, unsigned long ric)
 {
@@ -549,6 +655,18 @@ static inline void _tlbie_va_range(unsigned long start, unsigned long end,
 	asm volatile("eieio; tlbsync; ptesync": : :"memory");
 }
 
+static inline void _tlbie_va_range_lpid(unsigned long start, unsigned long end,
+					unsigned long pid, unsigned long lpid,
+					unsigned long page_size,
+					unsigned long psize, bool also_pwc)
+{
+	asm volatile("ptesync" : : : "memory");
+	if (also_pwc)
+		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
+	__tlbie_va_range_lpid(start, end, pid, lpid, page_size, psize);
+	asm volatile("eieio; tlbsync; ptesync" : : : "memory");
+}
+
 static inline void _tlbiel_va_range_multicast(struct mm_struct *mm,
 				unsigned long start, unsigned long end,
 				unsigned long pid, unsigned long page_size,
@@ -1381,4 +1499,58 @@ extern void radix_kvm_prefetch_workaround(struct mm_struct *mm)
 	}
 }
 EXPORT_SYMBOL_GPL(radix_kvm_prefetch_workaround);
+
+/*
+ * Performs process-scoped invalidations for a given LPID
+ * as part of H_RPT_INVALIDATE hcall.
+ */
+void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
+			     unsigned long type, unsigned long pg_sizes,
+			     unsigned long start, unsigned long end)
+{
+	unsigned long psize, nr_pages;
+	struct mmu_psize_def *def;
+	bool flush_pid;
+
+	/*
+	 * A H_RPTI_TYPE_ALL request implies RIC=3, hence
+	 * do a single IS=1 based flush.
+	 */
+	if ((type & H_RPTI_TYPE_ALL) = H_RPTI_TYPE_ALL) {
+		_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
+		return;
+	}
+
+	if (type & H_RPTI_TYPE_PWC)
+		_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
+
+	/* Full PID flush */
+	if (start = 0 && end = -1)
+		return _tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
+
+	/* Do range invalidation for all the valid page sizes */
+	for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
+		def = &mmu_psize_defs[psize];
+		if (!(pg_sizes & def->h_rpt_pgsize))
+			continue;
+
+		nr_pages = (end - start) >> def->shift;
+		flush_pid = nr_pages > tlb_single_page_flush_ceiling;
+
+		/*
+		 * If the number of pages spanning the range is above
+		 * the ceiling, convert the request into a full PID flush.
+		 * And since PID flush takes out all the page sizes, there
+		 * is no need to consider remaining page sizes.
+		 */
+		if (flush_pid) {
+			_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
+			return;
+		}
+		_tlbie_va_range_lpid(start, end, pid, lpid,
+				     (1UL << def->shift), psize, false);
+	}
+}
+EXPORT_SYMBOL_GPL(do_h_rpt_invalidate_prt);
+
 #endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 2/6] powerpc/book3s64/radix: Add H_RPT_INVALIDATE pgsize encodings to mmu_psize_def
@ 2021-06-21  8:50   ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

Add a field to mmu_psize_def to store the page size encodings
of H_RPT_INVALIDATE hcall. Initialize this while scanning the radix
AP encodings. This will be used when invalidating with required
page size encoding in the hcall.

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 arch/powerpc/include/asm/book3s/64/mmu.h | 1 +
 arch/powerpc/mm/book3s64/radix_pgtable.c | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
index eace8c3f7b0a..c02f42d1031e 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu.h
@@ -19,6 +19,7 @@ struct mmu_psize_def {
 	int		penc[MMU_PAGE_COUNT];	/* HPTE encoding */
 	unsigned int	tlbiel;	/* tlbiel supported for that page size */
 	unsigned long	avpnm;	/* bits to mask out in AVPN in the HPTE */
+	unsigned long   h_rpt_pgsize; /* H_RPT_INVALIDATE page size encoding */
 	union {
 		unsigned long	sllp;	/* SLB L||LP (exact mask to use in slbmte) */
 		unsigned long ap;	/* Ap encoding used by PowerISA 3.0 */
diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c
index 5fef8db3b463..637db10d841e 100644
--- a/arch/powerpc/mm/book3s64/radix_pgtable.c
+++ b/arch/powerpc/mm/book3s64/radix_pgtable.c
@@ -486,6 +486,7 @@ static int __init radix_dt_scan_page_sizes(unsigned long node,
 		def = &mmu_psize_defs[idx];
 		def->shift = shift;
 		def->ap  = ap;
+		def->h_rpt_pgsize = psize_to_rpti_pgsize(idx);
 	}
 
 	/* needed ? */
@@ -560,9 +561,13 @@ void __init radix__early_init_devtree(void)
 		 */
 		mmu_psize_defs[MMU_PAGE_4K].shift = 12;
 		mmu_psize_defs[MMU_PAGE_4K].ap = 0x0;
+		mmu_psize_defs[MMU_PAGE_4K].h_rpt_pgsize +			psize_to_rpti_pgsize(MMU_PAGE_4K);
 
 		mmu_psize_defs[MMU_PAGE_64K].shift = 16;
 		mmu_psize_defs[MMU_PAGE_64K].ap = 0x5;
+		mmu_psize_defs[MMU_PAGE_64K].h_rpt_pgsize +			psize_to_rpti_pgsize(MMU_PAGE_64K);
 	}
 
 	/*
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 0/6] Support for H_RPT_INVALIDATE in PowerPC KVM
@ 2021-06-21  8:50 ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

This patchset adds support for the new hcall H_RPT_INVALIDATE
and replaces the nested tlb flush calls with this new hcall
if support for the same exists.

Changes in v8:
-------------
- Used tlb_single_page_flush_ceiling in the process-scoped range
  flush routine to switch to full PID invalation if
  the number of pages is above the threshold
- Moved iterating over page sizes into the actual routine that
  handles the eventual flushing thereby limiting the page size
  iteration only to range based flushing
- Converted #if 0 section into a comment section to avoid
  checkpatch from complaining.
- Used a threshold in the partition-scoped range flushing
  to switch to full LPID invalidation

v7: https://lore.kernel.org/linuxppc-dev/20210505154642.178702-1-bharata@linux.ibm.com/

Aneesh Kumar K.V (1):
  KVM: PPC: Book3S HV: Fix comments of H_RPT_INVALIDATE arguments

Bharata B Rao (5):
  powerpc/book3s64/radix: Add H_RPT_INVALIDATE pgsize encodings to
    mmu_psize_def
  KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
  KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
  KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability
  KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM

 Documentation/virt/kvm/api.rst                |  18 ++
 arch/powerpc/include/asm/book3s/64/mmu.h      |   1 +
 .../include/asm/book3s/64/tlbflush-radix.h    |   4 +
 arch/powerpc/include/asm/hvcall.h             |   4 +-
 arch/powerpc/include/asm/kvm_book3s.h         |   3 +
 arch/powerpc/include/asm/mmu_context.h        |   9 +
 arch/powerpc/kvm/book3s_64_mmu_radix.c        |  27 ++-
 arch/powerpc/kvm/book3s_hv.c                  |  89 +++++++++
 arch/powerpc/kvm/book3s_hv_nested.c           | 129 ++++++++++++-
 arch/powerpc/kvm/powerpc.c                    |   3 +
 arch/powerpc/mm/book3s64/radix_pgtable.c      |   5 +
 arch/powerpc/mm/book3s64/radix_tlb.c          | 176 +++++++++++++++++-
 include/uapi/linux/kvm.h                      |   1 +
 13 files changed, 456 insertions(+), 13 deletions(-)

-- 
2.31.1

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH v8 1/6] KVM: PPC: Book3S HV: Fix comments of H_RPT_INVALIDATE arguments
@ 2021-06-21  8:50   ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>

The type values H_RPTI_TYPE_PRT and H_RPTI_TYPE_PAT indicate
invalidating the caching of process and partition scoped entries
respectively.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 arch/powerpc/include/asm/hvcall.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/hvcall.h b/arch/powerpc/include/asm/hvcall.h
index e3b29eda8074..7e4b2cef40c2 100644
--- a/arch/powerpc/include/asm/hvcall.h
+++ b/arch/powerpc/include/asm/hvcall.h
@@ -413,9 +413,9 @@
 #define H_RPTI_TYPE_NESTED	0x0001	/* Invalidate nested guest partition-scope */
 #define H_RPTI_TYPE_TLB		0x0002	/* Invalidate TLB */
 #define H_RPTI_TYPE_PWC		0x0004	/* Invalidate Page Walk Cache */
-/* Invalidate Process Table Entries if H_RPTI_TYPE_NESTED is clear */
+/* Invalidate caching of Process Table Entries if H_RPTI_TYPE_NESTED is clear */
 #define H_RPTI_TYPE_PRT		0x0008
-/* Invalidate Partition Table Entries if H_RPTI_TYPE_NESTED is set */
+/* Invalidate caching of Partition Table Entries if H_RPTI_TYPE_NESTED is set */
 #define H_RPTI_TYPE_PAT		0x0008
 #define H_RPTI_TYPE_ALL		(H_RPTI_TYPE_TLB | H_RPTI_TYPE_PWC | \
 				 H_RPTI_TYPE_PRT)
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
@ 2021-06-21  8:50   ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

Enable support for process-scoped invalidations from nested
guests and partition-scoped invalidations for nested guests.

Process-scoped invalidations for any level of nested guests
are handled by implementing H_RPT_INVALIDATE handler in the
nested guest exit path in L0.

Partition-scoped invalidation requests are forwarded to the
right nested guest, handled there and passed down to L0
for eventual handling.

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
	[Nested guest partition-scoped invalidation changes]
---
 .../include/asm/book3s/64/tlbflush-radix.h    |   4 +
 arch/powerpc/include/asm/kvm_book3s.h         |   3 +
 arch/powerpc/kvm/book3s_hv.c                  |  59 ++++++++-
 arch/powerpc/kvm/book3s_hv_nested.c           | 117 ++++++++++++++++++
 arch/powerpc/mm/book3s64/radix_tlb.c          |   4 -
 5 files changed, 180 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
index 8b33601cdb9d..a46fd37ad552 100644
--- a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
+++ b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
@@ -4,6 +4,10 @@
 
 #include <asm/hvcall.h>
 
+#define RIC_FLUSH_TLB 0
+#define RIC_FLUSH_PWC 1
+#define RIC_FLUSH_ALL 2
+
 struct vm_area_struct;
 struct mm_struct;
 struct mmu_gather;
diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h
index e6b53c6e21e3..caaa0f592d8e 100644
--- a/arch/powerpc/include/asm/kvm_book3s.h
+++ b/arch/powerpc/include/asm/kvm_book3s.h
@@ -307,6 +307,9 @@ void kvmhv_set_ptbl_entry(unsigned int lpid, u64 dw0, u64 dw1);
 void kvmhv_release_all_nested(struct kvm *kvm);
 long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu);
 long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu);
+long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
+			     unsigned long type, unsigned long pg_sizes,
+			     unsigned long start, unsigned long end);
 int kvmhv_run_single_vcpu(struct kvm_vcpu *vcpu,
 			  u64 time_limit, unsigned long lpcr);
 void kvmhv_save_hv_regs(struct kvm_vcpu *vcpu, struct hv_guest_state *hr);
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 7e6da4687d88..3d5b8ba3786d 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -925,6 +925,34 @@ static int kvmppc_get_yield_count(struct kvm_vcpu *vcpu)
 	return yield_count;
 }
 
+/*
+ * H_RPT_INVALIDATE hcall handler for nested guests.
+ *
+ * Handles only nested process-scoped invalidation requests in L0.
+ */
+static int kvmppc_nested_h_rpt_invalidate(struct kvm_vcpu *vcpu)
+{
+	unsigned long type = kvmppc_get_gpr(vcpu, 6);
+	unsigned long pid, pg_sizes, start, end;
+
+	/*
+	 * The partition-scoped invalidations aren't handled here in L0.
+	 */
+	if (type & H_RPTI_TYPE_NESTED)
+		return RESUME_HOST;
+
+	pid = kvmppc_get_gpr(vcpu, 4);
+	pg_sizes = kvmppc_get_gpr(vcpu, 7);
+	start = kvmppc_get_gpr(vcpu, 8);
+	end = kvmppc_get_gpr(vcpu, 9);
+
+	do_h_rpt_invalidate_prt(pid, vcpu->arch.nested->shadow_lpid,
+				type, pg_sizes, start, end);
+
+	kvmppc_set_gpr(vcpu, 3, H_SUCCESS);
+	return RESUME_GUEST;
+}
+
 static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
 				    unsigned long id, unsigned long target,
 				    unsigned long type, unsigned long pg_sizes,
@@ -938,10 +966,18 @@ static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
 
 	/*
 	 * Partition-scoped invalidation for nested guests.
-	 * Not yet supported
 	 */
-	if (type & H_RPTI_TYPE_NESTED)
-		return H_P3;
+	if (type & H_RPTI_TYPE_NESTED) {
+		if (!nesting_enabled(vcpu->kvm))
+			return H_FUNCTION;
+
+		/* Support only cores as target */
+		if (target != H_RPTI_TARGET_CMMU)
+			return H_P2;
+
+		return do_h_rpt_invalidate_pat(vcpu, id, type, pg_sizes,
+					       start, end);
+	}
 
 	/*
 	 * Process-scoped invalidation for L1 guests.
@@ -1629,6 +1665,23 @@ static int kvmppc_handle_nested_exit(struct kvm_vcpu *vcpu)
 		if (!xics_on_xive())
 			kvmppc_xics_rm_complete(vcpu, 0);
 		break;
+	case BOOK3S_INTERRUPT_SYSCALL:
+	{
+		unsigned long req = kvmppc_get_gpr(vcpu, 3);
+
+		/*
+		 * The H_RPT_INVALIDATE hcalls issued by nested
+		 * guests for process-scoped invalidations when
+		 * GTSE=0, are handled here in L0.
+		 */
+		if (req = H_RPT_INVALIDATE) {
+			r = kvmppc_nested_h_rpt_invalidate(vcpu);
+			break;
+		}
+
+		r = RESUME_HOST;
+		break;
+	}
 	default:
 		r = RESUME_HOST;
 		break;
diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
index 60724f674421..056d3df68de1 100644
--- a/arch/powerpc/kvm/book3s_hv_nested.c
+++ b/arch/powerpc/kvm/book3s_hv_nested.c
@@ -1214,6 +1214,123 @@ long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu)
 	return H_SUCCESS;
 }
 
+static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
+					 unsigned long lpid,
+					 unsigned long page_size,
+					 unsigned long ap,
+					 unsigned long start,
+					 unsigned long end)
+{
+	unsigned long addr = start;
+	int ret;
+
+	do {
+		ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
+						   get_epn(addr));
+		if (ret)
+			return ret;
+		addr += page_size;
+	} while (addr < end);
+
+	return ret;
+}
+
+static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
+					 unsigned long lpid, unsigned long ric)
+{
+	struct kvm *kvm = vcpu->kvm;
+	struct kvm_nested_guest *gp;
+
+	gp = kvmhv_get_nested(kvm, lpid, false);
+	if (gp) {
+		kvmhv_emulate_tlbie_lpid(vcpu, gp, ric);
+		kvmhv_put_nested(gp);
+	}
+	return H_SUCCESS;
+}
+
+/*
+ * Number of pages above which we invalidate the entire LPID rather than
+ * flush individual pages.
+ */
+static unsigned long tlb_range_flush_page_ceiling __read_mostly = 33;
+
+/*
+ * Performs partition-scoped invalidations for nested guests
+ * as part of H_RPT_INVALIDATE hcall.
+ */
+long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
+			     unsigned long type, unsigned long pg_sizes,
+			     unsigned long start, unsigned long end)
+{
+	struct kvm_nested_guest *gp;
+	long ret;
+	unsigned long psize, ap;
+
+	/*
+	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
+	 *
+	 * However, nested KVM issues a L2 lpid flush call when creating
+	 * partition table entries for L2. This happens even before the
+	 * corresponding shadow lpid is created in HV which happens in
+	 * H_ENTER_NESTED call. Since we can't differentiate this case from
+	 * the invalid case, we ignore such flush requests and return success.
+	 */
+	gp = kvmhv_find_nested(vcpu->kvm, lpid);
+	if (!gp)
+		return H_SUCCESS;
+
+	/*
+	 * A flush all request can be handled by a full lpid flush only.
+	 */
+	if ((type & H_RPTI_TYPE_NESTED_ALL) = H_RPTI_TYPE_NESTED_ALL)
+		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_ALL);
+
+	/*
+	 * We don't need to handle a PWC flush like process table here,
+	 * because intermediate partition scoped table in nested guest doesn't
+	 * really have PWC. Only level we have PWC is in L0 and for nested
+	 * invalidate at L0 we always do kvm_flush_lpid() which does
+	 * radix__flush_all_lpid(). For range invalidate at any level, we
+	 * are not removing the higher level page tables and hence there is
+	 * no PWC invalidate needed.
+	 *
+	 * if (type & H_RPTI_TYPE_PWC) {
+	 *	ret = do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_PWC);
+	 *	if (ret)
+	 *		return H_P4;
+	 * }
+	 */
+
+	if (start = 0 && end = -1)
+		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
+
+	if (type & H_RPTI_TYPE_TLB) {
+		struct mmu_psize_def *def;
+		bool flush_lpid;
+		unsigned long nr_pages;
+
+		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
+			def = &mmu_psize_defs[psize];
+			if (!(pg_sizes & def->h_rpt_pgsize))
+				continue;
+
+			nr_pages = (end - start) >> def->shift;
+			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
+			if (flush_lpid)
+				return do_tlb_invalidate_nested_all(vcpu, lpid,
+								RIC_FLUSH_TLB);
+
+			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
+							   (1UL << def->shift),
+							   ap, start, end);
+			if (ret)
+				return H_P4;
+		}
+	}
+	return H_SUCCESS;
+}
+
 /* Used to convert a nested guest real address to a L1 guest real address */
 static int kvmhv_translate_addr_nested(struct kvm_vcpu *vcpu,
 				       struct kvm_nested_guest *gp,
diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
index cdd98b9e7b15..4f38cf34ea40 100644
--- a/arch/powerpc/mm/book3s64/radix_tlb.c
+++ b/arch/powerpc/mm/book3s64/radix_tlb.c
@@ -20,10 +20,6 @@
 
 #include "internal.h"
 
-#define RIC_FLUSH_TLB 0
-#define RIC_FLUSH_PWC 1
-#define RIC_FLUSH_ALL 2
-
 /*
  * tlbiel instruction for radix, set invalidation
  * i.e., r=1 and is\x01 or is\x10 or is\x11
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 5/6] KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability
@ 2021-06-21  8:50   ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

Now that we have H_RPT_INVALIDATE fully implemented, enable
support for the same via KVM_CAP_PPC_RPT_INVALIDATE KVM capability

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 Documentation/virt/kvm/api.rst | 18 ++++++++++++++++++
 arch/powerpc/kvm/powerpc.c     |  3 +++
 include/uapi/linux/kvm.h       |  1 +
 3 files changed, 22 insertions(+)

diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
index 7fcb2fd38f42..9977e845633f 100644
--- a/Documentation/virt/kvm/api.rst
+++ b/Documentation/virt/kvm/api.rst
@@ -6362,6 +6362,24 @@ default.
 
 See Documentation/x86/sgx/2.Kernel-internals.rst for more details.
 
+7.26 KVM_CAP_PPC_RPT_INVALIDATE
+-------------------------------
+
+:Capability: KVM_CAP_PPC_RPT_INVALIDATE
+:Architectures: ppc
+:Type: vm
+
+This capability indicates that the kernel is capable of handling
+H_RPT_INVALIDATE hcall.
+
+In order to enable the use of H_RPT_INVALIDATE in the guest,
+user space might have to advertise it for the guest. For example,
+IBM pSeries (sPAPR) guest starts using it if "hcall-rpt-invalidate" is
+present in the "ibm,hypertas-functions" device-tree property.
+
+This capability is enabled for hypervisors on platforms like POWER9
+that support radix MMU.
+
 8. Other capabilities.
 ===========
 
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index a2a68a958fa0..be33b5321a76 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -682,6 +682,9 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 		r = !!(hv_enabled && kvmppc_hv_ops->enable_dawr1 &&
 		       !kvmppc_hv_ops->enable_dawr1(NULL));
 		break;
+	case KVM_CAP_PPC_RPT_INVALIDATE:
+		r = 1;
+		break;
 #endif
 	default:
 		r = 0;
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 79d9c44d1ad7..9016e96de971 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1083,6 +1083,7 @@ struct kvm_ppc_resize_hpt {
 #define KVM_CAP_SGX_ATTRIBUTE 196
 #define KVM_CAP_VM_COPY_ENC_CONTEXT_FROM 197
 #define KVM_CAP_PTP_KVM 198
+#define KVM_CAP_PPC_RPT_INVALIDATE 199
 
 #ifdef KVM_CAP_IRQ_ROUTING
 
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH v8 6/6] KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM
@ 2021-06-21  8:50   ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-21  8:50 UTC (permalink / raw)
  To: kvm-ppc, linuxppc-dev
  Cc: farosas, aneesh.kumar, npiggin, Bharata B Rao, david

In the nested KVM case, replace H_TLB_INVALIDATE by the new hcall
H_RPT_INVALIDATE if available. The availability of this hcall
is determined from "hcall-rpt-invalidate" string in ibm,hypertas-functions
DT property.

Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 arch/powerpc/kvm/book3s_64_mmu_radix.c | 27 +++++++++++++++++++++-----
 arch/powerpc/kvm/book3s_hv_nested.c    | 12 ++++++++++--
 2 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c
index d909c069363e..b5905ae4377c 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_radix.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c
@@ -21,6 +21,7 @@
 #include <asm/pte-walk.h>
 #include <asm/ultravisor.h>
 #include <asm/kvm_book3s_uvmem.h>
+#include <asm/plpar_wrappers.h>
 
 /*
  * Supported radix tree geometry.
@@ -318,9 +319,19 @@ void kvmppc_radix_tlbie_page(struct kvm *kvm, unsigned long addr,
 	}
 
 	psi = shift_to_mmu_psize(pshift);
-	rb = addr | (mmu_get_ap(psi) << PPC_BITLSHIFT(58));
-	rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(0, 0, 1),
-				lpid, rb);
+
+	if (!firmware_has_feature(FW_FEATURE_RPT_INVALIDATE)) {
+		rb = addr | (mmu_get_ap(psi) << PPC_BITLSHIFT(58));
+		rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(0, 0, 1),
+					lpid, rb);
+	} else {
+		rc = pseries_rpt_invalidate(lpid, H_RPTI_TARGET_CMMU,
+					    H_RPTI_TYPE_NESTED |
+					    H_RPTI_TYPE_TLB,
+					    psize_to_rpti_pgsize(psi),
+					    addr, addr + psize);
+	}
+
 	if (rc)
 		pr_err("KVM: TLB page invalidation hcall failed, rc=%ld\n", rc);
 }
@@ -334,8 +345,14 @@ static void kvmppc_radix_flush_pwc(struct kvm *kvm, unsigned int lpid)
 		return;
 	}
 
-	rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(1, 0, 1),
-				lpid, TLBIEL_INVAL_SET_LPID);
+	if (!firmware_has_feature(FW_FEATURE_RPT_INVALIDATE))
+		rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(1, 0, 1),
+					lpid, TLBIEL_INVAL_SET_LPID);
+	else
+		rc = pseries_rpt_invalidate(lpid, H_RPTI_TARGET_CMMU,
+					    H_RPTI_TYPE_NESTED |
+					    H_RPTI_TYPE_PWC, H_RPTI_PAGE_ALL,
+					    0, -1UL);
 	if (rc)
 		pr_err("KVM: TLB PWC invalidation hcall failed, rc=%ld\n", rc);
 }
diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
index 056d3df68de1..d78efb5f5bb3 100644
--- a/arch/powerpc/kvm/book3s_hv_nested.c
+++ b/arch/powerpc/kvm/book3s_hv_nested.c
@@ -19,6 +19,7 @@
 #include <asm/pgalloc.h>
 #include <asm/pte-walk.h>
 #include <asm/reg.h>
+#include <asm/plpar_wrappers.h>
 
 static struct patb_entry *pseries_partition_tb;
 
@@ -467,8 +468,15 @@ static void kvmhv_flush_lpid(unsigned int lpid)
 		return;
 	}
 
-	rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(2, 0, 1),
-				lpid, TLBIEL_INVAL_SET_LPID);
+	if (!firmware_has_feature(FW_FEATURE_RPT_INVALIDATE))
+		rc = plpar_hcall_norets(H_TLB_INVALIDATE, H_TLBIE_P1_ENC(2, 0, 1),
+					lpid, TLBIEL_INVAL_SET_LPID);
+	else
+		rc = pseries_rpt_invalidate(lpid, H_RPTI_TARGET_CMMU,
+					    H_RPTI_TYPE_NESTED |
+					    H_RPTI_TYPE_TLB | H_RPTI_TYPE_PWC |
+					    H_RPTI_TYPE_PAT,
+					    H_RPTI_PAGE_ALL, 0, -1UL);
 	if (rc)
 		pr_err("KVM: TLB LPID invalidation hcall failed, rc=%ld\n", rc);
 }
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 6/6] KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM
  2021-06-21  8:50   ` Bharata B Rao
  (?)
@ 2021-06-21 15:07   ` kernel test robot
  2021-06-21 15:21     ` Philip Li
  -1 siblings, 1 reply; 36+ messages in thread
From: kernel test robot @ 2021-06-21 15:07 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 94162 bytes --]

Hi Bharata,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on v5.13-rc7]
[cannot apply to powerpc/next kvm/queue kvm-ppc/kvm-ppc-next next-20210621]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Bharata-B-Rao/Support-for-H_RPT_INVALIDATE-in-PowerPC-KVM/20210621-165150
base:    13311e74253fe64329390df80bed3f07314ddd61
config: h8300-randconfig-r013-20210621 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/3fc7aa5c69047aed96691cc5144ef6282124a62e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Bharata-B-Rao/Support-for-H_RPT_INVALIDATE-in-PowerPC-KVM/20210621-165150
        git checkout 3fc7aa5c69047aed96691cc5144ef6282124a62e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=h8300 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/dac/vf610_dac.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/dummy/iio_dummy.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/dummy/iio_dummy_evgen.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/frequency/adf4350.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/adis16136.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/fxas21002c_core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/fxas21002c_i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/fxas21002c_spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/itg3200.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/st_gyro.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/st_gyro_i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/st_gyro_spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/health/max30102.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/humidity/dht11.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/humidity/hdc100x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/humidity/si7005.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/adis16460.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/bmi160/bmi160_core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/bmi160/bmi160_i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/fxos8700_i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/inv_icm42600/inv-icm42600-spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/inv_icm42600/inv-icm42600.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/kmx61.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/adux1020.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/cm32181.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/cm36651.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/gp2ap020a00f.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/jsa1212.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/lv0104cs.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/noa1305.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/pa12203001.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/st_uvis25_core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/st_uvis25_i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/st_uvis25_spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/vcnl4000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/vl6180.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/zopt2201.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/ak8974.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/hmc5843_core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/hmc5843_spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/mag3110.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/mmc35240.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/rm3100-core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/rm3100-i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/st_magn.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/st_magn_i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/st_magn_spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiometer/ad5272.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiometer/max5432.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiometer/max5487.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiometer/mcp41010.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiostat/lmp91000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/abp060mg.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/bmp280-i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/bmp280-spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/bmp280.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/hp206c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/icp10100.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/mpl3115.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/ms5611_core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/t5403.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/proximity/isl29501.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/proximity/ping.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/proximity/sx9310.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/proximity/vl53l0x-i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/temperature/max31856.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/temperature/tmp006.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/temperature/tsys01.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/temperature/tsys02d.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/flash/leds-rt4505.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-as3645a.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-bd2802.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-el15203000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-is31fl319x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-ktd2692.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3530.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3532.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3533.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm355x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm36274.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3642.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3692x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3697.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lp5562.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lt3593.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-max8997.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-sgm3140.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-spi-byte.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-ti-lmu-common.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-tps6105x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-wm831x-status.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/uleds.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mailbox/mailbox-altera.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mcb/mcb-lpc.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mcb/mcb.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/cec/core/cec.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/siano/smsdvb.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/siano/smsmdtv.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/v4l2-tpg/v4l2-tpg.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-common.ko.gz', needed by '__modinst'.
>> make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-dma-contig.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-memops.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-v4l2.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-vmalloc.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-core/dvb-core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/a8293.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/af9013.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/af9033.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ascot2e.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx22700.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24110.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24113.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24116.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24117.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24123.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cxd2099.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cxd2820r.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cxd2841er.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cxd2880/cxd2880.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dib3000mc.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dib7000p.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dib8000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dib9000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dibx000_common.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/drxd.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/drxk.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ds3000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dvb_dummy_fe.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ec100.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/helene.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/horus3a.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/isl6405.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/isl6421.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/isl6423.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/itd1000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ix2505v.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lg2160.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lgdt3306a.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lgdt330x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lgs8gxx.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lnbh25.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lnbh29.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lnbp22.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/m88ds3103.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/m88rs2000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mb86a16.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mb86a20s.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mn88443x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mt312.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mt352.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/nxt200x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/or51132.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/or51211.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/rtl2832.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/s5h1409.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/s5h1411.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/s5h1432.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/s921.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/si2165.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/si2168.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/sp8870.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/sp887x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stb6000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stb6100.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv0288.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv0299.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv090x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv0910.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv6110x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda10021.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda10048.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda1004x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda10071.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda18271c2dd.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda8083.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda826x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tua6100.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ves1820.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ves1x93.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/zd1301_demod.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/zl10036.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/zl10039.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/zl10353.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ad5820.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ad9389b.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adp1653.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7170.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7175.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7180.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7183.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv748x/adv748x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7511-v4l2.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ak7375.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ak881x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/aptina-pll.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/bt819.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/cx25840/cx25840.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/dw9714.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/dw9807-vcm.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/hi556.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx219.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx258.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx274.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx290.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx319.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx334.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx355.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/lm3560.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/lm3646.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/m5mols/m5mols.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/max2175.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/max9286.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ml86v7667.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/msp3400.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/mt9m032.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/mt9t112.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/mt9v011.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/mt9v111.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/noon010pc30.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov02a10.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov13858.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov2640.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov2659.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov2680.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov2685.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5645.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5647.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5670.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5675.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5695.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov7251.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov7640.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov7670.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov772x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov7740.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov8856.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov9650.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/rj54n1cb0c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/s5c73m3/s5c73m3.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/s5k6aa.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa6588.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa7110.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa7115.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa7127.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa717x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa7185.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/sony-btf-mpx.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/sr030pc30.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tea6415c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tea6420.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ths8200.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tlv320aic23b.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tvaudio.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tvp514x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tw2804.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tw9903.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tw9906.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tw9910.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/upd64031a.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/upd64083.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/vp27smpx.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/vpx3220.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/mc/mc.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/mmc/siano/smssdio.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/platform/aspeed-video.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/platform/m2m-deinterlace.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/radio-tea5764.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/radio-wl1273.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/si470x/radio-si470x-common.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/si470x/radio-si470x-i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/tef6862.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/spi/cxd2880-spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/spi/gs1662.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vicodec/vicodec.ko.gz', needed by '__modinst'.
>> make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vidtv/dvb-vidtv-bridge.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vidtv/dvb-vidtv-demod.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vidtv/dvb-vidtv-tuner.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vimc/vimc.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vivid/vivid.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/e4000.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/fc0013.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/fc2580.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/it913x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mc44s803.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/msi001.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt2060.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt2063.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt20xx.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt2131.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt2266.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mxl301rf.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mxl5005s.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/qm1d1c0042.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/qt1010.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda18218.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda18250.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda18271.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda827x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda9887.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tea5761.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tuner-xc2028.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/v4l2-flash-led-class.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/v4l2-fwnode.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/videodev.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/memory/dfl-emif.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/88pm800.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/88pm805.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/88pm80x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/act8945a.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/as3722.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/axp20x-i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/axp20x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/da9063.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/da9150-core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/gateworks-gsc.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/intel-m10-bmc.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/lm3533-core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/lm3533-ctrlbank.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/max77650.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/max77686.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/max77693.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/mp2629.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/retu-mfd.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/rohm-bd718x7.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/rt5033.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/sky81452.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/ti-lmu.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/tps6105x.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/tps65010.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/tps65086.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/wl1273-core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/wm8994.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/ad525x_dpot-i2c.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/ad525x_dpot-spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/ad525x_dpot.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/c2port/core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/dummy-irq.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/echo/echo.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/eeprom/at25.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/hmc6352.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/xilinx_sdfec.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/core/mmc_block.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/core/mmc_core.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/core/mmc_test.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/core/pwrseq_simple.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/cqhci.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/mmc_spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/mtk-sd.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/of_mmc_spi.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/sdhci.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/usdhi6rol0.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/chips/cfi_cmdset_0001.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/chips/jedec_probe.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/chips/map_absent.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/chips/map_ram.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/devices/mchp23k256.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/devices/sst25l.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/mtdoops.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/mtdpstore.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/denali.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/denali_dt.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/diskonchip.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/gpio.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/mxic_nand.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/nand.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/parsers/cmdlinepart.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/parsers/ofpart.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/parsers/redboot.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/rfd_ftl.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/tests/mtd_nandbiterrs.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/tests/mtd_nandecctest.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/tests/mtd_oobtest.ko.gz', needed by '__modinst'.
   make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/tests/mtd_pagetest.ko.gz', needed by '__modinst'.

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 19975 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 6/6] KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM
  2021-06-21 15:07   ` kernel test robot
@ 2021-06-21 15:21     ` Philip Li
  0 siblings, 0 replies; 36+ messages in thread
From: Philip Li @ 2021-06-21 15:21 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 95302 bytes --]

On Mon, Jun 21, 2021 at 11:07:04PM +0800, kernel test robot wrote:
> Hi Bharata,
> 
> Thank you for the patch! Yet something to improve:
> 
> [auto build test ERROR on v5.13-rc7]
> [cannot apply to powerpc/next kvm/queue kvm-ppc/kvm-ppc-next next-20210621]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
> 
> url:    https://github.com/0day-ci/linux/commits/Bharata-B-Rao/Support-for-H_RPT_INVALIDATE-in-PowerPC-KVM/20210621-165150
> base:    13311e74253fe64329390df80bed3f07314ddd61
> config: h8300-randconfig-r013-20210621 (attached as .config)
> compiler: h8300-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://github.com/0day-ci/linux/commit/3fc7aa5c69047aed96691cc5144ef6282124a62e
>         git remote add linux-review https://github.com/0day-ci/linux
>         git fetch --no-tags linux-review Bharata-B-Rao/Support-for-H_RPT_INVALIDATE-in-PowerPC-KVM/20210621-165150
>         git checkout 3fc7aa5c69047aed96691cc5144ef6282124a62e
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=h8300 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All errors (new ones prefixed by >>):
Sorry for the broken report, kindly ignore this, we will fix
this asap.

> 
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/dac/vf610_dac.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/dummy/iio_dummy.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/dummy/iio_dummy_evgen.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/frequency/adf4350.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/adis16136.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/fxas21002c_core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/fxas21002c_i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/fxas21002c_spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/itg3200.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/st_gyro.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/st_gyro_i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/gyro/st_gyro_spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/health/max30102.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/humidity/dht11.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/humidity/hdc100x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/humidity/si7005.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/adis16460.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/bmi160/bmi160_core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/bmi160/bmi160_i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/fxos8700_i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/inv_icm42600/inv-icm42600-spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/inv_icm42600/inv-icm42600.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/imu/kmx61.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/adux1020.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/cm32181.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/cm36651.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/gp2ap020a00f.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/jsa1212.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/lv0104cs.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/noa1305.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/pa12203001.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/st_uvis25_core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/st_uvis25_i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/st_uvis25_spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/vcnl4000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/vl6180.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/light/zopt2201.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/ak8974.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/hmc5843_core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/hmc5843_spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/mag3110.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/mmc35240.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/rm3100-core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/rm3100-i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/st_magn.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/st_magn_i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/magnetometer/st_magn_spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiometer/ad5272.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiometer/max5432.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiometer/max5487.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiometer/mcp41010.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/potentiostat/lmp91000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/abp060mg.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/bmp280-i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/bmp280-spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/bmp280.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/hp206c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/icp10100.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/mpl3115.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/ms5611_core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/pressure/t5403.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/proximity/isl29501.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/proximity/ping.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/proximity/sx9310.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/proximity/vl53l0x-i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/temperature/max31856.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/temperature/tmp006.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/temperature/tsys01.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/iio/temperature/tsys02d.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/flash/leds-rt4505.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-as3645a.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-bd2802.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-el15203000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-is31fl319x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-ktd2692.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3530.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3532.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3533.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm355x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm36274.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3642.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3692x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lm3697.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lp5562.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-lt3593.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-max8997.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-sgm3140.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-spi-byte.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-ti-lmu-common.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-tps6105x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/leds-wm831x-status.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/leds/uleds.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mailbox/mailbox-altera.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mcb/mcb-lpc.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mcb/mcb.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/cec/core/cec.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/siano/smsdvb.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/siano/smsmdtv.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/v4l2-tpg/v4l2-tpg.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-common.ko.gz', needed by '__modinst'.
> >> make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-dma-contig.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-memops.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-v4l2.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/common/videobuf2/videobuf2-vmalloc.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-core/dvb-core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/a8293.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/af9013.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/af9033.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ascot2e.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx22700.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24110.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24113.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24116.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24117.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cx24123.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cxd2099.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cxd2820r.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cxd2841er.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/cxd2880/cxd2880.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dib3000mc.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dib7000p.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dib8000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dib9000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dibx000_common.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/drx39xyj/drx39xyj.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/drxd.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/drxk.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ds3000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/dvb_dummy_fe.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ec100.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/helene.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/horus3a.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/isl6405.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/isl6421.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/isl6423.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/itd1000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ix2505v.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lg2160.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lgdt3306a.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lgdt330x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lgs8gxx.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lnbh25.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lnbh29.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/lnbp22.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/m88ds3103.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/m88rs2000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mb86a16.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mb86a20s.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mn88443x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mt312.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/mt352.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/nxt200x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/or51132.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/or51211.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/rtl2832.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/s5h1409.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/s5h1411.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/s5h1432.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/s921.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/si2165.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/si2168.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/sp8870.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/sp887x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stb6000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stb6100.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv0288.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv0299.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv090x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv0910.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/stv6110x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda10021.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda10048.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda1004x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda10071.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda18271c2dd.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda8083.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tda826x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/tua6100.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ves1820.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/ves1x93.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/zd1301_demod.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/zl10036.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/zl10039.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/dvb-frontends/zl10353.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ad5820.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ad9389b.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adp1653.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7170.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7175.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7180.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7183.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv748x/adv748x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/adv7511-v4l2.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ak7375.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ak881x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/aptina-pll.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/bt819.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/cx25840/cx25840.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/dw9714.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/dw9807-vcm.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/hi556.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx219.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx258.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx274.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx290.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx319.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx334.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/imx355.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/lm3560.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/lm3646.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/m5mols/m5mols.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/max2175.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/max9286.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ml86v7667.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/msp3400.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/mt9m032.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/mt9t112.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/mt9v011.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/mt9v111.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/noon010pc30.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov02a10.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov13858.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov2640.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov2659.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov2680.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov2685.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5645.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5647.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5670.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5675.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov5695.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov7251.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov7640.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov7670.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov772x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov7740.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov8856.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ov9650.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/rj54n1cb0c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/s5c73m3/s5c73m3.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/s5k6aa.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa6588.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa7110.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa7115.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa7127.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa717x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/saa7185.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/sony-btf-mpx.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/sr030pc30.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tea6415c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tea6420.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/ths8200.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tlv320aic23b.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tvaudio.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tvp514x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tw2804.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tw9903.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tw9906.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/tw9910.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/upd64031a.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/upd64083.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/vp27smpx.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/i2c/vpx3220.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/mc/mc.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/mmc/siano/smssdio.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/platform/aspeed-video.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/platform/m2m-deinterlace.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/radio-tea5764.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/radio-wl1273.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/si470x/radio-si470x-common.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/si470x/radio-si470x-i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/radio/tef6862.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/spi/cxd2880-spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/spi/gs1662.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vicodec/vicodec.ko.gz', needed by '__modinst'.
> >> make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vidtv/dvb-vidtv-bridge.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vidtv/dvb-vidtv-demod.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vidtv/dvb-vidtv-tuner.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vimc/vimc.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/test-drivers/vivid/vivid.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/e4000.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/fc0013.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/fc2580.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/it913x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mc44s803.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/msi001.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt2060.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt2063.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt20xx.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt2131.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mt2266.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mxl301rf.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/mxl5005s.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/qm1d1c0042.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/qt1010.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda18218.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda18250.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda18271.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda827x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tda9887.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tea5761.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/tuners/tuner-xc2028.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/v4l2-flash-led-class.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/v4l2-fwnode.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/media/v4l2-core/videodev.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/memory/dfl-emif.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/88pm800.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/88pm805.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/88pm80x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/act8945a.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/as3722.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/axp20x-i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/axp20x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/da9063.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/da9150-core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/gateworks-gsc.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/intel-m10-bmc.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/lm3533-core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/lm3533-ctrlbank.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/max77650.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/max77686.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/max77693.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/mp2629.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/retu-mfd.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/rohm-bd718x7.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/rt5033.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/sky81452.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/ti-lmu.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/tps6105x.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/tps65010.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/tps65086.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/wl1273-core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mfd/wm8994.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/ad525x_dpot-i2c.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/ad525x_dpot-spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/ad525x_dpot.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/c2port/core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/dummy-irq.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/echo/echo.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/eeprom/at25.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/hmc6352.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/misc/xilinx_sdfec.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/core/mmc_block.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/core/mmc_core.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/core/mmc_test.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/core/pwrseq_simple.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/cqhci.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/mmc_spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/mtk-sd.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/of_mmc_spi.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/sdhci.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mmc/host/usdhi6rol0.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/chips/cfi_cmdset_0001.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/chips/jedec_probe.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/chips/map_absent.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/chips/map_ram.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/devices/mchp23k256.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/devices/sst25l.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/mtdoops.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/mtdpstore.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/denali.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/denali_dt.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/diskonchip.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/gpio.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/mxic_nand.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/nand/raw/nand.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/parsers/cmdlinepart.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/parsers/ofpart.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/parsers/redboot.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/rfd_ftl.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/tests/mtd_nandbiterrs.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/tests/mtd_nandecctest.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/tests/mtd_oobtest.ko.gz', needed by '__modinst'.
>    make[2]: *** No rule to make target '/tmp/kernel/h8300-randconfig-r013-20210621/gcc-9.3.0/3fc7aa5c69047aed96691cc5144ef6282124a62e/lib/modules/5.13.0-rc7-00006-g3fc7aa5c6904/kernel/drivers/mtd/tests/mtd_pagetest.ko.gz', needed by '__modinst'.
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org


> _______________________________________________
> kbuild-all mailing list -- kbuild-all(a)lists.01.org
> To unsubscribe send an email to kbuild-all-leave(a)lists.01.org

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
  2021-06-21  8:50   ` Bharata B Rao
@ 2021-06-21 17:12     ` Nathan Chancellor
  -1 siblings, 0 replies; 36+ messages in thread
From: Nathan Chancellor @ 2021-06-21 17:12 UTC (permalink / raw)
  To: Bharata B Rao
  Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev, david

On Mon, Jun 21, 2021 at 02:20:01PM +0530, Bharata B Rao wrote:
> Enable support for process-scoped invalidations from nested
> guests and partition-scoped invalidations for nested guests.
> 
> Process-scoped invalidations for any level of nested guests
> are handled by implementing H_RPT_INVALIDATE handler in the
> nested guest exit path in L0.
> 
> Partition-scoped invalidation requests are forwarded to the
> right nested guest, handled there and passed down to L0
> for eventual handling.
> 
> Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
> 	[Nested guest partition-scoped invalidation changes]
> ---
>  .../include/asm/book3s/64/tlbflush-radix.h    |   4 +
>  arch/powerpc/include/asm/kvm_book3s.h         |   3 +
>  arch/powerpc/kvm/book3s_hv.c                  |  59 ++++++++-
>  arch/powerpc/kvm/book3s_hv_nested.c           | 117 ++++++++++++++++++
>  arch/powerpc/mm/book3s64/radix_tlb.c          |   4 -
>  5 files changed, 180 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
> index 8b33601cdb9d..a46fd37ad552 100644
> --- a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
> +++ b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
> @@ -4,6 +4,10 @@
>  
>  #include <asm/hvcall.h>
>  
> +#define RIC_FLUSH_TLB 0
> +#define RIC_FLUSH_PWC 1
> +#define RIC_FLUSH_ALL 2
> +
>  struct vm_area_struct;
>  struct mm_struct;
>  struct mmu_gather;
> diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h
> index e6b53c6e21e3..caaa0f592d8e 100644
> --- a/arch/powerpc/include/asm/kvm_book3s.h
> +++ b/arch/powerpc/include/asm/kvm_book3s.h
> @@ -307,6 +307,9 @@ void kvmhv_set_ptbl_entry(unsigned int lpid, u64 dw0, u64 dw1);
>  void kvmhv_release_all_nested(struct kvm *kvm);
>  long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu);
>  long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu);
> +long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
> +			     unsigned long type, unsigned long pg_sizes,
> +			     unsigned long start, unsigned long end);
>  int kvmhv_run_single_vcpu(struct kvm_vcpu *vcpu,
>  			  u64 time_limit, unsigned long lpcr);
>  void kvmhv_save_hv_regs(struct kvm_vcpu *vcpu, struct hv_guest_state *hr);
> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
> index 7e6da4687d88..3d5b8ba3786d 100644
> --- a/arch/powerpc/kvm/book3s_hv.c
> +++ b/arch/powerpc/kvm/book3s_hv.c
> @@ -925,6 +925,34 @@ static int kvmppc_get_yield_count(struct kvm_vcpu *vcpu)
>  	return yield_count;
>  }
>  
> +/*
> + * H_RPT_INVALIDATE hcall handler for nested guests.
> + *
> + * Handles only nested process-scoped invalidation requests in L0.
> + */
> +static int kvmppc_nested_h_rpt_invalidate(struct kvm_vcpu *vcpu)
> +{
> +	unsigned long type = kvmppc_get_gpr(vcpu, 6);
> +	unsigned long pid, pg_sizes, start, end;
> +
> +	/*
> +	 * The partition-scoped invalidations aren't handled here in L0.
> +	 */
> +	if (type & H_RPTI_TYPE_NESTED)
> +		return RESUME_HOST;
> +
> +	pid = kvmppc_get_gpr(vcpu, 4);
> +	pg_sizes = kvmppc_get_gpr(vcpu, 7);
> +	start = kvmppc_get_gpr(vcpu, 8);
> +	end = kvmppc_get_gpr(vcpu, 9);
> +
> +	do_h_rpt_invalidate_prt(pid, vcpu->arch.nested->shadow_lpid,
> +				type, pg_sizes, start, end);
> +
> +	kvmppc_set_gpr(vcpu, 3, H_SUCCESS);
> +	return RESUME_GUEST;
> +}
> +
>  static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
>  				    unsigned long id, unsigned long target,
>  				    unsigned long type, unsigned long pg_sizes,
> @@ -938,10 +966,18 @@ static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
>  
>  	/*
>  	 * Partition-scoped invalidation for nested guests.
> -	 * Not yet supported
>  	 */
> -	if (type & H_RPTI_TYPE_NESTED)
> -		return H_P3;
> +	if (type & H_RPTI_TYPE_NESTED) {
> +		if (!nesting_enabled(vcpu->kvm))
> +			return H_FUNCTION;
> +
> +		/* Support only cores as target */
> +		if (target != H_RPTI_TARGET_CMMU)
> +			return H_P2;
> +
> +		return do_h_rpt_invalidate_pat(vcpu, id, type, pg_sizes,
> +					       start, end);
> +	}
>  
>  	/*
>  	 * Process-scoped invalidation for L1 guests.
> @@ -1629,6 +1665,23 @@ static int kvmppc_handle_nested_exit(struct kvm_vcpu *vcpu)
>  		if (!xics_on_xive())
>  			kvmppc_xics_rm_complete(vcpu, 0);
>  		break;
> +	case BOOK3S_INTERRUPT_SYSCALL:
> +	{
> +		unsigned long req = kvmppc_get_gpr(vcpu, 3);
> +
> +		/*
> +		 * The H_RPT_INVALIDATE hcalls issued by nested
> +		 * guests for process-scoped invalidations when
> +		 * GTSE=0, are handled here in L0.
> +		 */
> +		if (req == H_RPT_INVALIDATE) {
> +			r = kvmppc_nested_h_rpt_invalidate(vcpu);
> +			break;
> +		}
> +
> +		r = RESUME_HOST;
> +		break;
> +	}
>  	default:
>  		r = RESUME_HOST;
>  		break;
> diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
> index 60724f674421..056d3df68de1 100644
> --- a/arch/powerpc/kvm/book3s_hv_nested.c
> +++ b/arch/powerpc/kvm/book3s_hv_nested.c
> @@ -1214,6 +1214,123 @@ long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu)
>  	return H_SUCCESS;
>  }
>  
> +static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
> +					 unsigned long lpid,
> +					 unsigned long page_size,
> +					 unsigned long ap,
> +					 unsigned long start,
> +					 unsigned long end)
> +{
> +	unsigned long addr = start;
> +	int ret;
> +
> +	do {
> +		ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
> +						   get_epn(addr));
> +		if (ret)
> +			return ret;
> +		addr += page_size;
> +	} while (addr < end);
> +
> +	return ret;
> +}
> +
> +static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
> +					 unsigned long lpid, unsigned long ric)
> +{
> +	struct kvm *kvm = vcpu->kvm;
> +	struct kvm_nested_guest *gp;
> +
> +	gp = kvmhv_get_nested(kvm, lpid, false);
> +	if (gp) {
> +		kvmhv_emulate_tlbie_lpid(vcpu, gp, ric);
> +		kvmhv_put_nested(gp);
> +	}
> +	return H_SUCCESS;
> +}
> +
> +/*
> + * Number of pages above which we invalidate the entire LPID rather than
> + * flush individual pages.
> + */
> +static unsigned long tlb_range_flush_page_ceiling __read_mostly = 33;
> +
> +/*
> + * Performs partition-scoped invalidations for nested guests
> + * as part of H_RPT_INVALIDATE hcall.
> + */
> +long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
> +			     unsigned long type, unsigned long pg_sizes,
> +			     unsigned long start, unsigned long end)
> +{
> +	struct kvm_nested_guest *gp;
> +	long ret;
> +	unsigned long psize, ap;
> +
> +	/*
> +	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
> +	 *
> +	 * However, nested KVM issues a L2 lpid flush call when creating
> +	 * partition table entries for L2. This happens even before the
> +	 * corresponding shadow lpid is created in HV which happens in
> +	 * H_ENTER_NESTED call. Since we can't differentiate this case from
> +	 * the invalid case, we ignore such flush requests and return success.
> +	 */
> +	gp = kvmhv_find_nested(vcpu->kvm, lpid);
> +	if (!gp)
> +		return H_SUCCESS;
> +
> +	/*
> +	 * A flush all request can be handled by a full lpid flush only.
> +	 */
> +	if ((type & H_RPTI_TYPE_NESTED_ALL) == H_RPTI_TYPE_NESTED_ALL)
> +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_ALL);
> +
> +	/*
> +	 * We don't need to handle a PWC flush like process table here,
> +	 * because intermediate partition scoped table in nested guest doesn't
> +	 * really have PWC. Only level we have PWC is in L0 and for nested
> +	 * invalidate at L0 we always do kvm_flush_lpid() which does
> +	 * radix__flush_all_lpid(). For range invalidate at any level, we
> +	 * are not removing the higher level page tables and hence there is
> +	 * no PWC invalidate needed.
> +	 *
> +	 * if (type & H_RPTI_TYPE_PWC) {
> +	 *	ret = do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_PWC);
> +	 *	if (ret)
> +	 *		return H_P4;
> +	 * }
> +	 */
> +
> +	if (start == 0 && end == -1)
> +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
> +
> +	if (type & H_RPTI_TYPE_TLB) {
> +		struct mmu_psize_def *def;
> +		bool flush_lpid;
> +		unsigned long nr_pages;
> +
> +		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> +			def = &mmu_psize_defs[psize];
> +			if (!(pg_sizes & def->h_rpt_pgsize))
> +				continue;
> +
> +			nr_pages = (end - start) >> def->shift;
> +			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> +			if (flush_lpid)
> +				return do_tlb_invalidate_nested_all(vcpu, lpid,
> +								RIC_FLUSH_TLB);
> +
> +			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
> +							   (1UL << def->shift),
> +							   ap, start, end);

I have not seen this reported yet so apologies if it has and there is a
fix I am missing:

arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
                                                           ap, start, end);
                                                           ^~
arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
        unsigned long psize, ap;
                               ^
                                = 0
1 error generated.

Cheers,
Nathan

> +			if (ret)
> +				return H_P4;
> +		}
> +	}
> +	return H_SUCCESS;
> +}
> +
>  /* Used to convert a nested guest real address to a L1 guest real address */
>  static int kvmhv_translate_addr_nested(struct kvm_vcpu *vcpu,
>  				       struct kvm_nested_guest *gp,
> diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
> index cdd98b9e7b15..4f38cf34ea40 100644
> --- a/arch/powerpc/mm/book3s64/radix_tlb.c
> +++ b/arch/powerpc/mm/book3s64/radix_tlb.c
> @@ -20,10 +20,6 @@
>  
>  #include "internal.h"
>  
> -#define RIC_FLUSH_TLB 0
> -#define RIC_FLUSH_PWC 1
> -#define RIC_FLUSH_ALL 2
> -
>  /*
>   * tlbiel instruction for radix, set invalidation
>   * i.e., r=1 and is=01 or is=10 or is=11
> -- 
> 2.31.1

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
@ 2021-06-21 17:12     ` Nathan Chancellor
  0 siblings, 0 replies; 36+ messages in thread
From: Nathan Chancellor @ 2021-06-21 17:12 UTC (permalink / raw)
  To: Bharata B Rao
  Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev, david

On Mon, Jun 21, 2021 at 02:20:01PM +0530, Bharata B Rao wrote:
> Enable support for process-scoped invalidations from nested
> guests and partition-scoped invalidations for nested guests.
> 
> Process-scoped invalidations for any level of nested guests
> are handled by implementing H_RPT_INVALIDATE handler in the
> nested guest exit path in L0.
> 
> Partition-scoped invalidation requests are forwarded to the
> right nested guest, handled there and passed down to L0
> for eventual handling.
> 
> Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
> 	[Nested guest partition-scoped invalidation changes]
> ---
>  .../include/asm/book3s/64/tlbflush-radix.h    |   4 +
>  arch/powerpc/include/asm/kvm_book3s.h         |   3 +
>  arch/powerpc/kvm/book3s_hv.c                  |  59 ++++++++-
>  arch/powerpc/kvm/book3s_hv_nested.c           | 117 ++++++++++++++++++
>  arch/powerpc/mm/book3s64/radix_tlb.c          |   4 -
>  5 files changed, 180 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
> index 8b33601cdb9d..a46fd37ad552 100644
> --- a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
> +++ b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
> @@ -4,6 +4,10 @@
>  
>  #include <asm/hvcall.h>
>  
> +#define RIC_FLUSH_TLB 0
> +#define RIC_FLUSH_PWC 1
> +#define RIC_FLUSH_ALL 2
> +
>  struct vm_area_struct;
>  struct mm_struct;
>  struct mmu_gather;
> diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h
> index e6b53c6e21e3..caaa0f592d8e 100644
> --- a/arch/powerpc/include/asm/kvm_book3s.h
> +++ b/arch/powerpc/include/asm/kvm_book3s.h
> @@ -307,6 +307,9 @@ void kvmhv_set_ptbl_entry(unsigned int lpid, u64 dw0, u64 dw1);
>  void kvmhv_release_all_nested(struct kvm *kvm);
>  long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu);
>  long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu);
> +long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
> +			     unsigned long type, unsigned long pg_sizes,
> +			     unsigned long start, unsigned long end);
>  int kvmhv_run_single_vcpu(struct kvm_vcpu *vcpu,
>  			  u64 time_limit, unsigned long lpcr);
>  void kvmhv_save_hv_regs(struct kvm_vcpu *vcpu, struct hv_guest_state *hr);
> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
> index 7e6da4687d88..3d5b8ba3786d 100644
> --- a/arch/powerpc/kvm/book3s_hv.c
> +++ b/arch/powerpc/kvm/book3s_hv.c
> @@ -925,6 +925,34 @@ static int kvmppc_get_yield_count(struct kvm_vcpu *vcpu)
>  	return yield_count;
>  }
>  
> +/*
> + * H_RPT_INVALIDATE hcall handler for nested guests.
> + *
> + * Handles only nested process-scoped invalidation requests in L0.
> + */
> +static int kvmppc_nested_h_rpt_invalidate(struct kvm_vcpu *vcpu)
> +{
> +	unsigned long type = kvmppc_get_gpr(vcpu, 6);
> +	unsigned long pid, pg_sizes, start, end;
> +
> +	/*
> +	 * The partition-scoped invalidations aren't handled here in L0.
> +	 */
> +	if (type & H_RPTI_TYPE_NESTED)
> +		return RESUME_HOST;
> +
> +	pid = kvmppc_get_gpr(vcpu, 4);
> +	pg_sizes = kvmppc_get_gpr(vcpu, 7);
> +	start = kvmppc_get_gpr(vcpu, 8);
> +	end = kvmppc_get_gpr(vcpu, 9);
> +
> +	do_h_rpt_invalidate_prt(pid, vcpu->arch.nested->shadow_lpid,
> +				type, pg_sizes, start, end);
> +
> +	kvmppc_set_gpr(vcpu, 3, H_SUCCESS);
> +	return RESUME_GUEST;
> +}
> +
>  static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
>  				    unsigned long id, unsigned long target,
>  				    unsigned long type, unsigned long pg_sizes,
> @@ -938,10 +966,18 @@ static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
>  
>  	/*
>  	 * Partition-scoped invalidation for nested guests.
> -	 * Not yet supported
>  	 */
> -	if (type & H_RPTI_TYPE_NESTED)
> -		return H_P3;
> +	if (type & H_RPTI_TYPE_NESTED) {
> +		if (!nesting_enabled(vcpu->kvm))
> +			return H_FUNCTION;
> +
> +		/* Support only cores as target */
> +		if (target != H_RPTI_TARGET_CMMU)
> +			return H_P2;
> +
> +		return do_h_rpt_invalidate_pat(vcpu, id, type, pg_sizes,
> +					       start, end);
> +	}
>  
>  	/*
>  	 * Process-scoped invalidation for L1 guests.
> @@ -1629,6 +1665,23 @@ static int kvmppc_handle_nested_exit(struct kvm_vcpu *vcpu)
>  		if (!xics_on_xive())
>  			kvmppc_xics_rm_complete(vcpu, 0);
>  		break;
> +	case BOOK3S_INTERRUPT_SYSCALL:
> +	{
> +		unsigned long req = kvmppc_get_gpr(vcpu, 3);
> +
> +		/*
> +		 * The H_RPT_INVALIDATE hcalls issued by nested
> +		 * guests for process-scoped invalidations when
> +		 * GTSE=0, are handled here in L0.
> +		 */
> +		if (req = H_RPT_INVALIDATE) {
> +			r = kvmppc_nested_h_rpt_invalidate(vcpu);
> +			break;
> +		}
> +
> +		r = RESUME_HOST;
> +		break;
> +	}
>  	default:
>  		r = RESUME_HOST;
>  		break;
> diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
> index 60724f674421..056d3df68de1 100644
> --- a/arch/powerpc/kvm/book3s_hv_nested.c
> +++ b/arch/powerpc/kvm/book3s_hv_nested.c
> @@ -1214,6 +1214,123 @@ long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu)
>  	return H_SUCCESS;
>  }
>  
> +static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
> +					 unsigned long lpid,
> +					 unsigned long page_size,
> +					 unsigned long ap,
> +					 unsigned long start,
> +					 unsigned long end)
> +{
> +	unsigned long addr = start;
> +	int ret;
> +
> +	do {
> +		ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
> +						   get_epn(addr));
> +		if (ret)
> +			return ret;
> +		addr += page_size;
> +	} while (addr < end);
> +
> +	return ret;
> +}
> +
> +static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
> +					 unsigned long lpid, unsigned long ric)
> +{
> +	struct kvm *kvm = vcpu->kvm;
> +	struct kvm_nested_guest *gp;
> +
> +	gp = kvmhv_get_nested(kvm, lpid, false);
> +	if (gp) {
> +		kvmhv_emulate_tlbie_lpid(vcpu, gp, ric);
> +		kvmhv_put_nested(gp);
> +	}
> +	return H_SUCCESS;
> +}
> +
> +/*
> + * Number of pages above which we invalidate the entire LPID rather than
> + * flush individual pages.
> + */
> +static unsigned long tlb_range_flush_page_ceiling __read_mostly = 33;
> +
> +/*
> + * Performs partition-scoped invalidations for nested guests
> + * as part of H_RPT_INVALIDATE hcall.
> + */
> +long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
> +			     unsigned long type, unsigned long pg_sizes,
> +			     unsigned long start, unsigned long end)
> +{
> +	struct kvm_nested_guest *gp;
> +	long ret;
> +	unsigned long psize, ap;
> +
> +	/*
> +	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
> +	 *
> +	 * However, nested KVM issues a L2 lpid flush call when creating
> +	 * partition table entries for L2. This happens even before the
> +	 * corresponding shadow lpid is created in HV which happens in
> +	 * H_ENTER_NESTED call. Since we can't differentiate this case from
> +	 * the invalid case, we ignore such flush requests and return success.
> +	 */
> +	gp = kvmhv_find_nested(vcpu->kvm, lpid);
> +	if (!gp)
> +		return H_SUCCESS;
> +
> +	/*
> +	 * A flush all request can be handled by a full lpid flush only.
> +	 */
> +	if ((type & H_RPTI_TYPE_NESTED_ALL) = H_RPTI_TYPE_NESTED_ALL)
> +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_ALL);
> +
> +	/*
> +	 * We don't need to handle a PWC flush like process table here,
> +	 * because intermediate partition scoped table in nested guest doesn't
> +	 * really have PWC. Only level we have PWC is in L0 and for nested
> +	 * invalidate at L0 we always do kvm_flush_lpid() which does
> +	 * radix__flush_all_lpid(). For range invalidate at any level, we
> +	 * are not removing the higher level page tables and hence there is
> +	 * no PWC invalidate needed.
> +	 *
> +	 * if (type & H_RPTI_TYPE_PWC) {
> +	 *	ret = do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_PWC);
> +	 *	if (ret)
> +	 *		return H_P4;
> +	 * }
> +	 */
> +
> +	if (start = 0 && end = -1)
> +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
> +
> +	if (type & H_RPTI_TYPE_TLB) {
> +		struct mmu_psize_def *def;
> +		bool flush_lpid;
> +		unsigned long nr_pages;
> +
> +		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> +			def = &mmu_psize_defs[psize];
> +			if (!(pg_sizes & def->h_rpt_pgsize))
> +				continue;
> +
> +			nr_pages = (end - start) >> def->shift;
> +			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> +			if (flush_lpid)
> +				return do_tlb_invalidate_nested_all(vcpu, lpid,
> +								RIC_FLUSH_TLB);
> +
> +			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
> +							   (1UL << def->shift),
> +							   ap, start, end);

I have not seen this reported yet so apologies if it has and there is a
fix I am missing:

arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
                                                           ap, start, end);
                                                           ^~
arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
        unsigned long psize, ap;
                               ^
                                = 0
1 error generated.

Cheers,
Nathan

> +			if (ret)
> +				return H_P4;
> +		}
> +	}
> +	return H_SUCCESS;
> +}
> +
>  /* Used to convert a nested guest real address to a L1 guest real address */
>  static int kvmhv_translate_addr_nested(struct kvm_vcpu *vcpu,
>  				       struct kvm_nested_guest *gp,
> diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
> index cdd98b9e7b15..4f38cf34ea40 100644
> --- a/arch/powerpc/mm/book3s64/radix_tlb.c
> +++ b/arch/powerpc/mm/book3s64/radix_tlb.c
> @@ -20,10 +20,6 @@
>  
>  #include "internal.h"
>  
> -#define RIC_FLUSH_TLB 0
> -#define RIC_FLUSH_PWC 1
> -#define RIC_FLUSH_ALL 2
> -
>  /*
>   * tlbiel instruction for radix, set invalidation
>   * i.e., r=1 and is\x01 or is\x10 or is\x11
> -- 
> 2.31.1

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
  2021-06-21 17:12     ` Nathan Chancellor
@ 2021-06-22  4:47       ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-22  4:35 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev, david

On Mon, Jun 21, 2021 at 10:12:42AM -0700, Nathan Chancellor wrote:
> > +long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
> > +			     unsigned long type, unsigned long pg_sizes,
> > +			     unsigned long start, unsigned long end)
> > +{
> > +	struct kvm_nested_guest *gp;
> > +	long ret;
> > +	unsigned long psize, ap;
> > +
> > +	/*
> > +	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
> > +	 *
> > +	 * However, nested KVM issues a L2 lpid flush call when creating
> > +	 * partition table entries for L2. This happens even before the
> > +	 * corresponding shadow lpid is created in HV which happens in
> > +	 * H_ENTER_NESTED call. Since we can't differentiate this case from
> > +	 * the invalid case, we ignore such flush requests and return success.
> > +	 */
> > +	gp = kvmhv_find_nested(vcpu->kvm, lpid);
> > +	if (!gp)
> > +		return H_SUCCESS;
> > +
> > +	/*
> > +	 * A flush all request can be handled by a full lpid flush only.
> > +	 */
> > +	if ((type & H_RPTI_TYPE_NESTED_ALL) == H_RPTI_TYPE_NESTED_ALL)
> > +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_ALL);
> > +
> > +	/*
> > +	 * We don't need to handle a PWC flush like process table here,
> > +	 * because intermediate partition scoped table in nested guest doesn't
> > +	 * really have PWC. Only level we have PWC is in L0 and for nested
> > +	 * invalidate at L0 we always do kvm_flush_lpid() which does
> > +	 * radix__flush_all_lpid(). For range invalidate at any level, we
> > +	 * are not removing the higher level page tables and hence there is
> > +	 * no PWC invalidate needed.
> > +	 *
> > +	 * if (type & H_RPTI_TYPE_PWC) {
> > +	 *	ret = do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_PWC);
> > +	 *	if (ret)
> > +	 *		return H_P4;
> > +	 * }
> > +	 */
> > +
> > +	if (start == 0 && end == -1)
> > +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
> > +
> > +	if (type & H_RPTI_TYPE_TLB) {
> > +		struct mmu_psize_def *def;
> > +		bool flush_lpid;
> > +		unsigned long nr_pages;
> > +
> > +		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> > +			def = &mmu_psize_defs[psize];
> > +			if (!(pg_sizes & def->h_rpt_pgsize))
> > +				continue;
> > +
> > +			nr_pages = (end - start) >> def->shift;
> > +			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> > +			if (flush_lpid)
> > +				return do_tlb_invalidate_nested_all(vcpu, lpid,
> > +								RIC_FLUSH_TLB);
> > +
> > +			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
> > +							   (1UL << def->shift),
> > +							   ap, start, end);
> 
> I have not seen this reported yet so apologies if it has and there is a
> fix I am missing:
> 
> arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
>                                                            ap, start, end);
>                                                            ^~
> arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
>         unsigned long psize, ap;
>                                ^
>                                 = 0

Thanks for catching this, this wasn't caught in my environment.

I will repost the series with proper initialization to ap.

Regards,
Bharata.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
@ 2021-06-22  4:47       ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-22  4:47 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev, david

On Mon, Jun 21, 2021 at 10:12:42AM -0700, Nathan Chancellor wrote:
> > +long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
> > +			     unsigned long type, unsigned long pg_sizes,
> > +			     unsigned long start, unsigned long end)
> > +{
> > +	struct kvm_nested_guest *gp;
> > +	long ret;
> > +	unsigned long psize, ap;
> > +
> > +	/*
> > +	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
> > +	 *
> > +	 * However, nested KVM issues a L2 lpid flush call when creating
> > +	 * partition table entries for L2. This happens even before the
> > +	 * corresponding shadow lpid is created in HV which happens in
> > +	 * H_ENTER_NESTED call. Since we can't differentiate this case from
> > +	 * the invalid case, we ignore such flush requests and return success.
> > +	 */
> > +	gp = kvmhv_find_nested(vcpu->kvm, lpid);
> > +	if (!gp)
> > +		return H_SUCCESS;
> > +
> > +	/*
> > +	 * A flush all request can be handled by a full lpid flush only.
> > +	 */
> > +	if ((type & H_RPTI_TYPE_NESTED_ALL) = H_RPTI_TYPE_NESTED_ALL)
> > +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_ALL);
> > +
> > +	/*
> > +	 * We don't need to handle a PWC flush like process table here,
> > +	 * because intermediate partition scoped table in nested guest doesn't
> > +	 * really have PWC. Only level we have PWC is in L0 and for nested
> > +	 * invalidate at L0 we always do kvm_flush_lpid() which does
> > +	 * radix__flush_all_lpid(). For range invalidate at any level, we
> > +	 * are not removing the higher level page tables and hence there is
> > +	 * no PWC invalidate needed.
> > +	 *
> > +	 * if (type & H_RPTI_TYPE_PWC) {
> > +	 *	ret = do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_PWC);
> > +	 *	if (ret)
> > +	 *		return H_P4;
> > +	 * }
> > +	 */
> > +
> > +	if (start = 0 && end = -1)
> > +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
> > +
> > +	if (type & H_RPTI_TYPE_TLB) {
> > +		struct mmu_psize_def *def;
> > +		bool flush_lpid;
> > +		unsigned long nr_pages;
> > +
> > +		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> > +			def = &mmu_psize_defs[psize];
> > +			if (!(pg_sizes & def->h_rpt_pgsize))
> > +				continue;
> > +
> > +			nr_pages = (end - start) >> def->shift;
> > +			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> > +			if (flush_lpid)
> > +				return do_tlb_invalidate_nested_all(vcpu, lpid,
> > +								RIC_FLUSH_TLB);
> > +
> > +			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
> > +							   (1UL << def->shift),
> > +							   ap, start, end);
> 
> I have not seen this reported yet so apologies if it has and there is a
> fix I am missing:
> 
> arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
>                                                            ap, start, end);
>                                                            ^~
> arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
>         unsigned long psize, ap;
>                                ^
>                                 = 0

Thanks for catching this, this wasn't caught in my environment.

I will repost the series with proper initialization to ap.

Regards,
Bharata.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
  2021-06-22  4:47       ` Bharata B Rao
@ 2021-06-22  7:24         ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-22  7:12 UTC (permalink / raw)
  To: Nathan Chancellor, kvm-ppc, linuxppc-dev, farosas, aneesh.kumar,
	npiggin, david

On Tue, Jun 22, 2021 at 10:05:45AM +0530, Bharata B Rao wrote:
> On Mon, Jun 21, 2021 at 10:12:42AM -0700, Nathan Chancellor wrote:
> > I have not seen this reported yet so apologies if it has and there is a
> > fix I am missing:
> > 
> > arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
> >                                                            ap, start, end);
> >                                                            ^~
> > arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
> >         unsigned long psize, ap;
> >                                ^
> >                                 = 0
> 
> Thanks for catching this, this wasn't caught in my environment.
> 
> I will repost the series with proper initialization to ap.

Michael,

Here is the fix for this on top of powerpc/next. If it is easier
and cleaner to fold this into the original series and re-post
the whole series against any updated tree, let me know.


From 2e7198e28c0d1137f3230d4645e9cfddaccf4987 Mon Sep 17 00:00:00 2001
From: Bharata B Rao <bharata@linux.ibm.com>
Date: Tue, 22 Jun 2021 12:07:01 +0530
Subject: [PATCH 1/1] KVM: PPC: Book3S HV: Use proper ap value in
 H_RPT_INVALIDATE

The ap value that is used when performing range based partition
scoped invalidations for the nested guests wasn't initialized
correctly.

Fix this and while we are here, reorganize the routine that does
this invalidation for better readability.

Fixes: 0e67d866cb32 ("KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE")
Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
---
 arch/powerpc/kvm/book3s_hv_nested.c | 90 +++++++++++++----------------
 1 file changed, 40 insertions(+), 50 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
index d78efb5f5bb3..3a06ac0b53e2 100644
--- a/arch/powerpc/kvm/book3s_hv_nested.c
+++ b/arch/powerpc/kvm/book3s_hv_nested.c
@@ -1222,27 +1222,6 @@ long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu)
 	return H_SUCCESS;
 }
 
-static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
-					 unsigned long lpid,
-					 unsigned long page_size,
-					 unsigned long ap,
-					 unsigned long start,
-					 unsigned long end)
-{
-	unsigned long addr = start;
-	int ret;
-
-	do {
-		ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
-						   get_epn(addr));
-		if (ret)
-			return ret;
-		addr += page_size;
-	} while (addr < end);
-
-	return ret;
-}
-
 static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
 					 unsigned long lpid, unsigned long ric)
 {
@@ -1263,6 +1242,42 @@ static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
  */
 static unsigned long tlb_range_flush_page_ceiling __read_mostly = 33;
 
+static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
+					 unsigned long lpid,
+					 unsigned long pg_sizes,
+					 unsigned long start,
+					 unsigned long end)
+{
+	int ret = H_P4;
+	unsigned long addr, nr_pages;
+	struct mmu_psize_def *def;
+	unsigned long psize, ap, page_size;
+	bool flush_lpid;
+
+	for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
+		def = &mmu_psize_defs[psize];
+		if (!(pg_sizes & def->h_rpt_pgsize))
+			continue;
+
+		nr_pages = (end - start) >> def->shift;
+		flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
+		if (flush_lpid)
+			return do_tlb_invalidate_nested_all(vcpu, lpid,
+							RIC_FLUSH_TLB);
+		addr = start;
+		ap = mmu_get_ap(psize);
+		page_size = 1UL << def->shift;
+		do {
+			ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
+						   get_epn(addr));
+			if (ret)
+				return H_P4;
+			addr += page_size;
+		} while (addr < end);
+	}
+	return ret;
+}
+
 /*
  * Performs partition-scoped invalidations for nested guests
  * as part of H_RPT_INVALIDATE hcall.
@@ -1271,10 +1286,6 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
 			     unsigned long type, unsigned long pg_sizes,
 			     unsigned long start, unsigned long end)
 {
-	struct kvm_nested_guest *gp;
-	long ret;
-	unsigned long psize, ap;
-
 	/*
 	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
 	 *
@@ -1284,8 +1295,7 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
 	 * H_ENTER_NESTED call. Since we can't differentiate this case from
 	 * the invalid case, we ignore such flush requests and return success.
 	 */
-	gp = kvmhv_find_nested(vcpu->kvm, lpid);
-	if (!gp)
+	if (!kvmhv_find_nested(vcpu->kvm, lpid))
 		return H_SUCCESS;
 
 	/*
@@ -1313,29 +1323,9 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
 	if (start == 0 && end == -1)
 		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
 
-	if (type & H_RPTI_TYPE_TLB) {
-		struct mmu_psize_def *def;
-		bool flush_lpid;
-		unsigned long nr_pages;
-
-		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
-			def = &mmu_psize_defs[psize];
-			if (!(pg_sizes & def->h_rpt_pgsize))
-				continue;
-
-			nr_pages = (end - start) >> def->shift;
-			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
-			if (flush_lpid)
-				return do_tlb_invalidate_nested_all(vcpu, lpid,
-								RIC_FLUSH_TLB);
-
-			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
-							   (1UL << def->shift),
-							   ap, start, end);
-			if (ret)
-				return H_P4;
-		}
-	}
+	if (type & H_RPTI_TYPE_TLB)
+		return do_tlb_invalidate_nested_tlb(vcpu, lpid, pg_sizes,
+						    start, end);
 	return H_SUCCESS;
 }
 
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
@ 2021-06-22  7:24         ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-06-22  7:24 UTC (permalink / raw)
  To: Nathan Chancellor, kvm-ppc, linuxppc-dev, farosas, aneesh.kumar,
	npiggin, david

On Tue, Jun 22, 2021 at 10:05:45AM +0530, Bharata B Rao wrote:
> On Mon, Jun 21, 2021 at 10:12:42AM -0700, Nathan Chancellor wrote:
> > I have not seen this reported yet so apologies if it has and there is a
> > fix I am missing:
> > 
> > arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
> >                                                            ap, start, end);
> >                                                            ^~
> > arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
> >         unsigned long psize, ap;
> >                                ^
> >                                 = 0
> 
> Thanks for catching this, this wasn't caught in my environment.
> 
> I will repost the series with proper initialization to ap.

Michael,

Here is the fix for this on top of powerpc/next. If it is easier
and cleaner to fold this into the original series and re-post
the whole series against any updated tree, let me know.


From 2e7198e28c0d1137f3230d4645e9cfddaccf4987 Mon Sep 17 00:00:00 2001
From: Bharata B Rao <bharata@linux.ibm.com>
Date: Tue, 22 Jun 2021 12:07:01 +0530
Subject: [PATCH 1/1] KVM: PPC: Book3S HV: Use proper ap value in
 H_RPT_INVALIDATE

The ap value that is used when performing range based partition
scoped invalidations for the nested guests wasn't initialized
correctly.

Fix this and while we are here, reorganize the routine that does
this invalidation for better readability.

Fixes: 0e67d866cb32 ("KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE")
Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
---
 arch/powerpc/kvm/book3s_hv_nested.c | 90 +++++++++++++----------------
 1 file changed, 40 insertions(+), 50 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
index d78efb5f5bb3..3a06ac0b53e2 100644
--- a/arch/powerpc/kvm/book3s_hv_nested.c
+++ b/arch/powerpc/kvm/book3s_hv_nested.c
@@ -1222,27 +1222,6 @@ long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu)
 	return H_SUCCESS;
 }
 
-static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
-					 unsigned long lpid,
-					 unsigned long page_size,
-					 unsigned long ap,
-					 unsigned long start,
-					 unsigned long end)
-{
-	unsigned long addr = start;
-	int ret;
-
-	do {
-		ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
-						   get_epn(addr));
-		if (ret)
-			return ret;
-		addr += page_size;
-	} while (addr < end);
-
-	return ret;
-}
-
 static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
 					 unsigned long lpid, unsigned long ric)
 {
@@ -1263,6 +1242,42 @@ static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
  */
 static unsigned long tlb_range_flush_page_ceiling __read_mostly = 33;
 
+static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
+					 unsigned long lpid,
+					 unsigned long pg_sizes,
+					 unsigned long start,
+					 unsigned long end)
+{
+	int ret = H_P4;
+	unsigned long addr, nr_pages;
+	struct mmu_psize_def *def;
+	unsigned long psize, ap, page_size;
+	bool flush_lpid;
+
+	for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
+		def = &mmu_psize_defs[psize];
+		if (!(pg_sizes & def->h_rpt_pgsize))
+			continue;
+
+		nr_pages = (end - start) >> def->shift;
+		flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
+		if (flush_lpid)
+			return do_tlb_invalidate_nested_all(vcpu, lpid,
+							RIC_FLUSH_TLB);
+		addr = start;
+		ap = mmu_get_ap(psize);
+		page_size = 1UL << def->shift;
+		do {
+			ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
+						   get_epn(addr));
+			if (ret)
+				return H_P4;
+			addr += page_size;
+		} while (addr < end);
+	}
+	return ret;
+}
+
 /*
  * Performs partition-scoped invalidations for nested guests
  * as part of H_RPT_INVALIDATE hcall.
@@ -1271,10 +1286,6 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
 			     unsigned long type, unsigned long pg_sizes,
 			     unsigned long start, unsigned long end)
 {
-	struct kvm_nested_guest *gp;
-	long ret;
-	unsigned long psize, ap;
-
 	/*
 	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
 	 *
@@ -1284,8 +1295,7 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
 	 * H_ENTER_NESTED call. Since we can't differentiate this case from
 	 * the invalid case, we ignore such flush requests and return success.
 	 */
-	gp = kvmhv_find_nested(vcpu->kvm, lpid);
-	if (!gp)
+	if (!kvmhv_find_nested(vcpu->kvm, lpid))
 		return H_SUCCESS;
 
 	/*
@@ -1313,29 +1323,9 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
 	if (start = 0 && end = -1)
 		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
 
-	if (type & H_RPTI_TYPE_TLB) {
-		struct mmu_psize_def *def;
-		bool flush_lpid;
-		unsigned long nr_pages;
-
-		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
-			def = &mmu_psize_defs[psize];
-			if (!(pg_sizes & def->h_rpt_pgsize))
-				continue;
-
-			nr_pages = (end - start) >> def->shift;
-			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
-			if (flush_lpid)
-				return do_tlb_invalidate_nested_all(vcpu, lpid,
-								RIC_FLUSH_TLB);
-
-			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
-							   (1UL << def->shift),
-							   ap, start, end);
-			if (ret)
-				return H_P4;
-		}
-	}
+	if (type & H_RPTI_TYPE_TLB)
+		return do_tlb_invalidate_nested_tlb(vcpu, lpid, pg_sizes,
+						    start, end);
 	return H_SUCCESS;
 }
 
-- 
2.31.1

^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
  2021-06-22  7:24         ` Bharata B Rao
@ 2021-06-23  6:47           ` Michael Ellerman
  -1 siblings, 0 replies; 36+ messages in thread
From: Michael Ellerman @ 2021-06-23  6:47 UTC (permalink / raw)
  To: bharata, Nathan Chancellor, kvm-ppc, linuxppc-dev, farosas,
	aneesh.kumar, npiggin, david

Bharata B Rao <bharata@linux.ibm.com> writes:
> On Tue, Jun 22, 2021 at 10:05:45AM +0530, Bharata B Rao wrote:
>> On Mon, Jun 21, 2021 at 10:12:42AM -0700, Nathan Chancellor wrote:
>> > I have not seen this reported yet so apologies if it has and there is a
>> > fix I am missing:
>> > 
>> > arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
>> >                                                            ap, start, end);
>> >                                                            ^~
>> > arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
>> >         unsigned long psize, ap;
>> >                                ^
>> >                                 = 0
>> 
>> Thanks for catching this, this wasn't caught in my environment.
>> 
>> I will repost the series with proper initialization to ap.
>
> Michael,
>
> Here is the fix for this on top of powerpc/next. If it is easier
> and cleaner to fold this into the original series and re-post
> the whole series against any updated tree, let me know.

Thanks. I squashed this in.

cheers

> From 2e7198e28c0d1137f3230d4645e9cfddaccf4987 Mon Sep 17 00:00:00 2001
> From: Bharata B Rao <bharata@linux.ibm.com>
> Date: Tue, 22 Jun 2021 12:07:01 +0530
> Subject: [PATCH 1/1] KVM: PPC: Book3S HV: Use proper ap value in
>  H_RPT_INVALIDATE
>
> The ap value that is used when performing range based partition
> scoped invalidations for the nested guests wasn't initialized
> correctly.
>
> Fix this and while we are here, reorganize the routine that does
> this invalidation for better readability.
>
> Fixes: 0e67d866cb32 ("KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE")
> Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
> ---
>  arch/powerpc/kvm/book3s_hv_nested.c | 90 +++++++++++++----------------
>  1 file changed, 40 insertions(+), 50 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
> index d78efb5f5bb3..3a06ac0b53e2 100644
> --- a/arch/powerpc/kvm/book3s_hv_nested.c
> +++ b/arch/powerpc/kvm/book3s_hv_nested.c
> @@ -1222,27 +1222,6 @@ long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu)
>  	return H_SUCCESS;
>  }
>  
> -static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
> -					 unsigned long lpid,
> -					 unsigned long page_size,
> -					 unsigned long ap,
> -					 unsigned long start,
> -					 unsigned long end)
> -{
> -	unsigned long addr = start;
> -	int ret;
> -
> -	do {
> -		ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
> -						   get_epn(addr));
> -		if (ret)
> -			return ret;
> -		addr += page_size;
> -	} while (addr < end);
> -
> -	return ret;
> -}
> -
>  static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
>  					 unsigned long lpid, unsigned long ric)
>  {
> @@ -1263,6 +1242,42 @@ static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
>   */
>  static unsigned long tlb_range_flush_page_ceiling __read_mostly = 33;
>  
> +static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
> +					 unsigned long lpid,
> +					 unsigned long pg_sizes,
> +					 unsigned long start,
> +					 unsigned long end)
> +{
> +	int ret = H_P4;
> +	unsigned long addr, nr_pages;
> +	struct mmu_psize_def *def;
> +	unsigned long psize, ap, page_size;
> +	bool flush_lpid;
> +
> +	for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> +		def = &mmu_psize_defs[psize];
> +		if (!(pg_sizes & def->h_rpt_pgsize))
> +			continue;
> +
> +		nr_pages = (end - start) >> def->shift;
> +		flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> +		if (flush_lpid)
> +			return do_tlb_invalidate_nested_all(vcpu, lpid,
> +							RIC_FLUSH_TLB);
> +		addr = start;
> +		ap = mmu_get_ap(psize);
> +		page_size = 1UL << def->shift;
> +		do {
> +			ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
> +						   get_epn(addr));
> +			if (ret)
> +				return H_P4;
> +			addr += page_size;
> +		} while (addr < end);
> +	}
> +	return ret;
> +}
> +
>  /*
>   * Performs partition-scoped invalidations for nested guests
>   * as part of H_RPT_INVALIDATE hcall.
> @@ -1271,10 +1286,6 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
>  			     unsigned long type, unsigned long pg_sizes,
>  			     unsigned long start, unsigned long end)
>  {
> -	struct kvm_nested_guest *gp;
> -	long ret;
> -	unsigned long psize, ap;
> -
>  	/*
>  	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
>  	 *
> @@ -1284,8 +1295,7 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
>  	 * H_ENTER_NESTED call. Since we can't differentiate this case from
>  	 * the invalid case, we ignore such flush requests and return success.
>  	 */
> -	gp = kvmhv_find_nested(vcpu->kvm, lpid);
> -	if (!gp)
> +	if (!kvmhv_find_nested(vcpu->kvm, lpid))
>  		return H_SUCCESS;
>  
>  	/*
> @@ -1313,29 +1323,9 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
>  	if (start == 0 && end == -1)
>  		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
>  
> -	if (type & H_RPTI_TYPE_TLB) {
> -		struct mmu_psize_def *def;
> -		bool flush_lpid;
> -		unsigned long nr_pages;
> -
> -		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> -			def = &mmu_psize_defs[psize];
> -			if (!(pg_sizes & def->h_rpt_pgsize))
> -				continue;
> -
> -			nr_pages = (end - start) >> def->shift;
> -			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> -			if (flush_lpid)
> -				return do_tlb_invalidate_nested_all(vcpu, lpid,
> -								RIC_FLUSH_TLB);
> -
> -			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
> -							   (1UL << def->shift),
> -							   ap, start, end);
> -			if (ret)
> -				return H_P4;
> -		}
> -	}
> +	if (type & H_RPTI_TYPE_TLB)
> +		return do_tlb_invalidate_nested_tlb(vcpu, lpid, pg_sizes,
> +						    start, end);
>  	return H_SUCCESS;
>  }
>  
> -- 
> 2.31.1

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
@ 2021-06-23  6:47           ` Michael Ellerman
  0 siblings, 0 replies; 36+ messages in thread
From: Michael Ellerman @ 2021-06-23  6:47 UTC (permalink / raw)
  To: bharata, Nathan Chancellor, kvm-ppc, linuxppc-dev, farosas,
	aneesh.kumar, npiggin, david

Bharata B Rao <bharata@linux.ibm.com> writes:
> On Tue, Jun 22, 2021 at 10:05:45AM +0530, Bharata B Rao wrote:
>> On Mon, Jun 21, 2021 at 10:12:42AM -0700, Nathan Chancellor wrote:
>> > I have not seen this reported yet so apologies if it has and there is a
>> > fix I am missing:
>> > 
>> > arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
>> >                                                            ap, start, end);
>> >                                                            ^~
>> > arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
>> >         unsigned long psize, ap;
>> >                                ^
>> >                                 = 0
>> 
>> Thanks for catching this, this wasn't caught in my environment.
>> 
>> I will repost the series with proper initialization to ap.
>
> Michael,
>
> Here is the fix for this on top of powerpc/next. If it is easier
> and cleaner to fold this into the original series and re-post
> the whole series against any updated tree, let me know.

Thanks. I squashed this in.

cheers

> From 2e7198e28c0d1137f3230d4645e9cfddaccf4987 Mon Sep 17 00:00:00 2001
> From: Bharata B Rao <bharata@linux.ibm.com>
> Date: Tue, 22 Jun 2021 12:07:01 +0530
> Subject: [PATCH 1/1] KVM: PPC: Book3S HV: Use proper ap value in
>  H_RPT_INVALIDATE
>
> The ap value that is used when performing range based partition
> scoped invalidations for the nested guests wasn't initialized
> correctly.
>
> Fix this and while we are here, reorganize the routine that does
> this invalidation for better readability.
>
> Fixes: 0e67d866cb32 ("KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE")
> Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
> ---
>  arch/powerpc/kvm/book3s_hv_nested.c | 90 +++++++++++++----------------
>  1 file changed, 40 insertions(+), 50 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
> index d78efb5f5bb3..3a06ac0b53e2 100644
> --- a/arch/powerpc/kvm/book3s_hv_nested.c
> +++ b/arch/powerpc/kvm/book3s_hv_nested.c
> @@ -1222,27 +1222,6 @@ long kvmhv_do_nested_tlbie(struct kvm_vcpu *vcpu)
>  	return H_SUCCESS;
>  }
>  
> -static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
> -					 unsigned long lpid,
> -					 unsigned long page_size,
> -					 unsigned long ap,
> -					 unsigned long start,
> -					 unsigned long end)
> -{
> -	unsigned long addr = start;
> -	int ret;
> -
> -	do {
> -		ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
> -						   get_epn(addr));
> -		if (ret)
> -			return ret;
> -		addr += page_size;
> -	} while (addr < end);
> -
> -	return ret;
> -}
> -
>  static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
>  					 unsigned long lpid, unsigned long ric)
>  {
> @@ -1263,6 +1242,42 @@ static long do_tlb_invalidate_nested_all(struct kvm_vcpu *vcpu,
>   */
>  static unsigned long tlb_range_flush_page_ceiling __read_mostly = 33;
>  
> +static long do_tlb_invalidate_nested_tlb(struct kvm_vcpu *vcpu,
> +					 unsigned long lpid,
> +					 unsigned long pg_sizes,
> +					 unsigned long start,
> +					 unsigned long end)
> +{
> +	int ret = H_P4;
> +	unsigned long addr, nr_pages;
> +	struct mmu_psize_def *def;
> +	unsigned long psize, ap, page_size;
> +	bool flush_lpid;
> +
> +	for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> +		def = &mmu_psize_defs[psize];
> +		if (!(pg_sizes & def->h_rpt_pgsize))
> +			continue;
> +
> +		nr_pages = (end - start) >> def->shift;
> +		flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> +		if (flush_lpid)
> +			return do_tlb_invalidate_nested_all(vcpu, lpid,
> +							RIC_FLUSH_TLB);
> +		addr = start;
> +		ap = mmu_get_ap(psize);
> +		page_size = 1UL << def->shift;
> +		do {
> +			ret = kvmhv_emulate_tlbie_tlb_addr(vcpu, lpid, ap,
> +						   get_epn(addr));
> +			if (ret)
> +				return H_P4;
> +			addr += page_size;
> +		} while (addr < end);
> +	}
> +	return ret;
> +}
> +
>  /*
>   * Performs partition-scoped invalidations for nested guests
>   * as part of H_RPT_INVALIDATE hcall.
> @@ -1271,10 +1286,6 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
>  			     unsigned long type, unsigned long pg_sizes,
>  			     unsigned long start, unsigned long end)
>  {
> -	struct kvm_nested_guest *gp;
> -	long ret;
> -	unsigned long psize, ap;
> -
>  	/*
>  	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
>  	 *
> @@ -1284,8 +1295,7 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
>  	 * H_ENTER_NESTED call. Since we can't differentiate this case from
>  	 * the invalid case, we ignore such flush requests and return success.
>  	 */
> -	gp = kvmhv_find_nested(vcpu->kvm, lpid);
> -	if (!gp)
> +	if (!kvmhv_find_nested(vcpu->kvm, lpid))
>  		return H_SUCCESS;
>  
>  	/*
> @@ -1313,29 +1323,9 @@ long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
>  	if (start = 0 && end = -1)
>  		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
>  
> -	if (type & H_RPTI_TYPE_TLB) {
> -		struct mmu_psize_def *def;
> -		bool flush_lpid;
> -		unsigned long nr_pages;
> -
> -		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> -			def = &mmu_psize_defs[psize];
> -			if (!(pg_sizes & def->h_rpt_pgsize))
> -				continue;
> -
> -			nr_pages = (end - start) >> def->shift;
> -			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> -			if (flush_lpid)
> -				return do_tlb_invalidate_nested_all(vcpu, lpid,
> -								RIC_FLUSH_TLB);
> -
> -			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
> -							   (1UL << def->shift),
> -							   ap, start, end);
> -			if (ret)
> -				return H_P4;
> -		}
> -	}
> +	if (type & H_RPTI_TYPE_TLB)
> +		return do_tlb_invalidate_nested_tlb(vcpu, lpid, pg_sizes,
> +						    start, end);
>  	return H_SUCCESS;
>  }
>  
> -- 
> 2.31.1

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 0/6] Support for H_RPT_INVALIDATE in PowerPC KVM
  2021-06-21  8:50 ` Bharata B Rao
@ 2021-06-24 13:59   ` Michael Ellerman
  -1 siblings, 0 replies; 36+ messages in thread
From: Michael Ellerman @ 2021-06-24 13:59 UTC (permalink / raw)
  To: Bharata B Rao, linuxppc-dev, kvm-ppc
  Cc: aneesh.kumar, farosas, npiggin, david

On Mon, 21 Jun 2021 14:19:57 +0530, Bharata B Rao wrote:
> This patchset adds support for the new hcall H_RPT_INVALIDATE
> and replaces the nested tlb flush calls with this new hcall
> if support for the same exists.
> 
> Changes in v8:
> -------------
> - Used tlb_single_page_flush_ceiling in the process-scoped range
>   flush routine to switch to full PID invalation if
>   the number of pages is above the threshold
> - Moved iterating over page sizes into the actual routine that
>   handles the eventual flushing thereby limiting the page size
>   iteration only to range based flushing
> - Converted #if 0 section into a comment section to avoid
>   checkpatch from complaining.
> - Used a threshold in the partition-scoped range flushing
>   to switch to full LPID invalidation
> 
> [...]

Applied to powerpc/topic/ppc-kvm.

[1/6] KVM: PPC: Book3S HV: Fix comments of H_RPT_INVALIDATE arguments
      https://git.kernel.org/powerpc/c/f09216a190a4c2f62e1725f9d92e7c122b4ee423
[2/6] powerpc/book3s64/radix: Add H_RPT_INVALIDATE pgsize encodings to mmu_psize_def
      https://git.kernel.org/powerpc/c/d6265cb33b710789cbc390316eba50a883d6dcc8
[3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
      https://git.kernel.org/powerpc/c/f0c6fbbb90504fb7e9dbf0865463d3c2b4de49e5
[4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
      https://git.kernel.org/powerpc/c/53324b51c5eee22d420a2df68b1820d929fa90f3
[5/6] KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability
      https://git.kernel.org/powerpc/c/b87cc116c7e1bc62a84d8c46acd401db179edb11
[6/6] KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM
      https://git.kernel.org/powerpc/c/81468083f3c76a08183813e3af63a7c3cea3f537

cheers

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 0/6] Support for H_RPT_INVALIDATE in PowerPC KVM
@ 2021-06-24 13:59   ` Michael Ellerman
  0 siblings, 0 replies; 36+ messages in thread
From: Michael Ellerman @ 2021-06-24 13:59 UTC (permalink / raw)
  To: Bharata B Rao, linuxppc-dev, kvm-ppc
  Cc: aneesh.kumar, farosas, npiggin, david

On Mon, 21 Jun 2021 14:19:57 +0530, Bharata B Rao wrote:
> This patchset adds support for the new hcall H_RPT_INVALIDATE
> and replaces the nested tlb flush calls with this new hcall
> if support for the same exists.
> 
> Changes in v8:
> -------------
> - Used tlb_single_page_flush_ceiling in the process-scoped range
>   flush routine to switch to full PID invalation if
>   the number of pages is above the threshold
> - Moved iterating over page sizes into the actual routine that
>   handles the eventual flushing thereby limiting the page size
>   iteration only to range based flushing
> - Converted #if 0 section into a comment section to avoid
>   checkpatch from complaining.
> - Used a threshold in the partition-scoped range flushing
>   to switch to full LPID invalidation
> 
> [...]

Applied to powerpc/topic/ppc-kvm.

[1/6] KVM: PPC: Book3S HV: Fix comments of H_RPT_INVALIDATE arguments
      https://git.kernel.org/powerpc/c/f09216a190a4c2f62e1725f9d92e7c122b4ee423
[2/6] powerpc/book3s64/radix: Add H_RPT_INVALIDATE pgsize encodings to mmu_psize_def
      https://git.kernel.org/powerpc/c/d6265cb33b710789cbc390316eba50a883d6dcc8
[3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
      https://git.kernel.org/powerpc/c/f0c6fbbb90504fb7e9dbf0865463d3c2b4de49e5
[4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
      https://git.kernel.org/powerpc/c/53324b51c5eee22d420a2df68b1820d929fa90f3
[5/6] KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability
      https://git.kernel.org/powerpc/c/b87cc116c7e1bc62a84d8c46acd401db179edb11
[6/6] KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM
      https://git.kernel.org/powerpc/c/81468083f3c76a08183813e3af63a7c3cea3f537

cheers

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
  2021-06-21  8:50   ` Bharata B Rao
@ 2021-07-05  4:42     ` David Gibson
  -1 siblings, 0 replies; 36+ messages in thread
From: David Gibson @ 2021-07-05  4:42 UTC (permalink / raw)
  To: Bharata B Rao; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 15932 bytes --]

On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> H_RPT_INVALIDATE does two types of TLB invalidations:
> 
> 1. Process-scoped invalidations for guests when LPCR[GTSE]=0.
>    This is currently not used in KVM as GTSE is not usually
>    disabled in KVM.
> 2. Partition-scoped invalidations that an L1 hypervisor does on
>    behalf of an L2 guest. This is currently handled
>    by H_TLB_INVALIDATE hcall and this new replaces the old that.
> 
> This commit enables process-scoped invalidations for L1 guests.
> Support for process-scoped and partition-scoped invalidations
> from/for nested guests will be added separately.
> 
> Process scoped tlbie invalidations from L1 and nested guests
> need RS register for TLBIE instruction to contain both PID and
> LPID.  This patch introduces primitives that execute tlbie
> instruction with both PID and LPID set in prepartion for
> H_RPT_INVALIDATE hcall.
> 
> A description of H_RPT_INVALIDATE follows:
> 
> int64   /* H_Success: Return code on successful completion */
>         /* H_Busy - repeat the call with the same */
>         /* H_Parameter, H_P2, H_P3, H_P4, H_P5 : Invalid
> 	   parameters */
> hcall(const uint64 H_RPT_INVALIDATE, /* Invalidate RPT
> 					translation
> 					lookaside information */
>       uint64 id,        /* PID/LPID to invalidate */
>       uint64 target,    /* Invalidation target */
>       uint64 type,      /* Type of lookaside information */
>       uint64 pg_sizes,  /* Page sizes */
>       uint64 start,     /* Start of Effective Address (EA)
> 			   range (inclusive) */
>       uint64 end)       /* End of EA range (exclusive) */
> 
> Invalidation targets (target)
> -----------------------------
> Core MMU        0x01 /* All virtual processors in the
> 			partition */
> Core local MMU  0x02 /* Current virtual processor */
> Nest MMU        0x04 /* All nest/accelerator agents
> 			in use by the partition */
> 
> A combination of the above can be specified,
> except core and core local.
> 
> Type of translation to invalidate (type)
> ---------------------------------------
> NESTED       0x0001  /* invalidate nested guest partition-scope */
> TLB          0x0002  /* Invalidate TLB */
> PWC          0x0004  /* Invalidate Page Walk Cache */
> PRT          0x0008  /* Invalidate caching of Process Table
> 			Entries if NESTED is clear */
> PAT          0x0008  /* Invalidate caching of Partition Table
> 			Entries if NESTED is set */
> 
> A combination of the above can be specified.
> 
> Page size mask (pages)
> ----------------------
> 4K              0x01
> 64K             0x02
> 2M              0x04
> 1G              0x08
> All sizes       (-1UL)
> 
> A combination of the above can be specified.
> All page sizes can be selected with -1.
> 
> Semantics: Invalidate radix tree lookaside information
>            matching the parameters given.
> * Return H_P2, H_P3 or H_P4 if target, type, or pageSizes parameters
>   are different from the defined values.
> * Return H_PARAMETER if NESTED is set and pid is not a valid nested
>   LPID allocated to this partition
> * Return H_P5 if (start, end) doesn't form a valid range. Start and
>   end should be a valid Quadrant address and  end > start.
> * Return H_NotSupported if the partition is not in running in radix
>   translation mode.
> * May invalidate more translation information than requested.
> * If start = 0 and end = -1, set the range to cover all valid
>   addresses. Else start and end should be aligned to 4kB (lower 11
>   bits clear).
> * If NESTED is clear, then invalidate process scoped lookaside
>   information. Else pid specifies a nested LPID, and the invalidation
>   is performed   on nested guest partition table and nested guest
>   partition scope real addresses.
> * If pid = 0 and NESTED is clear, then valid addresses are quadrant 3
>   and quadrant 0 spaces, Else valid addresses are quadrant 0.
> * Pages which are fully covered by the range are to be invalidated.
>   Those which are partially covered are considered outside
>   invalidation range, which allows a caller to optimally invalidate
>   ranges that may   contain mixed page sizes.
> * Return H_SUCCESS on success.
> 
> Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
> ---
>  arch/powerpc/include/asm/mmu_context.h |   9 ++
>  arch/powerpc/kvm/book3s_hv.c           |  36 ++++++
>  arch/powerpc/mm/book3s64/radix_tlb.c   | 172 +++++++++++++++++++++++++
>  3 files changed, 217 insertions(+)
> 
> diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> index 4bc45d3ed8b0..b44f291fc909 100644
> --- a/arch/powerpc/include/asm/mmu_context.h
> +++ b/arch/powerpc/include/asm/mmu_context.h
> @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
>  
>  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
>  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> +			     unsigned long type, unsigned long pg_sizes,
> +			     unsigned long start, unsigned long end);
>  #else
>  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> +					   unsigned long lpid,
> +					   unsigned long type,
> +					   unsigned long pg_sizes,
> +					   unsigned long start,
> +					   unsigned long end) { }

Since the only plausible caller is in KVM HV code, why do you need the
#else clause.

>  #endif
>  
>  extern void switch_cop(struct mm_struct *next);
> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
> index bc0813644666..7e6da4687d88 100644
> --- a/arch/powerpc/kvm/book3s_hv.c
> +++ b/arch/powerpc/kvm/book3s_hv.c
> @@ -76,6 +76,7 @@
>  #include <asm/kvm_book3s_uvmem.h>
>  #include <asm/ultravisor.h>
>  #include <asm/dtl.h>
> +#include <asm/plpar_wrappers.h>
>  
>  #include "book3s.h"
>  
> @@ -924,6 +925,32 @@ static int kvmppc_get_yield_count(struct kvm_vcpu *vcpu)
>  	return yield_count;
>  }
>  
> +static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
> +				    unsigned long id, unsigned long target,
> +				    unsigned long type, unsigned long pg_sizes,
> +				    unsigned long start, unsigned long end)
> +{
> +	if (!kvm_is_radix(vcpu->kvm))
> +		return H_UNSUPPORTED;
> +
> +	if (end < start)
> +		return H_P5;
> +
> +	/*
> +	 * Partition-scoped invalidation for nested guests.
> +	 * Not yet supported
> +	 */
> +	if (type & H_RPTI_TYPE_NESTED)
> +		return H_P3;
> +
> +	/*
> +	 * Process-scoped invalidation for L1 guests.
> +	 */
> +	do_h_rpt_invalidate_prt(id, vcpu->kvm->arch.lpid,
> +				type, pg_sizes, start, end);
> +	return H_SUCCESS;
> +}
> +
>  int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
>  {
>  	unsigned long req = kvmppc_get_gpr(vcpu, 3);
> @@ -1132,6 +1159,14 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
>  		 */
>  		ret = kvmppc_h_svm_init_abort(vcpu->kvm);
>  		break;
> +	case H_RPT_INVALIDATE:
> +		ret = kvmppc_h_rpt_invalidate(vcpu, kvmppc_get_gpr(vcpu, 4),
> +					      kvmppc_get_gpr(vcpu, 5),
> +					      kvmppc_get_gpr(vcpu, 6),
> +					      kvmppc_get_gpr(vcpu, 7),
> +					      kvmppc_get_gpr(vcpu, 8),
> +					      kvmppc_get_gpr(vcpu, 9));
> +		break;
>  
>  	default:
>  		return RESUME_HOST;
> @@ -1178,6 +1213,7 @@ static int kvmppc_hcall_impl_hv(unsigned long cmd)
>  	case H_XIRR_X:
>  #endif
>  	case H_PAGE_INIT:
> +	case H_RPT_INVALIDATE:
>  		return 1;
>  	}
>  
> diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
> index 409e61210789..cdd98b9e7b15 100644
> --- a/arch/powerpc/mm/book3s64/radix_tlb.c
> +++ b/arch/powerpc/mm/book3s64/radix_tlb.c
> @@ -130,6 +130,21 @@ static __always_inline void __tlbie_pid(unsigned long pid, unsigned long ric)
>  	trace_tlbie(0, 0, rb, rs, ric, prs, r);
>  }
>  
> +static __always_inline void __tlbie_pid_lpid(unsigned long pid,
> +					     unsigned long lpid,
> +					     unsigned long ric)
> +{
> +	unsigned long rb, rs, prs, r;
> +
> +	rb = PPC_BIT(53); /* IS = 1 */
> +	rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
> +	prs = 1; /* process scoped */
> +	r = 1;   /* radix format */
> +
> +	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
> +		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
> +	trace_tlbie(0, 0, rb, rs, ric, prs, r);
> +}
>  static __always_inline void __tlbie_lpid(unsigned long lpid, unsigned long ric)
>  {
>  	unsigned long rb,rs,prs,r;
> @@ -190,6 +205,23 @@ static __always_inline void __tlbie_va(unsigned long va, unsigned long pid,
>  	trace_tlbie(0, 0, rb, rs, ric, prs, r);
>  }
>  
> +static __always_inline void __tlbie_va_lpid(unsigned long va, unsigned long pid,
> +					    unsigned long lpid,
> +					    unsigned long ap, unsigned long ric)
> +{
> +	unsigned long rb, rs, prs, r;
> +
> +	rb = va & ~(PPC_BITMASK(52, 63));
> +	rb |= ap << PPC_BITLSHIFT(58);
> +	rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
> +	prs = 1; /* process scoped */
> +	r = 1;   /* radix format */
> +
> +	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
> +		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
> +	trace_tlbie(0, 0, rb, rs, ric, prs, r);
> +}
> +
>  static __always_inline void __tlbie_lpid_va(unsigned long va, unsigned long lpid,
>  					    unsigned long ap, unsigned long ric)
>  {
> @@ -235,6 +267,22 @@ static inline void fixup_tlbie_va_range(unsigned long va, unsigned long pid,
>  	}
>  }
>  
> +static inline void fixup_tlbie_va_range_lpid(unsigned long va,
> +					     unsigned long pid,
> +					     unsigned long lpid,
> +					     unsigned long ap)
> +{
> +	if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
> +		asm volatile("ptesync" : : : "memory");
> +		__tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
> +	}
> +
> +	if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
> +		asm volatile("ptesync" : : : "memory");
> +		__tlbie_va_lpid(va, pid, lpid, ap, RIC_FLUSH_TLB);
> +	}
> +}
> +
>  static inline void fixup_tlbie_pid(unsigned long pid)
>  {
>  	/*
> @@ -254,6 +302,25 @@ static inline void fixup_tlbie_pid(unsigned long pid)
>  	}
>  }
>  
> +static inline void fixup_tlbie_pid_lpid(unsigned long pid, unsigned long lpid)
> +{
> +	/*
> +	 * We can use any address for the invalidation, pick one which is
> +	 * probably unused as an optimisation.
> +	 */
> +	unsigned long va = ((1UL << 52) - 1);
> +
> +	if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
> +		asm volatile("ptesync" : : : "memory");
> +		__tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
> +	}
> +
> +	if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
> +		asm volatile("ptesync" : : : "memory");
> +		__tlbie_va_lpid(va, pid, lpid, mmu_get_ap(MMU_PAGE_64K),
> +				RIC_FLUSH_TLB);
> +	}
> +}
>  
>  static inline void fixup_tlbie_lpid_va(unsigned long va, unsigned long lpid,
>  				       unsigned long ap)
> @@ -344,6 +411,31 @@ static inline void _tlbie_pid(unsigned long pid, unsigned long ric)
>  	asm volatile("eieio; tlbsync; ptesync": : :"memory");
>  }
>  
> +static inline void _tlbie_pid_lpid(unsigned long pid, unsigned long lpid,
> +				   unsigned long ric)
> +{
> +	asm volatile("ptesync" : : : "memory");
> +
> +	/*
> +	 * Workaround the fact that the "ric" argument to __tlbie_pid
> +	 * must be a compile-time contraint to match the "i" constraint
> +	 * in the asm statement.
> +	 */
> +	switch (ric) {
> +	case RIC_FLUSH_TLB:
> +		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
> +		fixup_tlbie_pid_lpid(pid, lpid);
> +		break;
> +	case RIC_FLUSH_PWC:
> +		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
> +		break;
> +	case RIC_FLUSH_ALL:
> +	default:
> +		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
> +		fixup_tlbie_pid_lpid(pid, lpid);
> +	}
> +	asm volatile("eieio; tlbsync; ptesync" : : : "memory");
> +}
>  struct tlbiel_pid {
>  	unsigned long pid;
>  	unsigned long ric;
> @@ -469,6 +561,20 @@ static inline void __tlbie_va_range(unsigned long start, unsigned long end,
>  	fixup_tlbie_va_range(addr - page_size, pid, ap);
>  }
>  
> +static inline void __tlbie_va_range_lpid(unsigned long start, unsigned long end,
> +					 unsigned long pid, unsigned long lpid,
> +					 unsigned long page_size,
> +					 unsigned long psize)
> +{
> +	unsigned long addr;
> +	unsigned long ap = mmu_get_ap(psize);
> +
> +	for (addr = start; addr < end; addr += page_size)
> +		__tlbie_va_lpid(addr, pid, lpid, ap, RIC_FLUSH_TLB);
> +
> +	fixup_tlbie_va_range_lpid(addr - page_size, pid, lpid, ap);
> +}
> +
>  static __always_inline void _tlbie_va(unsigned long va, unsigned long pid,
>  				      unsigned long psize, unsigned long ric)
>  {
> @@ -549,6 +655,18 @@ static inline void _tlbie_va_range(unsigned long start, unsigned long end,
>  	asm volatile("eieio; tlbsync; ptesync": : :"memory");
>  }
>  
> +static inline void _tlbie_va_range_lpid(unsigned long start, unsigned long end,
> +					unsigned long pid, unsigned long lpid,
> +					unsigned long page_size,
> +					unsigned long psize, bool also_pwc)
> +{
> +	asm volatile("ptesync" : : : "memory");
> +	if (also_pwc)
> +		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
> +	__tlbie_va_range_lpid(start, end, pid, lpid, page_size, psize);
> +	asm volatile("eieio; tlbsync; ptesync" : : : "memory");
> +}
> +
>  static inline void _tlbiel_va_range_multicast(struct mm_struct *mm,
>  				unsigned long start, unsigned long end,
>  				unsigned long pid, unsigned long page_size,
> @@ -1381,4 +1499,58 @@ extern void radix_kvm_prefetch_workaround(struct mm_struct *mm)
>  	}
>  }
>  EXPORT_SYMBOL_GPL(radix_kvm_prefetch_workaround);
> +
> +/*
> + * Performs process-scoped invalidations for a given LPID
> + * as part of H_RPT_INVALIDATE hcall.
> + */
> +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> +			     unsigned long type, unsigned long pg_sizes,
> +			     unsigned long start, unsigned long end)
> +{
> +	unsigned long psize, nr_pages;
> +	struct mmu_psize_def *def;
> +	bool flush_pid;
> +
> +	/*
> +	 * A H_RPTI_TYPE_ALL request implies RIC=3, hence
> +	 * do a single IS=1 based flush.
> +	 */
> +	if ((type & H_RPTI_TYPE_ALL) == H_RPTI_TYPE_ALL) {
> +		_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
> +		return;
> +	}
> +
> +	if (type & H_RPTI_TYPE_PWC)
> +		_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
> +
> +	/* Full PID flush */
> +	if (start == 0 && end == -1)
> +		return _tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
> +
> +	/* Do range invalidation for all the valid page sizes */
> +	for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> +		def = &mmu_psize_defs[psize];
> +		if (!(pg_sizes & def->h_rpt_pgsize))
> +			continue;
> +
> +		nr_pages = (end - start) >> def->shift;
> +		flush_pid = nr_pages > tlb_single_page_flush_ceiling;
> +
> +		/*
> +		 * If the number of pages spanning the range is above
> +		 * the ceiling, convert the request into a full PID flush.
> +		 * And since PID flush takes out all the page sizes, there
> +		 * is no need to consider remaining page sizes.
> +		 */
> +		if (flush_pid) {
> +			_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
> +			return;
> +		}
> +		_tlbie_va_range_lpid(start, end, pid, lpid,
> +				     (1UL << def->shift), psize, false);
> +	}
> +}
> +EXPORT_SYMBOL_GPL(do_h_rpt_invalidate_prt);
> +
>  #endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
@ 2021-07-05  4:42     ` David Gibson
  0 siblings, 0 replies; 36+ messages in thread
From: David Gibson @ 2021-07-05  4:42 UTC (permalink / raw)
  To: Bharata B Rao; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 15932 bytes --]

On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> H_RPT_INVALIDATE does two types of TLB invalidations:
> 
> 1. Process-scoped invalidations for guests when LPCR[GTSE]=0.
>    This is currently not used in KVM as GTSE is not usually
>    disabled in KVM.
> 2. Partition-scoped invalidations that an L1 hypervisor does on
>    behalf of an L2 guest. This is currently handled
>    by H_TLB_INVALIDATE hcall and this new replaces the old that.
> 
> This commit enables process-scoped invalidations for L1 guests.
> Support for process-scoped and partition-scoped invalidations
> from/for nested guests will be added separately.
> 
> Process scoped tlbie invalidations from L1 and nested guests
> need RS register for TLBIE instruction to contain both PID and
> LPID.  This patch introduces primitives that execute tlbie
> instruction with both PID and LPID set in prepartion for
> H_RPT_INVALIDATE hcall.
> 
> A description of H_RPT_INVALIDATE follows:
> 
> int64   /* H_Success: Return code on successful completion */
>         /* H_Busy - repeat the call with the same */
>         /* H_Parameter, H_P2, H_P3, H_P4, H_P5 : Invalid
> 	   parameters */
> hcall(const uint64 H_RPT_INVALIDATE, /* Invalidate RPT
> 					translation
> 					lookaside information */
>       uint64 id,        /* PID/LPID to invalidate */
>       uint64 target,    /* Invalidation target */
>       uint64 type,      /* Type of lookaside information */
>       uint64 pg_sizes,  /* Page sizes */
>       uint64 start,     /* Start of Effective Address (EA)
> 			   range (inclusive) */
>       uint64 end)       /* End of EA range (exclusive) */
> 
> Invalidation targets (target)
> -----------------------------
> Core MMU        0x01 /* All virtual processors in the
> 			partition */
> Core local MMU  0x02 /* Current virtual processor */
> Nest MMU        0x04 /* All nest/accelerator agents
> 			in use by the partition */
> 
> A combination of the above can be specified,
> except core and core local.
> 
> Type of translation to invalidate (type)
> ---------------------------------------
> NESTED       0x0001  /* invalidate nested guest partition-scope */
> TLB          0x0002  /* Invalidate TLB */
> PWC          0x0004  /* Invalidate Page Walk Cache */
> PRT          0x0008  /* Invalidate caching of Process Table
> 			Entries if NESTED is clear */
> PAT          0x0008  /* Invalidate caching of Partition Table
> 			Entries if NESTED is set */
> 
> A combination of the above can be specified.
> 
> Page size mask (pages)
> ----------------------
> 4K              0x01
> 64K             0x02
> 2M              0x04
> 1G              0x08
> All sizes       (-1UL)
> 
> A combination of the above can be specified.
> All page sizes can be selected with -1.
> 
> Semantics: Invalidate radix tree lookaside information
>            matching the parameters given.
> * Return H_P2, H_P3 or H_P4 if target, type, or pageSizes parameters
>   are different from the defined values.
> * Return H_PARAMETER if NESTED is set and pid is not a valid nested
>   LPID allocated to this partition
> * Return H_P5 if (start, end) doesn't form a valid range. Start and
>   end should be a valid Quadrant address and  end > start.
> * Return H_NotSupported if the partition is not in running in radix
>   translation mode.
> * May invalidate more translation information than requested.
> * If start = 0 and end = -1, set the range to cover all valid
>   addresses. Else start and end should be aligned to 4kB (lower 11
>   bits clear).
> * If NESTED is clear, then invalidate process scoped lookaside
>   information. Else pid specifies a nested LPID, and the invalidation
>   is performed   on nested guest partition table and nested guest
>   partition scope real addresses.
> * If pid = 0 and NESTED is clear, then valid addresses are quadrant 3
>   and quadrant 0 spaces, Else valid addresses are quadrant 0.
> * Pages which are fully covered by the range are to be invalidated.
>   Those which are partially covered are considered outside
>   invalidation range, which allows a caller to optimally invalidate
>   ranges that may   contain mixed page sizes.
> * Return H_SUCCESS on success.
> 
> Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
> ---
>  arch/powerpc/include/asm/mmu_context.h |   9 ++
>  arch/powerpc/kvm/book3s_hv.c           |  36 ++++++
>  arch/powerpc/mm/book3s64/radix_tlb.c   | 172 +++++++++++++++++++++++++
>  3 files changed, 217 insertions(+)
> 
> diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> index 4bc45d3ed8b0..b44f291fc909 100644
> --- a/arch/powerpc/include/asm/mmu_context.h
> +++ b/arch/powerpc/include/asm/mmu_context.h
> @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
>  
>  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
>  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> +			     unsigned long type, unsigned long pg_sizes,
> +			     unsigned long start, unsigned long end);
>  #else
>  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> +					   unsigned long lpid,
> +					   unsigned long type,
> +					   unsigned long pg_sizes,
> +					   unsigned long start,
> +					   unsigned long end) { }

Since the only plausible caller is in KVM HV code, why do you need the
#else clause.

>  #endif
>  
>  extern void switch_cop(struct mm_struct *next);
> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
> index bc0813644666..7e6da4687d88 100644
> --- a/arch/powerpc/kvm/book3s_hv.c
> +++ b/arch/powerpc/kvm/book3s_hv.c
> @@ -76,6 +76,7 @@
>  #include <asm/kvm_book3s_uvmem.h>
>  #include <asm/ultravisor.h>
>  #include <asm/dtl.h>
> +#include <asm/plpar_wrappers.h>
>  
>  #include "book3s.h"
>  
> @@ -924,6 +925,32 @@ static int kvmppc_get_yield_count(struct kvm_vcpu *vcpu)
>  	return yield_count;
>  }
>  
> +static long kvmppc_h_rpt_invalidate(struct kvm_vcpu *vcpu,
> +				    unsigned long id, unsigned long target,
> +				    unsigned long type, unsigned long pg_sizes,
> +				    unsigned long start, unsigned long end)
> +{
> +	if (!kvm_is_radix(vcpu->kvm))
> +		return H_UNSUPPORTED;
> +
> +	if (end < start)
> +		return H_P5;
> +
> +	/*
> +	 * Partition-scoped invalidation for nested guests.
> +	 * Not yet supported
> +	 */
> +	if (type & H_RPTI_TYPE_NESTED)
> +		return H_P3;
> +
> +	/*
> +	 * Process-scoped invalidation for L1 guests.
> +	 */
> +	do_h_rpt_invalidate_prt(id, vcpu->kvm->arch.lpid,
> +				type, pg_sizes, start, end);
> +	return H_SUCCESS;
> +}
> +
>  int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
>  {
>  	unsigned long req = kvmppc_get_gpr(vcpu, 3);
> @@ -1132,6 +1159,14 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
>  		 */
>  		ret = kvmppc_h_svm_init_abort(vcpu->kvm);
>  		break;
> +	case H_RPT_INVALIDATE:
> +		ret = kvmppc_h_rpt_invalidate(vcpu, kvmppc_get_gpr(vcpu, 4),
> +					      kvmppc_get_gpr(vcpu, 5),
> +					      kvmppc_get_gpr(vcpu, 6),
> +					      kvmppc_get_gpr(vcpu, 7),
> +					      kvmppc_get_gpr(vcpu, 8),
> +					      kvmppc_get_gpr(vcpu, 9));
> +		break;
>  
>  	default:
>  		return RESUME_HOST;
> @@ -1178,6 +1213,7 @@ static int kvmppc_hcall_impl_hv(unsigned long cmd)
>  	case H_XIRR_X:
>  #endif
>  	case H_PAGE_INIT:
> +	case H_RPT_INVALIDATE:
>  		return 1;
>  	}
>  
> diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
> index 409e61210789..cdd98b9e7b15 100644
> --- a/arch/powerpc/mm/book3s64/radix_tlb.c
> +++ b/arch/powerpc/mm/book3s64/radix_tlb.c
> @@ -130,6 +130,21 @@ static __always_inline void __tlbie_pid(unsigned long pid, unsigned long ric)
>  	trace_tlbie(0, 0, rb, rs, ric, prs, r);
>  }
>  
> +static __always_inline void __tlbie_pid_lpid(unsigned long pid,
> +					     unsigned long lpid,
> +					     unsigned long ric)
> +{
> +	unsigned long rb, rs, prs, r;
> +
> +	rb = PPC_BIT(53); /* IS = 1 */
> +	rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
> +	prs = 1; /* process scoped */
> +	r = 1;   /* radix format */
> +
> +	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
> +		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
> +	trace_tlbie(0, 0, rb, rs, ric, prs, r);
> +}
>  static __always_inline void __tlbie_lpid(unsigned long lpid, unsigned long ric)
>  {
>  	unsigned long rb,rs,prs,r;
> @@ -190,6 +205,23 @@ static __always_inline void __tlbie_va(unsigned long va, unsigned long pid,
>  	trace_tlbie(0, 0, rb, rs, ric, prs, r);
>  }
>  
> +static __always_inline void __tlbie_va_lpid(unsigned long va, unsigned long pid,
> +					    unsigned long lpid,
> +					    unsigned long ap, unsigned long ric)
> +{
> +	unsigned long rb, rs, prs, r;
> +
> +	rb = va & ~(PPC_BITMASK(52, 63));
> +	rb |= ap << PPC_BITLSHIFT(58);
> +	rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
> +	prs = 1; /* process scoped */
> +	r = 1;   /* radix format */
> +
> +	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
> +		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
> +	trace_tlbie(0, 0, rb, rs, ric, prs, r);
> +}
> +
>  static __always_inline void __tlbie_lpid_va(unsigned long va, unsigned long lpid,
>  					    unsigned long ap, unsigned long ric)
>  {
> @@ -235,6 +267,22 @@ static inline void fixup_tlbie_va_range(unsigned long va, unsigned long pid,
>  	}
>  }
>  
> +static inline void fixup_tlbie_va_range_lpid(unsigned long va,
> +					     unsigned long pid,
> +					     unsigned long lpid,
> +					     unsigned long ap)
> +{
> +	if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
> +		asm volatile("ptesync" : : : "memory");
> +		__tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
> +	}
> +
> +	if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
> +		asm volatile("ptesync" : : : "memory");
> +		__tlbie_va_lpid(va, pid, lpid, ap, RIC_FLUSH_TLB);
> +	}
> +}
> +
>  static inline void fixup_tlbie_pid(unsigned long pid)
>  {
>  	/*
> @@ -254,6 +302,25 @@ static inline void fixup_tlbie_pid(unsigned long pid)
>  	}
>  }
>  
> +static inline void fixup_tlbie_pid_lpid(unsigned long pid, unsigned long lpid)
> +{
> +	/*
> +	 * We can use any address for the invalidation, pick one which is
> +	 * probably unused as an optimisation.
> +	 */
> +	unsigned long va = ((1UL << 52) - 1);
> +
> +	if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
> +		asm volatile("ptesync" : : : "memory");
> +		__tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
> +	}
> +
> +	if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
> +		asm volatile("ptesync" : : : "memory");
> +		__tlbie_va_lpid(va, pid, lpid, mmu_get_ap(MMU_PAGE_64K),
> +				RIC_FLUSH_TLB);
> +	}
> +}
>  
>  static inline void fixup_tlbie_lpid_va(unsigned long va, unsigned long lpid,
>  				       unsigned long ap)
> @@ -344,6 +411,31 @@ static inline void _tlbie_pid(unsigned long pid, unsigned long ric)
>  	asm volatile("eieio; tlbsync; ptesync": : :"memory");
>  }
>  
> +static inline void _tlbie_pid_lpid(unsigned long pid, unsigned long lpid,
> +				   unsigned long ric)
> +{
> +	asm volatile("ptesync" : : : "memory");
> +
> +	/*
> +	 * Workaround the fact that the "ric" argument to __tlbie_pid
> +	 * must be a compile-time contraint to match the "i" constraint
> +	 * in the asm statement.
> +	 */
> +	switch (ric) {
> +	case RIC_FLUSH_TLB:
> +		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
> +		fixup_tlbie_pid_lpid(pid, lpid);
> +		break;
> +	case RIC_FLUSH_PWC:
> +		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
> +		break;
> +	case RIC_FLUSH_ALL:
> +	default:
> +		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
> +		fixup_tlbie_pid_lpid(pid, lpid);
> +	}
> +	asm volatile("eieio; tlbsync; ptesync" : : : "memory");
> +}
>  struct tlbiel_pid {
>  	unsigned long pid;
>  	unsigned long ric;
> @@ -469,6 +561,20 @@ static inline void __tlbie_va_range(unsigned long start, unsigned long end,
>  	fixup_tlbie_va_range(addr - page_size, pid, ap);
>  }
>  
> +static inline void __tlbie_va_range_lpid(unsigned long start, unsigned long end,
> +					 unsigned long pid, unsigned long lpid,
> +					 unsigned long page_size,
> +					 unsigned long psize)
> +{
> +	unsigned long addr;
> +	unsigned long ap = mmu_get_ap(psize);
> +
> +	for (addr = start; addr < end; addr += page_size)
> +		__tlbie_va_lpid(addr, pid, lpid, ap, RIC_FLUSH_TLB);
> +
> +	fixup_tlbie_va_range_lpid(addr - page_size, pid, lpid, ap);
> +}
> +
>  static __always_inline void _tlbie_va(unsigned long va, unsigned long pid,
>  				      unsigned long psize, unsigned long ric)
>  {
> @@ -549,6 +655,18 @@ static inline void _tlbie_va_range(unsigned long start, unsigned long end,
>  	asm volatile("eieio; tlbsync; ptesync": : :"memory");
>  }
>  
> +static inline void _tlbie_va_range_lpid(unsigned long start, unsigned long end,
> +					unsigned long pid, unsigned long lpid,
> +					unsigned long page_size,
> +					unsigned long psize, bool also_pwc)
> +{
> +	asm volatile("ptesync" : : : "memory");
> +	if (also_pwc)
> +		__tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
> +	__tlbie_va_range_lpid(start, end, pid, lpid, page_size, psize);
> +	asm volatile("eieio; tlbsync; ptesync" : : : "memory");
> +}
> +
>  static inline void _tlbiel_va_range_multicast(struct mm_struct *mm,
>  				unsigned long start, unsigned long end,
>  				unsigned long pid, unsigned long page_size,
> @@ -1381,4 +1499,58 @@ extern void radix_kvm_prefetch_workaround(struct mm_struct *mm)
>  	}
>  }
>  EXPORT_SYMBOL_GPL(radix_kvm_prefetch_workaround);
> +
> +/*
> + * Performs process-scoped invalidations for a given LPID
> + * as part of H_RPT_INVALIDATE hcall.
> + */
> +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> +			     unsigned long type, unsigned long pg_sizes,
> +			     unsigned long start, unsigned long end)
> +{
> +	unsigned long psize, nr_pages;
> +	struct mmu_psize_def *def;
> +	bool flush_pid;
> +
> +	/*
> +	 * A H_RPTI_TYPE_ALL request implies RIC=3, hence
> +	 * do a single IS=1 based flush.
> +	 */
> +	if ((type & H_RPTI_TYPE_ALL) == H_RPTI_TYPE_ALL) {
> +		_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
> +		return;
> +	}
> +
> +	if (type & H_RPTI_TYPE_PWC)
> +		_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
> +
> +	/* Full PID flush */
> +	if (start == 0 && end == -1)
> +		return _tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
> +
> +	/* Do range invalidation for all the valid page sizes */
> +	for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> +		def = &mmu_psize_defs[psize];
> +		if (!(pg_sizes & def->h_rpt_pgsize))
> +			continue;
> +
> +		nr_pages = (end - start) >> def->shift;
> +		flush_pid = nr_pages > tlb_single_page_flush_ceiling;
> +
> +		/*
> +		 * If the number of pages spanning the range is above
> +		 * the ceiling, convert the request into a full PID flush.
> +		 * And since PID flush takes out all the page sizes, there
> +		 * is no need to consider remaining page sizes.
> +		 */
> +		if (flush_pid) {
> +			_tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
> +			return;
> +		}
> +		_tlbie_va_range_lpid(start, end, pid, lpid,
> +				     (1UL << def->shift), psize, false);
> +	}
> +}
> +EXPORT_SYMBOL_GPL(do_h_rpt_invalidate_prt);
> +
>  #endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
  2021-07-05  4:42     ` David Gibson
@ 2021-07-06  5:38       ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-07-06  5:26 UTC (permalink / raw)
  To: David Gibson; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

On Mon, Jul 05, 2021 at 02:42:33PM +1000, David Gibson wrote:
> On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > index 4bc45d3ed8b0..b44f291fc909 100644
> > --- a/arch/powerpc/include/asm/mmu_context.h
> > +++ b/arch/powerpc/include/asm/mmu_context.h
> > @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
> >  
> >  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
> >  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> > +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> > +			     unsigned long type, unsigned long pg_sizes,
> > +			     unsigned long start, unsigned long end);
> >  #else
> >  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> > +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> > +					   unsigned long lpid,
> > +					   unsigned long type,
> > +					   unsigned long pg_sizes,
> > +					   unsigned long start,
> > +					   unsigned long end) { }
> 
> Since the only plausible caller is in KVM HV code, why do you need the
> #else clause.

The call to the above routine is prevented for non-radix guests
in KVM HV code at runtime using kvm_is_radix() check and not by
CONFIG_PPC_RADIX_MMU. Hence the #else version would be needed.

Regards,
Bharata.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
@ 2021-07-06  5:38       ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-07-06  5:38 UTC (permalink / raw)
  To: David Gibson; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

On Mon, Jul 05, 2021 at 02:42:33PM +1000, David Gibson wrote:
> On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > index 4bc45d3ed8b0..b44f291fc909 100644
> > --- a/arch/powerpc/include/asm/mmu_context.h
> > +++ b/arch/powerpc/include/asm/mmu_context.h
> > @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
> >  
> >  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
> >  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> > +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> > +			     unsigned long type, unsigned long pg_sizes,
> > +			     unsigned long start, unsigned long end);
> >  #else
> >  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> > +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> > +					   unsigned long lpid,
> > +					   unsigned long type,
> > +					   unsigned long pg_sizes,
> > +					   unsigned long start,
> > +					   unsigned long end) { }
> 
> Since the only plausible caller is in KVM HV code, why do you need the
> #else clause.

The call to the above routine is prevented for non-radix guests
in KVM HV code at runtime using kvm_is_radix() check and not by
CONFIG_PPC_RADIX_MMU. Hence the #else version would be needed.

Regards,
Bharata.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
  2021-07-06  5:38       ` Bharata B Rao
@ 2021-07-08  3:58         ` David Gibson
  -1 siblings, 0 replies; 36+ messages in thread
From: David Gibson @ 2021-07-08  3:58 UTC (permalink / raw)
  To: Bharata B Rao; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 1920 bytes --]

On Tue, Jul 06, 2021 at 10:56:32AM +0530, Bharata B Rao wrote:
> On Mon, Jul 05, 2021 at 02:42:33PM +1000, David Gibson wrote:
> > On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> > > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > > index 4bc45d3ed8b0..b44f291fc909 100644
> > > --- a/arch/powerpc/include/asm/mmu_context.h
> > > +++ b/arch/powerpc/include/asm/mmu_context.h
> > > @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
> > >  
> > >  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
> > >  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> > > +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> > > +			     unsigned long type, unsigned long pg_sizes,
> > > +			     unsigned long start, unsigned long end);
> > >  #else
> > >  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> > > +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> > > +					   unsigned long lpid,
> > > +					   unsigned long type,
> > > +					   unsigned long pg_sizes,
> > > +					   unsigned long start,
> > > +					   unsigned long end) { }
> > 
> > Since the only plausible caller is in KVM HV code, why do you need the
> > #else clause.
> 
> The call to the above routine is prevented for non-radix guests
> in KVM HV code at runtime using kvm_is_radix() check and not by
> CONFIG_PPC_RADIX_MMU. Hence the #else version would be needed.

kvm_is_radix() should evaluate to false at compile time if
!defined(CONFIG_PPC_RADIX_MMU), in which case, no you shouldn't need
the else version.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
@ 2021-07-08  3:58         ` David Gibson
  0 siblings, 0 replies; 36+ messages in thread
From: David Gibson @ 2021-07-08  3:58 UTC (permalink / raw)
  To: Bharata B Rao; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 1920 bytes --]

On Tue, Jul 06, 2021 at 10:56:32AM +0530, Bharata B Rao wrote:
> On Mon, Jul 05, 2021 at 02:42:33PM +1000, David Gibson wrote:
> > On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> > > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > > index 4bc45d3ed8b0..b44f291fc909 100644
> > > --- a/arch/powerpc/include/asm/mmu_context.h
> > > +++ b/arch/powerpc/include/asm/mmu_context.h
> > > @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
> > >  
> > >  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
> > >  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> > > +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> > > +			     unsigned long type, unsigned long pg_sizes,
> > > +			     unsigned long start, unsigned long end);
> > >  #else
> > >  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> > > +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> > > +					   unsigned long lpid,
> > > +					   unsigned long type,
> > > +					   unsigned long pg_sizes,
> > > +					   unsigned long start,
> > > +					   unsigned long end) { }
> > 
> > Since the only plausible caller is in KVM HV code, why do you need the
> > #else clause.
> 
> The call to the above routine is prevented for non-radix guests
> in KVM HV code at runtime using kvm_is_radix() check and not by
> CONFIG_PPC_RADIX_MMU. Hence the #else version would be needed.

kvm_is_radix() should evaluate to false at compile time if
!defined(CONFIG_PPC_RADIX_MMU), in which case, no you shouldn't need
the else version.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
  2021-07-08  3:58         ` David Gibson
@ 2021-07-08  4:41           ` Bharata B Rao
  -1 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-07-08  4:29 UTC (permalink / raw)
  To: David Gibson; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

On Thu, Jul 08, 2021 at 01:58:04PM +1000, David Gibson wrote:
> On Tue, Jul 06, 2021 at 10:56:32AM +0530, Bharata B Rao wrote:
> > On Mon, Jul 05, 2021 at 02:42:33PM +1000, David Gibson wrote:
> > > On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> > > > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > > > index 4bc45d3ed8b0..b44f291fc909 100644
> > > > --- a/arch/powerpc/include/asm/mmu_context.h
> > > > +++ b/arch/powerpc/include/asm/mmu_context.h
> > > > @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
> > > >  
> > > >  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
> > > >  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> > > > +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> > > > +			     unsigned long type, unsigned long pg_sizes,
> > > > +			     unsigned long start, unsigned long end);
> > > >  #else
> > > >  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> > > > +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> > > > +					   unsigned long lpid,
> > > > +					   unsigned long type,
> > > > +					   unsigned long pg_sizes,
> > > > +					   unsigned long start,
> > > > +					   unsigned long end) { }
> > > 
> > > Since the only plausible caller is in KVM HV code, why do you need the
> > > #else clause.
> > 
> > The call to the above routine is prevented for non-radix guests
> > in KVM HV code at runtime using kvm_is_radix() check and not by
> > CONFIG_PPC_RADIX_MMU. Hence the #else version would be needed.
> 
> kvm_is_radix() should evaluate to false at compile time if
> !defined(CONFIG_PPC_RADIX_MMU), in which case, no you shouldn't need
> the else version.

At least in the latest mainline, I don't see the definition of
kvm_is_radix() being conditional to CONFIG_PPC_RADIX_MMU.

Anyway this is what I see in practice if the #else version is
removed and CONFIG_PPC_RADIX_MMU is turned off:

arch/powerpc/kvm/book3s_hv.c: In function ‘kvmppc_h_rpt_invalidate’:
arch/powerpc/kvm/book3s_hv.c:983:2: error: implicit declaration of function ‘do_h_rpt_invalidate_prt’; did you mean ‘do_h_rpt_invalidate_pat’? [-Werror=implicit-function-declaration]
  983 |  do_h_rpt_invalidate_prt(id, vcpu->kvm->arch.lpid,
      |  ^~~~~~~~~~~~~~~~~~~~~~~
      |  do_h_rpt_invalidate_pat

Regards,
Bharata.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
@ 2021-07-08  4:41           ` Bharata B Rao
  0 siblings, 0 replies; 36+ messages in thread
From: Bharata B Rao @ 2021-07-08  4:41 UTC (permalink / raw)
  To: David Gibson; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

On Thu, Jul 08, 2021 at 01:58:04PM +1000, David Gibson wrote:
> On Tue, Jul 06, 2021 at 10:56:32AM +0530, Bharata B Rao wrote:
> > On Mon, Jul 05, 2021 at 02:42:33PM +1000, David Gibson wrote:
> > > On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> > > > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > > > index 4bc45d3ed8b0..b44f291fc909 100644
> > > > --- a/arch/powerpc/include/asm/mmu_context.h
> > > > +++ b/arch/powerpc/include/asm/mmu_context.h
> > > > @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
> > > >  
> > > >  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
> > > >  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> > > > +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> > > > +			     unsigned long type, unsigned long pg_sizes,
> > > > +			     unsigned long start, unsigned long end);
> > > >  #else
> > > >  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> > > > +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> > > > +					   unsigned long lpid,
> > > > +					   unsigned long type,
> > > > +					   unsigned long pg_sizes,
> > > > +					   unsigned long start,
> > > > +					   unsigned long end) { }
> > > 
> > > Since the only plausible caller is in KVM HV code, why do you need the
> > > #else clause.
> > 
> > The call to the above routine is prevented for non-radix guests
> > in KVM HV code at runtime using kvm_is_radix() check and not by
> > CONFIG_PPC_RADIX_MMU. Hence the #else version would be needed.
> 
> kvm_is_radix() should evaluate to false at compile time if
> !defined(CONFIG_PPC_RADIX_MMU), in which case, no you shouldn't need
> the else version.

At least in the latest mainline, I don't see the definition of
kvm_is_radix() being conditional to CONFIG_PPC_RADIX_MMU.

Anyway this is what I see in practice if the #else version is
removed and CONFIG_PPC_RADIX_MMU is turned off:

arch/powerpc/kvm/book3s_hv.c: In function ‘kvmppc_h_rpt_invalidate’:
arch/powerpc/kvm/book3s_hv.c:983:2: error: implicit declaration of function ‘do_h_rpt_invalidate_prt’; did you mean ‘do_h_rpt_invalidate_pat’? [-Werror=implicit-function-declaration]
  983 |  do_h_rpt_invalidate_prt(id, vcpu->kvm->arch.lpid,
      |  ^~~~~~~~~~~~~~~~~~~~~~~
      |  do_h_rpt_invalidate_pat

Regards,
Bharata.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
  2021-07-08  4:41           ` Bharata B Rao
@ 2021-07-12  2:28             ` David Gibson
  -1 siblings, 0 replies; 36+ messages in thread
From: David Gibson @ 2021-07-12  2:28 UTC (permalink / raw)
  To: Bharata B Rao; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 3031 bytes --]

On Thu, Jul 08, 2021 at 09:59:08AM +0530, Bharata B Rao wrote:
> On Thu, Jul 08, 2021 at 01:58:04PM +1000, David Gibson wrote:
> > On Tue, Jul 06, 2021 at 10:56:32AM +0530, Bharata B Rao wrote:
> > > On Mon, Jul 05, 2021 at 02:42:33PM +1000, David Gibson wrote:
> > > > On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> > > > > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > > > > index 4bc45d3ed8b0..b44f291fc909 100644
> > > > > --- a/arch/powerpc/include/asm/mmu_context.h
> > > > > +++ b/arch/powerpc/include/asm/mmu_context.h
> > > > > @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
> > > > >  
> > > > >  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
> > > > >  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> > > > > +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> > > > > +			     unsigned long type, unsigned long pg_sizes,
> > > > > +			     unsigned long start, unsigned long end);
> > > > >  #else
> > > > >  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> > > > > +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> > > > > +					   unsigned long lpid,
> > > > > +					   unsigned long type,
> > > > > +					   unsigned long pg_sizes,
> > > > > +					   unsigned long start,
> > > > > +					   unsigned long end) { }
> > > > 
> > > > Since the only plausible caller is in KVM HV code, why do you need the
> > > > #else clause.
> > > 
> > > The call to the above routine is prevented for non-radix guests
> > > in KVM HV code at runtime using kvm_is_radix() check and not by
> > > CONFIG_PPC_RADIX_MMU. Hence the #else version would be needed.
> > 
> > kvm_is_radix() should evaluate to false at compile time if
> > !defined(CONFIG_PPC_RADIX_MMU), in which case, no you shouldn't need
> > the else version.
> 
> At least in the latest mainline, I don't see the definition of
> kvm_is_radix() being conditional to CONFIG_PPC_RADIX_MMU.

That's probably worth fixing, then.

> Anyway this is what I see in practice if the #else version is
> removed and CONFIG_PPC_RADIX_MMU is turned off:
> 
> arch/powerpc/kvm/book3s_hv.c: In function ‘kvmppc_h_rpt_invalidate’:
> arch/powerpc/kvm/book3s_hv.c:983:2: error: implicit declaration of function ‘do_h_rpt_invalidate_prt’; did you mean ‘do_h_rpt_invalidate_pat’? [-Werror=implicit-function-declaration]
>   983 |  do_h_rpt_invalidate_prt(id, vcpu->kvm->arch.lpid,
>       |  ^~~~~~~~~~~~~~~~~~~~~~~
>       |  do_h_rpt_invalidate_pat

If you really do need the stub, it should probably be a BUG() rather
than a no-op, since this really never should get called if we don't
have radix.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE
@ 2021-07-12  2:28             ` David Gibson
  0 siblings, 0 replies; 36+ messages in thread
From: David Gibson @ 2021-07-12  2:28 UTC (permalink / raw)
  To: Bharata B Rao; +Cc: farosas, aneesh.kumar, npiggin, kvm-ppc, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 3031 bytes --]

On Thu, Jul 08, 2021 at 09:59:08AM +0530, Bharata B Rao wrote:
> On Thu, Jul 08, 2021 at 01:58:04PM +1000, David Gibson wrote:
> > On Tue, Jul 06, 2021 at 10:56:32AM +0530, Bharata B Rao wrote:
> > > On Mon, Jul 05, 2021 at 02:42:33PM +1000, David Gibson wrote:
> > > > On Mon, Jun 21, 2021 at 02:20:00PM +0530, Bharata B Rao wrote:
> > > > > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > > > > index 4bc45d3ed8b0..b44f291fc909 100644
> > > > > --- a/arch/powerpc/include/asm/mmu_context.h
> > > > > +++ b/arch/powerpc/include/asm/mmu_context.h
> > > > > @@ -124,8 +124,17 @@ static inline bool need_extra_context(struct mm_struct *mm, unsigned long ea)
> > > > >  
> > > > >  #if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
> > > > >  extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
> > > > > +void do_h_rpt_invalidate_prt(unsigned long pid, unsigned long lpid,
> > > > > +			     unsigned long type, unsigned long pg_sizes,
> > > > > +			     unsigned long start, unsigned long end);
> > > > >  #else
> > > > >  static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
> > > > > +static inline void do_h_rpt_invalidate_prt(unsigned long pid,
> > > > > +					   unsigned long lpid,
> > > > > +					   unsigned long type,
> > > > > +					   unsigned long pg_sizes,
> > > > > +					   unsigned long start,
> > > > > +					   unsigned long end) { }
> > > > 
> > > > Since the only plausible caller is in KVM HV code, why do you need the
> > > > #else clause.
> > > 
> > > The call to the above routine is prevented for non-radix guests
> > > in KVM HV code at runtime using kvm_is_radix() check and not by
> > > CONFIG_PPC_RADIX_MMU. Hence the #else version would be needed.
> > 
> > kvm_is_radix() should evaluate to false at compile time if
> > !defined(CONFIG_PPC_RADIX_MMU), in which case, no you shouldn't need
> > the else version.
> 
> At least in the latest mainline, I don't see the definition of
> kvm_is_radix() being conditional to CONFIG_PPC_RADIX_MMU.

That's probably worth fixing, then.

> Anyway this is what I see in practice if the #else version is
> removed and CONFIG_PPC_RADIX_MMU is turned off:
> 
> arch/powerpc/kvm/book3s_hv.c: In function ‘kvmppc_h_rpt_invalidate’:
> arch/powerpc/kvm/book3s_hv.c:983:2: error: implicit declaration of function ‘do_h_rpt_invalidate_prt’; did you mean ‘do_h_rpt_invalidate_pat’? [-Werror=implicit-function-declaration]
>   983 |  do_h_rpt_invalidate_prt(id, vcpu->kvm->arch.lpid,
>       |  ^~~~~~~~~~~~~~~~~~~~~~~
>       |  do_h_rpt_invalidate_pat

If you really do need the stub, it should probably be a BUG() rather
than a no-op, since this really never should get called if we don't
have radix.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2021-07-12  2:29 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-21  8:49 [PATCH v8 0/6] Support for H_RPT_INVALIDATE in PowerPC KVM Bharata B Rao
2021-06-21  8:50 ` Bharata B Rao
2021-06-21  8:49 ` [PATCH v8 1/6] KVM: PPC: Book3S HV: Fix comments of H_RPT_INVALIDATE arguments Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21  8:49 ` [PATCH v8 2/6] powerpc/book3s64/radix: Add H_RPT_INVALIDATE pgsize encodings to mmu_psize_def Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21  8:50 ` [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-07-05  4:42   ` David Gibson
2021-07-05  4:42     ` David Gibson
2021-07-06  5:26     ` Bharata B Rao
2021-07-06  5:38       ` Bharata B Rao
2021-07-08  3:58       ` David Gibson
2021-07-08  3:58         ` David Gibson
2021-07-08  4:29         ` Bharata B Rao
2021-07-08  4:41           ` Bharata B Rao
2021-07-12  2:28           ` David Gibson
2021-07-12  2:28             ` David Gibson
2021-06-21  8:50 ` [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21 17:12   ` Nathan Chancellor
2021-06-21 17:12     ` Nathan Chancellor
2021-06-22  4:35     ` Bharata B Rao
2021-06-22  4:47       ` Bharata B Rao
2021-06-22  7:12       ` Bharata B Rao
2021-06-22  7:24         ` Bharata B Rao
2021-06-23  6:47         ` Michael Ellerman
2021-06-23  6:47           ` Michael Ellerman
2021-06-21  8:50 ` [PATCH v8 5/6] KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21  8:50 ` [PATCH v8 6/6] KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21 15:07   ` kernel test robot
2021-06-21 15:21     ` Philip Li
2021-06-24 13:59 ` [PATCH v8 0/6] Support for H_RPT_INVALIDATE in PowerPC KVM Michael Ellerman
2021-06-24 13:59   ` Michael Ellerman

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.