[kwlug-disc] Ubuntu Karmic and power management
Bob Jonkman
bjonkman at sobac.com
Wed Nov 4 07:51:05 EST 2009
Robert P.J. Day wrote:
> it should be obvious how the above works -- you can define any
> routine which accepts a character string value for a kernel parameter,
> then tie the parameter name to that routine. the routine is then free
> to parse/interpret that value however it pleases.
>
> was that helpful?
>
Yes, but only in that it tells me to look for acpi_cmdline_osi_linux()
to find out what that does, or acpi_osi_invalidate(++str), or how AE_OK
is defined. And were is *osi_additional_string set?
<sigh> So much source, so little time...
I had hoped for a paragraph or two in some readme file, that says "acpi_osi=Linux frobs the foo, acpi_osi=! tramulates the baz, acpi_osi=nosmoke is only for Windows machines[1]"
--Bob.
[1] http://www.comedycorner.org/75.html
Robert P. J. Day wrote:
> On Tue, 3 Nov 2009, Bob Jonkman wrote:
>
>
>> Khalid writes:
>>
>>
>>> To this:
>>>
>>> kernel /boot/vmlinuz-2.6.31-14-generic
>>> root=UUID=d2d0abec-e28f-42bc-9afa-ba6faca5ed20 ro quiet splash
>>> *acpi_osi="Linux"*
>>>
>> Surely we don't use the stars around the parameter? And I expect
>> that was intended to be all on one line...
>>
>> Where are these obscure things documented? I found
>> http://www.kernel.org/doc/Documentation/kernel-parameters.txt but
>> it's remarkably vague on what the 'acpi_osi' strings are and what
>> they actually do.
>>
>
> that kernel-parameters.txt file is typically *way* out of date.
> you're better off searching the kernel source itself for the
> definitions of kernel parameters. with the exception of "early"
> parameters, kernel parms are defined with the "__setup" macro, so you
> can see what the relevant kernel parms are for ACPI using something
> like:
>
> $ grep -rw __setup drivers/acpi
> drivers/acpi/video_detect.c:__setup("acpi_backlight=", acpi_backlight);
> drivers/acpi/video_detect.c:__setup("acpi_display_output=", acpi_display_output);
> drivers/acpi/osl.c:__setup("acpi_os_name=", acpi_os_name_setup);
> drivers/acpi/osl.c:__setup("acpi_osi=", acpi_osi_setup);
> drivers/acpi/osl.c:__setup("acpi_serialize", acpi_serialize_setup);
> drivers/acpi/osl.c:__setup("acpi_wake_gpes_always_on", acpi_wake_gpes_always_on_setup);
> drivers/acpi/osl.c:__setup("acpi_enforce_resources=", acpi_enforce_resources_setup);
> drivers/acpi/acpica/tbxface.c:__setup("acpi_no_auto_ssdt", acpi_no_auto_ssdt_setup);
> drivers/acpi/pci_link.c:__setup("acpi_irq_isa=", acpi_irq_isa);
> drivers/acpi/pci_link.c:__setup("acpi_irq_pci=", acpi_irq_pci);
> drivers/acpi/pci_link.c:__setup("acpi_irq_nobalance", acpi_irq_nobalance_set);
> drivers/acpi/pci_link.c:__setup("acpi_irq_balance", acpi_irq_balance_set);
> $
>
> so the above tells you that the kernel parameter "acpi_osi" is
> defined in drivers/acpi/osl.c:
>
> ===== snip =====
>
> int __init acpi_osi_setup(char *str)
> {
> if (str == NULL || *str == '\0') {
> printk(KERN_INFO PREFIX "_OSI method disabled\n");
> acpi_gbl_create_osi_method = FALSE;
> } else if (!strcmp("!Linux", str)) {
> acpi_cmdline_osi_linux(0); /* !enable */
> } else if (*str == '!') {
> if (acpi_osi_invalidate(++str) == AE_OK)
> printk(KERN_INFO PREFIX "Deleted _OSI(%s)\n", str);
> } else if (!strcmp("Linux", str)) {
> acpi_cmdline_osi_linux(1); /* enable */
> } else if (*osi_additional_string == '\0') {
> strncpy(osi_additional_string, str, OSI_STRING_LENGTH_MAX);
> printk(KERN_INFO PREFIX "Added _OSI(%s)\n", str);
> }
>
> return 1;
> }
>
> __setup("acpi_osi=", acpi_osi_setup);
>
>
> ===== snip =====
>
> it should be obvious how the above works -- you can define any
> routine which accepts a character string value for a kernel parameter,
> then tie the parameter name to that routine. the routine is then free
> to parse/interpret that value however it pleases.
>
> was that helpful?
>
> rday
> --
>
> ========================================================================
> Robert P. J. Day Waterloo, Ontario, CANADA
>
> Linux Consulting, Training and Kernel Pedantry.
>
> Web page: http://crashcourse.ca
> Twitter: http://twitter.com/rpjday
> ========================================================================
>
> _______________________________________________
> kwlug-disc_kwlug.org mailing list
> kwlug-disc_kwlug.org at kwlug.org
> http://astoria.ccjclearline.com/mailman/listinfo/kwlug-disc_kwlug.org
>
More information about the kwlug-disc
mailing list