linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* ACPI blacklisting: move year blacklist into acpi/blacklist.c
@ 2003-10-01 10:18 Pavel Machek
  2003-10-01 12:24 ` [ACPI] " Matthew Wilcox
  2003-10-08  6:39 ` Len Brown
  0 siblings, 2 replies; 6+ messages in thread
From: Pavel Machek @ 2003-10-01 10:18 UTC (permalink / raw)
  To: ACPI mailing list, kernel list; +Cc: len.brown

Hi!

This moves year-based blacklisting to blacklist.c, where it belongs
AFAICS. It also adds some externs to include/linux/acpi.h, but I
believe *way* more externs are needed. Please apply,

								Pavel

--- /usr/src/tmp/linux/arch/i386/kernel/dmi_scan.c	2003-09-28 22:05:29.000000000 +0200
+++ /usr/src/linux/arch/i386/kernel/dmi_scan.c	2003-10-01 11:55:21.000000000 +0200
@@ -997,24 +998,10 @@
 	int i;
 		
 #ifdef	CONFIG_ACPI_BOOT
-#define	ACPI_BLACKLIST_CUTOFF_YEAR	2001
-
 	if (dmi_ident[DMI_BIOS_DATE]) { 
 		char *s = strrchr(dmi_ident[DMI_BIOS_DATE], '/'); 
-		if (s) { 
-			int year, disable = 0;
-			s++; 
-			year = simple_strtoul(s,NULL,0); 
-			if (year >= 1000) 
-				disable = year < ACPI_BLACKLIST_CUTOFF_YEAR; 
-			else if (year < 1 || (year > 90 && year <= 99))
-				disable = 1; 
-			if (disable && !acpi_force) { 
-				printk(KERN_NOTICE "ACPI disabled because your bios is from %s and too old\n", s);
-				printk(KERN_NOTICE "You can enable it with acpi=force\n");
-				acpi_disabled = 1; 
-			} 
-		}
+		if (s && !acpi_force)
+			acpi_bios_year(s+1);
 	}
 #endif
 
--- /usr/src/tmp/linux/drivers/acpi/blacklist.c	2003-02-15 18:51:16.000000000 +0100
+++ /usr/src/linux/drivers/acpi/blacklist.c	2003-10-01 11:55:19.000000000 +0200
@@ -83,6 +83,27 @@
 	{""}
 };
 
+#define	ACPI_BLACKLIST_CUTOFF_YEAR	2001
+
+/*
+ * Notice: this is called from dmi_scan.c, which contains second (!) blacklist
+ */
+void __init
+acpi_bios_year(char *s)
+{
+	int year, disable = 0;
+
+	year = simple_strtoul(s,NULL,0); 
+	if (year >= 1000) 
+		disable = year < ACPI_BLACKLIST_CUTOFF_YEAR; 
+	else if (year < 1 || (year > 90 && year <= 99))
+		disable = 1; 
+	if (disable) { 
+		printk(KERN_NOTICE "ACPI disabled because your bios is from %s and too old\n", s);
+		printk(KERN_NOTICE "You can enable it with acpi=force\n");
+		acpi_disabled = 1; 
+	}
+}
 
 int __init
 acpi_blacklisted(void)
--- /usr/src/tmp/linux/include/linux/acpi.h	2003-08-27 12:00:48.000000000 +0200
+++ /usr/src/linux/include/linux/acpi.h	2003-10-01 11:53:51.000000000 +0200
@@ -403,8 +403,8 @@
 
 struct pci_dev;
 
-int acpi_pci_irq_enable (struct pci_dev *dev);
-int acpi_pci_irq_init (void);
+extern int acpi_pci_irq_enable (struct pci_dev *dev);
+extern int acpi_pci_irq_init (void);
 
 struct acpi_pci_driver {
 	struct acpi_pci_driver *next;
@@ -412,21 +412,22 @@
 	void (*remove)(acpi_handle handle);
 };
 
-int acpi_pci_register_driver(struct acpi_pci_driver *driver);
-void acpi_pci_unregister_driver(struct acpi_pci_driver *driver);
+extern int acpi_pci_register_driver(struct acpi_pci_driver *driver);
+extern void acpi_pci_unregister_driver(struct acpi_pci_driver *driver);
 
 #endif /*CONFIG_ACPI_PCI*/
 
 #ifdef CONFIG_ACPI_EC
 
-int ec_read(u8 addr, u8 *val);
-int ec_write(u8 addr, u8 val);
+extern int ec_read(u8 addr, u8 *val);
+extern int ec_write(u8 addr, u8 val);
 
 #endif /*CONFIG_ACPI_EC*/
 
 #ifdef CONFIG_ACPI
 
