Saya memiliki perangkat PCIe yang hanya berfungsi dengan benar ketika komputer dimatikan penuh kemudian dihidupkan lagi. Mengeluarkan perintah reboot
atau sederhana reboot -p
tampaknya tidak memutar daya ke kartu PCIe, yang menyebabkannya tidak berfungsi setelah reboot.
Apakah ada cara untuk, dari OS, memutarkan daya ke perangkat di slot PCIe? Saya dapat menemukannya /sys/bus/pci/devices/0000*/
, tetapi saya tidak tahu cara mengatur ulang papan dengan benar. Beralih kekuatan tampaknya menjadi satu-satunya cara.
Kecuali itu, dapatkah saya mengubah pengaturan di suatu tempat yang akan menyebabkan siklus daya penuh pada reboot
perintah?
Omong-omong, saya menjalankan Ubuntu 12.10.
devices
power-management
pci
zachd1_618
sumber
sumber
reboot -f
? Ini mirip dengan menekan tombol daya CPU.reboot
tidak berfungsi. Andareboot -f
masih reboot lembut.Jawaban:
Metode Potensial # 1
Saya pikir Anda bisa melakukannya dengan perintah ini:
nonaktifkan
memungkinkan
Di mana
$NUMBER
nomor slot PCI.lspci -vv
dapat membantu mengidentifikasi perangkat. Ini tidak didokumentasikan dengan sangat baik ...Metode Potensial # 2
Saya menemukan utas ini di U&L , masalah serupa: ada beberapa jawaban untuk pertanyaan itu yang mengatakan Anda dapat mengatur ulang dengan perintah ini:
Namun, saya akan membaca jawabannya di sana! Ada beberapa kondisi di sekitar melakukannya dengan cara ini! Secara khusus saya akan membaca jawaban ini !
Metode Potensial # 3
Ada perintah Unix
setpci
,, yang dapat memberi Anda metode untuk mengatur ulang perangkat di bus PCI.Saya tidak melihat contoh spesifik dengan perintah ini sehingga Anda harus mencari contoh di google dan melihat-lihat halaman manual . Saya akan melangkah ringan dengan perintah ini sampai Anda yakin menggunakannya. Dari apa yang saya baca tentang hal itu, itu memanipulasi perangkat keras secara langsung sehingga selalu ada risiko dalam melakukannya sendiri vs menggunakan alat yang mengekspos fungsionalitas jenis ini!
sumber
/sys/bus/pci/devices/$NUMBER/
. Tapi sepertinya tidak ada yang menjamin pengaturan 0 atau 1echo "1" > ...
.power
benar-benar memasukkannya ke D3.remove
danrescan
akan memungkinkan kernel untuk menggerakkan daya perangkat PCI tanpareboot
:di mana DDDD.BB.DD.F = Domain: Bus: Device.Function
sumber
Reset di PCI express agak rumit. Ada dua jenis utama pengaturan ulang - reset konvensional, dan reset level fungsi. Ada juga dua jenis pengaturan ulang konvensional, pengaturan dasar dan pengaturan non-fundamental. Lihat spesifikasi PCI express untuk semua detailnya.
'Cold reset' adalah reset mendasar yang terjadi setelah daya diterapkan ke perangkat PCIe. Tampaknya tidak ada cara standar untuk memicu reset dingin, kecuali mematikan sistem dan menyalakan kembali. Di komputer saya,
/sys/bus/pci/slots
direktori kosong.'Warm reset' adalah reset mendasar yang dipicu tanpa memutus daya dari perangkat. Tampaknya tidak ada cara standar untuk memicu reset hangat.
'Hot reset' adalah pengaturan ulang konvensional yang dipicu pada tautan PCI express. Reset panas dipicu baik ketika tautan dipaksa ke idle listrik atau dengan mengirim set memerintahkan TS1 dan TS2 dengan set bit reset panas. Perangkat lunak dapat memulai reset panas dengan mengatur dan kemudian membersihkan bit reset bus sekunder di register kontrol jembatan di ruang konfigurasi PCI port jembatan hulu perangkat.
'Reset tingkat fungsi' (FLR) adalah pengaturan ulang yang hanya memengaruhi satu fungsi perangkat PCI express. Itu tidak boleh mereset seluruh perangkat PCIe. Menerapkan pengaturan tingkat fungsi tidak diperlukan oleh spesifikasi PCIe. Reset level fungsi dimulai dengan mengatur bit reset level fungsi mulai pada register kontrol perangkat fungsi dalam struktur kemampuan PCI express di ruang konfigurasi PCI.
Linux memperlihatkan fungsi reset level fungsi dalam bentuk
/sys/bus/pci/devices/$dev/reset
. Menulis 1 ke file ini akan memulai reset tingkat fungsi pada fungsi yang sesuai. Perhatikan bahwa ini hanya memengaruhi fungsi spesifik perangkat tersebut, bukan keseluruhan perangkat, dan perangkat tidak diharuskan untuk mengimplementasikan pengaturan level fungsi sesuai dengan spesifikasi PCIe.Saya tidak mengetahui adanya metode 'bagus' untuk memicu reset panas (tidak ada entri sysfs untuk itu). Namun, dimungkinkan untuk menggunakan setpci untuk melakukannya:
Pastikan semua driver yang terpasang diturunkan sebelum menjalankan skrip ini. Script ini akan mencoba untuk menghapus perangkat PCIe, kemudian memerintahkan port switch hulu untuk mengeluarkan reset panas, kemudian mencoba untuk memindai ulang bus PCIe. Skrip ini juga hanya diuji pada perangkat dengan fungsi tunggal, sehingga mungkin perlu pengerjaan ulang untuk perangkat dengan banyak fungsi.
sumber