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 lebih lanjut, lihat https://www.uefi.org/specifications

Driver perangkat keras 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 PCI-PM mendaftar untuk menentukan kemampuan perangkat keras. Ketika IRP Permintaan Daya meminta status daya berubah, driver PCI menulis ke register manajemen daya PCI, dalam mengatur perangkat keras menjadi status Dx yang berbeda.

    Ketika perangkat diaktifkan untuk membangunkan, driver PCI menulis ke register PCI-PM untuk mengaktifkan perangkat mengirimkan sinyal PME (ACPI juga akan mengambil tindakan; lihat bagian berikutnya). Akhirnya, ketika ACPI menentukan bahwa bus PCI membangunkan sistem, driver PCI memindai ruang konfigurasi PCI untuk mencari perangkat mana yang mengaktifkan PME, menonaktifkan PME pada perangkat tersebut, dan memberitahukan drivernya.

  • Driver perangkat: Driver spesifik untuk perangkat bertanggung jawab untuk menyimpan dan memulihkan konteks dari perangkat, serta meminta perubahan keadaan daya dalam kapasitasnya sebagai pemilik kebijakan perangkat. Ketika driver perangkat menerima POWER IRP yang meminta penurunan status daya perangkat, driver perangkat bertanggung jawab untuk menyimpan konteks perangkat khusus yang diperlukan untuk menghidupkan perangkat kemudian. Dalam beberapa kasus, mungkin tidak ada yang perlu disimpan.

PCI-PM register adalah hanya untuk wilayah driver PCI--driver perangkat IHV tidak perlu mengakses register tersebut. Melakukannya akan menyebabkan sistem tidak bekerja dengan andal. Tanggung jawab driver perangkat adalah hanya melakukan tindakan eksklusif.

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. Register Manajemen Daya PCI akan mengontrol status internal perangkat, seperti pengaturan waktu 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.

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 khusus.

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

  3. Driver ACPI: Menjalankan kode ASL (_PS3 dan _OFF untuk sumber daya 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 daya yang diperlukan oleh OnNow) guna mengontrol status di luar chip.

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

  3. Driver perangkat: Memulihkan konteks eksklusif di perangkat.

Skenario 3: Mengaktifkan bangun otomatis

  1. Driver perangkat: Mengatur register khusus dalam chip untuk mengaktifkan fungsi bangun. Misalnya, dalam pencocokan pola untuk pemicu jaringan, ini adalah saat pola-pola tersebut akan diprogram ke dalam adaptor.

  2. Driver PCI: Menyetel bit pengaktifan bangun dalam register PCI PM untuk memungkinkan perangkat mengaktifkan 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: Mengaktifkan dan memindai bit status GPE untuk kejadian bangun, menonaktifkan GPE untuk bit status GPE yang telah diatur, dan menjalankan metode _Lxx atau _Exx yang terkait dengan bit GPE yang telah 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 tersebut menonaktifkan PME dan menyelesaikan IRP WAIT_WAKE guna memberi tahu driver bahwa perangkat sedang mengaktifkan sinyal bangun. Driver PCI menghentikan pemindaian perangkat bangun setelah menyelesaikan pemindaian semua perangkat PCI tanpa menemukan sinyal PME yang aktif, dan ketika sinyal PME berhenti diaktifkan.

  3. Driver perangkat: Meminta perangkat dimasukkan ke D0 (lihat skenario 2) dan mengatur register khusus apa pun dalam chip yang diperlukan untuk menangani kejadian 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.