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

Quelle  intel_gsc_uc.h   Sprache: C

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


#ifndef _INTEL_GSC_UC_H_
#define _INTEL_GSC_UC_H_

#include "intel_uc_fw.h"

struct drm_printer;
struct i915_vma;
struct intel_context;
struct i915_gsc_proxy_component;

struct intel_gsc_uc {
 /* Generic uC firmware management */
 struct intel_uc_fw fw;

 /* GSC-specific additions */

 /*
 * The GSC has 3 version numbers:
 * - Release version (incremented with each build)
 * - Security version (incremented on security fix)
 * - Compatibility version (incremented on interface change)
 *
 * The one we care about to use the binary is the last one, so that's
 * the one we save inside the intel_uc_fw structure. The other two
 * versions are only used for debug/info purposes, so we save them here.
 *
 * Note that the release and security versions are available in the
 * binary header, while the compatibility version must be queried after
 * loading the binary.
 */

 struct intel_uc_fw_ver release;
 u32 security_version;

 struct i915_vma *local; /* private memory for GSC usage */
 void __iomem *local_vaddr; /* pointer to access the private memory */
 struct intel_context *ce; /* for submission to GSC FW via GSC engine */

 /* for delayed load and proxy handling */
 struct workqueue_struct *wq;
 struct work_struct work;
 u32 gsc_work_actions; /* protected by gt->irq_lock */
#define GSC_ACTION_FW_LOAD BIT(0)
#define GSC_ACTION_SW_PROXY BIT(1)

 struct {
  struct i915_gsc_proxy_component *component;
  bool component_added;
  struct i915_vma *vma;
  void *to_gsc;
  void *to_csme;
  struct mutex mutex; /* protects the tee channel binding */
 } proxy;
};

void intel_gsc_uc_init_early(struct intel_gsc_uc *gsc);
int intel_gsc_uc_init(struct intel_gsc_uc *gsc);
void intel_gsc_uc_fini(struct intel_gsc_uc *gsc);
void intel_gsc_uc_suspend(struct intel_gsc_uc *gsc);
void intel_gsc_uc_resume(struct intel_gsc_uc *gsc);
void intel_gsc_uc_flush_work(struct intel_gsc_uc *gsc);
void intel_gsc_uc_load_start(struct intel_gsc_uc *gsc);
void intel_gsc_uc_load_status(struct intel_gsc_uc *gsc, struct drm_printer *p);

static inline bool intel_gsc_uc_is_supported(struct intel_gsc_uc *gsc)
{
 return intel_uc_fw_is_supported(&gsc->fw);
}

static inline bool intel_gsc_uc_is_wanted(struct intel_gsc_uc *gsc)
{
 return intel_uc_fw_is_enabled(&gsc->fw);
}

static inline bool intel_gsc_uc_is_used(struct intel_gsc_uc *gsc)
{
 GEM_BUG_ON(__intel_uc_fw_status(&gsc->fw) == INTEL_UC_FIRMWARE_SELECTED);
 return intel_uc_fw_is_available(&gsc->fw);
}

#endif

Messung V0.5
C=97 H=92 G=94

¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet)  ¤

*© 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.