PEP_ACPI_EXTENDED_ADDRESS 構造体 (pepfx.h)

PEP_ACPI_EXTENDED_ADDRESS構造は、メモリや IO などのアドレス空間のリソース使用状況を報告するために使用されます。

構文

typedef struct _PEP_ACPI_EXTENDED_ADDRESS {
  PEP_ACPI_RESOURCE_TYPE  Type;
  PEP_ACPI_RESOURCE_FLAGS Flags;
  UCHAR                   ResourceFlags;
  UCHAR                   GeneralFlags;
  UCHAR                   TypeSpecificFlags;
  UCHAR                   RevisionId;
  UCHAR                   Reserved;
  ULONGLONG               Granularity;
  ULONGLONG               MinimumAddress;
  ULONGLONG               MaximumAddress;
  ULONGLONG               TranslationAddress;
  ULONGLONG               AddressLength;
  ULONGLONG               TypeAttribute;
  PUNICODE_STRING         DescriptorName;
} PEP_ACPI_EXTENDED_ADDRESS, *PPEP_ACPI_EXTENDED_ADDRESS;

メンバー

Type

このリソースを記述する PEP_ACPI_RESOURCE_TYPE 列挙値。

Flags

このリソースを記述する PEP_ACPI_RESOURCE_FLAGS 構造体。

ResourceFlags

この構造体が説明するリソースの種類を示します。

意味
0
このリソースがメモリ範囲であることを示します。
1
このリソースが IO 範囲であることを示します。
2
このリソースがバス番号の範囲であることを示します。
3-191
これらの値は、将来使用するために予約されています。
192-255
これらの値は、ハードウェア ベンダーが使用するために予約されています。

GeneralFlags

すべてのリソースの種類に共通のビット フラグを含む値。

ビット 意味
0 - コンシューマー/プロデューサー フラグ
設定すると、デバイスがこのリソースを使用することを示します。
1 - デコードの種類
を設定すると、このブリッジがアドレスを減算してデコードすることを示します。 これは、最上位レベルのブリッジにのみ適用されます。

が設定されていない場合は、このブリッジによってこのアドレスが正にデコードされることを示します。

2 - 最小アドレス固定
を設定すると、最小アドレスが固定されていることを示します。
3 - 最大アドレス固定
を設定すると、最大アドレスが固定されることを示します。
4 から 7 - 予約済み
これらのビットは予約済みであり、0 に設定する必要があります。

TypeSpecificFlags

このメンバーの値は、 ResourceFlags メンバーの値に依存します。 各リソースの種類のフラグについては、次の表を参照してください。

メモリ リソース (ResourceFlags = 0)

ビット 意味
0 - 書き込み状態
を設定すると、このメモリ範囲を読み取りと書き込みに使用できます。 それ以外の場合は、このメモリ範囲が読み取り専用であることを示します。
1 から 2 - メモリ属性 (MEM)
0 - メモリがキャッシュ不可能であることを示します。

1 - メモリがキャッシュ可能であることを示します。

2 - メモリがキャッシュ可能であり、書き込みの組み合わせをサポートすることを示します。

3 - メモリはキャッシュ可能でプリフェッチ可能です。

3 から 4 - メモリ属性 (MTP)
これらのビットは、このメモリ リソースがシステム RAM を記述している場合にのみ定義されます。

0 - アドレス範囲メモリ: この範囲は、オペレーティング システムで使用可能な RAM です。

1 - 予約されているアドレス範囲: このアドレス範囲は、システムによって使用中または予約されており、オペレーティング システムのメモリ マネージャーの割り当て可能なメモリ プールには含まれません。

2 - アドレス範囲 ACPI: ACPI のメモリの再利用。 この範囲は、ACPI テーブルを読み取った後に OS で使用できる RAM です。

3 - アドレス範囲 NVS: ACPI NVS メモリ。 この範囲のアドレスは、システムによって使用中または予約されており、オペレーティング システムで使用することはできません。 この範囲は、NVS スリープ全体で保存および復元する必要があります。

