DMA-maping x86_64

Тема в разделе "WASM.UNIX", создана пользователем synoptick, 24 авг 2008.

  1. synoptick

    synoptick New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2008
    Сообщения:
    50
    в файлике
    ./linux-2.6.26/drivers/mmc/host/sdhci.c
    пропатчил
    Код (Text):
    1. --- linux-2.6.26/drivers/mmc/host/sdhci.c   2008-08-24 23:11:17.761068724 +1100
    2. +++ linux-2.6.26/drivers/mmc/host/sdhci.c  2008-08-24 23:11:39.281193763 +1100
    3. @@ -1426,7 +1426,22 @@
    4.                         "mode even though HW doesn't fully "
    5.                         "claim to support it.\n", mmc_hostname(mmc));
    6.         }
    7. -
    8. +       if (host->flags & SDHCI_USE_DMA) {
    9. +               if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) {
    10. +                       using_dac = 1;
    11. +                       consistent_using_dac = 1;
    12. +                       pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK);
    13. +               } else if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
    14. +                       using_dac = 0;
    15. +                       consistent_using_dac = 0;
    16. +                       pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK);
    17. +               } else {
    18. +                       printk(KERN_WARNING
    19. +                              "mydev: No suitable DMA available.\n");
    20. +                       goto unmap;
    21. +               }
    22. +       }
    23. +/*
    24.         if (host->flags & SDHCI_USE_DMA) {
    25.                 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
    26.                         printk(KERN_WARNING "%s: No suitable DMA available. "
    27. @@ -1434,7 +1449,7 @@
    28.                         host->flags &= ~SDHCI_USE_DMA;
    29.                 }
    30.         }
    31. -
    32. +*/
    33.         if (host->flags & SDHCI_USE_DMA)
    34.                 pci_set_master(pdev);
    35.         else /* XXX: Hack to get MMC layer to avoid highmem */
    все собралось, но вот картридер на х86_64 все равно работает в режиме ПИО, почему этот код мог не сработать?
    что еще забыл сделать?
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    synoptick
    а чо в соответствующих конфах нет ни одного подобного вопроса или здесь самые крутые и знающие линуксоиды знающие кардридеры как свои 5 палцев ?
     
  3. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    synoptick
    host->flags точно содержит соответствующий бит?
    код не имеет никакого отношения к включению DMA
    он лишь определяет верхнию поддерживаемую границу адресов DMA
     
  4. synoptick

    synoptick New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2008
    Сообщения:
    50
    Т.е. собираю ли я в ARCH=x86_64?
    Вот только подозрительно то, что нигде нет значения константы DMA_64BIT_MASK, а ведь все собирается.
     
  5. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    synoptick
    SDHCI_USE_DMA определен только для x86_64?
     
  6. synoptick

    synoptick New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2008
    Сообщения:
    50
    нет, это есть и для 32