А! Нещо съм пропуснал, че си писал, покрай екзистенциални занимавки
Ако не се ориентираш, patch-ът в страницата, която си дал, е от "Signed-off-by" включително до преди "-- To unsubscribe from this list". Копираш си patch-а и го запазваш цялото в един файл. След това в конзолата отиваш в папката, където ти е изходният код на ядрото, и изпълняваш командата
patch -p1 < /път/до/файла/с/patch
В резултат на което описаните промени в patch-а ще бъдат приложени към файловете в папката, в която се намираш (в случая, тази с изходния код на ядрото).
Командата за patch-ване ще си каже, ако нещо не сполучи, но все пак е хубаво преди това да метнеш едно око дали patch-ът съответства на ядрото, към което го прилагаш. Точно кое ядро реши да ползваш? Ако се загледаш по-внимателно в текста на patch-а ще установиш, че той не е нищо повече от описания кои файлове трябва да се променят, на кои редове и какъв код трябва да се добави, премахне или замени там. В случая ще се прави промяна в два файла. Единият е част от документацията на ядрото (Documentation/kernel-parameters.txt), там няма да се променя код, просто ти се добавя помощна информация за параметрите, които ще се добавят като код в другия файл. Другият файл е drivers/pci/quirks.c и при него вече се променя код. Преди да си приложил patch-а, отвори този файл, иди на ред 3292 и провери имаш ли такъв код там
GeSHi (C):
return pci_dev_get(dev);
}
static const struct pci_dev_acs_enabled {
u16 vendor;
u16 device;
int (*acs_enabled)(struct pci_dev *dev, u16 acs_flags);
} pci_dev_acs_enabled[] = {
{ 0 }
};
Това е кодът, между който (след първите два реда и друго парче преди последните два) ще бъде добавен допълнителният код от patch-а. В patch-а редовете, които ще се добавят, са отбелязани с "+" отпред. Тези, които ще се махат (в случая няма такива) се отбелязват с "-", а тези, които ще си останат същите и служат само като указател (като редовете от кода по-горе) не се отбелязват с някакъв знак.
Та, ако имаш въпросния код на ред 3292 и той изглежда по същия начин, значи patch-ът ще го намери и ще направи промените там успешно.
Както вероятно и сам се усещаш, след като така и така си отворил файла, който трябва да се промени, намерил си къде ще се прилага промяната и знаеш каква промяна трябва да се направи от прочетеното в patch-а, нищо не ти пречи и ръчно да си копираш промените на указаните места и да не минаваш през patch командата, но това сега е твърде частен случай. Често patch-овете съдържат огромен брой промени, които никак не върви да ги правиш на ръка, така че е хубаво да си знаеш за patch командата и да можеш да се ориентираш в текста на patch-а.
И когато patch-ваш, ако не стигнеш да направиш поне някакво сравнение между вписаното в patch-а и наличното във файловете, които ще patch-ваш, то поне винаги проверявай дали версията на твоя изходен код съвпада с версиите, за които patch-ът се отнася - случвало ми се е от недоглеждане да приложа patch за несъответстваща версия, указателите да са се оказали недостатъчни, за да се хване несъответствието, patch-ването да мине успешно и след това да се чудя защо ми се чупи нещо
Та... провери си пак версията на ядрото!