From: Len Brown <len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org>
Cc: ACPI mailing list
<acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
Kernel Mailing List
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: ACPI blacklisting: move year blacklist into acpi/blacklist.c
Date: 08 Oct 2003 02:39:41 -0400 [thread overview]
Message-ID: <1065595181.3370.478.camel@dhcppc4> (raw)
In-Reply-To: <20031001101826.GA3503-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
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
>
WARNING: multiple messages have this Message-ID (diff)
From: Len Brown <len.brown@intel.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: ACPI mailing list <acpi-devel@lists.sourceforge.net>,
Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: ACPI blacklisting: move year blacklist into acpi/blacklist.c
Date: 08 Oct 2003 02:39:41 -0400 [thread overview]
Message-ID: <1065595181.3370.478.camel@dhcppc4> (raw)
In-Reply-To: <20031001101826.GA3503@elf.ucw.cz>
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
>
next prev parent reply other threads:[~2003-10-08 6:39 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-01 10:18 ACPI blacklisting: move year blacklist into acpi/blacklist.c Pavel Machek
2003-10-01 10:18 ` Pavel Machek
[not found] ` <20031001101826.GA3503-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2003-10-01 12:24 ` [ACPI] " Matthew Wilcox
2003-10-01 12:24 ` Matthew Wilcox
[not found] ` <20031001122412.GJ24824-+pPCBgu9SkPzIGdyhVEDUDl5KyyQGfY2kSSpQ9I8OhVaa/9Udqfwiw@public.gmane.org>
2003-10-01 13:31 ` Pavel Machek
2003-10-01 13:31 ` [ACPI] " Pavel Machek
[not found] ` <20031001133104.GA21626-jyMamyUUXNJG4ohzP4jBZS1Fcj925eT/@public.gmane.org>
2003-10-01 13:38 ` Matthew Wilcox
2003-10-01 13:38 ` [ACPI] " Matthew Wilcox
2003-10-08 6:39 ` Len Brown [this message]
2003-10-08 6:39 ` Len Brown
[not found] ` <1065595181.3370.478.camel-D2Zvc0uNKG8@public.gmane.org>
2003-10-08 9:58 ` Pavel Machek
2003-10-08 9:58 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1065595181.3370.478.camel@dhcppc4 \
--to=len.brown-ral2jqcrhueavxtiumwx3w@public.gmane.org \
--cc=acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=pavel-+ZI9xUNit7I@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.