Re: git: a3a88ed22cb1 - main - vm_page: drop prev and next

From: Jung-uk Kim <jkim_at_FreeBSD.org>
Date: Sat, 19 Apr 2025 03:28:59 UTC
On 25. 4. 18., Nuno Teixeira wrote:
> Hello,
> 
> graphics/drm-61-kmod is failing to build and maybe related to some of 
> this commits.
> Could you take a look and check if it related?
> 
> Thanks
> 
> ```
> cc  -O2 -pipe -fno-strict-aliasing -DLINUXKPI_VERSION=60100 '- 
> DKBUILD_MODNAME="i915kms"' '-DLINUXKPI_PARAM_PREFIX=i915_' - 
> DDRM_SYSCTL_PARAM_PREFIX=_i915kms -DCONFIG_DRM_AMDGPU_CIK - 
> DCONFIG_DRM_AMDGPU_SI -DCONFIG_DRM_AMD_DC -DCONFIG_DRM_AMD_DC_SI - 
> DCONFIG_AMD_PMC -DCONFIG_DRM_I915_FORCE_PROBE='"*"' - 
> DCONFIG_DRM_I915_REQUEST_TIMEOUT=20000 -DCONFIG_DRM_I915_CAPTURE_ERROR - 
> DCONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 - 
> DCONFIG_DRM_I915_STOP_TIMEOUT=100 -DCONFIG_DRM_I915_PREEMPT_TIMEOUT=640 
> -DCONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500 - 
> DCONFIG_DRM_I915_TIMESLICE_DURATION=1 - 
> DCONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000 - 
> DCONFIG_DRM_I915_FENCE_TIMEOUT=10000 -DCONFIG_DRM_MIPI_DSI - 
> DCONFIG_DRM_PANEL_ORIENTATION_QUIRKS -DCONFIG_APERTURE_HELPERS - 
> DCONFIG_DRM_FBDEV_EMULATION -DCONFIG_DRM_FBDEV_OVERALLOC=100 - 
> DCONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG -DCONFIG_BACKLIGHT_CLASS_DEVICE - 
> DCONFIG_DEBUG_FS -DCONFIG_DMI -DCONFIG_FB -DCONFIG_MTRR -DCONFIG_PCI - 
> DCONFIG_PM -DCONFIG_PM_SLEEP -DCONFIG_SMP -DCONFIG_SUSPEND -DCONFIG_ACPI 
> -DCONFIG_ACPI_SLEEP -DCONFIG_X86 -DCONFIG_X86_PAT -DCONFIG_64BIT - 
> DCONFIG_AS_MOVNTDQA -DCONFIG_COMPAT -DCONFIG_X86_64 - 
> DCONFIG_DRM_AMD_DC_DCN -DCONFIG_DRM_AMD_DC_DCN3_0 - 
> DCONFIG_DRM_AMD_DC_DCN3_01 -DCONFIG_DRM_AMD_DC_DCN3_02 - 
> DCONFIG_DRM_AMD_DC_DCN3_1  -Werror
> -D_KERNEL -DKLD_MODULE -nostdinc  -I/wrkdirs/usr/ports/graphics/drm-61- 
> kmod/work/drm-kmod-drm_v6.1.128_1/linuxkpi/gplv2/include -I/wrkdirs/usr/ 
> ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_1/linuxkpi/bsd/ 
> include -I/usr/src/sys/compat/linuxkpi/common/include -I/usr/src/sys/ 
> compat/linuxkpi/dummy/include -I/wrkdirs/usr/ports/graphics/drm-61-kmod/ 
> work/drm-kmod-drm_v6.1.128_1/include -I/wrkdirs/usr/ports/graphics/ 
> drm-61-kmod/work/drm-kmod-drm_v6.1.128_1/include/drm -I/wrkdirs/usr/ 
> ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_1/include/uapi -I/ 
> wrkdirs/usr/ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_1/ 
> drivers/gpu -I/wrkdirs/usr/ports/graphics/drm-61-kmod/work/drm-kmod- 
> drm_v6.1.128_1/drivers/gpu/drm/i915 -I/wrkdirs/usr/ports/graphics/ 
> drm-61-kmod/work/drm-kmod-drm_v6.1.128_1/drivers/gpu/drm/i915/display - 
> include /wrkdirs/usr/ports/graphics/drm-61-kmod/work/drm-kmod- 
> drm_v6.1.128_1/obj/wrkdirs/usr/ports/graphics/drm-61-kmod/work/drm-kmod- 
> drm_v6.1.128_1/i915/opt_global.h -I. -I/usr/src/sys -I/usr/src/sys/ 
> contrib/ck/include -fno-common  -fno-omit-frame-pointer -mno-omit-leaf- 
> frame-pointer -fdebug-prefix-map=./machine=/usr/src/sys/amd64/include - 
> fdebug-prefix-map=./x86=/usr/src/sys/x86/include -fdebug-prefix-map=./ 
> i386=/usr/src/sys/i386/include    -MD  -MF.depend.i915_gem_stolen.o - 
> MTi915_gem_stolen.o -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse - 
> msoft-float  -fno-asynchronous-unwind-tables -ffreestanding -fwrapv - 
> fstack-protector  -Wall -Wstrict-prototypes -Wmissing-prototypes - 
> Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign - 
> D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics- 
> show-option -Wno-unknown-pragmas -Wswitch -Wno-error=tautological- 
> compare -Wno-error=empty-body -Wno-error=parentheses-equality -Wno- 
> error=unused-function -Wno-error=pointer-sign -Wno-error=shift-negative- 
> value -Wno-address-of-packed-member -Wno-format-zero-length -Wno- 
> pointer-arith -Wno-format -Wno-cast-qual   -mno-aes -mno-avx  -std=gnu17 
> -c /wrkdirs/usr/ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_1/ 
> drivers/gpu/drm/i915/gem/i915_gem_stolen.c -o i915_gem_stolen.o
> --- i915_gem_mman.o ---
> /wrkdirs/usr/ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_1/ 
> drivers/gpu/drm/i915/gem/i915_gem_mman.c:171:77: error: call to 
> undeclared function 'vm_page_next'; ISO C99 and later do not support 
> implicit function declarations [-Werror,-Wimplicit-function-declaration]
>    171 |                         for (vm_page_t page = 
> vm_page_find_least(vmobj, 0); page != NULL; page = vm_page_next(page)) {
>        |                                                                 
>                                   ^
> /wrkdirs/usr/ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_1/ 
> drivers/gpu/drm/i915/gem/i915_gem_mman.c:171:75: error: incompatible 
> integer to pointer conversion assigning to 'vm_page_t' (aka 'struct 
> vm_page *') from 'int' [-Wint-conversion]
>    171 |                         for (vm_page_t page = 
> vm_page_find_least(vmobj, 0); page != NULL; page = vm_page_next(page)) {
>        |                                                                 
>                                 ^ ~~~~~~~~~~~~~~~~~~
> 2 errors generated.
> *** [i915_gem_mman.o] Error code 1
> 
> make[1]: stopped making "all" in /wrkdirs/usr/ports/graphics/drm-61- 
> kmod/work/drm-kmod-drm_v6.1.128_1/i915
> make[1]: 1 error
> ```
> 
> Doug Moore <dougm@freebsd.org <mailto:dougm@freebsd.org>> escreveu 
> (sexta, 18/04/2025 à(s) 20:28):
> 
>     The branch main has been updated by dougm:
> 
>     URL: https://cgit.FreeBSD.org/src/commit/?
>     id=a3a88ed22cb111da3336f64ec3ba5815a8278f88 <https://
>     cgit.FreeBSD.org/src/commit/?
>     id=a3a88ed22cb111da3336f64ec3ba5815a8278f88>
> 
>     commit a3a88ed22cb111da3336f64ec3ba5815a8278f88
>     Author:     Doug Moore <dougm@FreeBSD.org>
>     AuthorDate: 2025-04-18 19:26:56 +0000
>     Commit:     Doug Moore <dougm@FreeBSD.org>
>     CommitDate: 2025-04-18 19:26:56 +0000
> 
>          vm_page: drop prev and next
> 
>          Functions vm_page_prev() and vm_page_next() are no longer
>          invoked. Remove them.
> 
>          Reviewed by:    kib
>          Differential Revision: https://reviews.freebsd.org/D49892
>     <https://reviews.freebsd.org/D49892>
>     ---
>       sys/vm/vm_page.c | 40 ----------------------------------------
>       sys/vm/vm_page.h |  2 --
>       2 files changed, 42 deletions(-)
> 
>     diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
>     index 65d278caf3fd..db91b7bab2ab 100644
>     --- a/sys/vm/vm_page.c
>     +++ b/sys/vm/vm_page.c
>     @@ -1894,46 +1894,6 @@ vm_page_find_least(vm_object_t object,
>     vm_pindex_t pindex)
>              return (m);
>       }
> 
>     -/*
>     - * Returns the given page's successor (by pindex) within the object
>     if it is
>     - * resident; if none is found, NULL is returned.
>     - *
>     - * The object must be locked.
>     - */
>     -vm_page_t
>     -vm_page_next(vm_page_t m)
>     -{
>     -       vm_page_t next;
>     -
>     -       VM_OBJECT_ASSERT_LOCKED(m->object);
>     -       if ((next = TAILQ_NEXT(m, listq)) != NULL) {
>     -               MPASS(next->object == m->object);
>     -               if (next->pindex != m->pindex + 1)
>     -                       next = NULL;
>     -       }
>     -       return (next);
>     -}
>     -
>     -/*
>     - * Returns the given page's predecessor (by pindex) within the
>     object if it is
>     - * resident; if none is found, NULL is returned.
>     - *
>     - * The object must be locked.
>     - */
>     -vm_page_t
>     -vm_page_prev(vm_page_t m)
>     -{
>     -       vm_page_t prev;
>     -
>     -       VM_OBJECT_ASSERT_LOCKED(m->object);
>     -       if ((prev = TAILQ_PREV(m, pglist, listq)) != NULL) {
>     -               MPASS(prev->object == m->object);
>     -               if (prev->pindex != m->pindex - 1)
>     -                       prev = NULL;
>     -       }
>     -       return (prev);
>     -}
>     -
>       /*
>        * Uses the page mnew as a replacement for an existing page at index
>        * pindex which must be already present in the object.
>     diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h
>     index 0a40b42ffb62..bf2e850612d7 100644
>     --- a/sys/vm/vm_page.h
>     +++ b/sys/vm/vm_page.h
>     @@ -664,12 +664,10 @@ bool vm_page_iter_rename(struct pctrie_iter
>     *old_pages, vm_page_t m,
>       void vm_page_launder(vm_page_t m);
>       vm_page_t vm_page_lookup(vm_object_t, vm_pindex_t);
>       vm_page_t vm_page_lookup_unlocked(vm_object_t, vm_pindex_t);
>     -vm_page_t vm_page_next(vm_page_t m);
>       void vm_page_pqbatch_drain(void);
>       void vm_page_pqbatch_submit(vm_page_t m, uint8_t queue);
>       bool vm_page_pqstate_commit(vm_page_t m, vm_page_astate_t *old,
>           vm_page_astate_t new);
>     -vm_page_t vm_page_prev(vm_page_t m);
>       bool vm_page_ps_test(vm_page_t m, int psind, int flags, vm_page_t
>     skip_m);
>       void vm_page_putfake(vm_page_t m);
>       void vm_page_readahead_finish(vm_page_t m);
> 
> 
> 
> -- 
> Nuno Teixeira
> FreeBSD UNIX:  <eduardo@FreeBSD.org>   Web: https://FreeBSD.org 
> <https://FreeBSD.org>

FYI, emulators/virtualbox-ose-kmod, emulators/virtualbox-ose-kmod-70, 
and graphics/drm-66-kmod are also affected.

Jung-uk Kim