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 