В логе:
----------------------------------------------------------------
kernel BUG at mm/rmap.c:487!
invalid operand: 0000 [#2]
PREEMPT SMP
EIP is at page_remove_rmap+0x39/0x50
..................
<1>Fixing recursive fault but reboot is needed!
----------------------------------------------------------------
Ошибка происходит в функции page_remove_rmap в строке
BUG_ON(page_mapcount(page)).
Я так понимаю, что это связано с моей какой-то некорректной работой со страницами, скорей всего их резервированием, поэтому привожу куски кода работы с выделением памяти:
1. Отображение PCI-регистров в пространство процесса:
volatile static struct page *start_page_addr, *conf_page_addr;
phys_addr=pci_resource_start(dev, 3);
base_addr=(unsigned int*)ioremap_nocache(phys_addr, 256<<2);
conf_page_addr=virt_to_page(base_addr);
SetPageReserved(conf_page_addr);
............. Работаю
При завершении работы:
ClearPageReserved(conf_page_addr);
2. Выделение памяти для данных:
npag = (((Data_Size)<<2)/(PAGE_SIZE)) + 1;
dma_addr=(unsigned int*)pci_alloc_consistent(dev[LID],((DataSize)<<2),dma_addr_t*) &dma_buff_phys);
start_page_addr = virt_to_page(dma_addr);
for(i=0;i<npag;i++) {SetPageReserved(start_page_addr+i);}
............. Работаю
При завершении работы:
for(i=0;i<npag;i++) {ClearPageReserved(start_page_addr+i);}
pci_free_consistent((struct pci_dev *)dev, ((Data_Size)<<2),dma_addr, dma_buff_phys);
Непонятно, почему возникает ошибка. Вроде делаю все правильно, смотрел в исходниках сетевух - практически тоже самое. Подскажите, как правильно сделать (что исправить), и , если можно, привидите кусок кода работающего и ткните, где об этом почитать можно. LDD читал,
.../Documentation читал, но что-то не совсем получается. Ошибка,кстати, не постояноо выскакивает, а где-то раз на 5-10 пусков.
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от senjy
Ответ на:
комментарий
от idle
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Вот никак со страницами не разберусь (2005)
- Форум выделение памяти в модуле ядра (2005)
- Форум Kernel bug? (2008)
- Форум Kernel-keyrings bug (2005)
- Форум debian sid «kernel BUG» (2013)
- Форум kernel BUG at page_alloc.c (2010)
- Форум kernel BUG at kernel/timer.c:414! (2004)
- Форум BUG: unable to handle kernel (2009)
- Форум kernel BUG at page_alloc.c:142 :( (2005)
- Форум kernel BUG at mm/slab.c:3007! (2008)