From f08789c7e15d3a94320caf9c97c240276c2b554d Mon Sep 17 00:00:00 2001 From: Luigi Rizzo Date: Sun, 15 Mar 2009 14:36:31 +0000 Subject: [PATCH] fix formatting for previous commit; Adjust entry for linux-DVB support --- en/projects/ideas/ideas.xml | 96 ++++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 38 deletions(-) diff --git a/en/projects/ideas/ideas.xml b/en/projects/ideas/ideas.xml index e58b49f0ed..0a07230552 100644 --- a/en/projects/ideas/ideas.xml +++ b/en/projects/ideas/ideas.xml @@ -15,7 +15,7 @@ Ideas//EN" - $FreeBSD: www/en/projects/ideas/ideas.xml,v 1.111 2009/03/14 10:18:18 rwatson Exp $ + $FreeBSD: www/en/projects/ideas/ideas.xml,v 1.112 2009/03/15 14:13:43 luigi Exp $ @@ -556,37 +556,51 @@ these buses to be a subclass of this new base class.

- - Kernel support for linux device drivers + + Kernel support for linux DVB device drivers

Technical contact: Luigi Rizzo

-

Recently, a project was started to compile linux device drivers - on FreeBSD through an in-kernel emulation layer, which +

In early 2007 we started a project was started to support the + building of linux device drivers on FreeBSD. + This was done through an in-kernel emulation layer, which implements part of the linux kernel API on top of the FreeBSD kernel API. The initial implementation was good enough to support a few USB webcam drivers, and is documented here.

+href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here. + The code is actually available as a port, devel/linux-kmod-compat, + and a popular driver that uses this infrastructure is + multimedia/linux-gspca-kmod . +

+

We would like to use a similar approach to add support + for DVB devices, which are widely supported in Linux + but not in FreeBSD. In particular we expect the project to provide, + within the FreeBSD kernel, enough of linux compatibility to build + the core components of the drivers/media/ linux kernel, and then + a few device drivers including one for a PCI DVB card (e.g. + saa7134-based). +

-

The goal of this project is to extend this emulation layer - to cover more of the linux kernel API. Two areas that need - further work are the API used by network/communication device drivers (e.g. - many USB wired and wireless device drivers; telephony cards), and the API used - by memory-mapped devices and drivers (e.g. analog or DVB video - acquisition cards, both USB and PCI).

- -

A Summer of Code applicant would be required to choose a significant set of - extensions to the existing work (e.g. one of those indicated - above), and select at least two linux device drivers to be - ported to FreeBSD using the newly implemented functions.

- -

Before the start of the project a Summer of Code applicant is expected to - have studied the above URL and understood the emulation technique - used, and to have/acquire access to at least some of the hardware - involved, so that actual functionality tests can be performed - in addition to the compile tests.

+

Before the start of the project, a Summer of Code applicant is expected to + i) become familiar with the approach used by linux-kmod-compat; + ii) set up a proper test environment, with a couple of DVB devices + supported by linux, and a working linux installation so that + one can compare results; + iii) become familiar with the architecture of the linux code in + drivers/media. +
+ Probably the attention should be focused in PCI devices, because + at this stage the USB stack is in a transition phase and would + pose some additional difficulties. +

+

+ Expected results are a working porting infrastructure, a working + linux-dvb-kmod device driver, and a working application to demonstrate + that the driver is working as expected. We suggest to look at + "kaffeine" for which a FreeBSD port already exists. +

@@ -722,23 +736,20 @@ href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here.

- + Geom-based Disk Schedulers

Technical contact: Luigi Rizzo

-

References: The Pluggable Disk - Schedulers SoC project, Patches

In a 2005 GSoC project, "Pluggable Disk Schedulers", Emiliano Mennucci explored the feasibility of pluggable disk schedulers for FreeBSD. The project was successful, but we could not explore certain approaches (e.g. "anticipation", where requests are delayed hoping that some future ones can served without a seek) due to architectural limitations the kernel had at the time. -

+

+

Since then, the GEOM infrastructure has become available on FreeBSD for interacting with disk I/O requests. GEOM has enabled us to work on disk schedulers in a much more flexible way, allowing a @@ -746,7 +757,8 @@ href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here.

Fabio Checconi, we have developed a prototype implementation of some anticipatory schedulers, see GEOM_SCHED. -

+

+

GEOM_SCHED works within the geom layer, i.e. above the device driver where queueing of requests may actually occur. The way GEOM_SCHED does scheduling is by limiting the number of outstanding requests @@ -757,18 +769,26 @@ href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here.

(as it needs to be replicated in all drivers) but it may be an interesting thing to do e.g. for some popular device drivers such as ATA. -

+

+

The proposed SoC work can address one or more of the following aspects: - i) implement suitable classifiers for - disk requests; ii) implement techniques for the auto-tuning of - the scheduler parameters; iii) measure the performance implications +

    +
  • implement suitable classifiers for disk requests;
  • +
  • implement techniques for the auto-tuning of + the scheduler parameters;
  • +
  • measure the performance implications of doing scheduling above the device driver, and possibly design and implement a suitable mechanism to push the GEOM_SCHED - module within the device driver itself. -

    -Ultimately, we expect to end up with a production quality subsystem -for use in FreeBSD. + module within the device driver itself.

  • +
+ Ultimately, we expect to end up with a production quality subsystem + for use in FreeBSD. +

+

References: The Pluggable Disk + Schedulers SoC project, Patches

Requirements: