ddk: update includes

git-svn-id: svn://kolibrios.org@3262 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2013-02-23 09:41:48 +00:00
parent 67f8bac00f
commit 3dd2cc0db3
10 changed files with 2078 additions and 1886 deletions

View File

@ -13,7 +13,10 @@
#define OS_BASE 0x80000000 #define OS_BASE 0x80000000
#define PG_SW 0x003 #define PG_SW 0x003
#define PG_NOCACHE 0x010 #define PG_UW 0x007
#define PG_NOCACHE 0x018
#define PG_SHARED 0x200
#define MANUAL_DESTROY 0x80000000 #define MANUAL_DESTROY 0x80000000

View File

@ -171,7 +171,7 @@ int drm_err(const char *func, const char *format, ...);
/** \name Begin the DRM... */ /** \name Begin the DRM... */
/*@{*/ /*@{*/
#define DRM_DEBUG_CODE 0 /**< Include debugging code if > 1, then #define DRM_DEBUG_CODE 2 /**< Include debugging code if > 1, then
also include looping detection. */ also include looping detection. */
#define DRM_MAGIC_HASH_ORDER 4 /**< Size of key hash table. Must be power of 2. */ #define DRM_MAGIC_HASH_ORDER 4 /**< Size of key hash table. Must be power of 2. */
@ -959,9 +959,14 @@ struct drm_driver {
#define DRM_IRQ_ARGS int irq, void *arg #define DRM_IRQ_ARGS int irq, void *arg
struct drm_driver { struct drm_driver {
int (*open) (struct drm_device *, struct drm_file *);
irqreturn_t (*irq_handler) (DRM_IRQ_ARGS); irqreturn_t (*irq_handler) (DRM_IRQ_ARGS);
void (*irq_preinstall) (struct drm_device *dev); void (*irq_preinstall) (struct drm_device *dev);
int (*irq_postinstall) (struct drm_device *dev); int (*irq_postinstall) (struct drm_device *dev);
int (*gem_init_object) (struct drm_gem_object *obj);
void (*gem_free_object) (struct drm_gem_object *obj);
int (*gem_open_object) (struct drm_gem_object *, struct drm_file *); int (*gem_open_object) (struct drm_gem_object *, struct drm_file *);
void (*gem_close_object) (struct drm_gem_object *, struct drm_file *); void (*gem_close_object) (struct drm_gem_object *, struct drm_file *);
}; };

View File

@ -244,6 +244,16 @@ struct drm_framebuffer_funcs {
struct drm_framebuffer { struct drm_framebuffer {
struct drm_device *dev; struct drm_device *dev;
/*
* Note that the fb is refcounted for the benefit of driver internals,
* for example some hw, disabling a CRTC/plane is asynchronous, and
* scanout does not actually complete until the next vblank. So some
* cleanup (like releasing the reference(s) on the backing GEM bo(s))
* should be deferred. In cases like this, the driver would like to
* hold a ref to the fb even though it has already been removed from
* userspace perspective.
*/
struct kref refcount;
struct list_head head; struct list_head head;
struct drm_mode_object base; struct drm_mode_object base;
const struct drm_framebuffer_funcs *funcs; const struct drm_framebuffer_funcs *funcs;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,159 +1,158 @@
/************************************************************************** /**************************************************************************
* *
* Copyright (c) 2006-2009 VMware, Inc., Palo Alto, CA., USA * Copyright (c) 2006-2009 VMware, Inc., Palo Alto, CA., USA
* All Rights Reserved. * All Rights Reserved.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the * copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, * without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to * distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice (including the * The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions * next paragraph) shall be included in all copies or substantial portions
* of the Software. * of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
* USE OR OTHER DEALINGS IN THE SOFTWARE. * USE OR OTHER DEALINGS IN THE SOFTWARE.
* *
**************************************************************************/ **************************************************************************/
#ifndef TTM_MEMORY_H #ifndef TTM_MEMORY_H
#define TTM_MEMORY_H #define TTM_MEMORY_H
//#include <linux/workqueue.h> //#include <linux/workqueue.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
//#include <linux/wait.h> #include <linux/bug.h>
#include <linux/errno.h> #include <linux/wait.h>
//#include <linux/kobject.h> #include <linux/errno.h>
//#include <linux/mm.h> //#include <linux/kobject.h>
#include <linux/mm.h>
/**
* struct ttm_mem_shrink - callback to shrink TTM memory usage. /**
* * struct ttm_mem_shrink - callback to shrink TTM memory usage.
* @do_shrink: The callback function. *
* * @do_shrink: The callback function.
* Arguments to the do_shrink functions are intended to be passed using *
* inheritance. That is, the argument class derives from struct ttm_mem_srink, * Arguments to the do_shrink functions are intended to be passed using
* and can be accessed using container_of(). * inheritance. That is, the argument class derives from struct ttm_mem_shrink,
*/ * and can be accessed using container_of().
*/
struct ttm_mem_shrink {
int (*do_shrink) (struct ttm_mem_shrink *); struct ttm_mem_shrink {
}; int (*do_shrink) (struct ttm_mem_shrink *);
};
/**
* struct ttm_mem_global - Global memory accounting structure. /**
* * struct ttm_mem_global - Global memory accounting structure.
* @shrink: A single callback to shrink TTM memory usage. Extend this *
* to a linked list to be able to handle multiple callbacks when needed. * @shrink: A single callback to shrink TTM memory usage. Extend this
* @swap_queue: A workqueue to handle shrinking in low memory situations. We * to a linked list to be able to handle multiple callbacks when needed.
* need a separate workqueue since it will spend a lot of time waiting * @swap_queue: A workqueue to handle shrinking in low memory situations. We
* for the GPU, and this will otherwise block other workqueue tasks(?) * need a separate workqueue since it will spend a lot of time waiting
* At this point we use only a single-threaded workqueue. * for the GPU, and this will otherwise block other workqueue tasks(?)
* @work: The workqueue callback for the shrink queue. * At this point we use only a single-threaded workqueue.
* @queue: Wait queue for processes suspended waiting for memory. * @work: The workqueue callback for the shrink queue.
* @lock: Lock to protect the @shrink - and the memory accounting members, * @lock: Lock to protect the @shrink - and the memory accounting members,
* that is, essentially the whole structure with some exceptions. * that is, essentially the whole structure with some exceptions.
* @zones: Array of pointers to accounting zones. * @zones: Array of pointers to accounting zones.
* @num_zones: Number of populated entries in the @zones array. * @num_zones: Number of populated entries in the @zones array.
* @zone_kernel: Pointer to the kernel zone. * @zone_kernel: Pointer to the kernel zone.
* @zone_highmem: Pointer to the highmem zone if there is one. * @zone_highmem: Pointer to the highmem zone if there is one.
* @zone_dma32: Pointer to the dma32 zone if there is one. * @zone_dma32: Pointer to the dma32 zone if there is one.
* *
* Note that this structure is not per device. It should be global for all * Note that this structure is not per device. It should be global for all
* graphics devices. * graphics devices.
*/ */
#define TTM_MEM_MAX_ZONES 2 #define TTM_MEM_MAX_ZONES 2
struct ttm_mem_zone; struct ttm_mem_zone;
struct ttm_mem_global { struct ttm_mem_global {
// struct kobject kobj; // struct kobject kobj;
struct ttm_mem_shrink *shrink; struct ttm_mem_shrink *shrink;
// struct workqueue_struct *swap_queue; struct workqueue_struct *swap_queue;
// struct work_struct work; struct work_struct work;
// wait_queue_head_t queue; spinlock_t lock;
spinlock_t lock; struct ttm_mem_zone *zones[TTM_MEM_MAX_ZONES];
struct ttm_mem_zone *zones[TTM_MEM_MAX_ZONES]; unsigned int num_zones;
unsigned int num_zones; struct ttm_mem_zone *zone_kernel;
struct ttm_mem_zone *zone_kernel; #ifdef CONFIG_HIGHMEM
#ifdef CONFIG_HIGHMEM struct ttm_mem_zone *zone_highmem;
struct ttm_mem_zone *zone_highmem; #else
#else struct ttm_mem_zone *zone_dma32;
struct ttm_mem_zone *zone_dma32; #endif
#endif };
};
/**
/** * ttm_mem_init_shrink - initialize a struct ttm_mem_shrink object
* ttm_mem_init_shrink - initialize a struct ttm_mem_shrink object *
* * @shrink: The object to initialize.
* @shrink: The object to initialize. * @func: The callback function.
* @func: The callback function. */
*/
static inline void ttm_mem_init_shrink(struct ttm_mem_shrink *shrink,
static inline void ttm_mem_init_shrink(struct ttm_mem_shrink *shrink, int (*func) (struct ttm_mem_shrink *))
int (*func) (struct ttm_mem_shrink *)) {
{ shrink->do_shrink = func;
shrink->do_shrink = func; }
}
/**
/** * ttm_mem_register_shrink - register a struct ttm_mem_shrink object.
* ttm_mem_register_shrink - register a struct ttm_mem_shrink object. *
* * @glob: The struct ttm_mem_global object to register with.
* @glob: The struct ttm_mem_global object to register with. * @shrink: An initialized struct ttm_mem_shrink object to register.
* @shrink: An initialized struct ttm_mem_shrink object to register. *
* * Returns:
* Returns: * -EBUSY: There's already a callback registered. (May change).
* -EBUSY: There's already a callback registered. (May change). */
*/
static inline int ttm_mem_register_shrink(struct ttm_mem_global *glob,
static inline int ttm_mem_register_shrink(struct ttm_mem_global *glob, struct ttm_mem_shrink *shrink)
struct ttm_mem_shrink *shrink) {
{ spin_lock(&glob->lock);
spin_lock(&glob->lock); if (glob->shrink != NULL) {
if (glob->shrink != NULL) { spin_unlock(&glob->lock);
spin_unlock(&glob->lock); return -EBUSY;
return -EBUSY; }
} glob->shrink = shrink;
glob->shrink = shrink; spin_unlock(&glob->lock);
spin_unlock(&glob->lock); return 0;
return 0; }
}
/**
/** * ttm_mem_unregister_shrink - unregister a struct ttm_mem_shrink object.
* ttm_mem_unregister_shrink - unregister a struct ttm_mem_shrink object. *
* * @glob: The struct ttm_mem_global object to unregister from.
* @glob: The struct ttm_mem_global object to unregister from. * @shrink: A previously registert struct ttm_mem_shrink object.
* @shrink: A previously registert struct ttm_mem_shrink object. *
* */
*/
static inline void ttm_mem_unregister_shrink(struct ttm_mem_global *glob,
static inline void ttm_mem_unregister_shrink(struct ttm_mem_global *glob, struct ttm_mem_shrink *shrink)
struct ttm_mem_shrink *shrink) {
{ spin_lock(&glob->lock);
spin_lock(&glob->lock); BUG_ON(glob->shrink != shrink);
BUG_ON(glob->shrink != shrink); glob->shrink = NULL;
glob->shrink = NULL; spin_unlock(&glob->lock);
spin_unlock(&glob->lock); }
}
extern int ttm_mem_global_init(struct ttm_mem_global *glob);
extern int ttm_mem_global_init(struct ttm_mem_global *glob); extern void ttm_mem_global_release(struct ttm_mem_global *glob);
extern void ttm_mem_global_release(struct ttm_mem_global *glob); extern int ttm_mem_global_alloc(struct ttm_mem_global *glob, uint64_t memory,
extern int ttm_mem_global_alloc(struct ttm_mem_global *glob, uint64_t memory, bool no_wait, bool interruptible);
bool no_wait, bool interruptible); extern void ttm_mem_global_free(struct ttm_mem_global *glob,
extern void ttm_mem_global_free(struct ttm_mem_global *glob, uint64_t amount);
uint64_t amount); extern int ttm_mem_global_alloc_page(struct ttm_mem_global *glob,
extern int ttm_mem_global_alloc_page(struct ttm_mem_global *glob, struct page *page,
struct page *page, bool no_wait, bool interruptible);
bool no_wait, bool interruptible); extern void ttm_mem_global_free_page(struct ttm_mem_global *glob,
extern void ttm_mem_global_free_page(struct ttm_mem_global *glob, struct page *page);
struct page *page); extern size_t ttm_round_pot(size_t size);
extern size_t ttm_round_pot(size_t size); #endif
#endif

View File

@ -1,60 +1,40 @@
/************************************************************************** /**************************************************************************
* *
* Copyright 2008-2009 VMware, Inc., Palo Alto, CA., USA * Copyright 2008-2009 VMware, Inc., Palo Alto, CA., USA
* All Rights Reserved. * All Rights Reserved.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the * copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, * without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to * distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice (including the * The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions * next paragraph) shall be included in all copies or substantial portions
* of the Software. * of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
* USE OR OTHER DEALINGS IN THE SOFTWARE. * USE OR OTHER DEALINGS IN THE SOFTWARE.
* *
**************************************************************************/ **************************************************************************/
/* /*
* Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com> * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
*/ */
#ifndef _TTM_MODULE_H_ #ifndef _TTM_MODULE_H_
#define _TTM_MODULE_H_ #define _TTM_MODULE_H_
#include <linux/kernel.h> #include <linux/kernel.h>
struct kobject; struct kobject;
#define TTM_PFX "[TTM] " #define TTM_PFX "[TTM] "
extern struct kobject *ttm_get_kobj(void);
enum ttm_global_types {
TTM_GLOBAL_TTM_MEM = 0, #endif /* _TTM_MODULE_H_ */
TTM_GLOBAL_TTM_BO,
TTM_GLOBAL_TTM_OBJECT,
TTM_GLOBAL_NUM
};
struct ttm_global_reference {
enum ttm_global_types global_type;
size_t size;
void *object;
int (*init) (struct ttm_global_reference *);
void (*release) (struct ttm_global_reference *);
};
extern void ttm_global_init(void);
extern void ttm_global_release(void);
extern int ttm_global_item_ref(struct ttm_global_reference *ref);
extern void ttm_global_item_unref(struct ttm_global_reference *ref);
extern struct kobject *ttm_get_kobj(void);
#endif /* _TTM_MODULE_H_ */

View File

@ -1,92 +1,92 @@
/************************************************************************** /**************************************************************************
* *
* Copyright (c) 2006-2009 VMware, Inc., Palo Alto, CA., USA * Copyright (c) 2006-2009 VMware, Inc., Palo Alto, CA., USA
* All Rights Reserved. * All Rights Reserved.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the * copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, * without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to * distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice (including the * The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions * next paragraph) shall be included in all copies or substantial portions
* of the Software. * of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
* USE OR OTHER DEALINGS IN THE SOFTWARE. * USE OR OTHER DEALINGS IN THE SOFTWARE.
* *
**************************************************************************/ **************************************************************************/
/* /*
* Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com> * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
*/ */
#ifndef _TTM_PLACEMENT_H_ #ifndef _TTM_PLACEMENT_H_
#define _TTM_PLACEMENT_H_ #define _TTM_PLACEMENT_H_
/* /*
* Memory regions for data placement. * Memory regions for data placement.
*/ */
#define TTM_PL_SYSTEM 0 #define TTM_PL_SYSTEM 0
#define TTM_PL_TT 1 #define TTM_PL_TT 1
#define TTM_PL_VRAM 2 #define TTM_PL_VRAM 2
#define TTM_PL_PRIV0 3 #define TTM_PL_PRIV0 3
#define TTM_PL_PRIV1 4 #define TTM_PL_PRIV1 4
#define TTM_PL_PRIV2 5 #define TTM_PL_PRIV2 5
#define TTM_PL_PRIV3 6 #define TTM_PL_PRIV3 6
#define TTM_PL_PRIV4 7 #define TTM_PL_PRIV4 7
#define TTM_PL_PRIV5 8 #define TTM_PL_PRIV5 8
#define TTM_PL_SWAPPED 15 #define TTM_PL_SWAPPED 15
#define TTM_PL_FLAG_SYSTEM (1 << TTM_PL_SYSTEM) #define TTM_PL_FLAG_SYSTEM (1 << TTM_PL_SYSTEM)
#define TTM_PL_FLAG_TT (1 << TTM_PL_TT) #define TTM_PL_FLAG_TT (1 << TTM_PL_TT)
#define TTM_PL_FLAG_VRAM (1 << TTM_PL_VRAM) #define TTM_PL_FLAG_VRAM (1 << TTM_PL_VRAM)
#define TTM_PL_FLAG_PRIV0 (1 << TTM_PL_PRIV0) #define TTM_PL_FLAG_PRIV0 (1 << TTM_PL_PRIV0)
#define TTM_PL_FLAG_PRIV1 (1 << TTM_PL_PRIV1) #define TTM_PL_FLAG_PRIV1 (1 << TTM_PL_PRIV1)
#define TTM_PL_FLAG_PRIV2 (1 << TTM_PL_PRIV2) #define TTM_PL_FLAG_PRIV2 (1 << TTM_PL_PRIV2)
#define TTM_PL_FLAG_PRIV3 (1 << TTM_PL_PRIV3) #define TTM_PL_FLAG_PRIV3 (1 << TTM_PL_PRIV3)
#define TTM_PL_FLAG_PRIV4 (1 << TTM_PL_PRIV4) #define TTM_PL_FLAG_PRIV4 (1 << TTM_PL_PRIV4)
#define TTM_PL_FLAG_PRIV5 (1 << TTM_PL_PRIV5) #define TTM_PL_FLAG_PRIV5 (1 << TTM_PL_PRIV5)
#define TTM_PL_FLAG_SWAPPED (1 << TTM_PL_SWAPPED) #define TTM_PL_FLAG_SWAPPED (1 << TTM_PL_SWAPPED)
#define TTM_PL_MASK_MEM 0x0000FFFF #define TTM_PL_MASK_MEM 0x0000FFFF
/* /*
* Other flags that affects data placement. * Other flags that affects data placement.
* TTM_PL_FLAG_CACHED indicates cache-coherent mappings * TTM_PL_FLAG_CACHED indicates cache-coherent mappings
* if available. * if available.
* TTM_PL_FLAG_SHARED means that another application may * TTM_PL_FLAG_SHARED means that another application may
* reference the buffer. * reference the buffer.
* TTM_PL_FLAG_NO_EVICT means that the buffer may never * TTM_PL_FLAG_NO_EVICT means that the buffer may never
* be evicted to make room for other buffers. * be evicted to make room for other buffers.
*/ */
#define TTM_PL_FLAG_CACHED (1 << 16) #define TTM_PL_FLAG_CACHED (1 << 16)
#define TTM_PL_FLAG_UNCACHED (1 << 17) #define TTM_PL_FLAG_UNCACHED (1 << 17)
#define TTM_PL_FLAG_WC (1 << 18) #define TTM_PL_FLAG_WC (1 << 18)
#define TTM_PL_FLAG_SHARED (1 << 20) #define TTM_PL_FLAG_SHARED (1 << 20)
#define TTM_PL_FLAG_NO_EVICT (1 << 21) #define TTM_PL_FLAG_NO_EVICT (1 << 21)
#define TTM_PL_MASK_CACHING (TTM_PL_FLAG_CACHED | \ #define TTM_PL_MASK_CACHING (TTM_PL_FLAG_CACHED | \
TTM_PL_FLAG_UNCACHED | \ TTM_PL_FLAG_UNCACHED | \
TTM_PL_FLAG_WC) TTM_PL_FLAG_WC)
#define TTM_PL_MASK_MEMTYPE (TTM_PL_MASK_MEM | TTM_PL_MASK_CACHING) #define TTM_PL_MASK_MEMTYPE (TTM_PL_MASK_MEM | TTM_PL_MASK_CACHING)
/* /*
* Access flags to be used for CPU- and GPU- mappings. * Access flags to be used for CPU- and GPU- mappings.
* The idea is that the TTM synchronization mechanism will * The idea is that the TTM synchronization mechanism will
* allow concurrent READ access and exclusive write access. * allow concurrent READ access and exclusive write access.
* Currently GPU- and CPU accesses are exclusive. * Currently GPU- and CPU accesses are exclusive.
*/ */
#define TTM_ACCESS_READ (1 << 0) #define TTM_ACCESS_READ (1 << 0)
#define TTM_ACCESS_WRITE (1 << 1) #define TTM_ACCESS_WRITE (1 << 1)
#endif #endif

View File

@ -203,7 +203,14 @@ typedef unsigned long pgprotval_t;
typedef struct pgprot { pgprotval_t pgprot; } pgprot_t; typedef struct pgprot { pgprotval_t pgprot; } pgprot_t;
struct file {}; struct file
{
struct page **pages; /* physical memory backend */
unsigned int count;
unsigned int allocated;
void *vma;
};
struct vm_area_struct {}; struct vm_area_struct {};
struct address_space {}; struct address_space {};

View File

@ -1 +1,8 @@
#ifndef _LINUX_MM_H
#define _LINUX_MM_H
#define VM_NORESERVE 0x00200000
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
#endif