Я хочу создать модуль ядра, который считывает счетчики DRAM, чтобы получить количество данных, считанных из DRAM (https://software.intel.com/en-us/articles/monitoring-integrated-memory-controller-requests-in-the-2nd-3rd-and-4th-generation-intel).
На этой странице они говорят:
"BAR доступен (в пространстве конфигурации PCI) на шине 0; устройство 0; функция 0; смещение 048H", а UNC_IMC_DRAM_DATA_READS, который я хочу прочитать, находится на "BAR + 0x5050".
Означает ли это, что я могу получить физический адрес счетчика DRAM, набрав
sudo setpci 00:00:0 48.L
, а затем + 0x5050, чтобы получить адрес, на котором UNC_IMC_DRAM_DATA_READS?
На самом деле,
sudo setpci 00:00:0 48.L
выводит
fed10001
, и я получил доступ к 0xfed15051 с busybox.
sudo busybox devmem 0xfed15051
Однако два крайних левых бита, я имею в виду «00» в 0x00123456, всегданоль.
Что не так, и как я могу правильно получить физический адрес с помощью шины, устройства, функции и смещения.
Спасибо:)