1/**************************************************************************
2 *
3 * Copyright (c) 2007-2009 VMware, Inc., Palo Alto, CA., USA
4 * All Rights Reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
--- 15 unchanged lines hidden (view full) ---
24 * USE OR OTHER DEALINGS IN THE SOFTWARE.
25 *
26 **************************************************************************/
27/*
28 * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
29 */
30
31#include <sys/cdefs.h>
32__FBSDID("$FreeBSD: head/sys/dev/drm2/ttm/ttm_bo_util.c 254866 2013-08-25 14:55:08Z dumbbell $");
33
34#include <dev/drm2/drmP.h>
35#include <dev/drm2/ttm/ttm_bo_driver.h>
36#include <dev/drm2/ttm/ttm_placement.h>
37#include <sys/sf_buf.h>
38
39void ttm_bo_free_old_node(struct ttm_buffer_object *bo)
40{
--- 275 unchanged lines hidden (view full) ---
316
317 if (old_iomap == NULL && new_iomap == NULL)
318 goto out2;
319 if (old_iomap == NULL && ttm == NULL)
320 goto out2;
321
322 if (ttm->state == tt_unpopulated) {
323 ret = ttm->bdev->driver->ttm_tt_populate(ttm);
324 if (ret) {
325 /* if we fail here don't nuke the mm node
326 * as the bo still owns it */
327 old_copy.mm_node = NULL;
328 goto out1;
329 }
330 }
331
332 add = 0;
333 dir = 1;
334
335 if ((old_mem->mem_type == new_mem->mem_type) &&
336 (new_mem->start < old_mem->start + old_mem->size)) {
337 dir = -1;
--- 7 unchanged lines hidden (view full) ---
345 ret = ttm_copy_ttm_io_page(ttm, new_iomap, page,
346 prot);
347 } else if (new_iomap == NULL) {
348 vm_memattr_t prot = ttm_io_prot(new_mem->placement);
349 ret = ttm_copy_io_ttm_page(ttm, old_iomap, page,
350 prot);
351 } else
352 ret = ttm_copy_io_page(new_iomap, old_iomap, page);
353 if (ret) {
354 /* failing here, means keep old copy as-is */
355 old_copy.mm_node = NULL;
356 goto out1;
357 }
358 }
359 mb();
360out2:
361 old_copy = *old_mem;
362 *old_mem = *new_mem;
363 new_mem->mm_node = NULL;
364
365 if ((man->flags & TTM_MEMTYPE_FLAG_FIXED) && (ttm != NULL)) {
--- 300 unchanged lines hidden ---
2 *
3 * Copyright (c) 2007-2009 VMware, Inc., Palo Alto, CA., USA
4 * All Rights Reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
--- 15 unchanged lines hidden (view full) ---
24 * USE OR OTHER DEALINGS IN THE SOFTWARE.
25 *
26 **************************************************************************/
27/*
28 * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
29 */
30
31#include <sys/cdefs.h>
32__FBSDID("$FreeBSD: head/sys/dev/drm2/ttm/ttm_bo_util.c 254866 2013-08-25 14:55:08Z dumbbell $");
33
34#include <dev/drm2/drmP.h>
35#include <dev/drm2/ttm/ttm_bo_driver.h>
36#include <dev/drm2/ttm/ttm_placement.h>
37#include <sys/sf_buf.h>
38
39void ttm_bo_free_old_node(struct ttm_buffer_object *bo)
40{
--- 275 unchanged lines hidden (view full) ---
316
317 if (old_iomap == NULL && new_iomap == NULL)
318 goto out2;
319 if (old_iomap == NULL && ttm == NULL)
320 goto out2;
321
322 if (ttm->state == tt_unpopulated) {
323 ret = ttm->bdev->driver->ttm_tt_populate(ttm);
324 if (ret) {
325 /* if we fail here don't nuke the mm node
326 * as the bo still owns it */
327 old_copy.mm_node = NULL;
328 goto out1;
329 }
330 }
331
332 add = 0;
333 dir = 1;
334
335 if ((old_mem->mem_type == new_mem->mem_type) &&
336 (new_mem->start < old_mem->start + old_mem->size)) {
337 dir = -1;
--- 7 unchanged lines hidden (view full) ---
345 ret = ttm_copy_ttm_io_page(ttm, new_iomap, page,
346 prot);
347 } else if (new_iomap == NULL) {
348 vm_memattr_t prot = ttm_io_prot(new_mem->placement);
349 ret = ttm_copy_io_ttm_page(ttm, old_iomap, page,
350 prot);
351 } else
352 ret = ttm_copy_io_page(new_iomap, old_iomap, page);
353 if (ret) {
354 /* failing here, means keep old copy as-is */
355 old_copy.mm_node = NULL;
356 goto out1;
357 }
358 }
359 mb();
360out2:
361 old_copy = *old_mem;
362 *old_mem = *new_mem;
363 new_mem->mm_node = NULL;
364
365 if ((man->flags & TTM_MEMTYPE_FLAG_FIXED) && (ttm != NULL)) {
--- 300 unchanged lines hidden ---