Print this page
NEX-5177 backport illumos 6345 remove xhat support
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
6345 remove xhat support
Reviewed by: Dan McDonald <danmcd@omniti.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Approved by: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
NEX-5164 backport illumos 6514 AS_* lock macros simplification
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
6514 AS_* lock macros simplification
Reviewed by: Piotr Jasiukajtis <estibi@me.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Albert Lee <trisk@omniti.com>
Approved by: Dan McDonald <danmcd@omniti.com>
re #13613 rb4516 Tunables needs volatile keyword


   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.

  23  * Copyright (c) 2015, Joyent, Inc. All rights reserved.
  24  * Copyright (c) 2016 by Delphix. All rights reserved.
  25  */
  26 
  27 #include <sys/param.h>
  28 #include <sys/user.h>
  29 #include <sys/mman.h>
  30 #include <sys/kmem.h>
  31 #include <sys/sysmacros.h>
  32 #include <sys/cmn_err.h>
  33 #include <sys/systm.h>
  34 #include <sys/tuneable.h>
  35 #include <vm/hat.h>
  36 #include <vm/seg.h>
  37 #include <vm/as.h>
  38 #include <vm/anon.h>
  39 #include <vm/page.h>
  40 #include <sys/buf.h>
  41 #include <sys/swap.h>
  42 #include <sys/atomic.h>


  53 #include <sys/zone.h>
  54 
  55 #define SEGSPTADDR      (caddr_t)0x0
  56 
  57 /*
  58  * # pages used for spt
  59  */
  60 size_t  spt_used;
  61 
  62 /*
  63  * segspt_minfree is the memory left for system after ISM
  64  * locked its pages; it is set up to 5% of availrmem in
  65  * sptcreate when ISM is created.  ISM should not use more
  66  * than ~90% of availrmem; if it does, then the performance
  67  * of the system may decrease. Machines with large memories may
  68  * be able to use up more memory for ISM so we set the default
  69  * segspt_minfree to 5% (which gives ISM max 95% of availrmem.
  70  * If somebody wants even more memory for ISM (risking hanging
  71  * the system) they can patch the segspt_minfree to smaller number.
  72  */
  73 pgcnt_t segspt_minfree = 0;
  74 
  75 static int segspt_create(struct seg *seg, caddr_t argsp);
  76 static int segspt_unmap(struct seg *seg, caddr_t raddr, size_t ssize);
  77 static void segspt_free(struct seg *seg);
  78 static void segspt_free_pages(struct seg *seg, caddr_t addr, size_t len);
  79 static lgrp_mem_policy_info_t *segspt_getpolicy(struct seg *seg, caddr_t addr);
  80 
  81 static void
  82 segspt_badop()
  83 {
  84         panic("segspt_badop called");
  85         /*NOTREACHED*/
  86 }
  87 
  88 #define SEGSPT_BADOP(t) (t(*)())segspt_badop
  89 
  90 struct seg_ops segspt_ops = {
  91         SEGSPT_BADOP(int),              /* dup */
  92         segspt_unmap,
  93         segspt_free,




   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
  24  * Copyright (c) 2015, Joyent, Inc. All rights reserved.
  25  * Copyright (c) 2016 by Delphix. All rights reserved.
  26  */
  27 
  28 #include <sys/param.h>
  29 #include <sys/user.h>
  30 #include <sys/mman.h>
  31 #include <sys/kmem.h>
  32 #include <sys/sysmacros.h>
  33 #include <sys/cmn_err.h>
  34 #include <sys/systm.h>
  35 #include <sys/tuneable.h>
  36 #include <vm/hat.h>
  37 #include <vm/seg.h>
  38 #include <vm/as.h>
  39 #include <vm/anon.h>
  40 #include <vm/page.h>
  41 #include <sys/buf.h>
  42 #include <sys/swap.h>
  43 #include <sys/atomic.h>


  54 #include <sys/zone.h>
  55 
  56 #define SEGSPTADDR      (caddr_t)0x0
  57 
  58 /*
  59  * # pages used for spt
  60  */
  61 size_t  spt_used;
  62 
  63 /*
  64  * segspt_minfree is the memory left for system after ISM
  65  * locked its pages; it is set up to 5% of availrmem in
  66  * sptcreate when ISM is created.  ISM should not use more
  67  * than ~90% of availrmem; if it does, then the performance
  68  * of the system may decrease. Machines with large memories may
  69  * be able to use up more memory for ISM so we set the default
  70  * segspt_minfree to 5% (which gives ISM max 95% of availrmem.
  71  * If somebody wants even more memory for ISM (risking hanging
  72  * the system) they can patch the segspt_minfree to smaller number.
  73  */
  74 volatile pgcnt_t segspt_minfree = 0;
  75 
  76 static int segspt_create(struct seg *seg, caddr_t argsp);
  77 static int segspt_unmap(struct seg *seg, caddr_t raddr, size_t ssize);
  78 static void segspt_free(struct seg *seg);
  79 static void segspt_free_pages(struct seg *seg, caddr_t addr, size_t len);
  80 static lgrp_mem_policy_info_t *segspt_getpolicy(struct seg *seg, caddr_t addr);
  81 
  82 static void
  83 segspt_badop()
  84 {
  85         panic("segspt_badop called");
  86         /*NOTREACHED*/
  87 }
  88 
  89 #define SEGSPT_BADOP(t) (t(*)())segspt_badop
  90 
  91 struct seg_ops segspt_ops = {
  92         SEGSPT_BADOP(int),              /* dup */
  93         segspt_unmap,
  94         segspt_free,