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
nexedi
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
Hide 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
)
{
return
AE_SUPPORT
;
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