On Tue, Sep 03, 2024 at 01:01:58AM +0300, xezo360hye wrote:
> > Synopsis:      Boot fails with Intel GMA 945 (driver i915 crashes)
> > Category:      system
> > Environment:
>         System      : OpenBSD 7.5
>         Details     : OpenBSD 7.5 (GENERIC) #79: Wed Mar 20 15:33:49 MDT
> 2024
>                          dera...@amd64.openbsd.org:/usr/src/sys/arch/
> amd64/compile/GENERIC
> 
>         Architecture: OpenBSD.amd64
>         Machine     : amd64
> 
> > Description:
> I have an old laptop (Fujitsu-Siemens Amilo Li 1820) with Core 2 T5200
> processor and 945 GMA graphics chip in it. I have tried using FreeBSD and
> OpenBSD there. On FreeBSD, the system crashes when I do `kldload i945kms'.
> OpenBSD tries to load the driver itself and crashes on boot, entering ddb.
> 
> The kernel panic reason (`show panic') is "*cpu0: can't map aperture". Below
> I've copied the trace from the screen.
> 
>     panic: can't map aperture
>     Stopped at      db_enter+0x14:  popq    %rbp
>         TID    PID    UID     PRFLAGS     PFLAGS  CPU  COMMAND
>     *     0      0      0     0x10000      0x200    0  swapper
>     db_enter() at db_enter+0x14
>     panic(ffffffff8217cca3) at panic+0xb5
>     i915_ggtt_init_hw(ffff800000078000) at i915_ggtt_init_hw+0x18d
>     i915_driver_probe(ffff800000078000,0) at i915_driver_probe+0x407
>     inteldrm_attachhook(ffff800000078000) at inteldrm_attachhook+0x47
>     config_process_deferred_mountroot() at \
> config_process_deferred_mountroot+0x68
>     main(e) at main+0x6cb
>     end trace frame: 0x0, count: 8
> 
> I'm using the latest OpenBSD release, updated just yesterday. This is a
> full-disk installation made from and used on another machine (which works
> just fine), I've pulled the hard drive and put it into this laptop to see if
> OpenBSD would work better out of the box than FreeBSD. Apparently no.
> 
> I should also probably mention that on FreeBSD, the tty works fine until I
> load the i915kms module, OR try to `startx' with `xf86-video-intel'
> installed. Without it X defaults to the `vesa' driver and starts but does
> not give any sane picture (see attachment). In case these are related and
> info from FreeBSD is useful, I've already put the old drive back and will be
> able to provide further information as needed. I can also provide additional
> info about the OpenBSD system I'm running (although it's pretty much a fresh
> installation, except a few packages were added) but only when booted from
> another laptop.
> 
> > How-To-Repeat:
> step 1. boot openbsd on system with 945GMA chip
> step 2. watch openbsd die
> 
> 
> I'd be glad if I could somehow help to solve this issue, but please note
> that I'm very new to OpenBSD so don't expect me to rewrite a driver on my
> own.

look for a bios option to change the amount of stolen/video memory

This diff (against -current) turns the panic into a printf.
It should allow the console to go back to vga when this occurs.

to temporarily disable inteldrm, at the boot prompt

        boot -c
        disable inteldrm*
        quit

Index: sys/dev/pci/drm/i915/gt/intel_ggtt.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/i915/gt/intel_ggtt.c,v
diff -u -p -r1.12 intel_ggtt.c
--- sys/dev/pci/drm/i915/gt/intel_ggtt.c        13 Aug 2024 00:08:07 -0000      
1.12
+++ sys/dev/pci/drm/i915/gt/intel_ggtt.c        2 Sep 2024 22:46:09 -0000
@@ -101,8 +101,12 @@ static int ggtt_init_hw(struct i915_ggtt
                            PG_PMAP_WC);
                if (bus_space_map(i915->bst, ggtt->gmadr.start,
                    ggtt->mappable_end,
-                   BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_PREFETCHABLE, &bsh))
-                       panic("can't map aperture");
+                   BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_PREFETCHABLE, &bsh)) {
+                       printf("%s: can't map aperture\n",
+                           i915->sc_dev.dv_xname);
+                       ggtt->vm.cleanup(&ggtt->vm);
+                       return -EIO;
+               }
                ggtt->iomap.base = ggtt->gmadr.start;
                ggtt->iomap.size = ggtt->mappable_end;
                ggtt->iomap.iomem = bus_space_vaddr(i915->bst, bsh);

Reply via email to