Hi, Javier and Thomas, On Wed, Jan 24, 2024 at 5:21 AM Jaak Ristioja <jaak@xxxxxxxxxxx> wrote: > > Hi, > > I apologize for not finding the time to test this earlier. > > On 11.12.23 05:08, Huacai Chen wrote: > > And Jaak, could you please test with the below patch (but keep the > > original order in Makefile) and then give me the dmesg output? > > > > diff --git a/drivers/video/aperture.c b/drivers/video/aperture.c > > index 561be8feca96..cc2e39fb98f5 100644 > > --- a/drivers/video/aperture.c > > +++ b/drivers/video/aperture.c > > @@ -350,21 +350,29 @@ int > > aperture_remove_conflicting_pci_devices(struct pci_dev *pdev, const > > char *na > > resource_size_t base, size; > > int bar, ret = 0; > > > > - if (pdev == vga_default_device()) > > + printk("DEBUG: remove 1\n"); > > + > > + if (pdev == vga_default_device()) { > > + printk("DEBUG: primary = true\n"); > > primary = true; > > + } > > > > - if (primary) > > + if (primary) { > > + printk("DEBUG: disable sysfb\n"); > > sysfb_disable(); > > + } > > > > for (bar = 0; bar < PCI_STD_NUM_BARS; ++bar) { > > if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM)) > > continue; > > > > + printk("DEBUG: remove 2\n"); > > base = pci_resource_start(pdev, bar); > > size = pci_resource_len(pdev, bar); > > aperture_detach_devices(base, size); > > } > > > > + printk("DEBUG: remove 3\n"); > > /* > > * If this is the primary adapter, there could be a VGA device > > * that consumes the VGA framebuffer I/O range. Remove this > > > > [1] https://lore.kernel.org/lkml/170222766284.86103.11020060769330721008@xxxxxxxxxxxxx/T/#u > > Copy-pasting this from the e-mail body didn't work well, but I applied > the changes manually to a 6.5.9 kernel without any of the other patches. > Here's the relevant dmesg output on the Lenovo L570: > > ... > [ 2.953405] ACPI: bus type drm_connector registered > [ 2.954014] i915 0000:00:02.0: [drm] VT-d active for gfx access > [ 2.954018] DEBUG: remove 1 > [ 2.954020] DEBUG: remove 2 > [ 2.954021] DEBUG: remove 2 > [ 2.954023] DEBUG: remove 3 My tmp patch is as follows: diff --git a/drivers/video/aperture.c b/drivers/video/aperture.c index 561be8feca96..cc2e39fb98f5 100644 --- a/drivers/video/aperture.c +++ b/drivers/video/aperture.c @@ -350,21 +350,29 @@ int aperture_remove_conflicting_pci_devices(struct pci_dev *pdev, const char *na resource_size_t base, size; int bar, ret = 0; - if (pdev == vga_default_device()) + printk("DEBUG: remove 1\n"); + + if (pdev == vga_default_device()) { + printk("DEBUG: primary = true\n"); primary = true; + } - if (primary) + if (primary) { + printk("DEBUG: disable sysfb\n"); sysfb_disable(); + } for (bar = 0; bar < PCI_STD_NUM_BARS; ++bar) { if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM)) continue; + printk("DEBUG: remove 2\n"); base = pci_resource_start(pdev, bar); size = pci_resource_len(pdev, bar); aperture_detach_devices(base, size); } + printk("DEBUG: remove 3\n"); /* * If this is the primary adapter, there could be a VGA device * that consumes the VGA framebuffer I/O range. Remove this >From the Jaak's dmesg, it is obvious that "pdev == vga_default_device()" is false, which causes sysfb_disable() to be not called. And I think the simple-drm device is not provided by the i915 device in this case. So, can we unconditionally call sysfb_disable() here, which is the same as aperture_remove_conflicting_devices()? Huacai > [ 2.954029] resource: resource sanity check: requesting [mem > 0x00000000e0000000-0x00000000efffffff], which spans more than BOOTFB > [mem 0xe0000000-0xe012bfff] > [ 2.954035] caller i915_ggtt_init_hw+0x88/0x120 mapping multiple BARs > [ 2.954061] i915 0000:00:02.0: [drm] Using Transparent Hugepages > [ 2.955103] Loading firmware: i915/kbl_dmc_ver1_04.bin > [ 2.955384] i915 0000:00:02.0: [drm] Finished loading DMC firmware > i915/kbl_dmc_ver1_04.bin (v1.4) > ... > [ 4.145013] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on > minor 0 > [ 4.147101] ACPI: video: Video Device [GFX0] (multi-head: yes rom: > no post: no) > [ 4.147244] input: Video Bus as > /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input4 > [ 4.147410] [drm] Initialized vgem 1.0.0 20120112 for vgem on minor 1 > [ 4.147420] usbcore: registered new interface driver udl > [ 4.147500] [drm] Initialized simpledrm 1.0.0 20200625 for > simple-framebuffer.0 on minor 2 > [ 4.148643] Console: switching to colour frame buffer device 80x30 > [ 4.153216] simple-framebuffer simple-framebuffer.0: [drm] fb0: > simpledrmdrmfb frame buffer device > [ 4.154043] loop: module loaded > [ 4.156017] ahci 0000:00:17.0: version 3.0 > [ 4.157373] i915 0000:00:02.0: [drm] fb1: i915drmfb frame buffer device > ... > > J >