xxxmatrixxx 0 8 февраля, 2018 Опубликовано 8 февраля, 2018 · Жалоба Всем добрый день!!! Уже 3ю неделю бьюсь с прерываниями MSI под Ubuntu 16.04 на компьютерах, где стоит UEFI BIOS - msi прерывания генерируются платой(это видно чипскопом), но ОС их не видит причем все нормально работает, т.е. прерывания приходят на компьютерах(это видно и в proc/interrupts и то , что вызывается обработчик прерывания), где стоит простой BIOS(не UEFI), как на 32х разрядной, так и на 64х разрядной ОС пробовал следующее, но это не помогло: - отключать Secure Boot - дописал откл и вкл прерываний после регистрации обработчика прерывания: //MSI if (pci_enable_msi(device_mil[minor].pdev) == 0) { debug_print("MSI IRQ is %d\n",device_mil[minor].pdev->irq); device_mil[minor].irq_num = device_mil[minor].pdev->irq; debug_print("MSI DEVICE IRQ is %d\n",device_mil[minor].irq_num); debug_print("MSI enabed! \n"); } else { printk(KERN_ERR"DEV_MIL_DRV_UDx: MSI not enabed! \n"); pr_err("pci_enable_msi:"); goto err6; } //IRQ if (request_irq(device_mil[minor].irq_num, (irq_handler_t) irq_handler, IRQF_PROBE_SHARED, (char *)device_mil[minor].dev_name, &device_mil[minor]) != 0) { printk(KERN_ERR"DEV_MIL_DRV_UDx: IRQ requesting failed \n"); pr_err("request_irq:"); goto err6; } disable_irq(device_mil[minor].irq_num); enable_irq(device_mil[minor].irq_num); - пробовал откл APIC контроллер вот лог /proc/interrupt после загрузки драйвера и после посылки данных, когда прерывания должны были прийти( PCIe_1553UDx_0 мое устройство): CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 23 0 0 0 0 0 0 0 IO-APIC 2-edge timer 1: 3 0 0 0 0 0 0 0 IO-APIC 1-edge i8042 5: 0 0 0 0 0 0 0 0 IO-APIC 5-edge parport0 8: 1 0 0 0 0 0 0 0 IO-APIC 8-edge rtc0 9: 0 0 0 0 0 0 0 0 IO-APIC 9-fasteoi acpi 12: 4 0 0 0 0 0 0 0 IO-APIC 12-edge i8042 14: 0 0 0 0 0 0 0 0 IO-APIC 14-fasteoi INT345D:00 16: 0 0 0 0 0 0 0 0 IO-APIC 16-fasteoi idma64.0, i2c_designware.0 17: 611 303 0 0 0 0 0 0 IO-APIC 17-fasteoi idma64.1, snd_hda_intel:card1, i2c_designware.1 20: 0 0 0 0 0 0 0 0 IO-APIC 20-fasteoi idma64.2 121: 753 697 0 362 0 5675 0 2013 PCI-MSI 327680-edge xhci_hcd 314: 13101 0 0 0 4398 0 1686 0 PCI-MSI 376832-edge ahci[0000:00:17.0] 315: 55 0 3506 0 0 522 0 0 PCI-MSI 2097152-edge enp4s0 316: 0 0 0 0 0 0 0 0 PCI-MSI 3145728-edge enp6s0 317: 1213 0 0 0 0 0 0 58559 PCI-MSI 524288-edge nvkm 318: 30 0 0 0 0 0 0 0 PCI-MSI 360448-edge mei_me 319: 703 105 0 0 0 0 0 0 PCI-MSI 514048-edge snd_hda_intel:card0 320: 0 0 0 0 0 0 0 0 PCI-MSI 1572864-edge PCIe_1553UDx_0 NMI: 1 0 0 0 0 0 0 1 Non-maskable interrupts LOC: 1994714 659098 501525 243498 293273 190401 520489 2272568 Local timer interrupts SPU: 0 0 0 0 0 0 0 0 Spurious interrupts PMI: 1 0 0 0 0 0 0 1 Performance monitoring interrupts IWI: 0 0 0 0 0 0 0 0 IRQ work interrupts RTR: 6 0 0 0 0 0 0 0 APIC ICR read retries RES: 1818 1485 603 471 389 302 301 537 Rescheduling interrupts CAL: 1814 1765 1811 1696 1666 1820 1672 1738 Function call interrupts TLB: 239 279 281 195 193 393 239 212 TLB shootdowns TRM: 1 1 1 1 1 1 1 1 Thermal event interrupts THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts DFR: 0 0 0 0 0 0 0 0 Deferred Error APIC interrupts MCE: 0 0 0 0 0 0 0 0 Machine check exceptions MCP: 3 3 3 3 3 3 3 3 Machine check polls ERR: 0 MIS: 0 PIN: 0 0 0 0 0 0 0 0 Posted-interrupt notification event PIW: 0 0 0 0 0 0 0 0 Posted-interrupt wakeup event так же лог загрузки драйвера: [ 521.782072] DEV_MIL_DRV_UDx: module_start() begin. [ 521.782088] DEV_MIL_DRV_UDx: Find Device UDx(DEVICE_ID = 0x9472) #1 [ 521.782227] DEV_MIL_DRV_UDx: cdev_init [ 521.782229] DEV_MIL_DRV_UDx: Memory [ 521.782332] DEV_MIL_DRV_UDx: Memory [ 521.782333] DEV_MIL_DRV_UDx: Maska was setted [ 521.782334] DEV_MIL_DRV_UDx: module_start(): try to allocate DMA buffer. [ 521.783197] DEV_MIL_DRV_UDx: module_start(): to address = 0xffffa78fc9681000 was written 0xfd000000 [ 521.783199] DEV_MIL_DRV_UDx: module_start(): to address = 0xffffa78fc9681004 was written 0xf [ 521.783287] DEV_MIL_DRV_UDx: MSI IRQ is 320 [ 521.783288] DEV_MIL_DRV_UDx: MSI DEVICE IRQ is 320 [ 521.783289] DEV_MIL_DRV_UDx: MSI enabed! [ 521.783322] DEV_MIL_DRV_UDx: IRQ requesting good [ 521.783325] DEV_MIL_DRV_UDx: dev_type = 0x43 [ 521.783326] DEV_MIL_DRV_UDx: DEVICE CREATE GOOD вот лог lspci -v после загрузки драйвера: 03:00.0 Communication controller: Device a203:9472 (rev 03) Subsystem: Device a203:9472 Flags: fast devsel, IRQ 320 Memory at df200000 (64-bit, non-prefetchable) Capabilities: [40] Power Management version 3 Capabilities: [48] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [58] Express Endpoint, MSI 00 Capabilities: [100] Device Serial Number 00-00-00-00-00-00-00-00 я смотрел, полностью карту регистров, а конкретно регистры, которые отвечают за MSI(cap_id = 0х05), там выставлено ОС все верно возникала ли у кого такая проблема и как решали вы ее??? буду очень благодарен за любой совет, пока даже не знаю, где копать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 13 февраля, 2018 Опубликовано 13 февраля, 2018 · Жалоба ---------- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 13 февраля, 2018 Опубликовано 13 февраля, 2018 · Жалоба Решил проблему, мне данный драйвер передали от другого программиста, дело было в том, что он не разрешал выходить модулю на шину мастером, короче не вызывал функцию pci_master_enable() всем спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться