All of lore.kernel.org
 help / color / mirror / Atom feed
* Linux 2.5.64-ac4
@ 2003-03-14 15:09 Alan Cox
  2003-03-14 15:31 ` 2.5.64-ac4: mpparse.c doesn't compile Adrian Bunk
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Alan Cox @ 2003-03-14 15:09 UTC (permalink / raw)
  To: linux-kernel

Linux 2.5.64-ac4
o	Fix compile error in ide-default		(Maciej Soltysiak)
o	Fix ide-default panic case			(Osamu Tomita)
o	Remove seperation of PCI bus from I2O layer	(me)
o	Fix i2o_proc stack abuse			(Joern Engel)
o	Fix memory leak in ixj driver			(Oleg Drokin)
o	Fix memory leak in emu10k1			(Oleg Drokin)
o	Fix memory leak in cpqfc			(Oleg Drokin)
o	Fix memory leak in specialix serial		(Oleg Drokin)
o	Fix memory leak in kobil driver			(Oleg Drokin)
o	Fix memory leak in clone_thread			(Andi Kleen)
o	Fix pbus_size_mem mis-estimation		(Ivan Kokshaysky)
o	Fix ide-cd queue cleanup			(Alexander Atanasov)
o	Fix cmd640 deadlocks				(Alexander Atanasov)
o	Documentation updates				(Steven Cole)
o	Fix docbook reference to file now gone		(Rusty Lynch)
o	Mass extermination of __NO_VERSION__		(Adrian Bunk)
o	Fix incorrect intel PCI ident in 2.5		(me)
	|Noted by Adrian Bunk
o	Fix jiffies sign problems in aha152x		(Christoph Hellwig)
o	Fix jiffies sign problems in osst		(Christoph Hellwig)
o	v850 updates for NB85CE				(Miles Bader)
o	Fix 8012q memory leak				(Oleg Drokin)
o	Fix ircomm memory leak				(Oleg Drokin)
o	NCPfs mishandling of userspace access fix	(Oleg Drokin)
o	UFS memory leak fix				(Oleg Drokin)
o	Fix do_clock_nanosleep and other resulting	(Todd Mokros)
	timeout hangs
o	Bring oprofile back into line with 2.4		(John Levon)
o	i386 Kconfig typo fixes				(Andreas Mohr)
o	Remove some boot98 Makefile junk		(Osamu Tomita)
o	Update 98kbd driver				(Osamu Tomita)
o	Pull cmos clock handling into mach_ and add	(Osamu Tomita)
	PC9800 support
o	Add PC9800 serial support			(Osamu Tomita)
o	Move base PC resources into mach_ and add	(Osamu Tomita)
	PC9800 support
o	Extract some of the arch specific SMP bits	(Osamu Tomita)
	into mach_ for x86 and add PC9800
o	Fix pcmcia configuration register crash		(Pavel Roskin)
o	Extended attribute handling fix			(Tony Dziedzic)
o	Fix initialisation of i2o retry lock		(Randy Dunlap)
o	Pull timers into mach_ on x86 and add		(Osamu Tomita)
	PC9800 support
o	Add part of the PC9800 ide/hd support		(Osamu Tomita)
o	Update PC9800 core code				(Osamu Tomita)
o	Update PC9800 specific char drivers		(Osamu Tomita)
o	Fix -ac visws mach breakage			(Osamu Tomita)
o	Revert alpha inline change			(Ivan Kokshaysky)
o	Serial8250 warning fix				(Martin Bligh)
o	Fix ethtool lockup with unused interface on	(Jason Lunz)
	e100
o	Update random number generator drivers		(Jeff Garzik)

Linux 2.5.64-ac3
o	Bring core IDE code into sync with the latest	(me)
	2.4.21pre5-ac code base. The drivers are not
	quite current with it yet.

Linux 2.5.64-ac2
o	Fix missing ; in w9966 (#310)			(Frank Davies)
o	Fix missing ; in whiteheat (#314)		(Frank Davies)
o	Fix missing ; in cs46xx (#317)			(Frank Davies)
o	Fix double logical operator in ite_gpio (#321)	(Frank Davies)
o	Fix double logical opeator in advansys (#324)	(me)
o	Fix aha1542 setup to allow full config by	(Hanna Linder)
	setup options (#242)
o	Fix /proc bug in via ide handlers (#374)	(Faik Uygur)
o	Add #error for the mwave race (#185)		(me)
	| Fixing it needs rather more thought
o	Fix apic compile problem			(Adriank Bunk)
o	Fix mremap slab corruption			(Hugh Dickins)
o	Fix sysfs mount permissions			(Patrick Mochel)
o	v850 updates					(Miles Bader)
o	Update all the parport layer to new module	(Bob Miller)
	API's remove check region misuse etc
o	Updated gdth driver from Intel			(Achim Leubner)
o	Small ALi ide setup fixes			(Ivan Kokshaysky)
	| Basically mirror those applied to 2.4 before the 1563
	| support was added
o	Add kerneldoc for user space access		(Jon Foster)
o	Fix incorrect unregister for cciss		(Herbert Xu)
o	cciss hotplug crash fix				(Stephen Cameron)
o	Fix error in 3c501 comments			(Steven Cole)
o	More c99 intialisers 				(Art Haas)
o	Updated mwave driver (still broken in part)	(Paul Schroeder,
							 Wes Schreiner)
o	Fdomain scsi cleanups, fix host list walk etc	(Christoph Hellwig)
o	Qlogic pcmcia scsi update			(Christoph Hellwig)
	| Still needs shared IRQ fix from 2.4.21pre5-ac
o	Fix bracketing error in maestro oss driver	(John Levon)
o	Don't claim too many ports for rtc		(Rusty Lynch)
o	Fix broken checks in i810_audio			(John Levon)
	| Still wants 2.4.21pre5-ac ac97/i810 fixes pulling
o	Fix e1000 hung zerop copy transfer on 82544
o	Add new board to cciss driver			(Stephen Cameron)
o	Fix piix build with CONFIG_PROC_FS=n		(Randy Dunlap)
o	Fix kmod SIGCLD problem				(Stelian Pop)
o	Fix check_region use in ht6560b			(Christoph Hellwig)
o	Fix check/requests in ide-dma			(Christoph Hellwig)
o	Remove dead __NO_VERSION__ from ide		(Christoph Hellwig)
o	Add PC9800 sound driver for CS4232		(Osamu Tomita)
o	Add per mach support for APM (for PC9800)	(Osamu Tomita)
o	PC9800 has different PnP locations to		(Osamu Tomita)
	normal
o	Handle NMI using mach-* scheme			(Osamu Tomita)
o	Fix /proc on slc90e66,sis5513, siimage, 	(Faik Uygur)
	serverworks, sc1200, piix, pdc202xx_old,
	pdc202xx_new, htp366, htp34x, cs5520, 
	amd74xx, aec62xx
o	IRQ stacks are back				(Dave Hansen)
o	Update 3c527 to modern locking (untested)	(James Bottomley)
o	PC9800 FAT handling				(Osamu Tomita)
o	PC9800 partition table handling	(Kyoto University Microcomputer Club)
o	CPIA updates/fixes				(Duncan Haldane)
o	IRDA timer fix					(Jean Tourrilhes)
o	Fix locking in irda discover code		(Jean Tourrilhes)
o	IrLap dynamic window fixes			(Jean Tourrilhes)
o	irda-usb cleanup and fixes			(Jean Tourrilhes)
o	Zerocopy rx for SIR				(Jean Tourrilhes)
o	Fix IrNET refcounting and discovery hints	(Jean Tourrilhes)
o	Fix kernel command line documentation		(Pavel Machek)
o	Fix incorrect __init in mpu401			(Daniel Ritz)
o	Remove unused LINUX_VERSION_CODE from sym53c416	(Adrian Bunk)
o	Fix check_region/request_region for ALSA isa	(Marcus Alanen)
	opti92x/ad1848
o	Update depca driver to eisa/sysfs		(Marc Zyngier)
o	Depca compile fix				(me)
o	Fix serial core stuff, remove obsolete		(me)
	baud changes
o	Fix jiffies wrap check code for 64bit		(Andi Kleen)
o	PCI quirk typo fix				(Geert Uytterhoeven)
o	Fix console initcall on Alpha			(Marc Zyngier)
o	Fix missing return value in pci irq changes	(Andrew Morton)
O	Fix usb-serial warnings with gcc 3.2		(David Gibson)
o	Fix warning in ohci on pwoerbook		(David Gibson)
o	IA64 needs syscall returns to be long		(David Mosberger)
o	S/390 updates					(Martin Schwidefsky)

Linux 2.5.64-ac1
	Merge Linus 2.5.63
	Merge Linus 2.5.64
	Revert broken watchdog changes
	Restore half removed make rpm
o	Revert wrong -ac change to keyboard.c		(me)
o	Fix cpufreq compile				(Bob Miller)
o	Remove incorrect keyboard patch (#407)

Linux 2.5.62-ac1
	Merge Linus 2.5.62
o	UNEXPECTED_IO_APIC can be static		(Pavel Machek)
o	Update IPMI driver to version 18		(Corey Minyard)
o	Tons of spelling fixes				(Steven Cole)
o	FBdev updates					(James Simmons)
o	PC-9800 update					(Osamu Tomita)
o	Remove dead scripts				(Brian Gerst)
o	v850 updates					(Miles Bader)
o	Update 3c523 to new MCA api (untested)		(James Bottomley)
o	Toshiba keyboard workaround			(Pavel Machek)
o	Fix mremap file name in comments		(Paul Larson)
o	Firestream typo fixes				(Maciej Soltysiak)
o	Backport trident reset fix from 2.4		(Muli Ben-Yehuda)
o	Morse code panics are back!			(Tomas Szepe)
o	Fix aicasm build				(Bob Tracy)
o	Fixes for 700/710 drivers			(Rolf Eike Beer)
o	Spelling fixes					(Rolf Eike Beer)
o	Optimise CRC32					(Joakim Tjernlund)
o	Next batch of v850 updates			(Miles Bader)
o	Takayoshi Kochi has moved email			(Takayoshi Kochi)
o	SunRPC race fix					(Trond Myklebust)
o	Refix addr/port naming confusion in IDE iops	(me)
o	Forward port VIA APIC handling quirks		(me)
o	Forward port ALi magick quirk flag handler	(me)
	| Needs bt848 etc to acquire the fix too
o	Forward port IDE bases fix			(me)
o	Forward port pci irq search for legacy IDE	(me)

Linux 2.5.61-ac1
	Merge Linus 2.5.61
o	Fix aic7xxx makefile				(Sam Ravnborg)
o	Fix ieee1394 build on Alpha			(Ben Collins)
o	Fix isdn_net build with X.25			(Adriank Bunk)
o	Typo fix					(Steven Bosscher)
o	A pile of other typo fixes			(Steven Cole)
o	C99 initializers				(Art Haas)
o	dasd typo fix					(Maciej Soltysiak)
o	Remove an unused variable in sunrpc		(Robert Love)
o	Remove duplicate different BSD partition names	(Andries Brouwer)
o	PPC plural fix					(Steven Cole)
o	EISA driver class patches			(Marc Zyngier)
o	VIA Rhine updates				(Roger Luethi)
o	Further ppa scsi fix				(John Kim)
o	Kill unused __beep				(Hugh Dickins)
o	Merge visws support 				(Andrey Panin)
	| Some collisions with pc9800 but should be ok
o	Limits for upward growing stacks		(Matthew Wilcox)
o	ucLinux updates					(Greg Ungerer)
o	68328 frame buffer updates			(Greg Ungerer)
o	Merge ucLinux H8300 support			(Yoshinori Sato)
o	Fix aironet compile				(Ookhoi)
o	Fix DMA mask on OSS trident driver		(Ivan Kokshaysky)
o	Kill some old 2.4 glue code in DRM		(John Kim)
o	Fix compile of old "hd.c" driver		(Paul Gortmaker)
o	Add experimental BOCHS virtualisation		(Kevin Lawton)
o	Clean up intermezzo driver			(Adrian Bunk)
o	Clean up rio use of compatmac			(Adrian Bunk)
o	Remove 2.0 ifdefs from ipchains code		(Adrian Bunk)
o	Remove old junk from efs 			(Adrian Bunk)
o	Remove old 2.0/2.2 junk from media/video	(Adrian Bunk)
o	Remove unused variable in ali-ircc		(Adrian Bunk)
o	Remove 2.0 ifdefs from network drivers		(Adrian Bunk)
o	Clean up uglies in inia100			(Adrian Bunk)
o	Clean up uglies in i91u scsi 			(Adrian Bunk)
o	Clean up wan drivers 2.0/2.2 code		(Adrian Bunk)
o	Restore ontrack remap support			(Jim Houston)
	| I'd really like to see this get turned into device mapper..
o	Forward port emu10k1 driver to 2.5		(Rui Souza)
o	Fix boot on EPOX 4BEA-R and friends		(Alexandar Achenbach)
o	Switch alpha cia code to static inline		(Matt Reppert)
o	Fix pcmcia scsi compile breakages		(Mike Anderson)
o	EHCI workarounds				(David Brownell)

Linux 2.5.60-ac1 (not published)
	Includes Linus BK snapshot
	Merge relevant pieces from old -ac		(me)
	| Dropped visws and stuff thats been redone
	| also dropped out IRQ stacks (port is tricky!)
o	Fix build of cciss driver			(me)
o	Fix build of 3036 tv tuner			(me)
o	Remove i2o_lan					(me)
o	Fix i2o_scsi					(Randy Dunlap)
o	Fix iph5526 scsi changes (not fixed DMA)	(me)
o	Make starfire compile				(me)
o	Make mca-legacy warn if used			(me)
o	Make sim710 build with EISA			(me)
o	Make ultrastor compile				(me)
o	Make aha152x/aha154x build			(Randy Dunlap)
o	Fix aha154x/mca bits				(me)
o	Fix fd_mcs build				(me)
o	Fix NCR53c406a.c				(me)
o	Fix sym53c416.c					(me)
o	Fix ibmmca compile				(me)
o	Fix ppa compile					(me)
o	Fix NCR539x compile				(John Kim)
o	Fix mca_53c9x compile				(me)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* 2.5.64-ac4: mpparse.c doesn't compile
  2003-03-14 15:09 Linux 2.5.64-ac4 Alan Cox
@ 2003-03-14 15:31 ` Adrian Bunk
  2003-03-14 15:32   ` Alan Cox
  2003-03-14 16:53 ` Linux 2.5.64-ac4 Morten Helgesen
  2003-03-14 17:28 ` Top stack (l)users for 2.5.64-ac4 Joern Engel
  2 siblings, 1 reply; 10+ messages in thread
From: Adrian Bunk @ 2003-03-14 15:31 UTC (permalink / raw)
  To: Alan Cox; +Cc: linux-kernel, Osamu Tomita

<--  snip  -->

...
  gcc -Wp,-MD,arch/i386/kernel/.mpparse.o.d -D__KERNEL__ -Iinclude -Wall 
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common 
-pipe -mpreferred-stack-boundary=2 -march=k6 
-Iinclude/asm-i386/mach-default -nostdinc -iwithprefix include    
-DKBUILD_BASENAME=mpparse -DKBUILD_MODNAME=mpparse -c -o 
arch/i386/kernel/mpparse.o arch/i386/kernel/mpparse.c
arch/i386/kernel/mpparse.c: In function `get_smp_config':
arch/i386/kernel/mpparse.c:658: `pc98' undeclared (first use in this function)
arch/i386/kernel/mpparse.c:658: (Each undeclared identifier is reported only once
arch/i386/kernel/mpparse.c:658: for each function it appears in.)
make[1]: *** [arch/i386/kernel/mpparse.o] Error 1

<--  snip  -->


cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.5.64-ac4: mpparse.c doesn't compile
  2003-03-14 15:31 ` 2.5.64-ac4: mpparse.c doesn't compile Adrian Bunk
@ 2003-03-14 15:32   ` Alan Cox
  0 siblings, 0 replies; 10+ messages in thread
From: Alan Cox @ 2003-03-14 15:32 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: Alan Cox, linux-kernel, Osamu Tomita

> arch/i386/kernel/mpparse.c: In function `get_smp_config':
> arch/i386/kernel/mpparse.c:658: `pc98' undeclared (first use in this function)
> arch/i386/kernel/mpparse.c:658: (Each undeclared identifier is reported only once
> arch/i386/kernel/mpparse.c:658: for each function it appears in.)
> make[1]: *** [arch/i386/kernel/mpparse.o] Error 1

For the moment build uniprocessor or make that "pc98" => 0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Linux 2.5.64-ac4
  2003-03-14 15:09 Linux 2.5.64-ac4 Alan Cox
  2003-03-14 15:31 ` 2.5.64-ac4: mpparse.c doesn't compile Adrian Bunk
@ 2003-03-14 16:53 ` Morten Helgesen
  2003-03-14 18:34   ` Morten Helgesen
  2003-03-14 17:28 ` Top stack (l)users for 2.5.64-ac4 Joern Engel
  2 siblings, 1 reply; 10+ messages in thread
From: Morten Helgesen @ 2003-03-14 16:53 UTC (permalink / raw)
  To: Alan Cox; +Cc: linux-kernel

Hi Alan, 

On Fri, Mar 14, 2003 at 10:09:27AM -0500, Alan Cox wrote:
> Linux 2.5.64-ac4

it looks like someone changed the prototypes in includes/linux/fb.h 
without changing the actual functions ... 

-extern void cfb_fillrect(struct fb_info *info, struct fb_fillrect *rect);
-extern void cfb_copyarea(struct fb_info *info, struct fb_copyarea *area);
-extern void cfb_imageblit(struct fb_info *info, struct fb_image *image);
+extern void cfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
+extern void cfb_copyarea(struct fb_info *info, const struct fb_copyarea *area);
+extern void cfb_imageblit(struct fb_info *info, const struct fb_image *image);

drivers/video/cfbcopyarea.c:346: conflicting types for `cfb_copyarea'
include/linux/fb.h:459: previous declaration of `cfb_copyarea'
make[3]: *** [drivers/video/cfbcopyarea.o] Error 1
make[2]: *** [drivers/video] Error 2

== Morten

-- 

"Livet er ikke for nybegynnere" - sitat fra en klok person.

Morten Helgesen 
UNIX System Administrator & C Developer 
Nextframe AS
morten.helgesen@nextframe.net / 93445641
http://www.nextframe.net

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Top stack (l)users for 2.5.64-ac4
  2003-03-14 15:09 Linux 2.5.64-ac4 Alan Cox
  2003-03-14 15:31 ` 2.5.64-ac4: mpparse.c doesn't compile Adrian Bunk
  2003-03-14 16:53 ` Linux 2.5.64-ac4 Morten Helgesen
@ 2003-03-14 17:28 ` Joern Engel
  2003-03-14 17:41   ` Jens Axboe
  2003-03-14 19:09   ` [patch] v4l: v4l1-compat update Gerd Knorr
  2 siblings, 2 replies; 10+ messages in thread