-int acpi_blacklisted(void);
+extern int acpi_blacklisted(void);
+extern void acpi_bios_year(char *s);
 
 #else
 

-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]

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

* Re: [ACPI] ACPI blacklisting: move year blacklist into acpi/blacklist.c
  2003-10-01 10:18 ACPI blacklisting: move year blacklist into acpi/blacklist.c Pavel Machek
@ 2003-10-01 12:24 ` Matthew Wilcox
  2003-10-01 13:31   ` Pavel Machek
  2003-10-08  6:39 ` Len Brown
  1 sibling, 1 reply; 6+ messages in thread
From: Matthew Wilcox @ 2003-10-01 12:24 UTC (permalink / raw)
  To: Pavel Machek; +Cc: ACPI mailing list, kernel list, len.brown

On Wed, Oct 01, 2003 at 12:18:26PM +0200, Pavel Machek wrote:
> AFAICS. It also adds some externs to include/linux/acpi.h, but I
> believe *way* more externs are needed. Please apply,

> --- /usr/src/tmp/linux/include/linux/acpi.h	2003-08-27 12:00:48.000000000 +0200
> +++ /usr/src/linux/include/linux/acpi.h	2003-10-01 11:53:51.000000000 +0200
> @@ -403,8 +403,8 @@
>  
>  struct pci_dev;
>  
> -int acpi_pci_irq_enable (struct pci_dev *dev);
> -int acpi_pci_irq_init (void);
> +extern int acpi_pci_irq_enable (struct pci_dev *dev);
> +extern int acpi_pci_irq_init (void);

Why do they need to be externs?  The comp.lang.c FAQ suggests they don't
have to be.

http://www.eskimo.com/~scs/C-faq/q1.11.html

-- 
"It's not Hollywood.  War is real, war is primarily not about defeat or
victory, it is about death.  I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk

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

* Re: [ACPI] ACPI blacklisting: move year blacklist into acpi/blacklist.c
  2003-10-01 12:24 ` [ACPI] " Matthew Wilcox
@ 2003-10-01 13:31   ` Pavel Machek
  2003-10-01 13:38     ` Matthew Wilcox
  0 siblings, 1 reply; 6+ messages in thread
From: Pavel Machek @ 2003-10-01 13:31 UTC (permalink / raw)
  To: Matthew Wilcox; +Cc: ACPI mailing list, kernel list, len.brown

Hi!

> > AFAICS. It also adds some externs to include/linux/acpi.h, but I
> > believe *way* more externs are needed. Please apply,
> 
> > --- /usr/src/tmp/linux/include/linux/acpi.h	2003-08-27 12:00:48.000000000 +0200
> > +++ /usr/src/linux/include/linux/acpi.h	2003-10-01 11:53:51.000000000 +0200
> > @@ -403,8 +403,8 @@
> >  
> >  struct pci_dev;
> >  
> > -int acpi_pci_irq_enable (struct pci_dev *dev);
> > -int acpi_pci_irq_init (void);
> > +extern int acpi_pci_irq_enable (struct pci_dev *dev);
> > +extern int acpi_pci_irq_init (void);
> 
> Why do they need to be externs?  The comp.lang.c FAQ suggests they don't
> have to be.
> 
> http://www.eskimo.com/~scs/C-faq/q1.11.html

Well, they don't *have* to be there, but as FAQ says, it is stylistics
hint.


									Pavel
-- 
Horseback riding is like software...
...vgf orggre jura vgf serr.

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

* Re: [ACPI] ACPI blacklisting: move year blacklist into acpi/blacklist.c
  2003-10-01 13:31   ` Pavel Machek
@ 2003-10-01 13:38     ` Matthew Wilcox
  0 siblings, 0 replies; 6+ messages in thread
From: Matthew Wilcox @ 2003-10-01 13:38 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Matthew Wilcox, ACPI mailing list, kernel list, len.brown

On Wed, Oct 01, 2003 at 03:31:04PM +0200, Pavel Machek wrote:
> > Why do they need to be externs?  The comp.lang.c FAQ suggests they don't
> > have to be.
> > 
> > http://www.eskimo.com/~scs/C-faq/q1.11.html
> 
> Well, they don't *have* to be there, but as FAQ says, it is stylistics
> hint.

I think "being in a .h file" is a sufficient hint ;-)

-- 
"It's not Hollywood.  War is real, war is primarily not about defeat or
victory, it is about death.  I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk

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

