Skip site navigation (1) Skip section navigation (2)

Projet de conversion busdma et SMPng

Table des mati�res

But du projet

busdma

Les interfaces busdma permettent aux pilotes de p�riph�riques mat�riels d'op�rer sur une vari�t� de plateformes, �vitant le codage de m�thodes sp�cifiques � la plateforme dans ces pilotes. Ceci fait baisser le co�t de la maintenance des pilotes sur ces plateformes et accro�t les chances qu'un pilote fonctionne "tel que" pour une nouvelle plateforme. Modifier un pilote pour qu'il utilise busdma est relativement simple, mais requiert d'�tre familiaris� � la fois avec le pilote de p�riph�rique et les primitives busdma. Pour utiliser busdma dans FreeBSD, deux types de changements sont g�n�ralement requis : l'adaptation de busdma pour fonctionner sur toutes les plateformes et l'adaptation des pilotes pour utiliser cet environnement de travail. En tant que telle, l'information actuelle de ce projet de d�compose en support de la plateforme et en support des pilotes (tri�s par cat�gorie). L'ach�vement de ce travail requiert l'audit complet du syst�me de pilotes de p�riph�riques, puis la conversion des pilotes par priorit�s. Les pilotes doivent �galement utiliser les fonctions bus_space, et cette page est parfois utilis�e pour indiquer qu'un pilote a aussi besoin d'une conversion � bus_space.

INTR_MPSAFE

Les pilotes du mat�riel enregistrent leur traitement d'interruptions avec la fonction bus_setup_intr(). Positionner le flag INTR_MPSAFE informe le code d'interruption syst�me d'appeler la routine d'interruption sans d�tenir le mutex "G�ant". Ceci permet d'obtenir un gain significatif de performances sur les syst�mes multi-processeurs.

Les pilotes peuvent positionner ce flag m�me s'ils ne sont pas compl�tement verrouill�s tant que leur routine d'interruption prend soin de ne pas toucher aux autres structures de donn�es du pilote. Un moyen simple de r�aliser cela est de v�rifier et de vider les registres d'interruptions mat�rielles et ensuite ordonnancer le traitement des interruptions par une file d'attente de t�ches ou un thread noyau.

verrou SMPng

Les pilotes doivent utiliser des mutex et des verrous sx pour prot�ger leurs structures de donn�es et registres mat�riels des threads concurrents. Les op�rations mutex sont assez co�teuses, aussi une bonne strat�gie devrait combiner autant d'op�rations atomiques que possible durant l'acquisition d'un seul mutex.

s�curit� p!=a

Le support du PAE Intel requiert que les pointeurs et les repr�sentations physiques des adresses soient de tailles diff�rentes. Cela signifie que les pilotes doivent �tre �crits en utilisant vm_paddr_t ou bus_addr_t plut�t qu'en supposant que les adresses physiques puissent �tre repr�sent�es par un void *. De plus, le format des cha�nes de caract�res et les casts doivent �tre manipul�s avec soin.

La liste des t�ches ci-dessous ne pr�tend pas �tre exhaustive, mais repr�sente une s�rie de composants appropri�s et/ou importants du travail global. Le champ "Responsable" identifie un d�veloppeur qui a exprim� le d�sir d'�tre responsable pour mener � bien la t�che identifi�e; ce qui n'emp�che pas les autres d'y travailler, mais sugg�re que la coordination avec le responsable de cette partie est recommand�e pour �viter la duplication des travaux et optimiser l'avancement du travail. Si des travaux d�butent sur une nouvelle partie importante, ou non assign�e, il est conseill� d'envoyer un courrier �lectronique � Maxime Henrion pour v�rifier si des progr�s n'ont pas d�j� �t� faits.