From: Joern Engel @ 2003-03-14 17:28 UTC (permalink / raw)
  To: Alan Cox; +Cc: linux-kernel

Hi!

47 functions using >=1k of kernel stack on i386.

One improvement over 2.5.64, i2o_proc_* is gone. 4 down, 47 to go. :)

0xc02063f6 presto_get_fileid:                            sub    $0x1168,%esp
0xc0204fc6 presto_copy_kml_tail:                         sub    $0x101c,%esp
0xc07b92c8 isp2x00_make_portdb:                          sub    $0xc38,%esp
0xc0879c05 cdromread:                                    sub    $0xa84,%esp
0xc0766a08 ide_unregister:                               sub    $0x978,%esp
0xc07240db v4l_compat_translate_ioctl:                   sub    $0x924,%esp
0xc0b4e2e6 snd_emu10k1_fx8010_ioctl:                     sub    $0x82c,%esp
0xc06d3396 writerids:                                    sub    $0x828,%esp
0xc06d31e6 readrids:                                     sub    $0x810,%esp
0xc0af06ab snd_cmipci_ac3_silence:                       sub    $0x7b0,%esp
0xc0af0146 snd_cmipci_ac3_copy:                          sub    $0x7b0,%esp
0xc0889206 amd_flash_probe:                              sub    $0x708,%esp
0xc01055ae huft_build:                                   sub    $0x5ac,%esp
0xc01071ae huft_build:                                   sub    $0x5ac,%esp
0xc02a96ab dohash:                                       sub    $0x58c,%esp
0xc0aa93ab snd_pcm_oss_change_params:                    sub    $0x584,%esp
0xc0108016 inflate_dynamic:                              sub    $0x540,%esp
0xc0557fc6 ida_ioctl:                                    sub    $0x540,%esp
0xc01063c6 inflate_dynamic:                              sub    $0x524,%esp
0xc0c98e36 device_new_if:                                sub    $0x51c,%esp
0xc01fc8b6 presto_ioctl:                                 sub    $0x500,%esp
0xc0b49f8a snd_emu10k1_add_controls:                     sub    $0x4e4,%esp
0xc0b68556 snd_trident_mixer:                            sub    $0x4a8,%esp
0xc01a8d93 elf_core_dump:                                sub    $0x4a4,%esp
0xc077b002 ide_config:                                   sub    $0x494,%esp
0xc0107e80 inflate_fixed:                                sub    $0x490,%esp
0xc0c871bb br_ioctl_device:                              sub    $0x490,%esp
0xc0106230 inflate_fixed:                                sub    $0x490,%esp
0xc0450482 parport_config:                               sub    $0x480,%esp
0xc09a9116 sw_connect:                                   sub    $0x480,%esp
0xc09af3e1 uinput_alloc_device:                          sub    $0x480,%esp
0xc040a77e sha512_transform:                             sub    $0x458,%esp
0xc0d84296 sctp_hash_digest:                             sub    $0x458,%esp
0xc0d19040 gss_pipe_downcall:                            sub    $0x440,%esp
0xc036cb20 ciGetLeafPrefixKey:                           sub    $0x424,%esp
0xc098f6f6 emi26_load_firmware:                          sub    $0x418,%esp
0xc06b4d66 wv_hw_reset:                                  sub    $0x410,%esp
0xc12f2f82 root_nfs_name:                                sub    $0x408,%esp
0xc02eedc7 jffs2_rtime_decompress:                       sub    $0x404,%esp
0xc02eecd9 jffs2_rtime_compress:                         sub    $0x404,%esp
0xc0678431 hex_dump:                                     sub    $0x400,%esp
0xc09dbe1c dtl1_config:                                  sub    $0x400,%esp
0xc09dd572 bt3c_config:                                  sub    $0x400,%esp
0xc03f90a5 befs_debug:                                   sub    $0x400,%esp
0xc03f905e befs_warning:                                 sub    $0x400,%esp
0xc03f900e befs_error:                                   sub    $0x400,%esp
0xc09e10c2 btuart_config:                                sub    $0x400,%esp


Jörn

-- 
"Error protection by error detection and correction."
-- from a university class

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Top stack (l)users for 2.5.64-ac4
  2003-03-14 17:28 ` Top stack (l)users for 2.5.64-ac4 Joern Engel
@ 2003-03-14 17:41   ` Jens Axboe
  2003-03-14 17:59     ` Randy.Dunlap
  2003-03-14 19:09   ` [patch] v4l: v4l1-compat update Gerd Knorr
  1 sibling, 1 reply; 10+ messages in thread
