Я пишу драйвер pci для доступа к устройству Intel с идентификатором PCI_DEVICE_ID_INTEL_BROADWELL_IMC_HA0., Который находится на ff: 12.0 (идентификатор устройства 0x6fa0).Совместное использование устройства PCI с двумя разными PCI-драйверами
Но, оказалось, что драйвер sbridge_edac уже установлен и связан с этим устройством PCI. Это заставляет my pci_register_driver() возвращать ошибку. Есть ли способ заставить мой PCI-драйвер использовать это устройство PCI, если другой драйвер уже связан с ним?
#define PCI_DEVICE_ID_INTEL_BROADWELL_IMC_HA0 0x6fa0
static const struct pci_device_id sbridge_pci_tbl[] = {
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SBRIDGE_IMC_HA0)},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0_TA)},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_HASWELL_IMC_HA0)},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BROADWELL_IMC_HA0)},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_KNL_IMC_SAD0)},
{0,} /* 0 terminated list. */
};
MODULE_DEVICE_TABLE(pci, sbridge_pci_tbl);
static struct pci_driver discovery_pci_driver ={
.name = DRIVER_NAME,
.probe = discovery_probe,
.remove = discovery_remove,
.id_table = sbridge_pci_tbl,
};
static int __init discovery_init(void)
{
int res;
res = pci_register_driver(&discovery_pci_driver);
if(res<0) {
PERR("Adding driver to pci core failed\n");
return res;
}
return 0;
}
$lspci -x
ff:12.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0
Subsystem: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0
Kernel driver in use: sbridge_edac
Это означает, что вы либо конвертируете sbridge_edac в MFD, либо расширяете его соответствующим образом. – 0andriy
Возможно, вы хотели изменить sbridge_edac? Он находится в коде ядра ядра, который я не могу просто изменить? – electro
Да. Почему нет? Вы должны сделать драйвер в соответствии со спецификацией поставщика HW (Intel). Итак, прежде чем дать вам лучший ответ, вам нужно обновить сообщение со ссылкой на спецификацию или со ссылкой на необходимые части здесь. – 0andriy