Re: [PATCH][RFC] more initcall cleanups

2001-05-17 Thread Kai Germaschewski

On Wed, 16 May 2001, Alexander Viro wrote:

>   a) I2C stuff got converted to module_init() nicely. That took
> a lot of cruft away.

Definitely makes sense.

>   b) init order is preserved. However, that worked only because
> none of the i2c initialization functions touch stuff from random.c

I don't think init order is preserved.

>   c) I had to put i2c before char to preserve the ordering.
> Not a big deal, but I'm somewhat at loss here - how to do it without
> really ugly drivers/Makefile. Suggestions?

This part is not necessary. The ordering of subdir-y only has to do with
compilation ordering, not with link order. The link order for
drivers/char/* is set explicitly in the toplevel Makefile.

>   d) if we set CONFIG_I2C to 'y' we don't include drivers/i2c
> into subdir-m. However, having i2c-core in kernel and the rest done as
> modules is OK with i2c itself. And I seriously suspect that it's
> a common situation. Am I right assuming that correct way to deal with
> that is to put i2c into mod-subdirs?

Yes, that's exactly what mod-subdirs is for.

>   e) looks like rand_initialize() is in the same class as handling
> VFS/VM/etc. caches - global infrastructure. It definitely should be
> called before all other drivers. Notice that old device_init() was asking
> for trouble - it called parport_init() before chr_dev_init() (which calls
> rand_initialize()), so if somebody would try to feed some entropy into
> pool during the parport_init() we would get an interesting (and hard
> to understand) problem. Maybe we should move the call into basic_setup()?

I suppose I'm not the right one to comment on this, but it seems to make
sense to me.

> diff -urN S5-pre3-init-0/drivers/Makefile S5-pre3-init/drivers/Makefile
> --- S5-pre3-init-0/drivers/Makefile   Wed May 16 16:26:35 2001
> +++ S5-pre3-init/drivers/Makefile Wed May 16 20:47:52 2001
> @@ -9,8 +9,13 @@
>  mod-subdirs :=   dio mtd sbus video macintosh usb input telephony sgi i2o ide \
>   scsi md ieee1394 pnp isdn atm fc4 net/hamradio i2c acpi
>
> -subdir-y :=  parport char block net sound misc media cdrom
> -subdir-m :=  $(subdir-y)
> +subdir-y :=  parport
> +subdir-m :=  parport
> +
> +subdir-$(CONFIG_I2C) += i2c
> +
> +subdir-y +=  char block net sound misc media cdrom
> +subdir-m +=  char block net sound misc media cdrom
>
>
>  subdir-$(CONFIG_DIO) += dio
> @@ -40,7 +45,6 @@
>
>  # CONFIG_HAMRADIO can be set without CONFIG_NETDEVICE being set  -- ch
>  subdir-$(CONFIG_HAMRADIO)+= net/hamradio
> -subdir-$(CONFIG_I2C) += i2c
>  subdir-$(CONFIG_ACPI)+= acpi
>
>  include $(TOPDIR)/Rules.make

As stated above, this change won't affect vmlinux at all.

> diff -urN S5-pre3-init-0/drivers/char/random.c S5-pre3-init/drivers/char/random.c
> --- S5-pre3-init-0/drivers/char/random.c  Wed May 16 16:26:36 2001
> +++ S5-pre3-init/drivers/char/random.cWed May 16 20:40:12 2001
> @@ -1380,7 +1380,7 @@
>   }
>  }
>
> -void __init rand_initialize(void)
> +static int __init rand_initialize(void)
>  {
>   int i;
>
> @@ -1404,7 +1404,10 @@
>   memset(_timer_state, 0, sizeof(struct timer_rand_state));
>   memset(_timer_state, 0, sizeof(struct timer_rand_state));
>   extract_timer_state.dont_count_entropy = 1;
> + return 0;
>  }
> +
> +__initcall(rand_initialize);
>
>  void rand_initialize_irq(int irq)
>  {

prototype should be removed from include/linux/random.h

--Kai


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [PATCH][RFC] more initcall cleanups

2001-05-17 Thread Kai Germaschewski

On Wed, 16 May 2001, Alexander Viro wrote:

   a) I2C stuff got converted to module_init() nicely. That took
 a lot of cruft away.

Definitely makes sense.

   b) init order is preserved. However, that worked only because
 none of the i2c initialization functions touch stuff from random.c

I don't think init order is preserved.

   c) I had to put i2c before char to preserve the ordering.
 Not a big deal, but I'm somewhat at loss here - how to do it without
 really ugly drivers/Makefile. Suggestions?

This part is not necessary. The ordering of subdir-y only has to do with
compilation ordering, not with link order. The link order for
drivers/char/* is set explicitly in the toplevel Makefile.

   d) if we set CONFIG_I2C to 'y' we don't include drivers/i2c
 into subdir-m. However, having i2c-core in kernel and the rest done as
 modules is OK with i2c itself. And I seriously suspect that it's
 a common situation. Am I right assuming that correct way to deal with
 that is to put i2c into mod-subdirs?

Yes, that's exactly what mod-subdirs is for.

   e) looks like rand_initialize() is in the same class as handling
 VFS/VM/etc. caches - global infrastructure. It definitely should be
 called before all other drivers. Notice that old device_init() was asking
 for trouble - it called parport_init() before chr_dev_init() (which calls
 rand_initialize()), so if somebody would try to feed some entropy into
 pool during the parport_init() we would get an interesting (and hard
 to understand) problem. Maybe we should move the call into basic_setup()?

I suppose I'm not the right one to comment on this, but it seems to make
sense to me.

 diff -urN S5-pre3-init-0/drivers/Makefile S5-pre3-init/drivers/Makefile
 --- S5-pre3-init-0/drivers/Makefile   Wed May 16 16:26:35 2001
 +++ S5-pre3-init/drivers/Makefile Wed May 16 20:47:52 2001
 @@ -9,8 +9,13 @@
  mod-subdirs :=   dio mtd sbus video macintosh usb input telephony sgi i2o ide \
   scsi md ieee1394 pnp isdn atm fc4 net/hamradio i2c acpi

 -subdir-y :=  parport char block net sound misc media cdrom
 -subdir-m :=  $(subdir-y)
 +subdir-y :=  parport
 +subdir-m :=  parport
 +
 +subdir-$(CONFIG_I2C) += i2c
 +
 +subdir-y +=  char block net sound misc media cdrom
 +subdir-m +=  char block net sound misc media cdrom


  subdir-$(CONFIG_DIO) += dio
 @@ -40,7 +45,6 @@

  # CONFIG_HAMRADIO can be set without CONFIG_NETDEVICE being set  -- ch
  subdir-$(CONFIG_HAMRADIO)+= net/hamradio
 -subdir-$(CONFIG_I2C) += i2c
  subdir-$(CONFIG_ACPI)+= acpi

  include $(TOPDIR)/Rules.make

As stated above, this change won't affect vmlinux at all.

 diff -urN S5-pre3-init-0/drivers/char/random.c S5-pre3-init/drivers/char/random.c
 --- S5-pre3-init-0/drivers/char/random.c  Wed May 16 16:26:36 2001
 +++ S5-pre3-init/drivers/char/random.cWed May 16 20:40:12 2001
 @@ -1380,7 +1380,7 @@
   }
  }

 -void __init rand_initialize(void)
 +static int __init rand_initialize(void)
  {
   int i;

 @@ -1404,7 +1404,10 @@
   memset(mouse_timer_state, 0, sizeof(struct timer_rand_state));
   memset(extract_timer_state, 0, sizeof(struct timer_rand_state));
   extract_timer_state.dont_count_entropy = 1;
 + return 0;
  }
 +
 +__initcall(rand_initialize);

  void rand_initialize_irq(int irq)
  {

prototype should be removed from include/linux/random.h

--Kai


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/