From: Jens Axboe @ 2003-03-14 17:41 UTC (permalink / raw)
  To: Joern Engel; +Cc: Alan Cox, linux-kernel

On Fri, Mar 14 2003, Joern Engel wrote:
> Hi!
> 
> 47 functions using >=1k of kernel stack on i386.
> 
> One improvement over 2.5.64, i2o_proc_* is gone. 4 down, 47 to go. :)
> 
> 0xc02063f6 presto_get_fileid:                            sub    $0x1168,%esp
> 0xc0204fc6 presto_copy_kml_tail:                         sub    $0x101c,%esp
> 0xc07b92c8 isp2x00_make_portdb:                          sub    $0xc38,%esp
> 0xc0879c05 cdromread:                                    sub    $0xa84,%esp

which function is this (cdromread)?

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Top stack (l)users for 2.5.64-ac4
  2003-03-14 17:41   ` Jens Axboe
@ 2003-03-14 17:59     ` Randy.Dunlap
  2003-03-14 18:03       ` Jens Axboe
  0 siblings, 1 reply; 10+ messages in thread
From: Randy.Dunlap @ 2003-03-14 17:59 UTC (permalink / raw)
  To: Jens Axboe; +Cc: joern, alan, linux-kernel

On Fri, 14 Mar 2003 18:41:54 +0100 Jens Axboe <axboe@suse.de> wrote:

| On Fri, Mar 14 2003, Joern Engel wrote:
| > Hi!
| > 
| > 47 functions using >=1k of kernel stack on i386.
| > 
| > One improvement over 2.5.64, i2o_proc_* is gone. 4 down, 47 to go. :)
| > 
| > 0xc02063f6 presto_get_fileid:                            sub    $0x1168,%esp
| > 0xc0204fc6 presto_copy_kml_tail:                         sub    $0x101c,%esp
| > 0xc07b92c8 isp2x00_make_portdb:                          sub    $0xc38,%esp
| > 0xc0879c05 cdromread:                                    sub    $0xa84,%esp
| 
| which function is this (cdromread)?

must be drivers/cdrom/optcd.c::cdromread() (line 1601 in 2.5.64),
due to
	char buf[CD_FRAMESIZE_RAWER];
and
#define CD_FRAMESIZE_RAWER 2646 /* The maximum possible returned bytes */ 
in include/linux/cdrom.h.

--
~Randy

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Top stack (l)users for 2.5.64-ac4
  2003-03-14 17:59     ` Randy.Dunlap
@ 2003-03-14 18:03       ` Jens Axboe
  0 siblings, 0 replies; 10+ messages in thread
From: Jens Axboe @ 2003-03-14 18:03 UTC (permalink / raw)
  To: Randy.Dunlap; +Cc: joern, alan, linux-kernel

On Fri, Mar 14 2003, Randy.Dunlap wrote:
> On Fri, 14 Mar 2003 18:41:54 +0100 Jens Axboe <axboe@suse.de> wrote:
> 
> | On Fri, Mar 14 2003, Joern Engel wrote:
> | > Hi!
> | > 
> | > 47 functions using >=1k of kernel stack on i386.
> | > 
> | > One improvement over 2.5.64, i2o_proc_* is gone. 4 down, 47 to go. :)
> | > 
> | > 0xc02063f6 presto_get_fileid:                            sub    $0x1168,%esp
> | > 0xc0204fc6 presto_copy_kml_tail:                         sub    $0x101c,%esp
> | > 0xc07b92c8 isp2x00_make_portdb:                          sub    $0xc38,%esp
> | > 0xc0879c05 cdromread:                                    sub    $0xa84,%esp
> | 
> | which function is this (cdromread)?
> 
> must be drivers/cdrom/optcd.c::cdromread() (line 1601 in 2.5.64),
> due to
> 	char buf[CD_FRAMESIZE_RAWER];
> and
> #define CD_FRAMESIZE_RAWER 2646 /* The maximum possible returned bytes */ 
> in include/linux/cdrom.h.

Ahh, ok so a lot less interesting. Also why I didn't catch it here. I'd
be inclining to just making buf global there.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re:  Linux 2.5.64-ac4
  2003-03-14 16:53 ` Linux 2.5.64-ac4 Morten Helgesen
@ 2003-03-14 18:34   ` Morten Helgesen
  0 siblings, 0 replies; 10+ messages in thread
From: Morten Helgesen @ 2003-03-14 18:34 UTC (permalink / raw)
  To: alan; +Cc: linux-kernel

On Fri, Mar 14, 2003 at 05:53:17PM +0100, Morten Helgesen wrote:
> Hi Alan, 
> 
> On Fri, Mar 14, 2003 at 10:09:27AM -0500, Alan Cox wrote:
> > Linux 2.5.64-ac4
> 
> it looks like someone changed the prototypes in includes/linux/fb.h 
> without changing the actual functions ... 

s/includes/include/ ... doh

> 
> -extern void cfb_fillrect(struct fb_info *info, struct fb_fillrect *rect);
> -extern void cfb_copyarea(struct fb_info *info, struct fb_copyarea *area);
> -extern void cfb_imageblit(struct fb_info *info, struct fb_image *image);
> +extern void cfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
> +extern void cfb_copyarea(struct fb_info *info, const struct fb_copyarea *area);
> +extern void cfb_imageblit(struct fb_info *info, const struct fb_image *image);
> 
> drivers/video/cfbcopyarea.c:346: conflicting types for `cfb_copyarea'
> include/linux/fb.h:459: previous declaration of `cfb_copyarea'
> make[3]: *** [drivers/video/cfbcopyarea.o] Error 1
> make[2]: *** [drivers/video] Error 2
> 
> == Morten
> 
> -- 
> 
> "Livet er ikke for nybegynnere" - sitat fra en klok person.
> 
> Morten Helgesen 
> UNIX System Administrator & C Developer 
> Nextframe AS
> morten.helgesen@nextframe.net / 93445641
> http://www.nextframe.net
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 

"Livet er ikke for nybegynnere" - sitat fra en klok person.

Morten Helgesen 
UNIX System Administrator & C Developer 
Nextframe AS
morten.helgesen@nextframe.net / 93445641
http://www.nextframe.net

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [patch] v4l: v4l1-compat update
  2003-03-14 17:28 ` Top stack (l)users for 2.5.64-ac4 Joern Engel
  2003-03-14 17:41   ` Jens Axboe
@ 2003-03-14 19:09   ` Gerd Knorr
  1 sibling, 0 replies; 10+ messages in thread
From: Gerd Knorr @ 2003-03-14 19:09 UTC (permalink / raw)
  To: Linus Torvalds, Joern Engel, Kernel List

Joern Engel <joern@wohnheim.fh-wedel.de> writes:

> Hi!
> 
> 47 functions using >=1k of kernel stack on i386.
> 
> 0xc07240db v4l_compat_translate_ioctl:                   sub    $0x924,%esp

Patch to cut that down below.

  Gerd

==============================[ cut here ]==============================

This patch updates the v4l1-compat module.  Changes:
 * use f_op->poll() instead of do_select()
 * reduce stack usage of the v4l1_compat_translate_ioctl function.
 * misc fixes here and there.

--- linux-2.5.64/drivers/media/video/v4l1-compat.c	2003-03-13 10:10:12.000000000 +0100
+++ linux/drivers/media/video/v4l1-compat.c	2003-03-13 13:30:40.000000000 +0100
@@ -145,16 +145,16 @@
 	[VIDEO_PALETTE_YUV422P] = V4L2_PIX_FMT_YUV422P,
 };
 
-static int
-palette_to_pixelformat(int palette)
+static unsigned int
+palette_to_pixelformat(unsigned int palette)
 {
-	if (palette < sizeof(palette2pixelformat)/sizeof(int))
+	if (palette < ARRAY_SIZE(palette2pixelformat))
 		return palette2pixelformat[palette];
 	else
 		return 0;
 }
 
