Print this page
6345 remove xhat support

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/vm/seg_vn.c
          +++ new/usr/src/uts/common/vm/seg_vn.c
↓ open down ↓ 3848 lines elided ↑ open up ↑
3849 3849          int ierr;
3850 3850          int vop_size_err = 0;
3851 3851          uint_t protchk, prot, vpprot;
3852 3852          ulong_t i;
3853 3853          int hat_flag = (type == F_SOFTLOCK) ? HAT_LOAD_LOCK : HAT_LOAD;
3854 3854          anon_sync_obj_t an_cookie;
3855 3855          enum seg_rw arw;
3856 3856          int alloc_failed = 0;
3857 3857          int adjszc_chk;
3858 3858          struct vattr va;
3859      -        int xhat = 0;
3860 3859          page_t *pplist;
3861 3860          pfn_t pfn;
3862 3861          int physcontig;
3863 3862          int upgrdfail;
3864 3863          int segvn_anypgsz_vnode = 0; /* for now map vnode with 2 page sizes */
3865 3864          int tron = (svd->tr_state == SEGVN_TR_ON);
3866 3865  
3867 3866          ASSERT(szc != 0);
3868 3867          ASSERT(vp != NULL);
3869 3868          ASSERT(brkcow == 0 || amp != NULL);
↓ open down ↓ 29 lines elided ↑ open up ↑
3899 3898                  case S_OTHER:
3900 3899                  default:
3901 3900                          protchk = PROT_READ | PROT_WRITE | PROT_EXEC;
3902 3901                          break;
3903 3902                  }
3904 3903          } else {
3905 3904                  prot = svd->prot;
3906 3905                  /* caller has already done segment level protection check. */
3907 3906          }
3908 3907  
3909      -        if (seg->s_as->a_hat != hat) {
3910      -                xhat = 1;
3911      -        }
3912      -
3913 3908          if (rw == S_WRITE && segtype == MAP_PRIVATE) {
3914 3909                  SEGVN_VMSTAT_FLTVNPAGES(2);
3915 3910                  arw = S_READ;
3916 3911          } else {
3917 3912                  arw = rw;
3918 3913          }
3919 3914  
3920 3915          ppa = kmem_alloc(ppasize, KM_SLEEP);
3921 3916  
3922 3917          VM_STAT_COND_ADD(amp != NULL, segvnvmstats.fltvnpages[3]);
↓ open down ↓ 335 lines elided ↑ open up ↑
4258 4253                                   */
4259 4254                                  if (pplist != NULL) {
4260 4255                                          page_free_replacement_page(pplist);
4261 4256                                          page_create_putback(pages);
4262 4257                                  }
4263 4258                                  if (PP_ISMIGRATE(ppa[0])) {
4264 4259                                          page_migrate(seg, a, ppa, pages);
4265 4260                                  }
4266 4261                                  SEGVN_UPDATE_MODBITS(ppa, pages, rw,
4267 4262                                      prot, vpprot);
4268      -                                if (!xhat) {
4269      -                                        hat_memload_array_region(hat, a, pgsz,
4270      -                                            ppa, prot & vpprot, hat_flag,
4271      -                                            svd->rcookie);
4272      -                                } else {
4273      -                                        /*
4274      -                                         * avoid large xhat mappings to FS
4275      -                                         * pages so that hat_page_demote()
4276      -                                         * doesn't need to check for xhat
4277      -                                         * large mappings.
4278      -                                         * Don't use regions with xhats.
4279      -                                         */
4280      -                                        for (i = 0; i < pages; i++) {
4281      -                                                hat_memload(hat,
4282      -                                                    a + (i << PAGESHIFT),
4283      -                                                    ppa[i], prot & vpprot,
4284      -                                                    hat_flag);
4285      -                                        }
4286      -                                }
     4263 +                                hat_memload_array_region(hat, a, pgsz,
     4264 +                                    ppa, prot & vpprot, hat_flag,
     4265 +                                    svd->rcookie);
4287 4266  
4288 4267                                  if (!(hat_flag & HAT_LOAD_LOCK)) {
4289 4268                                          for (i = 0; i < pages; i++) {
4290 4269                                                  page_unlock(ppa[i]);
4291 4270                                          }
4292 4271                                  }
4293 4272                                  if (amp != NULL) {
4294 4273                                          anon_array_exit(&an_cookie);
4295 4274                                          ANON_LOCK_EXIT(&amp->a_rwlock);
4296 4275                                  }
↓ open down ↓ 33 lines elided ↑ open up ↑
4330 4309                                          pszc = pszc1;
4331 4310                                          ierr = -2;
4332 4311                                          break;
4333 4312                                  }
4334 4313                          }
4335 4314  
4336 4315                          /*
4337 4316                           * check if we should use smallest mapping size.
4338 4317                           */
4339 4318                          upgrdfail = 0;
4340      -                        if (szc == 0 || xhat ||
     4319 +                        if (szc == 0 ||
4341 4320                              (pszc >= szc &&
4342 4321                              !IS_P2ALIGNED(pfn, pages)) ||
4343 4322                              (pszc < szc &&
4344 4323                              !segvn_full_szcpages(ppa, szc, &upgrdfail,
4345 4324                              &pszc))) {
4346 4325  
4347 4326                                  if (upgrdfail && type != F_SOFTLOCK) {
4348 4327                                          /*
4349 4328                                           * segvn_full_szcpages failed to lock
4350 4329                                           * all pages EXCL. Size down.
↓ open down ↓ 11 lines elided ↑ open up ↑
4362 4341                                          for (i = 0; i < pages; i++) {
4363 4342                                                  page_unlock(ppa[i]);
4364 4343                                          }
4365 4344                                          if (amp != NULL) {
4366 4345                                                  anon_array_exit(&an_cookie);
4367 4346                                                  ANON_LOCK_EXIT(&amp->a_rwlock);
4368 4347                                          }
4369 4348                                          ierr = -1;
4370 4349                                          break;
4371 4350                                  }
4372      -                                if (szc != 0 && !xhat && !upgrdfail) {
     4351 +                                if (szc != 0 && !upgrdfail) {
4373 4352                                          segvn_faultvnmpss_align_err5++;
4374 4353                                  }
4375 4354                                  SEGVN_VMSTAT_FLTVNPAGES(34);
4376 4355                                  if (pplist != NULL) {
4377 4356                                          page_free_replacement_page(pplist);
4378 4357                                          page_create_putback(pages);
4379 4358                                  }
4380 4359                                  SEGVN_UPDATE_MODBITS(ppa, pages, rw,
4381 4360                                      prot, vpprot);
4382 4361                                  if (upgrdfail && segvn_anypgsz_vnode) {
↓ open down ↓ 5932 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX