Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/gpu/drm/i915/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  intel_memory_region.h   Sprache: C

 
/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2019 Intel Corporation
 */


#ifndef __INTEL_MEMORY_REGION_H__
#define __INTEL_MEMORY_REGION_H__

#include <linux/ioport.h>
#include <linux/mutex.h>
#include <linux/io-mapping.h>
#include <drm/drm_mm.h>
#include <uapi/drm/i915_drm.h>

struct drm_i915_private;
struct drm_i915_gem_object;
struct drm_printer;
struct intel_memory_region;
struct sg_table;
struct ttm_resource;

enum intel_memory_type {
 INTEL_MEMORY_SYSTEM = I915_MEMORY_CLASS_SYSTEM,
 INTEL_MEMORY_LOCAL = I915_MEMORY_CLASS_DEVICE,
 INTEL_MEMORY_STOLEN_SYSTEM,
 INTEL_MEMORY_STOLEN_LOCAL,
 INTEL_MEMORY_MOCK,
};

enum intel_region_id {
 INTEL_REGION_SMEM = 0,
 INTEL_REGION_LMEM_0,
 INTEL_REGION_LMEM_1,
 INTEL_REGION_LMEM_2,
 INTEL_REGION_LMEM_3,
 INTEL_REGION_STOLEN_SMEM,
 INTEL_REGION_STOLEN_LMEM,
 INTEL_REGION_UNKNOWN, /* Should be last */
};

#define I915_ALLOC_CONTIGUOUS     BIT(0)

#define for_each_memory_region(mr, i915, id) \
 for (id = 0; id < ARRAY_SIZE((i915)->mm.regions); id++) \
  for_each_if((mr) = (i915)->mm.regions[id])

struct intel_memory_region_ops {
 int (*init)(struct intel_memory_region *mem);
 int (*release)(struct intel_memory_region *mem);

 int (*init_object)(struct intel_memory_region *mem,
      struct drm_i915_gem_object *obj,
      resource_size_t offset,
      resource_size_t size,
      resource_size_t page_size,
      unsigned int flags);
};

struct intel_memory_region {
 struct drm_i915_private *i915;

 const struct intel_memory_region_ops *ops;

 struct io_mapping iomap;
 struct resource region;

 struct resource io;
 resource_size_t min_page_size;
 resource_size_t total;

 u16 type;
 u16 instance;
 enum intel_region_id id;
 char name[16];
 char uabi_name[16];
 bool private/* not for userspace */

 struct {
  struct mutex lock; /* Protects access to objects */
  struct list_head list;
 } objects;

 bool is_range_manager;

 void *region_private;
};

bool intel_memory_type_is_local(enum intel_memory_type mem_type);

struct intel_memory_region *
intel_memory_region_lookup(struct drm_i915_private *i915,
      u16 class, u16 instance);

struct intel_memory_region *
intel_memory_region_create(struct drm_i915_private *i915,
      resource_size_t start,
      resource_size_t size,
      resource_size_t min_page_size,
      resource_size_t io_start,
      resource_size_t io_size,
      u16 type,
      u16 instance,
      const struct intel_memory_region_ops *ops);

void intel_memory_region_destroy(struct intel_memory_region *mem);

int intel_memory_regions_hw_probe(struct drm_i915_private *i915);
void intel_memory_regions_driver_release(struct drm_i915_private *i915);
struct intel_memory_region *
intel_memory_region_by_type(struct drm_i915_private *i915,
       enum intel_memory_type mem_type);
const char *intel_memory_type_str(enum intel_memory_type type);

__printf(2, 3) void
intel_memory_region_set_name(struct intel_memory_region *mem,
        const char *fmt, ...);

int intel_memory_region_reserve(struct intel_memory_region *mem,
    resource_size_t offset,
    resource_size_t size);

void intel_memory_region_debug(struct intel_memory_region *mr,
          struct drm_printer *printer);

void intel_memory_region_avail(struct intel_memory_region *mr,
          u64 *avail, u64 *visible_avail);

struct intel_memory_region *
i915_gem_ttm_system_setup(struct drm_i915_private *i915,
     u16 type, u16 instance);
struct intel_memory_region *
i915_gem_shmem_setup(struct drm_i915_private *i915,
       u16 type, u16 instance);

#endif

Messung V0.5
C=96 H=93 G=94

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.