Bagikan melalui


Manajemen daya PCI dan driver perangkat

Artikel ini mengklarifikasi beberapa kebingungan yang telah dialami vendor tentang bagaimana perangkat keras yang mematuhi PCI Power Management (PCI-PM) berinteraksi dengan driver perangkat dalam sistem operasi dan tentang bagaimana PCI-PM terintegrasi dengan ACPI. Untuk informasi selengkapnya, lihat https://www.uefi.org/specifications

Driver perangkat dan manajemen daya PCI

Diskusi ini mengasumsikan bahwa Anda terbiasa dengan bagaimana driver Windows Driver Model (WDM) menangani peristiwa manajemen daya, seperti yang dijelaskan dalam Windows DDK saat ini. Secara umum, tanggung jawab untuk driver perangkat adalah sebagai berikut:

  • Pengemudi bus: Pengemudi bus bertanggung jawab untuk menghitung, mengonfigurasi, dan mengontrol perangkat. Untuk PCI-PM, driver PCI bertanggung jawab untuk membaca registrasi PCI-PM untuk menentukan kemampuan perangkat keras. Ketika RUN DAYA meminta status daya berubah, driver PCI menulis ke manajemen daya PCI mendaftar untuk mengatur perangkat keras ke status Dx yang berbeda.

    Ketika perangkat diaktifkan untuk bangun, driver PCI menulis ke PCI-PM mendaftar untuk memungkinkan perangkat menyalakan PME (ACPI juga akan mengambil tindakan, lihat bagian berikutnya). Akhirnya, ketika ACPI menentukan bahwa bus PCI membangunkan sistem, driver PCI memindai ruang konfigurasi PCI yang mencari perangkat mana yang menegaskan PME, menonaktifkan PME di perangkat tersebut, dan memberi tahu driver untuk perangkat tersebut.

  • Driver perangkat: Driver khusus untuk perangkat bertanggung jawab untuk menyimpan dan memulihkan konteks perangkat, dan meminta perubahan status daya sebagai pemilik kebijakan untuk perangkat. Ketika driver perangkat menerima POWER IRP yang meminta perubahan status daya perangkat yang lebih rendah, driver perangkat bertanggung jawab untuk menyimpan konteks perangkat kepemilikan apa pun yang diperlukan untuk menyalakan perangkat nanti. Dalam beberapa kasus, mungkin tidak ada yang perlu disimpan.

Registrasi PCI-PM secara ketat merupakan domain driver PCI--driver perangkat IHV tidak perlu mengakses salah satu register ini. Melakukannya akan menyebabkan sistem tidak bekerja dengan andal. Tanggung jawab driver perangkat hanya melakukan tindakan kepemilikan.

Mengintegrasikan ACPI dan PCI PM

Beberapa perangkat, terutama perangkat video motherboard dalam portabel, mungkin memerlukan PCI Power Management serta ACPI Source Language Assembler (ASL) untuk sepenuhnya mendukung pengelolaan perangkat. PCI Power Management mendaftar akan mengontrol status internal perangkat, seperti jam internal dan bidang daya. ASL akan mengontrol status eksternal, seperti jam eksternal dan bidang daya, atau dalam kasus pengontrol video, ASL akan mengontrol lampu latar video. Perhatikan bahwa ASL dan PCI-PM hanya dapat digabungkan pada perangkat motherboard.

Arsitektur OnNow adalah arsitektur berlapis, menangani integrasi driver perangkat, driver PCI, dan driver ACPI (dan ASL) secara alami. Skenario berikut menunjukkan urutan di mana driver dipanggil untuk menangani perangkat ini.

Catatan

Agar skenario di atas berfungsi seperti yang dijelaskan, driver WDM harus meneruskan IRP POWER dengan benar seperti yang dijelaskan dalam versi Microsoft WDK saat ini.

Skenario 1: Menonaktifkan perangkat

  1. Driver perangkat: Menyimpan status perangkat milik.

  2. Driver PCI: Menyimpan konfigurasi Plug and Play, menonaktifkan perangkat (interupsi dan BAR), dan menempatkan perangkat di D3 menggunakan register PCI-PM.

  3. Driver ACPI: Menjalankan kode ASL (_PS3 dan _OFF untuk sumber daya yang tidak lagi digunakan) untuk mengontrol status eksternal ke chip.

Skenario 2: Manajemen daya PCI dan driver perangkat

  1. Driver ACPI: Menjalankan kode ASL (_PS0 dan _ON untuk sumber daya yang diperlukan OnNow) untuk mengontrol status eksternal ke chip.

  2. Driver PCI: Menempatkan perangkat di D0 menggunakan registrasi PCI-PM dan memulihkan konfigurasi Plug and Play (interupsi dan BAR--ini mungkin berbeda dari apa perangkat sebelumnya menyala).

  3. Driver perangkat: Memulihkan konteks kepemilikan di perangkat.

Skenario 3: Mengaktifkan bangun

  1. Driver perangkat: Mengatur register kepemilikan dalam chip untuk mengaktifkan bangun. Misalnya, dalam pola yang cocok dengan bangun jaringan, ini adalah ketika pola akan diprogram ke dalam adaptor.

  2. Driver PCI: Mengatur bit pengaktifan bangun di register PCI PM untuk memungkinkan perangkat menegaskan PME.

  3. Driver ACPI: Mengaktifkan GPE dalam set chip yang terkait dengan PME (seperti yang dijelaskan oleh objek _PRW yang tercantum di bawah bus PCI akar).

Skenario 4: Bangun

  1. Driver ACPI: Membangunkan dan memindai bit status GPE untuk peristiwa bangun, menonaktifkan GPU untuk mengatur bit status GPE, dan menjalankan metode _Lxx atau _Exx yang terkait dengan bit GPE yang diatur. Sebagai respons terhadap pemberitahuan bangun di bus PCI, driver ACPI akan menyelesaikan IRP WAIT_WAKE driver PCI untuk memberi tahu driver PCI bahwa ia membangunkan sistem.

  2. Driver PCI: Memindai ruang konfigurasi mencari perangkat apa pun dengan bit status PME yang ditetapkan. Untuk setiap perangkat, perangkat menonaktifkan PME dan menyelesaikan IRP WAIT_WAKE untuk perangkat tersebut guna memberi tahu driver bahwa perangkat tersebut menegaskan bangun. Driver PCI berhenti memindai perangkat bangun ketika telah membuat pass lengkap melalui semua perangkat PCI belum menemukan pernyataan PME dan ketika PME berhenti ditegaskan.

  3. Driver perangkat: Meminta perangkat dimasukkan ke D0 (lihat skenario 2) dan mengatur register kepemilikan apa pun dalam chip yang diperlukan untuk menangani peristiwa bangun.

Ajakan bertindak pada manajemen daya PCI dan driver perangkat

  • Integrasikan kemampuan ACPI dan PCI-PM ke dalam perangkat Anda seperti yang dijelaskan dalam artikel ini.

  • Spesifikasi PCI Power Management tersedia di situs web PCI-SIG.

  • Spesifikasi ACPI tersedia di https://www.uefi.org/specifications. Tautan ini meninggalkan situs Microsoft.com.

  • Pengkompilasi Acpi Component Architecture (ACPICA) dapat ditemukan di https://acpica.org/downloads/binary-tools.