5 - メモリから IO への変換
0 - Type-static: このリソースは、ブリッジのプライマリ側とセカンダリ側のメモリです。

1 - 型変換: このリソースは、ブリッジのセカンダリ側のメモリと、ブリッジのプライマリ側の IO です。

6 から 7 - 予約済み
これらのビットは予約済みであり、0 に設定する必要があります。
 

IO リソース (ResourceFlags = 1)

ビット 意味
0 から 1 - 範囲
0 - 予約済み。

1 - ISA 以外の範囲のみ。 このフラグは、複数のブリッジを持つシステム上のブリッジ用です。 このビットを設定すると、この記述子で指定されたメモリ ウィンドウは、指定されたウィンドウ内にある ISA 以外の IO アドレスに制限されます。 ISA 以外の IO 範囲は、n100-n3FF、n500-n7FF、n900-nBFF、nD00-nFFF です。 このビットは、ACPI 名前空間を介して完全に構成されたブリッジにのみ設定できます。

2 - ISA 範囲のみ。 このフラグは、複数のブリッジを持つシステム上のブリッジ用です。 このビットを設定すると、この記述子で指定されたメモリ ウィンドウは、指定されたウィンドウ内にある ISA IO アドレスに制限されます。 ISA IO 範囲は、n000-n0FF、n400-n4FF、n800-n8FF、nC00-nCFF です。 このビットは、ACPI 名前空間を介して完全に構成されたブリッジにのみ設定できます。

3 - メモリ ウィンドウは範囲全体をカバーします

2 から 3 - 予約済み
これらのビットは予約済みであり、0 に設定する必要があります。
4 - IO からメモリへの変換
0 - 型静的: このリソースは、ブリッジのプライマリ側とセカンダリ側の IO です。

1 - 型変換: このリソースは、ブリッジのセカンダリ側の IO と、ブリッジのプライマリ側のメモリです。

5 - スパース変換
このビットは、ビット 4 (IO からメモリへの変換) が設定されている場合にのみ意味があります。

0 - 高密度変換: セカンダリ側の範囲内の特定の IO ポートのプライマリ側メモリ アドレスは、次の関数を使用して見つけることができます。

address = port + TranslationAddress

1 - スパース変換: セカンダリ側範囲内の特定の IO ポートのプライマリ側メモリ アドレスは、次の関数を使用して確認できます。

address = (((port & 0xFFFc) << 10) ||(ポート & 0xFFF))+ TranslationAddress

IO ポートへのアクセスに使用されるアドレスでは、ビット 2 から 11 はビット 12 から 21 と同じである必要があります。これにより、各 4 KB ページで 4 バイトの IO ポートが提供されます。

6 から 7 - 予約済み
これらのビットは予約済みであり、0 に設定する必要があります。
 

バス番号範囲リソース (ResourceFlags = 2)

ビット 意味
0 から 7 - 予約済み
これらのビットは予約済みであり、0 に設定する必要があります。

RevisionId

この構造体によって詳細な拡張アドレス空間記述子のリビジョンを示します。 ACPI 3.0 の場合、この値は 1 です。

Reserved

Granularity

デコードされたビットを示すビット マスク。

MinimumAddress

最小開始アドレス。 アドレスを変換するブリッジの場合、これはブリッジのセカンダリ側のアドレス空間です。

MaximumAddress

最大開始アドレス。 アドレスを変換するブリッジの場合、これはブリッジのセカンダリ側のアドレス空間です。

TranslationAddress

ブリッジ全体でアドレスを変換するブリッジの場合、これはプライマリ側のアドレスです。

AddressLength

アドレスの長さ。

TypeAttribute

ResourceFlags メンバーで指定されたリソースの種類に固有の属性を示します。 ResourceFlags が 0 の場合、この値は 0 です。それ以外の場合、値の意味は GetMemoryMap()というセクションの UEFI 仕様で確認できます。

DescriptorName

このリソース記述子の名前。

要件

要件
サポートされている最小のクライアント Windows 10 以降でサポートされています。
Header pepfx.h (Pep_x.h を含む)