Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Nov 2018 02:00:57 +0100
From:      Oliver Pinter <oliver.pinter@hardenedbsd.org>
To:        Ben Widawsky <bwidawsk@freebsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r340709 - in head/sys: compat/linuxkpi/common/include/linux vm
Message-ID:  <CAPQ4ffvPrW%2BuoYt8xm1qz1R9pFSfBpLQnpzC5f2VcB40GB9Vkg@mail.gmail.com>
In-Reply-To: <201811202249.wAKMnJxH082469@repo.freebsd.org>
References:  <201811202249.wAKMnJxH082469@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday, November 20, 2018, Ben Widawsky <bwidawsk@freebsd.org> wrote:

> Author: bwidawsk
> Date: Tue Nov 20 22:49:19 2018
> New Revision: 340709
> URL: https://svnweb.freebsd.org/changeset/base/340709
>
> Log:
>   linuxkpi: Add some basic swap functions
>
>   These are used by kms-drm to determine various heuristics relate
>   memory conditions.
>
>   The number of free swap pages is just a variable, and it can be
>   much cheaper by either adding a new getter, or simply extern'ing
>   swap_total. However, this patch opts to use the more expensive,
>   existing interface - since this isn't an operation in a high per
>   path.
>
>   This allows us to remove some more gpl linuxkpi and do the follo
>   kms-drm:
>   git rm linuxkpi/gplv2/include/linux/swap.h
>
>   Reviewed by:    mmacy, Johannes Lundberg <johalun0@gmail.com>
>   Approved by:    emaste (mentor)
>   Differential Revision:  https://reviews.freebsd.org/D18052
>
> Added:
>   head/sys/compat/linuxkpi/common/include/linux/swap.h   (contents, props
> changed)
> Modified:
>   head/sys/vm/vm_pageout.h
>   head/sys/vm/vm_swapout.c
>
> Added: head/sys/compat/linuxkpi/common/include/linux/swap.h
> ============================================================
> ==================
> --- /dev/null   00:00:00 1970   (empty, because file is newly added)
> +++ head/sys/compat/linuxkpi/common/include/linux/swap.h        Tue Nov
> 20 22:49:19 2018        (r340709)
> @@ -0,0 +1,102 @@
> +/*-
> + * Copyright (c) 2018 Intel Corporation
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions are
> + * met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in
> + *    the documentation and/or other materials provided with the
> + *    distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
> PURPOSE
> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> CONSEQUENTIAL
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
> STRICT
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
> WAY
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + *
> + * $FreeBSD$
> + */
> +
> +#ifndef        _LINUX_SWAP_H_
> +#define        _LINUX_SWAP_H_
> +
> +#include <vm/swap_pager.h>
> +#include <vm/vm_pageout.h>
> +
> +static inline long
> +get_nr_swap_pages(void)
> +{
> +       int i, j;
> +
> +       /* NB: This could be done cheaply by obtaining swap_total directly
> */
> +       swap_pager_status(&i, &j);
> +       return i - j;
> +}
> +
> +static inline int
> +current_is_kswapd(void)
> +{
> +       return vm_curproc_is_vmproc();
> +}
> +
> +#endif


Probably I'm wrong, but this file contains twice the same intended content.


> +/*-
> + * Copyright (c) 2018 Intel Corporation
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions are
> + * met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in
> + *    the documentation and/or other materials provided with the
> + *    distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
> PURPOSE
> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> CONSEQUENTIAL
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
> STRICT
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
> WAY
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + *
> + * $FreeBSD$
> + */
> +
> +#ifndef        _LINUX_SWAP_H_
> +#define        _LINUX_SWAP_H_
> +
> +#include <vm/swap_pager.h>
> +#include <vm/vm_pageout.h>
> +
> +static inline long
> +get_nr_swap_pages(void)
> +{
> +       int i, j;
> +
> +       /* NB: This could be done cheaply by obtaining swap_total directly
> */
> +       swap_pager_status(&i, &j);
> +       return i - j;
> +}
> +
> +static inline int
> +current_is_kswapd(void)
> +{
> +       return vm_curproc_is_vmproc();
> +}
> +
> +#endif
>
> Modified: head/sys/vm/vm_pageout.h
> ============================================================
> ==================
> --- head/sys/vm/vm_pageout.h    Tue Nov 20 22:24:18 2018        (r340708)
> +++ head/sys/vm/vm_pageout.h    Tue Nov 20 22:49:19 2018        (r340709)
> @@ -106,5 +106,8 @@ void vm_pageout_oom(int shortage);
>
>  void vm_swapout_run(void);
>  void vm_swapout_run_idle(void);
> +
> +bool vm_curproc_is_vmproc(void);
> +
>  #endif /* _KERNEL */
>  #endif /* _VM_VM_PAGEOUT_H_ */
>
> Modified: head/sys/vm/vm_swapout.c
> ============================================================
> ==================
> --- head/sys/vm/vm_swapout.c    Tue Nov 20 22:24:18 2018        (r340708)
> +++ head/sys/vm/vm_swapout.c    Tue Nov 20 22:49:19 2018        (r340709)
> @@ -961,3 +961,10 @@ swapout(struct proc *p)
>         p->p_swtick = ticks;
>         return (0);
>  }
> +
> +/* Used to determine if the current process is itself the reaper. */
> +bool
> +vm_curproc_is_vmproc(void)
> +{
> +       return curproc == vmproc;
> +}
> _______________________________________________
> svn-src-head@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPQ4ffvPrW%2BuoYt8xm1qz1R9pFSfBpLQnpzC5f2VcB40GB9Vkg>