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);

Reply via email to