Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
c4d36a82
Commit
c4d36a82
authored
Jun 02, 2007
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Pull osi-now into release branch
parents
fcf75356
dd272b57
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
142 additions
and
18 deletions
+142
-18
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+4
-1
drivers/acpi/osl.c
drivers/acpi/osl.c
+108
-10
drivers/acpi/utilities/uteval.c
drivers/acpi/utilities/uteval.c
+26
-2
drivers/acpi/utilities/utxface.c
drivers/acpi/utilities/utxface.c
+1
-3
include/acpi/acpiosxf.h
include/acpi/acpiosxf.h
+2
-1
include/acpi/acpixf.h
include/acpi/acpixf.h
+1
-1
No files found.
Documentation/kernel-parameters.txt
View file @
c4d36a82
...
...
@@ -170,7 +170,10 @@ and is between 256 and 4096 characters. It is defined in the file
acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS
Format: To spoof as Windows 98: ="Microsoft Windows"
acpi_osi= [HW,ACPI] empty param disables _OSI
acpi_osi= [HW,ACPI] Modify list of supported OS interface strings
acpi_osi="string1" # add string1 -- only one string
acpi_osi="!string2" # remove built-in string2
acpi_osi= # disable all strings
acpi_serialize [HW,ACPI] force serialization of AML methods
...
...
drivers/acpi/osl.c
View file @
c4d36a82
...
...
@@ -33,6 +33,7 @@
#include <linux/interrupt.h>
#include <linux/kmod.h>
#include <linux/delay.h>
#include <linux/dmi.h>
#include <linux/workqueue.h>
#include <linux/nmi.h>
#include <linux/acpi.h>
...
...
@@ -73,6 +74,21 @@ static void *acpi_irq_context;
static
struct
workqueue_struct
*
kacpid_wq
;
static
struct
workqueue_struct
*
kacpi_notify_wq
;
#define OSI_STRING_LENGTH_MAX 64
/* arbitrary */
static
char
osi_additional_string
[
OSI_STRING_LENGTH_MAX
];
#define OSI_LINUX_ENABLED
#ifdef OSI_LINUX_ENABLED
int
osi_linux
=
1
;
/* enable _OSI(Linux) by default */
#else
int
osi_linux
;
/* disable _OSI(Linux) by default */
#endif
#ifdef CONFIG_DMI
static
struct
__initdata
dmi_system_id
acpi_osl_dmi_table
[];
#endif
static
void
__init
acpi_request_region
(
struct
acpi_generic_address
*
addr
,
unsigned
int
length
,
char
*
desc
)
{
...
...
@@ -121,8 +137,9 @@ static int __init acpi_reserve_resources(void)
}
device_initcall
(
acpi_reserve_resources
);
acpi_status
acpi_os_initialize
(
void
)
acpi_status
__init
acpi_os_initialize
(
void
)
{
dmi_check_system
(
acpi_osl_dmi_table
);
return
AE_OK
;
}
...
...
@@ -960,20 +977,38 @@ static int __init acpi_os_name_setup(char *str)
__setup
(
"acpi_os_name="
,
acpi_os_name_setup
);
static
void
enable_osi_linux
(
int
enable
)
{
if
(
osi_linux
!=
enable
)
printk
(
KERN_INFO
PREFIX
"%sabled _OSI(Linux)
\n
"
,
enable
?
"En"
:
"Dis"
);
osi_linux
=
enable
;
return
;
}
/*
* _OSI control
* Modify the list of "OS Interfaces" reported to BIOS via _OSI
*
* empty string disables _OSI
* TBD additional string adds to _OSI
* string starting with '!' disables that string
* otherwise string is added to list, augmenting built-in strings
*/
static
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
{
/* TBD */
printk
(
KERN_ERR
PREFIX
"_OSI additional string ignored -- %s
\n
"
,
str
);
}
else
if
(
*
str
==
'!'
)
{
if
(
acpi_osi_invalidate
(
++
str
)
==
AE_OK
)
printk
(
KERN_INFO
PREFIX
"Deleted _OSI(%s)
\n
"
,
str
);
}
else
if
(
!
strcmp
(
"!Linux"
,
str
))
{
enable_osi_linux
(
0
);
}
else
if
(
!
strcmp
(
"Linux"
,
str
))
{
enable_osi_linux
(
1
);
}
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
;
...
...
@@ -1143,11 +1178,28 @@ acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object)
acpi_status
acpi_os_validate_interface
(
char
*
interface
)
{
if
(
!
strncmp
(
osi_additional_string
,
interface
,
OSI_STRING_LENGTH_MAX
))
return
AE_OK
;
if
(
!
strcmp
(
"Linux"
,
interface
))
{
printk
(
KERN_WARNING
PREFIX
"System BIOS is requesting _OSI(Linux)
\n
"
);
#ifdef OSI_LINUX_ENABLED
printk
(
KERN_WARNING
PREFIX
"Please test with
\"
acpi_osi=!Linux
\"\n
"
"Please send dmidecode "
"to linux-acpi@vger.kernel.org
\n
"
);
#else
printk
(
KERN_WARNING
PREFIX
"If
\"
acpi_osi=Linux
\"
works better,
\n
"
"Please send dmidecode "
"to linux-acpi@vger.kernel.org
\n
"
);
#endif
if
(
osi_linux
)
return
AE_OK
;
}
return
AE_SUPPORT
;
}
/******************************************************************************
*
* FUNCTION: acpi_os_validate_address
...
...
@@ -1174,5 +1226,51 @@ acpi_os_validate_address (
return
AE_OK
;
}
#ifdef CONFIG_DMI
#ifdef OSI_LINUX_ENABLED
static
int
dmi_osi_not_linux
(
struct
dmi_system_id
*
d
)
{
printk
(
KERN_NOTICE
"%s detected: requires not _OSI(Linux)
\n
"
,
d
->
ident
);
enable_osi_linux
(
0
);
return
0
;
}
#else
static
int
dmi_osi_linux
(
struct
dmi_system_id
*
d
)
{
printk
(
KERN_NOTICE
"%s detected: requires _OSI(Linux)
\n
"
,
d
->
ident
);
enable_osi_linux
(
1
);
return
0
;
}
#endif
static
struct
dmi_system_id
acpi_osl_dmi_table
[]
__initdata
=
{
#ifdef OSI_LINUX_ENABLED
/*
* Boxes that need NOT _OSI(Linux)
*/
{
.
callback
=
dmi_osi_not_linux
,
.
ident
=
"Toshiba Satellite P100"
,
.
matches
=
{
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"TOSHIBA"
),
DMI_MATCH
(
DMI_BOARD_NAME
,
"Satellite P100"
),
},
},
#else
/*
* Boxes that need _OSI(Linux)
*/
{
.
callback
=
dmi_osi_linux
,
.
ident
=
"Intel Napa CRB"
,
.
matches
=
{
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"Intel Corporation"
),
DMI_MATCH
(
DMI_BOARD_NAME
,
"MPAD-MSAE Customer Reference Boards"
),
},
},
#endif
{}
};
#endif
/* CONFIG_DMI */
#endif
drivers/acpi/utilities/uteval.c
View file @
c4d36a82
...
...
@@ -59,10 +59,9 @@ acpi_ut_translate_one_cid(union acpi_operand_object *obj_desc,
/*
* Strings supported by the _OSI predefined (internal) method.
*/
static
c
onst
c
har
*
acpi_interfaces_supported
[]
=
{
static
char
*
acpi_interfaces_supported
[]
=
{
/* Operating System Vendor Strings */
"Linux"
,
"Windows 2000"
,
"Windows 2001"
,
"Windows 2001 SP0"
,
...
...
@@ -156,6 +155,31 @@ acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state)
return_ACPI_STATUS
(
AE_CTRL_TERMINATE
);
}
/*******************************************************************************
*
* FUNCTION: acpi_osi_invalidate
*
* PARAMETERS: interface_string
*
* RETURN: Status
*
* DESCRIPTION: invalidate string in pre-defiend _OSI string list
*
******************************************************************************/
acpi_status
acpi_osi_invalidate
(
char
*
interface
)
{
int
i
;
for
(
i
=
0
;
i
<
ACPI_ARRAY_LENGTH
(
acpi_interfaces_supported
);
i
++
)
{
if
(
!
ACPI_STRCMP
(
interface
,
acpi_interfaces_supported
[
i
]))
{
*
acpi_interfaces_supported
[
i
]
=
'\0'
;
return
AE_OK
;
}
}
return
AE_NOT_FOUND
;
}
/*******************************************************************************
*
* FUNCTION: acpi_ut_evaluate_object
...
...
drivers/acpi/utilities/utxface.c
View file @
c4d36a82
...
...
@@ -61,7 +61,7 @@ ACPI_MODULE_NAME("utxface")
* called, so any early initialization belongs here.
*
******************************************************************************/
acpi_status
acpi_initialize_subsystem
(
void
)
acpi_status
__init
acpi_initialize_subsystem
(
void
)
{
acpi_status
status
;
...
...
@@ -108,8 +108,6 @@ acpi_status acpi_initialize_subsystem(void)
return_ACPI_STATUS
(
status
);
}
ACPI_EXPORT_SYMBOL
(
acpi_initialize_subsystem
)
/*******************************************************************************
*
* FUNCTION: acpi_enable_subsystem
...
...
include/acpi/acpiosxf.h
View file @
c4d36a82
...
...
@@ -78,7 +78,7 @@ struct acpi_signal_fatal_info {
/*
* OSL Initialization and shutdown primitives
*/
acpi_status
acpi_os_initialize
(
void
);
acpi_status
__initdata
acpi_os_initialize
(
void
);
acpi_status
acpi_os_terminate
(
void
);
...
...
@@ -236,6 +236,7 @@ acpi_os_derive_pci_id(acpi_handle rhandle,
* Miscellaneous
*/
acpi_status
acpi_os_validate_interface
(
char
*
interface
);
acpi_status
acpi_osi_invalidate
(
char
*
interface
);
acpi_status
acpi_os_validate_address
(
u8
space_id
,
...
...
include/acpi/acpixf.h
View file @
c4d36a82
...
...
@@ -55,7 +55,7 @@ acpi_status
acpi_initialize_tables
(
struct
acpi_table_desc
*
initial_storage
,
u32
initial_table_count
,
u8
allow_resize
);
acpi_status
acpi_initialize_subsystem
(
void
);
acpi_status
__init
acpi_initialize_subsystem
(
void
);
acpi_status
acpi_enable_subsystem
(
u32
flags
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment