Hi, I've just checked in a new version of deblob-check with the following new features:
- it recognizes request_firmware and request_firmware_nowait sequences as blobs - it adds infrastructure for adding any other patterns to be matched and handled like blobs Now, there are a total of 145 files in the latest 2.6.28 release of Linux-libre that match request_firmware. I could handle them one by one myself, but I guess it makes sense to ask for help. If you're willing to lend a hand, could you... 1. pick up any of these at random: CREDITS Documentation/00-INDEX Documentation/dell_rbu.txt Documentation/firmware_class/README Documentation/power/freezing-of-tasks.txt Documentation/power/notifiers.txt Documentation/video4linux/si470x.txt MAINTAINERS arch/arm/mach-ixp4xx/ixp4xx_npe.c arch/arm/mach-netx/include/mach/xc.h arch/arm/mach-netx/xc.c arch/cris/arch-v32/drivers/iop_fw_load.c arch/x86/kernel/microcode_amd.c arch/x86/kernel/microcode_core.c arch/x86/kernel/microcode_intel.c drivers/atm/fore200e.c drivers/base/Kconfig drivers/base/firmware_class.c drivers/bluetooth/bcm203x.c drivers/bluetooth/bfusb.c drivers/bluetooth/bt3c_cs.c drivers/char/cyclades.c drivers/char/dsp56k.c drivers/char/ip2/ip2main.c drivers/char/isicom.c drivers/char/moxa.c drivers/firmware/dell_rbu.c drivers/media/common/tuners/tuner-xc2028.c drivers/media/common/tuners/xc5000.c drivers/media/dvb/b2c2/flexcop-fe-tuner.c drivers/media/dvb/bt8xx/dvb-bt8xx.c drivers/media/dvb/dvb-usb/dvb-usb-firmware.c drivers/media/dvb/dvb-usb/dw2102.c drivers/media/dvb/dvb-usb/gp8psk.c drivers/media/dvb/dvb-usb/m920x.c drivers/media/dvb/dvb-usb/opera1.c drivers/media/dvb/frontends/af9013.c drivers/media/dvb/frontends/bcm3510.c drivers/media/dvb/frontends/bcm3510.h drivers/media/dvb/frontends/cx24116.c drivers/media/dvb/frontends/drx397xD.c drivers/media/dvb/frontends/nxt200x.c drivers/media/dvb/frontends/or51132.c drivers/media/dvb/frontends/or51211.c drivers/media/dvb/frontends/or51211.h drivers/media/dvb/frontends/sp8870.c drivers/media/dvb/frontends/sp8870.h drivers/media/dvb/frontends/sp887x.c drivers/media/dvb/frontends/sp887x.h drivers/media/dvb/frontends/tda10048.c drivers/media/dvb/frontends/tda1004x.c drivers/media/dvb/frontends/tda1004x.h drivers/media/dvb/frontends/tdhd1.h drivers/media/dvb/pluto2/pluto2.c drivers/media/dvb/siano/smscoreapi.c drivers/media/dvb/siano/smsusb.c drivers/media/dvb/ttpci/av7110.c drivers/media/dvb/ttpci/budget-av.c drivers/media/dvb/ttpci/budget-ci.c drivers/media/dvb/ttpci/budget.c drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c drivers/media/dvb/ttusb-dec/ttusb_dec.c drivers/media/video/bt8xx/bttv-cards.c drivers/media/video/cpia2/cpia2_core.c drivers/media/video/cx18/cx18-av-firmware.c drivers/media/video/cx18/cx18-firmware.c drivers/media/video/cx23885/cx23885-417.c drivers/media/video/cx25840/cx25840-firmware.c drivers/media/video/cx88/cx88-blackbird.c drivers/media/video/dabusb.c drivers/media/video/ivtv/ivtv-firmware.c drivers/media/video/pvrusb2/pvrusb2-hdw.c drivers/media/video/s2255drv.c drivers/media/video/saa7134/saa7134-dvb.c drivers/net/cassini.c drivers/net/cxgb3/cxgb3_main.c drivers/net/irda/irda-usb.c drivers/net/myri10ge/myri10ge.c drivers/net/netx-eth.c drivers/net/spider_net.c drivers/net/tokenring/smctr.c drivers/net/tokenring/tms380tr.c drivers/net/usb/kaweth.c drivers/net/wireless/atmel.c drivers/net/wireless/b43/main.c drivers/net/wireless/b43legacy/main.c drivers/net/wireless/ipw2100.c drivers/net/wireless/ipw2200.c drivers/net/wireless/iwlwifi/iwl-agn.c drivers/net/wireless/iwlwifi/iwl3945-base.c drivers/net/wireless/libertas/if_cs.c drivers/net/wireless/libertas/if_sdio.c drivers/net/wireless/libertas/if_usb.c drivers/net/wireless/libertas_tf/if_usb.c drivers/net/wireless/orinoco.c drivers/net/wireless/p54/p54pci.c drivers/net/wireless/p54/p54usb.c drivers/net/wireless/prism54/islpci_dev.c drivers/net/wireless/rt2x00/rt2x00firmware.c drivers/net/wireless/zd1201.c drivers/net/wireless/zd1211rw/zd_usb.c drivers/pcmcia/ds.c drivers/scsi/aic94xx/aic94xx_init.c drivers/scsi/aic94xx/aic94xx_seq.c drivers/scsi/ipr.c drivers/scsi/libsas/sas_scsi_host.c drivers/scsi/qla2xxx/qla_gbl.h drivers/scsi/qla2xxx/qla_init.c drivers/scsi/qla2xxx/qla_os.c drivers/serial/icom.c drivers/serial/ucc_uart.c drivers/staging/at76_usb/at76_usb.c drivers/staging/go7007/go7007-driver.c drivers/staging/go7007/go7007-fw.c drivers/staging/slicoss/README drivers/usb/atm/cxacru.c drivers/usb/atm/speedtch.c drivers/usb/atm/ueagle-atm.c drivers/usb/misc/emi26.c drivers/usb/misc/emi62.c drivers/usb/misc/isight_firmware.c drivers/usb/serial/io_ti.c drivers/usb/serial/ti_usb_3410_5052.c drivers/uwb/i1480/dfu/i1480-dfu.h drivers/uwb/i1480/dfu/mac.c drivers/uwb/i1480/dfu/phy.c drivers/video/metronomefb.c include/linux/firmware.h include/linux/ihex.h samples/firmware_class/firmware_sample_driver.c sound/drivers/vx/vx_hwdep.c sound/isa/sb/sb16_csp.c sound/isa/wavefront/wavefront_fx.c sound/isa/wavefront/wavefront_synth.c sound/pci/echoaudio/echoaudio.c sound/pci/emu10k1/emu10k1_main.c sound/pci/korg1212/korg1212.c sound/pci/maestro3.c sound/pci/mixart/mixart_hwdep.c sound/pci/pcxhr/pcxhr_hwdep.c sound/pci/riptide/riptide.c sound/pci/rme9652/hdsp.c sound/pci/ymfpci/ymfpci_main.c sound/sh/aica.c sound/sound_firmware.c 2. Figure out whether the request_firmware matches in it are to be trivially accepted (documentation of request_firmware machinery, naming maintainers), and if so, submit patterns for deblob-check to match them as non-blobs. 3. If it's not trivially acceptable, and if it is not direct call to request_firmware[_nowait], try to find out whether there are any other patterns we should be monitoring for functions that take firmware names as arguments, and submit patterns for deblob-check to match them as blobs. 4. Otherwise, if it's a call to a function that takes a firmware name as argument, try to figure out the names of the firmware files that could be used at that point. Once you have the names, try to find out whether the firmwares in question are Free or non-Free. Odds are that, if it's not in Linux-libre, it's non-Free, but there might be cases of external Free firmware, so we'd be better at least having a look. 5. If you find names of Free firmware, please submit patterns for deblob-check to match the corresponding calls as non-blobs. 6. If you find names of non-Free firmware, please submit patterns for deblob-check to match its name as a blob. Also, please mention that the corresponding call ought to be changed to report_firmware[_nowait](). If you feel adventurous, please go ahead and post changes for deblob-2.6.28 as well, to remove the MODULE_FIRMWARE line (say, match the MODULE_FIRMWARE line as a match too) and any other occurrences of the firmware name, removing also any documentation that refers to that blob, how to obtain it, etc. Thanks in advance for your help. I'll start working on this myself tonight or so. We should probably figure out some way to coordinate. Using the list or a wiki might work, but it might also be too slow. How about we coordinate on #linux-libre on irc.freenode.net? -- Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/ You must be the change you wish to see in the world. -- Gandhi Be Free! -- http://FSFLA.org/ FSF Latin America board member Free Software Evangelist Red Hat Brazil Compiler Engineer _______________________________________________ linux-libre mailing list [email protected] http://www.fsfla.org/cgi-bin/mailman/listinfo/linux-libre