La d�finition du champ date varie en fonction de l'�tat de la t�che. Pour les t�ches achev�es, elle se r�f�re � la date d'ach�vement ou du rapport d'ach�vement. Pour les t�ches en cours, elle se r�f�re � la date de la derni�re mise � jour de l'entr�e. Pour les t�ches bloqu�es, elle se r�f�re � la date � laquelle elle a �t� d�clar�e bloqu�e. Pour les nouvelles t�ches, elle se r�f�re � la date � laquelle elle a �t� ajout�e � la liste.

Les t�ches sont tri�es par �tat, puis par date.

Ressources et liens

Une liste de pages de manuel li�es � ce projet se trouve ici:

  • Extensions d'adressage physique - pae(4)
  • Interface de bus et de mapping DMA portable - bus_dma(9)
  • Partie non portable de la m�moire virtuelle (VM) - pmap(9)
  • Fonctions de gestion des ressources - rman(9)

Etat du support des plates-formes

T�che Responsable Derni�re mise � jour Etat D�tails
alpha Bernd Walter 14 Novembre 2005 Fait Probl�mes avec les syst�mes disposant d'une grande quantit� de m�moire
amd64 Peter Wemm 1er Juillet 2003 Fait Pleinement support�.
arm Olivier Houchard 23 D�cembre 2005 Fait Pleinement support�.
ia64 Marcel Moolenaar 10 D�cembre 2002 Fait Probl�mes �ventuels avec les syst�mes disposant d'une grande quantit� de m�moire
i386 Sam Leffler 9 D�cembre 2002 Fait Pleinement support�.
powerpc Peter Grehan 15 Janvier 2003 Fait Pleinement support�.
sparc64 Thomas M�stl 6 Janvier 2003 Fait Pleinement support�.

Etat des pilotes interfaces r�seaux

Pilote Responsable Derni�re mise � jour busdma INTR_MPSAFE SMPng locked a!=p Notes
if_an 23 D�cembre 2005 Inconnu Inconnu Inconnu Inconnu
if_ar Pas fait Pas fait Pas fait Pas fait kvtop()
if_bge Bill Paul 13 Avril 2004 Fait Fait Fait Fait
if_cp Roman Kurakin 31 Octobre 2005 Fait Fait Fait Pas fait
if_cs Warner Losh 23 D�cembre 2005 Pas fait Pas fait Pas fait Inconnu N�cessite une conversion bus_space
if_ct Roman Kurakin 31 Octobre 2005 Fait Fait Fait Pas fait
if_cx Roman Kurakin 24 Juin 2004 Fait En progr�s En progr�s Pas fait
if_dc Maxime Henrion 19 Ao�t 2005 Fait Fait Fait Fait
if_de Maxime Henrion 17 Ao�t 2005 Fait Fait Fait Pas fait
if_ed Warner Losh 23 D�cembre 2005 Fait Fait Fait Fait
if_em Prafulla S. Deuskar 13 Avril 2004 Fait Fait Fait Fait
if_en Hartmut Brandt 2 Novembre 2005 Fait Pas fait Pas fait Fait Verrouillage pr�sent; pas encore marqu� INTR_MPSAFE?
if_ep Matthew N. Dodd,Warner Losh 13 Avril 2004 Fait Fait Fait Fait
if_ex Warner Losh 23 D�cembre 2005 Fait Pas fait Pas fait Fait
if_fatm Hartmut Brandt 2 Novembre 2005 Fait Fait Fait Fait
if_fwe Pas fait Pas fait Pas fait Pas fait
if_fxp Maxime Henrion 13 Avril 2004 Fait Fait Fait Fait
if_gem Thomas M�stl 31 Juillet 2005 Fait Fait Fait Pas fait
if_hatm Hartmut Brandt 2 Novembre 2005 Fait Fait Fait Fait vtophys()
if_hme Thomas M�stl 30 Janvier 2005 Fait Fait Fait Fait
if_idt Pas fait Pas fait Pas fait Pas fait vtophys()
if_le Marius Strobl 31 Janvier 2006 Fait Fait Fait Fait
if_lge 23 Novembre 2005 Pas fait Fait Fait Pas fait vtophys()
if_lmc 11 F�vrier 2006 Fait Fait Fait Inconnu Non test� sur PAE
if_mn Pas fait Pas fait Pas fait Pas fait vtophys(). Contactez Poul-Henning Kamp pour info/mat�riel svp.
if_my 17 Ao� 2005 Pas fait Fait Fait Pas fait vtophys()
if_nge 17 Ao� 2005 Pas fait Fait Fait Pas fait vtophys()
if_nve 23 Novembre 2005 Pas fait Fait Fait Pas fait vtophys()
if_pcn David O'Brien 19 Ao�t 2005 Pas fait Fait Fait Pas fait vtophys()
if_pdq Pas fait Pas fait Pas fait Pas fait La plupart du busdma sauf vtophys().
if_re 30 Mai 2005 Fait Fait Fait Fait
if_rl Bill Paul 13 Avril 2004 Fait Fait Fait Pas fait
if_sf 19 Ao�t 2005 Pas fait Fait Fait Pas fait vtophys()
if_sis Bill Paul 13 Avril 2004 Fait Fait Fait Pas fait
if_sk 27 Avril 2006 Fait Fait Fait Pas fait vtophys()
if_sn Warner Losh 23 D�cembre 2005 Fait Fait Fait Fait
if_snc 23 D�cembre 2005 Inconnu Inconnu Inconnu Inconnu uniquement sur pc98 (bien qu'il pourrait fonctionner avec de nombreux ponts cardbus)
if_sr Pas fait Pas fait Pas fait Pas fait vtophys()
if_ste 31 Ao�t 2005 Pas fait Fait Fait Pas fait vtophys()
if_ti 13 D�cembre 2005 Fait Fait Fait Fait
if_tl 15 Septembre 2005 Pas fait Fait Fait Pas fait
if_tx Maxime Henrion 19 Avril 2003 Fait Pas fait Pas fait N�cessite des tests
if_txp 22 Septembre 2005 En progr�s Fait Fait Pas fait
if_vr 23 Avril 2004 Pas fait Fait Fait Pas fait
if_vx 22 Septembre 2005 Non Applicable Fait Fait Pas fait Utilise PIO pour copier les mbufs de/vers le mat�riel.
if_wb 22 Septembre 2005 Pas fait Fait Fait Pas fait
if_wi Sam Leffler, Warner Losh 4 Novembre 2003 Inconnu Fait Inconnu Inconnu Ce pilote a besoin de beaucoup de travail
if_xe Warner Losh 23 D�cembre 2005 Fait Fait Fait Fait
if_xl Maxime Henrion 13 Avril 2004 Fait Fait Fait Fait

Etat des pilotes p�riph�riques de stockage

Pilote Responsable Derni�re mise � jour busdma INTR_MPSAFE SMPng locked a!=p Notes
aac Scott Long 31 Janvier 2005 Fait Fait Fait Fait Probl�me avec l'endianness.
adv 9 D�cembre 2002 Fait Pas fait Pas fait Pas fait
aha 13 Avril 2004 Fait En progr�s En progr�s Pas fait Utilise BUSDMA, mais peut confondre l'adresse de bus avec l'adresse de l'h�te.
ahb 9 D�cembre 2002 Fait Pas fait Pas fait Pas fait
ahc Justin T. Gibbs 31 Janvier 2005 Fait Pas fait Pas fait Fait
ahd Justin T. Gibbs 31 Janvier 2005 Fait Pas fait Pas fait Fait
aic 23 D�cembre 2005 Inconnu Inconnu Inconnu Inconnu N�cessite une �valuation
amd 14 D�cembre 2002 Fait Pas fait Pas fait Pas fait
amr Scott Long 30 Janvier 2005 Fait Fait Fait Fait
asr 4 Janvier 2003 Pas fait Pas fait Pas fait Pas fait vtophys(). N�cessite beaucoup de travail. Une nouvelle infrastructure I2O serait souhaitable.
ata S�ren Schmidt 9 D�cembre 2002 Fait Fait Fait Fait
buslogic Pas fait Pas fait Pas fait Pas fait vtophys()
ciss 9 D�cembre 2002 Fait Pas fait Pas fait Pas fait
ct Pas fait Pas fait Pas fait Pas fait
dpt Pas fait Pas fait Pas fait Pas fait vtophys()
fdc 23 D�cembre 2005 Inconnu Inconnu Inconnu Inconnu N�cessite une �valuation
ida 9 D�cembre 2002 Fait Pas fait Pas fait Pas fait
iir 1er Mars 2006 Fait Fait Fait Fait Le DMA 64-bit sans rebond est possible, mais n�cessite du travail.
isp 8 F�vrier 2003 Fait Fait Pas fait Pas fait
ips Scott Long 30 Janvier 2005 Fait Fait Fait Fait
mlx Scott Long 8 F�vrier 2003 Fait En progr�s En progr�s Pas fait
mly Scott Long 8 F�vrier 2003 Fait En progr�s En progr�s Pas fait
mpt 9 D�cembre 2002 Fait Fait Pas fait Pas fait
ncr Pas fait Pas fait Pas fait Pas fait vtophys(). Contactez Poul-Henning Kamp svp, pour une �ventuelle source de mat�riel.
ncv Inconnu Inconnu Inconnu Inconnu N�cessite une �valuation
nsp Inconnu Inconnu Inconnu Inconnu N�cessite une �valuation
pst 11 Avril 2003 Pas fait Fait Pas fait Pas fait vtophys()
stg 9 D�cembre 2002 Fait Pas fait Pas fait Pas fait Au moins, il semble �tre ce qu'il devrait �tre.
sym 19 D�cembre 2002 Fait Pas fait Pas fait Pas fait
trm Olivier Houchard 9 D�cembre 2002 Fait Pas fait Pas fait Pas fait
twe 9 D�cembre 2002 Fait Pas fait Pas fait Pas fait
wds 2 F�vrier 2005 Fait Pas fait Pas fait Pas fait

Etat des pilotes p�riph�riques divers

Pilote Responsable Derni�re mise � jour busdma INTR_MPSAFE SMPng locked a!=p Notes
agp 31 Octobre 2005 Pas fait Pas fait Pas fait Pas fait vtophys()
bktr Olivier Houchard 15 Janvier 2003 En progr�s Pas fait Pas fait Pas fait vtophys()
digi Pas fait Pas fait Pas fait Pas fait vtophys()
drm Eric Anholt 27 Octobre 2003 En progr�s Fait Fait En progr�s vtophys(). Le verrouillage pourrait b�n�ficier d'une revue.
fb Pas fait Pas fait Pas fait Pas fait vtophys()
firewire Hidetoshi Shimokawa 17 Avril 2003 Fait Pas fait Pas fait Fait vtophys()
hfa Pas fait Pas fait Pas fait Pas fait vtophys()
hifn Sam Leffler 13 Avril 2004 Fait Fait Fait Pas fait
musycc Pas fait Pas fait Pas fait Pas fait vtophys(). Contactez Poul-Henning Kamp pour info/mat�riel svp.
pcm Olivier Houchard 20 F�vrier 2003 Fait Fait Pas fait Pas fait
ubsec Sam Leffler 13 Avril 2004 Fait Fait Fait Pas fait vtophys() est utilis� par printf en d�buggage.
usb John-Mark Gurney 24 Juillet 2003 Fait Pas fait Pas fait N�cessite des tests a!=p devrait �tre bon, mais n�cessite des tests plus pouss�s.

Etat de la documentation

T�che Responsable Derni�re mise � jour Etat Notes
Pages de manuel pour l'API busdma Hiten Pandya 15 Janvier 2003 Fait