Hi Jonathan, I have applied all diffs and compiled a new kernel. It now stops at “root on sda…” (See below) and will go no further. I have tested this using the console only.
If I add a USB KeyB/Mouse Receiver it will boot properly and I don’t understand why. I don’t think I am a reliable tester for this. I am quite “green” with compiling kernels and applying diffs. I could have done this all wrong so my results should not be taken as complete or correct. I have reverted back to the stable 6.9 kernel. Thank you for your efforts and patience. em0 at pci1 dev 0 function 0 "Intel I211" rev 0x03: msi, address 00:e0:67:15:e7:82 ppb1 at pci0 dev 28 function 1 "Intel Braswell PCIE" rev 0x35: msi pci2 at ppb1 bus 2 em1 at pci2 dev 0 function 0 "Intel I211" rev 0x03: msi, address 00:e0:67:15:e7:83 pcib0 at pci0 dev 31 function 0 "Intel Braswell PCU LPC" rev 0x35 ichiic0 at pci0 dev 31 function 3 "Intel Braswell SMBus" rev 0x35: apic 1 int 18 iic0 at ichiic0 spdmem0 at iic0 addr 0x50: 4GB DDR3 SDRAM PC3-12800 SO-DIMM isa0 at pcib0 isadma0 at isa0 com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo com0: console vga0 at isa0 port 0x3b0/48 iomem 0xa0000/131072 wsdisplay at vga0 not configured pcppi0 at isa0 port 0x61 spkr0 at pcppi0 vmm0 at mainbus0: VMX/EPT (using slow L1TF mitigation) uhub1 at uhub0 port 3 configuration 1 interface 0 "Terminus Technology USB 2.0 Hub [MTT]" rev 2.00/1.00 addr 2 vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets root on sd0a (5a0dcc1e734eb1cb.a) swap on sd0b dump on sd0b > On 27 May 2021, at 4:41 pm, Jonathan Gray <j...@jsg.id.au> wrote: > > On Mon, May 17, 2021 at 05:35:02PM +1000, Jonathan Gray wrote: >> On Tue, May 04, 2021 at 03:44:54PM +0200, m...@fn.de wrote: >>> Thanks for the quick help. I built a kernel with your fix. >>> The system is booting up with a warning, now. >>> >>> ... >>> scsibus3 at softraid0: 256 targets >>> sd2 at scsibus3 targ 1 lun 0: <OPENBSD, SR RAID 1, 006> >>> sd2: 122103MB, 512 bytes/sector, 250067198 sectors >>> root on sd2a (da12fadb67cf7a4d.a) swap on sd2b dump on sd2b >>> drm : drm_WARN_ON(d->wake_count)drm : drm_WARN_ON(d->wake_count)Device >>> initialization failed (-22) >>> Automatic boot in progress: starting file system checks. >>> /dev/sd2a (da12fadb67cf7a4d.a): file system is clean; not checking >>> ... >> >> Thanks, can you try this? > > And this diff with commits backported to -current related to vma/pinning. > > drm/i915/gt: Prevent use of engine->wa_ctx after error > drm/i915: Fix mismatch between misplaced vma check and vma insert > drm/i915: Hold onto an explicit ref to i915_vma_work.pinned > drm/i915: Use the active reference on the vma while capturing > > diff --git sys/dev/pci/drm/i915/gem/i915_gem_execbuffer.c > sys/dev/pci/drm/i915/gem/i915_gem_execbuffer.c > index 971ed84f371..993c2b22f9f 100644 > --- sys/dev/pci/drm/i915/gem/i915_gem_execbuffer.c > +++ sys/dev/pci/drm/i915/gem/i915_gem_execbuffer.c > @@ -365,7 +365,7 @@ eb_vma_misplaced(const struct drm_i915_gem_exec_object2 > *entry, > return true; > > if (!(flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS) && > - (vma->node.start + vma->node.size - 1) >> 32) > + (vma->node.start + vma->node.size + 4095) >> 32) > return true; > > if (flags & __EXEC_OBJECT_NEEDS_MAP && > diff --git sys/dev/pci/drm/i915/gt/intel_lrc.c > sys/dev/pci/drm/i915/gt/intel_lrc.c > index ac8eade748b..9bdb964d14f 100644 > --- sys/dev/pci/drm/i915/gt/intel_lrc.c > +++ sys/dev/pci/drm/i915/gt/intel_lrc.c > @@ -3462,6 +3462,9 @@ err: > static void lrc_destroy_wa_ctx(struct intel_engine_cs *engine) > { > i915_vma_unpin_and_release(&engine->wa_ctx.vma, 0); > + > + /* Called on error unwind, clear all flags to prevent further use */ > + memset(&engine->wa_ctx, 0, sizeof(engine->wa_ctx)); > } > > typedef u32 *(*wa_bb_func_t)(struct intel_engine_cs *engine, u32 *batch); > diff --git sys/dev/pci/drm/i915/i915_gpu_error.c > sys/dev/pci/drm/i915/i915_gpu_error.c > index 9d02829f8df..72e25f3d014 100644 > --- sys/dev/pci/drm/i915/i915_gpu_error.c > +++ sys/dev/pci/drm/i915/i915_gpu_error.c > @@ -1346,7 +1346,7 @@ capture_vma(struct intel_engine_capture_vma *next, > } > > strlcpy(c->name, name, sizeof(c->name)); > - c->vma = i915_vma_get(vma); > + c->vma = vma; /* reference held while active */ > > c->next = next; > return c; > @@ -1456,7 +1456,6 @@ intel_engine_coredump_add_vma(struct > intel_engine_coredump *ee, > compress)); > > i915_active_release(&vma->active); > - i915_vma_put(vma); > > capture = this->next; > kfree(this); > diff --git sys/dev/pci/drm/i915/i915_vma.c sys/dev/pci/drm/i915/i915_vma.c > index 2bf2292ae31..8aca774266c 100644 > --- sys/dev/pci/drm/i915/i915_vma.c > +++ sys/dev/pci/drm/i915/i915_vma.c > @@ -331,8 +331,10 @@ static void __vma_release(struct dma_fence_work *work) > { > struct i915_vma_work *vw = container_of(work, typeof(*vw), base); > > - if (vw->pinned) > + if (vw->pinned) { > __i915_gem_object_unpin_pages(vw->pinned); > + i915_gem_object_put(vw->pinned); > + } > } > > static const struct dma_fence_work_ops bind_ops = { > @@ -448,7 +450,7 @@ int i915_vma_bind(struct i915_vma *vma, > > if (vma->obj) { > __i915_gem_object_pin_pages(vma->obj); > - work->pinned = vma->obj; > + work->pinned = i915_gem_object_get(vma->obj); > } > } else { > ret = vma->ops->bind_vma(vma, cache_level, bind_flags);