-static int
+static unsigned int
 pixelformat_to_palette(int pixelformat)
 {
 	int	palette = 0;
@@ -199,66 +199,41 @@
 	return palette;
 }
 
-/*  Do an 'in' (wait for input) select on a single file descriptor  */
-/*  This stuff plaigarized from linux/fs/select.c     */
-#define __FD_IN(fds, n)	(fds->in + n)
-#define BIT(i)		(1UL << ((i)&(__NFDBITS-1)))
-#define SET(i,m)	(*(m) |= (i))
-extern int do_select(int n, fd_set_bits *fds, long *timeout);
-
-
-static int
-simple_select(struct file *file)
+static int poll_one(struct file *file)
 {
-	fd_set_bits fds;
-	char *bits;
-	long timeout;
-	int i, fd, n, ret, size;
-
-	for (i = 0; i < current->files->max_fds; ++i)
-		if (file == current->files->fd[i])
-			break;
-	if (i == current->files->max_fds)
-		return -EINVAL;
-	fd = i;
-	n = fd + 1;
-
-	timeout = MAX_SCHEDULE_TIMEOUT;
-	/*
-	 * We need 6 bitmaps (in/out/ex for both incoming and outgoing),
-	 * since we used fdset we need to allocate memory in units of
-	 * long-words. 
-	 */
-	ret = -ENOMEM;
-	size = FDS_BYTES(n);
-	bits = kmalloc(6 * size, GFP_KERNEL);
-	if (!bits)
-		goto out_nofds;
-	fds.in      = (unsigned long *)  bits;
-	fds.out     = (unsigned long *) (bits +   size);
-	fds.ex      = (unsigned long *) (bits + 2*size);
-	fds.res_in  = (unsigned long *) (bits + 3*size);
-	fds.res_out = (unsigned long *) (bits + 4*size);
-	fds.res_ex  = (unsigned long *) (bits + 5*size);
-
-	/*  All zero except our one file descriptor bit, for input  */
-	memset(bits, 0, 6 * size);
-	SET(BIT(fd), __FD_IN((&fds), fd / __NFDBITS));
-
-	ret = do_select(n, &fds, &timeout);
-
-	if (ret < 0)
-		goto out;
-	if (!ret) {
-		ret = -ERESTARTNOHAND;
-		if (signal_pending(current))
-			goto out;
-		ret = 0;
-	}
-out:
-	kfree(bits);
-out_nofds:
-	return ret;
+	int retval = 1;
+	poll_table *table;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,48)
+	poll_table wait_table;
+
+	poll_initwait(&wait_table);
+	table = &wait_table;
+#else
+	struct poll_wqueues pwq;
+
+	poll_initwait(&pwq);
+	table = &pwq.pt;
+#endif
+	for (;;) {
+		int mask;
+		set_current_state(TASK_INTERRUPTIBLE);
+		mask = file->f_op->poll(file, table);
+		if (mask & POLLIN)
+			break;
+		table = NULL;
+		if (signal_pending(current)) {
+			retval = -ERESTARTSYS;
+			break;
+		}
+		schedule();
+	}
+	current->state = TASK_RUNNING;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,48)
+	poll_freewait(&wait_table);
+#else
+	poll_freewait(&pwq);
+#endif
+	return retval;
 }
 
 static int count_inputs(struct inode         *inode,
@@ -317,26 +292,36 @@
 			   void			*arg,
 			   v4l2_kioctl          drv)
 {
-	int	             err = -ENOIOCTLCMD;
+	struct v4l2_capability  *cap2 = NULL;
+	struct v4l2_format	*fmt2 = NULL;
 
-	switch (cmd)
-	{
+	struct v4l2_framebuffer fbuf2;
+	struct v4l2_input	input2;
+	struct v4l2_tuner	tun2;
+	struct v4l2_standard	std2;
+	struct v4l2_frequency   freq2;
+	struct v4l2_audio	aud2;
+	struct v4l2_queryctrl	qctrl2;
+	struct v4l2_buffer	buf2;
+	v4l2_std_id    		sid;
+	int i, err = 0;
+
+	switch (cmd) {
 	case VIDIOCGCAP:	/* capability */
 	{
 		struct video_capability *cap = arg;
-		struct v4l2_capability cap2;
-		struct v4l2_framebuffer fbuf2;
-		
+
+		cap2 = kmalloc(sizeof(*cap2),GFP_KERNEL);
 		memset(cap, 0, sizeof(*cap));
-		memset(&cap2, 0, sizeof(cap2));
+		memset(cap2, 0, sizeof(*cap2));
 		memset(&fbuf2, 0, sizeof(fbuf2));
 
-		err = drv(inode, file, VIDIOC_QUERYCAP, &cap2);
+		err = drv(inode, file, VIDIOC_QUERYCAP, cap2);
 		if (err < 0) {
 			dprintk("VIDIOCGCAP / VIDIOC_QUERYCAP: %d\n",err);
 			break;
 		}
-		if (cap2.capabilities & V4L2_CAP_VIDEO_OVERLAY) {
+		if (cap2->capabilities & V4L2_CAP_VIDEO_OVERLAY) {
 			err = drv(inode, file, VIDIOC_G_FBUF, &fbuf2);
 			if (err < 0) {
 				dprintk("VIDIOCGCAP / VIDIOC_G_FBUF: %d\n",err);
@@ -345,16 +330,16 @@
 			err = 0;
 		}
 
-		memcpy(cap->name, cap2.card, 
-		       min(sizeof(cap->name), sizeof(cap2.card)));
+		memcpy(cap->name, cap2->card, 
+		       min(sizeof(cap->name), sizeof(cap2->card)));
 		cap->name[sizeof(cap->name) - 1] = 0;
-		if (cap2.capabilities & V4L2_CAP_VIDEO_CAPTURE)
+		if (cap2->capabilities & V4L2_CAP_VIDEO_CAPTURE)
 			cap->type |= VID_TYPE_CAPTURE;
-		if (cap2.capabilities & V4L2_CAP_TUNER)
+		if (cap2->capabilities & V4L2_CAP_TUNER)
 			cap->type |= VID_TYPE_TUNER;
-		if (cap2.capabilities & V4L2_CAP_VBI_CAPTURE)
+		if (cap2->capabilities & V4L2_CAP_VBI_CAPTURE)
 			cap->type |= VID_TYPE_TELETEXT;
-		if (cap2.capabilities & V4L2_CAP_VIDEO_OVERLAY)
+		if (cap2->capabilities & V4L2_CAP_VIDEO_OVERLAY)
 			cap->type |= VID_TYPE_OVERLAY;
 		if (fbuf2.capability & V4L2_FBUF_CAP_LIST_CLIPPING)
 			cap->type |= VID_TYPE_CLIPPING;
@@ -370,7 +355,6 @@
 	case VIDIOCGFBUF: /*  get frame buffer  */
 	{
 		struct video_buffer	*buffer = arg;
-		struct v4l2_framebuffer	fbuf2;
 
 		err = drv(inode, file, VIDIOC_G_FBUF, &fbuf2);
 		if (err < 0) {
@@ -412,7 +396,6 @@
 	case VIDIOCSFBUF: /*  set frame buffer  */
 	{
 		struct video_buffer	*buffer = arg;
-		struct v4l2_framebuffer	fbuf2;
 
 		memset(&fbuf2, 0, sizeof(fbuf2));
 		fbuf2.base       = buffer->base;
@@ -444,36 +427,36 @@
 	case VIDIOCGWIN: /*  get window or capture dimensions  */
 	{
 		struct video_window	*win = arg;
-		struct v4l2_format	fmt2;
 
+		fmt2 = kmalloc(sizeof(*fmt2),GFP_KERNEL);
 		memset(win,0,sizeof(*win));
-		memset(&fmt2,0,sizeof(fmt2));
+		memset(fmt2,0,sizeof(*fmt2));
 
-		fmt2.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
-		err = drv(inode, file, VIDIOC_G_FMT, &fmt2);
+		fmt2->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+		err = drv(inode, file, VIDIOC_G_FMT, fmt2);
 		if (err < 0)
 			dprintk("VIDIOCGWIN / VIDIOC_G_WIN: %d\n",err);
 		if (err == 0) {
-			win->x         = fmt2.fmt.win.w.left;
-			win->y         = fmt2.fmt.win.w.top;
-			win->width     = fmt2.fmt.win.w.width;
-			win->height    = fmt2.fmt.win.w.height;
-			win->chromakey = fmt2.fmt.win.chromakey;
+			win->x         = fmt2->fmt.win.w.left;
+			win->y         = fmt2->fmt.win.w.top;
+			win->width     = fmt2->fmt.win.w.width;
+			win->height    = fmt2->fmt.win.w.height;
+			win->chromakey = fmt2->fmt.win.chromakey;
 			win->clips     = NULL;
 			win->clipcount = 0;
 			break;
 		}
 
-		fmt2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-		err = drv(inode, file, VIDIOC_G_FMT, &fmt2);
+		fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+		err = drv(inode, file, VIDIOC_G_FMT, fmt2);
 		if (err < 0) {
 			dprintk("VIDIOCGWIN / VIDIOC_G_FMT: %d\n",err);
 			break;
 		}
 		win->x         = 0;
 		win->y         = 0;
-		win->width     = fmt2.fmt.pix.width;
-		win->height    = fmt2.fmt.pix.height;
+		win->width     = fmt2->fmt.pix.width;
+		win->height    = fmt2->fmt.pix.height;
 		win->chromakey = 0;
 		win->clips     = NULL;
 		win->clipcount = 0;
@@ -482,37 +465,41 @@
 	case VIDIOCSWIN: /*  set window and/or capture dimensions  */
 	{
 		struct video_window	*win = arg;
-		struct v4l2_format	fmt2;
+		int err1,err2;
 
-		memset(&fmt2,0,sizeof(fmt2));
-		fmt2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-		err = drv(inode, file, VIDIOC_G_FMT, &fmt2);
-		if (err < 0)
+		fmt2 = kmalloc(sizeof(*fmt2),GFP_KERNEL);
+		memset(fmt2,0,sizeof(*fmt2));
+		fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+		err1 = drv(inode, file, VIDIOC_G_FMT, fmt2);
+		if (err1 < 0)
 			dprintk("VIDIOCSWIN / VIDIOC_G_FMT: %d\n",err);
-		if (err == 0) {
-			fmt2.fmt.pix.width  = win->width;
-			fmt2.fmt.pix.height = win->height;
-			fmt2.fmt.pix.field  = V4L2_FIELD_ANY;
-			err = drv(inode, file, VIDIOC_S_FMT, &fmt2);
+		if (err1 == 0) {
+			fmt2->fmt.pix.width  = win->width;
+			fmt2->fmt.pix.height = win->height;
+			fmt2->fmt.pix.field  = V4L2_FIELD_ANY;
+			err = drv(inode, file, VIDIOC_S_FMT, fmt2);
 			if (err < 0)
 				dprintk("VIDIOCSWIN / VIDIOC_S_FMT #1: %d\n",
 					err);
-			win->width  = fmt2.fmt.pix.width;
-			win->height = fmt2.fmt.pix.height;
+			win->width  = fmt2->fmt.pix.width;
+			win->height = fmt2->fmt.pix.height;
 		}
 
-		memset(&fmt2,0,sizeof(fmt2));
-		fmt2.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
-		fmt2.fmt.win.w.left    = win->x;
-		fmt2.fmt.win.w.top     = win->y;
-		fmt2.fmt.win.w.width   = win->width;
-		fmt2.fmt.win.w.height  = win->height;
-		fmt2.fmt.win.chromakey = win->chromakey;
-		fmt2.fmt.win.clips     = (void *)win->clips;
-		fmt2.fmt.win.clipcount = win->clipcount;
-		err = drv(inode, file, VIDIOC_S_FMT, &fmt2);
-		if (err < 0)
+		memset(fmt2,0,sizeof(*fmt2));
+		fmt2->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+		fmt2->fmt.win.w.left    = win->x;
+		fmt2->fmt.win.w.top     = win->y;
+		fmt2->fmt.win.w.width   = win->width;
+		fmt2->fmt.win.w.height  = win->height;
+		fmt2->fmt.win.chromakey = win->chromakey;
+		fmt2->fmt.win.clips     = (void *)win->clips;
+		fmt2->fmt.win.clipcount = win->clipcount;
+		err2 = drv(inode, file, VIDIOC_S_FMT, fmt2);
+		if (err2 < 0)
 			dprintk("VIDIOCSWIN / VIDIOC_S_FMT #2: %d\n",err);
+
+		if (err1 != 0 && err2 != 0)
+			err = err1;
 		break;
 	}
 	case VIDIOCCAPTURE: /*  turn on/off preview  */
@@ -525,8 +512,6 @@
 	case VIDIOCGCHAN: /*  get input information  */
 	{
 		struct video_channel	*chan = arg;
-		struct v4l2_input	input2;
-		v4l2_std_id    		sid;
 
 		memset(&input2,0,sizeof(input2));
 		input2.index = chan->channel;
@@ -568,16 +553,32 @@
 	case VIDIOCSCHAN: /*  set input  */
 	{
 		struct video_channel *chan = arg;
-		
+
+		sid = 0;
 		err = drv(inode, file, VIDIOC_S_INPUT, &chan->channel);
 		if (err < 0)
 			dprintk("VIDIOCSCHAN / VIDIOC_S_INPUT: %d\n",err);
+		switch (chan->norm) {
+		case VIDEO_MODE_PAL:
+			sid = V4L2_STD_PAL;
+			break;
+		case VIDEO_MODE_NTSC:
+			sid = V4L2_STD_NTSC;
+			break;
+		case VIDEO_MODE_SECAM:
+			sid = V4L2_STD_SECAM;
+			break;
+		}
+		if (0 != sid) {
+			err = drv(inode, file, VIDIOC_S_STD, &sid);
+			if (err < 0)
+				dprintk("VIDIOCSCHAN / VIDIOC_S_STD: %d\n",err);
+		}
 		break;
 	}
 	case VIDIOCGPICT: /*  get tone controls & partial capture format  */
 	{
 		struct video_picture	*pict = arg;
-		struct v4l2_format	fmt2;
 
 		pict->brightness = get_v4l_control(inode, file,
 						   V4L2_CID_BRIGHTNESS,drv);
@@ -590,25 +591,24 @@
 		pict->whiteness = get_v4l_control(inode, file,
 						  V4L2_CID_WHITENESS, drv);
 
-		memset(&fmt2,0,sizeof(fmt2));
-		fmt2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-		err = drv(inode, file, VIDIOC_G_FMT, &fmt2);
+		fmt2 = kmalloc(sizeof(*fmt2),GFP_KERNEL);
+		memset(fmt2,0,sizeof(*fmt2));
+		fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+		err = drv(inode, file, VIDIOC_G_FMT, fmt2);
 		if (err < 0) {
 			dprintk("VIDIOCGPICT / VIDIOC_G_FMT: %d\n",err);
 			break;
 		}
 #if 0 /* FIXME */
-		pict->depth   = fmt2.fmt.pix.depth;
+		pict->depth   = fmt2->fmt.pix.depth;
 #endif
 		pict->palette = pixelformat_to_palette(
-			fmt2.fmt.pix.pixelformat);
+			fmt2->fmt.pix.pixelformat);
 		break;
 	}
 	case VIDIOCSPICT: /*  set tone controls & partial capture format  */
 	{
 		struct video_picture	*pict = arg;
-		struct v4l2_format	fmt2;
-		struct v4l2_framebuffer	fbuf2;
 
 		set_v4l_control(inode, file,
 				V4L2_CID_BRIGHTNESS, pict->brightness, drv);
@@ -621,16 +621,17 @@
 		set_v4l_control(inode, file,
 				V4L2_CID_WHITENESS, pict->whiteness, drv);
 
-		memset(&fmt2,0,sizeof(fmt2));
-		fmt2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-		err = drv(inode, file, VIDIOC_G_FMT, &fmt2);
+		fmt2 = kmalloc(sizeof(*fmt2),GFP_KERNEL);
+		memset(fmt2,0,sizeof(*fmt2));
+		fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+		err = drv(inode, file, VIDIOC_G_FMT, fmt2);
 		if (err < 0)
 			dprintk("VIDIOCSPICT / VIDIOC_G_FMT: %d\n",err);
-		if (fmt2.fmt.pix.pixelformat != 
+		if (fmt2->fmt.pix.pixelformat != 
 		    palette_to_pixelformat(pict->palette)) {
-			fmt2.fmt.pix.pixelformat = palette_to_pixelformat(
+			fmt2->fmt.pix.pixelformat = palette_to_pixelformat(
 				pict->palette);
-			err = drv(inode, file, VIDIOC_S_FMT, &fmt2);
+			err = drv(inode, file, VIDIOC_S_FMT, fmt2);
 			if (err < 0)
 				dprintk("VIDIOCSPICT / VIDIOC_S_FMT: %d\n",err);
 		}
@@ -652,8 +653,6 @@
 	case VIDIOCGTUNER: /*  get tuner information  */
 	{
 		struct video_tuner	*tun = arg;
-		struct v4l2_tuner	tun2;
-		v4l2_std_id    		sid;
 
 		memset(&tun2,0,sizeof(tun2));
 		err = drv(inode, file, VIDIOC_G_TUNER, &tun2);
@@ -669,6 +668,19 @@
 		tun->flags = 0;
 		tun->mode = VIDEO_MODE_AUTO;
 
+		for (i = 0; i < 64; i++) {
+			memset(&std2,0,sizeof(std2));
+			std2.index = i;
+			if (0 != drv(inode, file, VIDIOC_ENUMSTD, &std2))
+				break;
+			if (std2.id & V4L2_STD_PAL)
+				tun->flags |= VIDEO_TUNER_PAL;
+			if (std2.id & V4L2_STD_NTSC)
+				tun->flags |= VIDEO_TUNER_NTSC;
+			if (std2.id & V4L2_STD_SECAM)
+				tun->flags |= VIDEO_TUNER_SECAM;
+		}
+
 		err = drv(inode, file, VIDIOC_G_STD, &sid);
 		if (err < 0)
 			dprintk("VIDIOCGTUNER / VIDIOC_G_STD: %d\n",err);
@@ -691,8 +703,6 @@
 #if 0 /* FIXME */
 	case VIDIOCSTUNER: /*  select a tuner input  */
 	{
-		int	i;
-
 		err = drv(inode, file, VIDIOC_S_INPUT, &i);
 		if (err < 0)
 			dprintk("VIDIOCSTUNER / VIDIOC_S_INPUT: %d\n",err);
@@ -702,7 +712,6 @@
 	case VIDIOCGFREQ: /*  get frequency  */
 	{
 		int *freq = arg;
-		struct v4l2_frequency freq2;
 		
 		err = drv(inode, file, VIDIOC_G_FREQUENCY, &freq2);
 		if (err < 0)
@@ -714,7 +723,6 @@
 	case VIDIOCSFREQ: /*  set frequency  */
 	{
 		int *freq = arg;
-		struct v4l2_frequency freq2;
 
 		drv(inode, file, VIDIOC_G_FREQUENCY, &freq2);
 		freq2.frequency = *freq;
@@ -726,10 +734,6 @@
 	case VIDIOCGAUDIO: /*  get audio properties/controls  */
 	{
 		struct video_audio	*aud = arg;
-		struct v4l2_audio	aud2;
-		struct v4l2_queryctrl	qctrl2;
-		struct v4l2_tuner	tun2;
-		int			v;
 
 		err = drv(inode, file, VIDIOC_G_AUDIO, &aud2);
 		if (err < 0) {
@@ -741,34 +745,29 @@
 		aud->name[sizeof(aud->name) - 1] = 0;
 		aud->audio = aud2.index;
 		aud->flags = 0;
-		v = get_v4l_control(inode, file, V4L2_CID_AUDIO_VOLUME, drv);
-		if (v >= 0)
-		{
-			aud->volume = v;
+		i = get_v4l_control(inode, file, V4L2_CID_AUDIO_VOLUME, drv);
+		if (i >= 0) {
+			aud->volume = i;
 			aud->flags |= VIDEO_AUDIO_VOLUME;
 		}
-		v = get_v4l_control(inode, file, V4L2_CID_AUDIO_BASS, drv);
-		if (v >= 0)
-		{
-			aud->bass = v;
+		i = get_v4l_control(inode, file, V4L2_CID_AUDIO_BASS, drv);
+		if (i >= 0) {
+			aud->bass = i;
 			aud->flags |= VIDEO_AUDIO_BASS;
 		}
-		v = get_v4l_control(inode, file, V4L2_CID_AUDIO_TREBLE, drv);
-		if (v >= 0)
-		{
-			aud->treble = v;
+		i = get_v4l_control(inode, file, V4L2_CID_AUDIO_TREBLE, drv);
+		if (i >= 0) {
+			aud->treble = i;
 			aud->flags |= VIDEO_AUDIO_TREBLE;
 		}
-		v = get_v4l_control(inode, file, V4L2_CID_AUDIO_BALANCE, drv);
-		if (v >= 0)
-		{
-			aud->balance = v;
+		i = get_v4l_control(inode, file, V4L2_CID_AUDIO_BALANCE, drv);
+		if (i >= 0) {
+			aud->balance = i;
 			aud->flags |= VIDEO_AUDIO_BALANCE;
 		}
-		v = get_v4l_control(inode, file, V4L2_CID_AUDIO_MUTE, drv);
-		if (v >= 0)
-		{
-			if (v)
+		i = get_v4l_control(inode, file, V4L2_CID_AUDIO_MUTE, drv);
+		if (i >= 0) {
+			if (i)
 				aud->flags |= VIDEO_AUDIO_MUTE;
 			aud->flags |= VIDEO_AUDIO_MUTABLE;
 		}
@@ -795,8 +794,6 @@
 	case VIDIOCSAUDIO: /*  set audio controls  */
 	{
 		struct video_audio	*aud = arg;
-		struct v4l2_audio	aud2;
-		struct v4l2_tuner	tun2;
 
 		memset(&aud2,0,sizeof(aud2));
 		memset(&tun2,0,sizeof(tun2));
@@ -844,83 +841,36 @@
 		break;
 	}
 #if 0
-	case VIDIOCGMBUF: /*  get mmap parameters  */
-	{
-		struct video_mbuf		*mbuf = arg;
-		struct v4l2_requestbuffers	reqbuf2;
-		struct v4l2_buffer		buf2;
-		struct v4l2_format		fmt2, fmt2o;
-		struct v4l2_capability		cap2;
-		int				i;
-
-		/*  Set the format to maximum dimensions  */
-		if ((err = drv(inode, file, VIDIOC_QUERYCAP, &cap2)) < 0)
-			break;
-		fmt2o.type = V4L2_BUF_TYPE_CAPTURE;
-		if ((err = drv(inode, file, VIDIOC_G_FMT, &fmt2o)) < 0)
-			break;
-		fmt2 = fmt2o;
-		fmt2.fmt.pix.width = cap2.maxwidth;
-		fmt2.fmt.pix.height = cap2.maxheight;
-		fmt2.fmt.pix.flags |= V4L2_FMT_FLAG_INTERLACED;
-		if ((err = drv(inode, file, VIDIOC_S_FMT, &fmt2)) < 0)
-			break;
-		reqbuf2.count = 2; /* v4l always used two buffers */
-		reqbuf2.type = V4L2_BUF_TYPE_CAPTURE | V4L2_BUF_REQ_CONTIG;
-		err = drv(inode, file, VIDIOC_REQBUFS, &reqbuf2);
-		if (err < 0 || reqbuf2.count < 2 || reqbuf2.type
-		    != (V4L2_BUF_TYPE_CAPTURE | V4L2_BUF_REQ_CONTIG))
-		{/*	Driver doesn't support v4l back-compatibility  */
-			fmt2o.fmt.pix.flags |= V4L2_FMT_FLAG_INTERLACED;
-			drv(inode, file, VIDIOC_S_FMT, &fmt2o);
-			reqbuf2.count = 1;
-			reqbuf2.type = V4L2_BUF_TYPE_CAPTURE;
-			err = drv(inode, file, VIDIOC_REQBUFS, &reqbuf2);
-			if (err < 0)
-			{
-				err = -EINVAL;
-				break;
-			}
-			printk(KERN_INFO"V4L2: Device \"%s\" doesn't support"
-			       " v4l memory mapping\n", vfl->name);
-		}
-		buf2.index = 0;
-		buf2.type = V4L2_BUF_TYPE_CAPTURE;
-		err = drv(inode, file, VIDIOC_QUERYBUF, &buf2);
-		mbuf->size = buf2.length * reqbuf2.count;
-		mbuf->frames = reqbuf2.count;
-		memset(mbuf->offsets, 0, sizeof(mbuf->offsets));
-		for (i = 0; i < mbuf->frames; ++i)
-			mbuf->offsets[i] = i * buf2.length;
-		break;
-	}
+	case VIDIOCGMBUF:
+		/* v4l2 drivers must implement that themself.  The
+		   mmap() differences can't be translated fully
+		   transparent, thus there is no point to try that */
 #endif
 	case VIDIOCMCAPTURE: /*  capture a frame  */
 	{
 		struct video_mmap	*mm = arg;
-		struct v4l2_buffer	buf2;
-		struct v4l2_format	fmt2;
 
+		fmt2 = kmalloc(sizeof(*fmt2),GFP_KERNEL);
 		memset(&buf2,0,sizeof(buf2));
-		memset(&fmt2,0,sizeof(fmt2));
+		memset(fmt2,0,sizeof(*fmt2));
 		
-		fmt2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-		err = drv(inode, file, VIDIOC_G_FMT, &fmt2);
+		fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+		err = drv(inode, file, VIDIOC_G_FMT, fmt2);
 		if (err < 0) {
 			dprintk("VIDIOCMCAPTURE / VIDIOC_G_FMT: %d\n",err);
 			break;
 		}
-		if (mm->width   != fmt2.fmt.pix.width || 
-		    mm->height != fmt2.fmt.pix.height ||
+		if (mm->width   != fmt2->fmt.pix.width  || 
+		    mm->height  != fmt2->fmt.pix.height ||
 		    palette_to_pixelformat(mm->format) != 
-		    fmt2.fmt.pix.pixelformat)
+		    fmt2->fmt.pix.pixelformat)
 		{/* New capture format...  */
-			fmt2.fmt.pix.width = mm->width;
-			fmt2.fmt.pix.height = mm->height;
-			fmt2.fmt.pix.pixelformat =
+			fmt2->fmt.pix.width = mm->width;
+			fmt2->fmt.pix.height = mm->height;
+			fmt2->fmt.pix.pixelformat =
 				palette_to_pixelformat(mm->format);
-			fmt2.fmt.pix.field = V4L2_FIELD_ANY;
-			err = drv(inode, file, VIDIOC_S_FMT, &fmt2);
+			fmt2->fmt.pix.field = V4L2_FIELD_ANY;
+			err = drv(inode, file, VIDIOC_S_FMT, fmt2);
 			if (err < 0) {
 				dprintk("VIDIOCMCAPTURE / VIDIOC_S_FMT: %d\n",err);
 				break;
@@ -946,7 +896,6 @@
 	case VIDIOCSYNC: /*  wait for a frame  */
 	{
 		int			*i = arg;
-		struct v4l2_buffer	buf2;
 
 		buf2.index = *i;
 		buf2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -967,7 +916,7 @@
 			(V4L2_BUF_FLAG_QUEUED | V4L2_BUF_FLAG_DONE))
 		       == V4L2_BUF_FLAG_QUEUED)
 		{
-			err = simple_select(file);
+			err = poll_one(file);
 			if (err < 0 ||	/* error or sleep was interrupted  */
 			    err == 0)	/* timeout? Shouldn't occur.  */
 				break;
@@ -984,20 +933,43 @@
 		} while (err == 0 && buf2.index != *i);
 		break;
 	}
-	case VIDIOCGUNIT: /*  get related device minors  */
-		/*  No translation  */
-		break;
-	case VIDIOCGCAPTURE: /*    */
-		/*  No translation, yet...  */
-		printk(KERN_INFO"v4l1-compat: VIDIOCGCAPTURE not implemented."
-		       " Send patches to bdirks@pacbell.net :-)\n");
-		break;
-	case VIDIOCSCAPTURE: /*    */
-		/*  No translation, yet...  */
-		printk(KERN_INFO"v4l1-compat: VIDIOCSCAPTURE not implemented."
-		       " Send patches to bdirks@pacbell.net :-)\n");
+
+	case VIDIOCGVBIFMT: /* query VBI data capture format */
+	{
+		struct vbi_format      *fmt = arg;
+		
+		fmt2 = kmalloc(sizeof(*fmt2),GFP_KERNEL);
+		memset(fmt2, 0, sizeof(*fmt2));
+		fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE;
+		
+		err = drv(inode, file, VIDIOC_G_FMT, fmt2);
+		if (err < 0) {
+			dprintk("VIDIOCMCAPTURE / VIDIOC_G_FMT: %d\n", err);
+			break;
+		}
+		memset(fmt, 0, sizeof(*fmt));
+		fmt->samples_per_line = fmt2->fmt.vbi.samples_per_line;
+		fmt->sampling_rate    = fmt2->fmt.vbi.sampling_rate;
+		fmt->sample_format    = VIDEO_PALETTE_RAW;
+		fmt->start[0]         = fmt2->fmt.vbi.start[0];
+		fmt->count[0]         = fmt2->fmt.vbi.count[0];
+		fmt->start[1]         = fmt2->fmt.vbi.start[1];
+		fmt->count[1]         = fmt2->fmt.vbi.count[1];
+		if (fmt2->fmt.vbi.flags & VBI_UNSYNC)
+			fmt->flags   |= V4L2_VBI_UNSYNC;
+		if (fmt2->fmt.vbi.flags & VBI_INTERLACED)
+			fmt->flags   |= V4L2_VBI_INTERLACED;
+                break;
+	}
+	default:
+		err = -ENOIOCTLCMD;
 		break;
 	}
+
+	if (cap2)
+		kfree(cap2);
+	if (fmt2)
+		kfree(fmt2);
 	return err;
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2003-03-14 18:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-03-14 15:09 Linux 2.5.64-ac4 Alan Cox
2003-03-14 15:31 ` 2.5.64-ac4: mpparse.c doesn't compile Adrian Bunk
2003-03-14 15:32   ` Alan Cox
2003-03-14 16:53 ` Linux 2.5.64-ac4 Morten Helgesen
2003-03-14 18:34   ` Morten Helgesen
2003-03-14 17:28 ` Top stack (l)users for 2.5.64-ac4 Joern Engel
2003-03-14 17:41   ` Jens Axboe
2003-03-14 17:59     ` Randy.Dunlap
2003-03-14 18:03       ` Jens Axboe
2003-03-14 19:09   ` [patch] v4l: v4l1-compat update Gerd Knorr

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.