Video for linux (v4l) emu­la­tion com­ing to the linuxu­lat­or

I am in the pro­cess of pre­par­ing the im­port of code which makes v4l devices us­able in the linuxu­lat­or. Ba­sic­ally this means you can use your web­cam in skype (tested by the sub­mit­ter of the patch on amd64).

This is not a “ap­ply patch and com­mit” thing, be­cause the ori­gin­al videodev.h (with some modi­fic­a­tions) is used. I was seek­ing the OK from core@ for this. As there is no li­cense in the head­er, and the ori­gin­al au­thor (Alan Cox, the linux one, not our FreeBSD one) gave per­mis­sions to use it, core@ is OK with the im­port.

I in­tent to do a vendor im­port of the linux head­er (pre­pared today, to­geth­er with some readme which ex­plains where it comes from and some stuff to show that we are on the safe side re­gard­ing leg­al stuff), and then I want to copy this over to the linuxu­lat­or as linux_videodev.h and com­mit the patch (prob­ably a little bit mod­i­fied in a few places). My plan is to com­mit it this week. People which already want to play around with it now can have a look at the emu­la­tion mailing­list, a link to the patch is pos­ted there.

With the head­er be­ing in a vendor branch, in­ter­ested people could then start to sub­mit new BSD li­censed drivers or modi­fy ex­ist­ing drivers which make use of the v4l in­ter­face, but I let the im­port of the head­er in­to the FreeBSD in­clude dir­ect­ory up to the per­son which wants to com­mit the first nat­ive FreeBSD-​v4l sup­port.

When such nat­ive FreeBSD-​v4l sup­port is com­mit­ted, the linuxu­lat­or code needs to be re­vised.

Linuxu­lat­or in -cur­rent ready for test­ing the 2.6.16 emu­la­tion

Today I com­mit­ted two patches which fix the last two pan­ics we know about in the 2.6.16 emu­la­tion. Now we need test­ers. Here’s the text of the mail I did send to current@ a few mo­ments ago:


today I com­mit­ted the last fixes for the showstop­per prob­lems (pan­ics) in the linux 2.6.16 emu­la­tion. I in­tend to switch the de­fault ver­sion to 2.6.16 on i386 “soon” (see be­low), so please help test­ing it.

More re­cent linux dis­tri­bu­tions (e.g. FC5) re­quire a 2.6 ker­nel and don’t work with 2.4.2 any­more. And be­cause FC4 is “abandon-​ware” (no se­cur­ity fixes from fe­dor­alegacy any­more), get­ting 2.6.16 emu­la­tion up an run­ning is very im­port­ant.

If you use a linux pro­gram, please add compat.linux.osrelease=2.6.16 to /etc/sysctl.conf (my desktop is run­ning with 2.6.16 emu­la­tion since some days already). After the next boot (or after run­ning “sy­sctl compat.linux.osrelease=2.6.16”, please make sure no linux pro­gram is run­ning already) any linux pro­gram will start with a linux ker­nel ver­sion of 2.6.16 in­stead of 2.4.2. The de­fault linux base port (FC4) will then use dif­fer­ent code paths (e.g. with­in glibc). In case you want to switch back to the 2.4.2 emu­la­tion without a re­boot, please make sure no linux pro­gram is run­ning any­more.

So far we fixed all known/​repeatable prob­lems with acror­ead, real­play­er, skype and linux fire­fox. If you en­counter strange be­ha­vi­or with any linux pro­gram, please tell us (emulation@​freebsd.​org) which pro­gram you used, how to re­peat the prob­lem, what the prob­lem is, and if it only is vis­ible with 2.6.16 or with 2.4.2 too. You should also watch out for mes­sages in the dmesg (un­im­ple­men­ted sys­tem calls or oth­er stuff, this is used to de­term­ine the pri­or­ity of miss­ing sy­scalls). Please also have a look at http://​wiki​.FreeBSD​.org/​l​i​n​u​x​-​k​e​r​nel, I in­tend to doc­u­ment the known prob­lems there. If you find your prob­lem there, please tell us about it if you are will­ing to test fixes.

We are spe­cially in­ter­ested in re­ports (good or bad) on SMP sys­tems. Please beat the hell out of the linuxu­lat­or!

On amd64 sys­tems we have not the same func­tion­al­ity as on i386, miss­ing are fu­texes and TLS. In P4 we already have the fu­tex part covered, but the TLS part is still miss­ing (any­one with a clue about the ker­nel side of TLS on amd64 is wel­come to give a hint or two to jkim@ and rdivacky@). So if you get a mes­sage about miss­ing fu­texes or TLS on amd64: we know about it (test­ers for the fu­tex stuff are wel­come, but first you need to use a pro­gram which uses fu­texes and com­plains).

As long as we get prob­lem re­ports with 2.6.16 I will not switch the de­fault to 2.6.16. If we don’t get a re­port at all, I will switch the de­fault on i386 to 2.6.16 in two weeks. If we get some prob­lem re­ports, we will push back the switch a little bit de­pend­ing on the sever­ity of the prob­lem.


Try­ing to get some more sound­sys­tem re­lated pro­gress

I star­ted a wiki page about im­prov­ing the sound­sys­tem. The idea is sim­il­ar to the wiki page about im­prov­ing our linuxolat­or. It’s a way to tell the people what is cur­rently avail­able as patches (and where), what is broken and needs to be fixed, which im­prove­ments we like to see and so on. It’s maybe also a good place to list docs for sound­chips. Cur­rently the page about the sound­sys­tem is a little bit low on con­tent. I hope a lot of people con­trib­ute with ideas, facts, sug­ges­tions, point­ers to help­ful stuff, (point­ers to) bugs, point­ing out lack of docs and so on (either by modi­fy­ing the page, or by mail­ing stuff to multimedia@​FreeBSD.​org).

With the linux page I was able to gain some mo­mentum and sev­er­al people are already help­ing with patches, run­ning tests and so on (even little help mat­ters). I hope the sound page will show a sim­il­ar be­ne­fit.

So dear read­er, do you play some mu­sic some­times? Do you play an in­stru­ment which can be con­nec­ted to some oth­er stuff (MIDI)? Do you use acror­ead, skype, or some oth­er linux soft­ware? If yes go to the wiki pages and read them please. When you’re fin­ished please donate 5 – 10 minutes (I don’t mind if you sepnd more) of your time and try to tell us at multimedia@​FreeBSD.​org or emulation@​FreeBSD.​org about stuff you think could be listet there (in­stead of smoking a ci­gar­ette, ar­gue­ing about bad be­ha­vi­or of people around you, or sim­il­ar neg­at­ive stuff). Thanks in ad­vance and trust me, you will earn good karma when you do this!

linuxolat­or SoC work com­mit­ted

I com­mit­ted most of Ro­mans work in the linuxolat­or to cur­rent. The new sy­scalls aren’t used un­til you run

sy­sctl com­pat.linux.osrelease=2.6.16

to switch back (after ex­it­ing all linux pro­grams) you just have to run

sy­sctl compat.linux.osrelease=2.4.2

But you have to do this on i386. Amd64 sup­port is not com­plete (and be­sides this, amd64 is still broken and nobody provided the nec­cessary de­bug­ging info to jhb@).

There are some known prob­lems with osrelease=2.6.16, e.g., prob­lems with fu­texes (vis­ible in acror­ead, real­play and skype), but some pro­grams already run without ob­vi­ous prob­lems (linux-​firefox, linux-​opera).

Any re­ports about new prob­lems to netchild@ and rdivacky@ please. Re­views, de­bug­ging info and patches are wel­come too.