* Re: ACPI blacklisting: move year blacklist into acpi/blacklist.c
  2003-10-01 10:18 ACPI blacklisting: move year blacklist into acpi/blacklist.c Pavel Machek
  2003-10-01 12:24 ` [ACPI] " Matthew Wilcox
@ 2003-10-08  6:39 ` Len Brown
  2003-10-08  9:58   ` Pavel Machek
  1 sibling, 1 reply; 6+ messages in thread
From: Len Brown @ 2003-10-08  6:39 UTC (permalink / raw)
  To: Pavel Machek; +Cc: ACPI mailing list, Kernel Mailing List

Re: dmi_check_blacklist()

Something like MATCH(DMI_BOARD_NAME, "P2B-DS") boils down to a strstr(a,
b) -- probably something that can be fooled by substring, say "PB2-D"...

But more to the point, there is no way to compare before/after dates,
say BEFORE(DMI_BIOS_DATE, "1/3/2002")

This is needed to blacklist things like the Toshiba Tecra 8100 which
supplies a DMI date, but no other useful version info.

If we such a date comparison function, we could also use it to make the
year-compare code below somewhat cleaner.

Re: externs
looks like using externs in the function protos in include/linux is
common practice, so acpi.h should probably do it too -- even if it is
just for consistent style.

Re: diffs
I couldn't get patch to digest this format w/o manual intervention
--- /usr/src/tmp/linux/arch/...
+++ /usr/src/linux/arch/...

and had to edit it into

--- a/arch/...
+++ b/arch/...

for patch -Np1

Re: acpi_bios_year() definition
note that CONFIG_ACPI_BOOT may be defined when CONFIG_ACPI is not.  Ie.
in the case where just the ACPI boot code is used to enumerate LAPICs,
say for HT, but ACPI_INTERPRETER is not even built in.

In this case, blacklist.c is not built into the kernel, but dmi_scan.c
always is.

thanks,
-Len

On Wed, 2003-10-01 at 06:18, Pavel Machek wrote:
> Hi!
> 
> This moves year-based blacklisting to blacklist.c, where it belongs
> AFAICS. It also adds some externs to include/linux/acpi.h, but I
> believe *way* more externs are needed. Please apply,
> 
> 								Pavel
> 
> --- /usr/src/tmp/linux/arch/i386/kernel/dmi_scan.c	2003-09-28 22:05:29.000000000 +0200
> +++ /usr/src/linux/arch/i386/kernel/dmi_scan.c	2003-10-01 11:55:21.000000000 +0200
> @@ -997,24 +998,10 @@
>  	int i;
>  		
>  #ifdef	CONFIG_ACPI_BOOT
> -#define	ACPI_BLACKLIST_CUTOFF_YEAR	2001
> -
>  	if (dmi_ident[DMI_BIOS_DATE]) { 
>  		char *s = strrchr(dmi_ident[DMI_BIOS_DATE], '/'); 
> -		if (s) { 
> -			int year, disable = 0;
> -			s++; 
> -			year = simple_strtoul(s,NULL,0); 
> -			if (year >= 1000) 
> -				disable = year < ACPI_BLACKLIST_CUTOFF_YEAR; 
> -			else if (year < 1 || (year > 90 && year <= 99))
> -				disable = 1; 
> -			if (disable && !acpi_force) { 
> -				printk(KERN_NOTICE "ACPI disabled because your bios is from %s and too old\n", s);
> -				printk(KERN_NOTICE "You can enable it with acpi=force\n");
> -				acpi_disabled = 1; 
> -			} 
> -		}
> +		if (s && !acpi_force)
> +			acpi_bios_year(s+1);
>  	}
>  #endif
>  
> --- /usr/src/tmp/linux/drivers/acpi/blacklist.c	2003-02-15 18:51:16.000000000 +0100
> +++ /usr/src/linux/drivers/acpi/blacklist.c	2003-10-01 11:55:19.000000000 +0200
> @@ -83,6 +83,27 @@
>  	{""}
>  };
>  
> +#define	ACPI_BLACKLIST_CUTOFF_YEAR	2001
> +
> +/*
> + * Notice: this is called from dmi_scan.c, which contains second (!) blacklist
> + */
> +void __init
> +acpi_bios_year(char *s)
> +{
> +	int year, disable = 0;
> +
> +	year = simple_strtoul(s,NULL,0); 
> +	if (year >= 1000) 
> +		disable = year < ACPI_BLACKLIST_CUTOFF_YEAR; 
> +	else if (year < 1 || (year > 90 && year <= 99))
> +		disable = 1; 
> +	if (disable) { 
> +		printk(KERN_NOTICE "ACPI disabled because your bios is from %s and too old\n", s);
> +		printk(KERN_NOTICE "You can enable it with acpi=force\n");
> +		acpi_disabled = 1; 
> +	}
> +}
>  
>  int __init
>  acpi_blacklisted(void)
> --- /usr/src/tmp/linux/include/linux/acpi.h	2003-08-27 12:00:48.000000000 +0200
> +++ /usr/src/linux/include/linux/acpi.h	2003-10-01 11:53:51.000000000 +0200
> @@ -403,8 +403,8 @@
>  
>  struct pci_dev;
>  
> -int acpi_pci_irq_enable (struct pci_dev *dev);
> -int acpi_pci_irq_init (void);
> +extern int acpi_pci_irq_enable (struct pci_dev *dev);
> +extern int acpi_pci_irq_init (void);
>  
>  struct acpi_pci_driver {
>  	struct acpi_pci_driver *next;
> @@ -412,21 +412,22 @@
>  	void (*remove)(acpi_handle handle);
>  };
>  
> -int acpi_pci_register_driver(struct acpi_pci_driver *driver);
> -void acpi_pci_unregister_driver(struct acpi_pci_driver *driver);
> +extern int acpi_pci_register_driver(struct acpi_pci_driver *driver);
> +extern void acpi_pci_unregister_driver(struct acpi_pci_driver *driver);
>  
>  #endif /*CONFIG_ACPI_PCI*/
>  
>  #ifdef CONFIG_ACPI_EC
>  
> -int ec_read(u8 addr, u8 *val);
> -int ec_write(u8 addr, u8 val);
> +extern int ec_read(u8 addr, u8 *val);
> +extern int ec_write(u8 addr, u8 val);
>  
>  #endif /*CONFIG_ACPI_EC*/
>  
>  #ifdef CONFIG_ACPI
>  
> -int acpi_blacklisted(void);
> +extern int acpi_blacklisted(void);
> +extern void acpi_bios_year(char *s);
>  
>  #else
>  


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

* Re: ACPI blacklisting: move year blacklist into acpi/blacklist.c
  2003-10-08  6:39 ` Len Brown
