Блоги

Драйвер libertas ищет нового майнтейнера

Dan Williams в рассылке netdev написал что больше у него не хватает времени на сопровождение драйвера libertas и он с радостью отдаст его другому человеку, у которого есть время и желание этим заниматься.

Для проекта Trinity создан mailing list

Основная идея Trinity довольно простая - тестирование системных вызовов с рандомными аргументами. Dave Jones написал что получает довольно много приватных писем на свой адрес, поэтому было решено сделать отдельный mailing list: для этого надо отправить subscribe trinity в теле письма на majordomo@vger.kernel.org

Ethernet Driver

Using Essential Linux Device Drivers book and some documents(including manual) ,I try to get sorted e1000 Gigabit ethernet driver . The book has some simplified example of NIC card driver ,using PCI bus. It helped me a lot to figure out the DMA descriptors(format is gotten from datasheet) are mapped coherently(ring or queue of descriptors) and data buffers (skb->dta) mapped using streaming DMA. But some points are still confusing. If somebody is familiar with the matter I would be delighted to discuss the issue.

Hacking Linux on PowerPC: porting to a new platform

Вот и настало время обновить наше скудное содержание))
А вопрос следующий: тяжело ли добавить поддержку для новой powerpc-based платформы для нашего любимого пингвина :)
Давайте смотреть! )

Директория ядра arch/powerpc/platforms содержит все что на данный момент поддерживается:

40x   52xx  85xx  amigaone  embedded6xx    Kconfig          maple     prep

Атомарные операции на PowerPC

PowerPC является RISC процессором, поэтому он не можем напрямую модифицировать переменные в памяти. Хотя CISC процессоры и предоставляют такие инструкции (например incl some_variable), не факт что они являются атомарными.

Типичный цикл изменения переменной для RISC процессоров выглядит примерно так (опустим кэши CPU):
load general_register, variable

Trace and profile function calls

Использование клевых штук для трассировки вашего кода.
На самом деле функции
__cyg_profile_func_{enter|exit} должны быть объявлены с аттрибутом __attribute__ ((no_instrument_function)) чтобы не трассировать их самих, иначе у нас получиться рекурсия которая грохнет стек. Но видимо gcc как-то учитывает уже этот факт.

Early debugging

Собственно на моей машине в меню kernel hacking (мы все его любим ;) ) можно выбрать пункт меню "Early debugging (dangerous)" - что для моей машины (powerbook g4) раскрывается в символ CONFIG_PPC_EARLY_DEBUG.
Как оказалось это означает вот что:
+machine_init()
+->udbg_early_init()

Наконец то работает perftools на 2.6.38-rc2 (ppc32)

Не помню какой HEAD у Линуса в ветке, но с него у меня начали работать perftools на ppc32. Имеетсся в виду 'нормально работать', а не просто собираться и крашиться или выдавать ворнинги на экран и счетчики со значением NaN.
Проверю эту вешь на ppc64 и sparc64.
http://acmel.wordpress.com/ - рекомендую почитать блог Arnaldo Carvalho de Melo, интересные посты.

Если у вас page allocation failure

Бывает что память в обработчике прерывания (т.е. GFP_ATOMIC) выделить не удается.
[15875.502554] SLUB: Unable to allocate memory on node -1 (gfp=0x20)
[15875.502554] cache: kmalloc-8192, object size: 8192, buffer size: 8192, default order: 3, min order: 1
[15875.502554] node 0: slabs: 173, objs: 683, free: 91
[15875.504984] skbuff alloc of size 3904 failed
[15875.953258] swapper: page allocation failure. order:1, mode:0x4020
Вам может помочь параметр /proc/sys/vm/min_free_kbytes.

RSS-материал