@ 2003-10-08  9:58   ` Pavel Machek
  0 siblings, 0 replies; 6+ messages in thread
From: Pavel Machek @ 2003-10-08  9:58 UTC (permalink / raw)
  To: Len Brown; +Cc: ACPI mailing list, Kernel Mailing List

Hi!

> Re: dmi_check_blacklist()
> 
> Something like MATCH(DMI_BOARD_NAME, "P2B-DS") boils down to a strstr(a,
> b) -- probably something that can be fooled by substring, say "PB2-D"...
> 
> But more to the point, there is no way to compare before/after dates,
> say BEFORE(DMI_BIOS_DATE, "1/3/2002")
> 
> This is needed to blacklist things like the Toshiba Tecra 8100 which
> supplies a DMI date, but no other useful version info.
> 
> If we such a date comparison function, we could also use it to make the
> year-compare code below somewhat cleaner.

Well, my main problem is with having two blacklists at diferent places.

> Re: externs
> looks like using externs in the function protos in include/linux is
> common practice, so acpi.h should probably do it too -- even if it is
> just for consistent style.

Do you want me to submit patch or will you add externs?

> Re: diffs
> I couldn't get patch to digest this format w/o manual intervention
> --- /usr/src/tmp/linux/arch/...
> +++ /usr/src/linux/arch/...
> 
> and had to edit it into
> 
> --- a/arch/...
> +++ b/arch/...
> 
> for patch -Np1

Sorry. (I fixed generating script).

> Re: acpi_bios_year() definition
> note that CONFIG_ACPI_BOOT may be defined when CONFIG_ACPI is not.  Ie.
> in the case where just the ACPI boot code is used to enumerate LAPICs,
> say for HT, but ACPI_INTERPRETER is not even built in.
> 
> In this case, blacklist.c is not built into the kernel, but dmi_scan.c
> always is.

Okay, in such case is it feasible to move blacklist.c functionality
into dmi_scan.c? i386 blacklist is probably useless for ia64,
anyway... And 2 places seem like bad idea.
								Pavel
-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]

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

end of thread, other threads:[~2003-10-08  9:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-10-01 10:18 ACPI blacklisting: move year blacklist into acpi/blacklist.c Pavel Machek
2003-10-01 12:24 ` [ACPI] " Matthew Wilcox
2003-10-01 13:31   ` Pavel Machek
2003-10-01 13:38     ` Matthew Wilcox
2003-10-08  6:39 ` Len Brown
2003-10-08  9:58   ` Pavel Machek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).