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
27d6b977
Commit
27d6b977
authored
Apr 15, 2017
by
Rafael J. Wysocki
Browse files
Options
Browse Files
Download
Plain Diff
Merge back ACPI namespace scan code changes for v4.12.
parents
f406270b
ffc10d82
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
16 additions
and
29 deletions
+16
-29
Documentation/ABI/obsolete/sysfs-firmware-acpi
Documentation/ABI/obsolete/sysfs-firmware-acpi
+8
-0
Documentation/ABI/testing/sysfs-firmware-acpi
Documentation/ABI/testing/sysfs-firmware-acpi
+0
-10
drivers/acpi/internal.h
drivers/acpi/internal.h
+0
-2
drivers/acpi/scan.c
drivers/acpi/scan.c
+3
-13
drivers/acpi/sysfs.c
drivers/acpi/sysfs.c
+5
-4
No files found.
Documentation/ABI/obsolete/sysfs-firmware-acpi
0 → 100644
View file @
27d6b977
What: /sys/firmware/acpi/hotplug/force_remove
Date: Mar 2017
Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
Since the force_remove is inherently broken and dangerous to
use for some hotplugable resources like memory (because ignoring
the offline failure might lead to memory corruption and crashes)
enabling this knob is not safe and thus unsupported.
Documentation/ABI/testing/sysfs-firmware-acpi
View file @
27d6b977
...
@@ -44,16 +44,6 @@ Description:
...
@@ -44,16 +44,6 @@ Description:
or 0 (unset). Attempts to write any other values to it will
or 0 (unset). Attempts to write any other values to it will
cause -EINVAL to be returned.
cause -EINVAL to be returned.
What: /sys/firmware/acpi/hotplug/force_remove
Date: May 2013
Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
The number in this file (0 or 1) determines whether (1) or not
(0) the ACPI subsystem will allow devices to be hot-removed even
if they cannot be put offline gracefully (from the kernel's
viewpoint). That number can be changed by writing a boolean
value to this file.
What: /sys/firmware/acpi/interrupts/
What: /sys/firmware/acpi/interrupts/
Date: February 2008
Date: February 2008
Contact: Len Brown <lenb@kernel.org>
Contact: Len Brown <lenb@kernel.org>
...
...
drivers/acpi/internal.h
View file @
27d6b977
...
@@ -65,8 +65,6 @@ static inline void acpi_cmos_rtc_init(void) {}
...
@@ -65,8 +65,6 @@ static inline void acpi_cmos_rtc_init(void) {}
#endif
#endif
int
acpi_rev_override_setup
(
char
*
str
);
int
acpi_rev_override_setup
(
char
*
str
);
extern
bool
acpi_force_hot_remove
;
void
acpi_sysfs_add_hotplug_profile
(
struct
acpi_hotplug_profile
*
hotplug
,
void
acpi_sysfs_add_hotplug_profile
(
struct
acpi_hotplug_profile
*
hotplug
,
const
char
*
name
);
const
char
*
name
);
int
acpi_scan_add_handler_with_hotplug
(
struct
acpi_scan_handler
*
handler
,
int
acpi_scan_add_handler_with_hotplug
(
struct
acpi_scan_handler
*
handler
,
...
...
drivers/acpi/scan.c
View file @
27d6b977
...
@@ -30,12 +30,6 @@ extern struct acpi_device *acpi_root;
...
@@ -30,12 +30,6 @@ extern struct acpi_device *acpi_root;
#define INVALID_ACPI_HANDLE ((acpi_handle)empty_zero_page)
#define INVALID_ACPI_HANDLE ((acpi_handle)empty_zero_page)
/*
* If set, devices will be hot-removed even if they cannot be put offline
* gracefully (from the kernel's standpoint).
*/
bool
acpi_force_hot_remove
;
static
const
char
*
dummy_hid
=
"device"
;
static
const
char
*
dummy_hid
=
"device"
;
static
LIST_HEAD
(
acpi_dep_list
);
static
LIST_HEAD
(
acpi_dep_list
);
...
@@ -170,9 +164,6 @@ static acpi_status acpi_bus_offline(acpi_handle handle, u32 lvl, void *data,
...
@@ -170,9 +164,6 @@ static acpi_status acpi_bus_offline(acpi_handle handle, u32 lvl, void *data,
pn
->
put_online
=
false
;
pn
->
put_online
=
false
;
}
}
ret
=
device_offline
(
pn
->
dev
);
ret
=
device_offline
(
pn
->
dev
);
if
(
acpi_force_hot_remove
)
continue
;
if
(
ret
>=
0
)
{
if
(
ret
>=
0
)
{
pn
->
put_online
=
!
ret
;
pn
->
put_online
=
!
ret
;
}
else
{
}
else
{
...
@@ -241,11 +232,11 @@ static int acpi_scan_try_to_offline(struct acpi_device *device)
...
@@ -241,11 +232,11 @@ static int acpi_scan_try_to_offline(struct acpi_device *device)
acpi_walk_namespace
(
ACPI_TYPE_ANY
,
handle
,
ACPI_UINT32_MAX
,
acpi_walk_namespace
(
ACPI_TYPE_ANY
,
handle
,
ACPI_UINT32_MAX
,
NULL
,
acpi_bus_offline
,
(
void
*
)
true
,
NULL
,
acpi_bus_offline
,
(
void
*
)
true
,
(
void
**
)
&
errdev
);
(
void
**
)
&
errdev
);
if
(
!
errdev
||
acpi_force_hot_remove
)
if
(
!
errdev
)
acpi_bus_offline
(
handle
,
0
,
(
void
*
)
true
,
acpi_bus_offline
(
handle
,
0
,
(
void
*
)
true
,
(
void
**
)
&
errdev
);
(
void
**
)
&
errdev
);
if
(
errdev
&&
!
acpi_force_hot_remove
)
{
if
(
errdev
)
{
dev_warn
(
errdev
,
"Offline failed.
\n
"
);
dev_warn
(
errdev
,
"Offline failed.
\n
"
);
acpi_bus_online
(
handle
,
0
,
NULL
,
NULL
);
acpi_bus_online
(
handle
,
0
,
NULL
,
NULL
);
acpi_walk_namespace
(
ACPI_TYPE_ANY
,
handle
,
acpi_walk_namespace
(
ACPI_TYPE_ANY
,
handle
,
...
@@ -263,8 +254,7 @@ static int acpi_scan_hot_remove(struct acpi_device *device)
...
@@ -263,8 +254,7 @@ static int acpi_scan_hot_remove(struct acpi_device *device)
unsigned
long
long
sta
;
unsigned
long
long
sta
;
acpi_status
status
;
acpi_status
status
;
if
(
device
->
handler
&&
device
->
handler
->
hotplug
.
demand_offline
if
(
device
->
handler
&&
device
->
handler
->
hotplug
.
demand_offline
)
{
&&
!
acpi_force_hot_remove
)
{
if
(
!
acpi_scan_is_offline
(
device
,
true
))
if
(
!
acpi_scan_is_offline
(
device
,
true
))
return
-
EBUSY
;
return
-
EBUSY
;
}
else
{
}
else
{
...
...
drivers/acpi/sysfs.c
View file @
27d6b977
...
@@ -921,7 +921,7 @@ void acpi_sysfs_add_hotplug_profile(struct acpi_hotplug_profile *hotplug,
...
@@ -921,7 +921,7 @@ void acpi_sysfs_add_hotplug_profile(struct acpi_hotplug_profile *hotplug,
static
ssize_t
force_remove_show
(
struct
kobject
*
kobj
,
static
ssize_t
force_remove_show
(
struct
kobject
*
kobj
,
struct
kobj_attribute
*
attr
,
char
*
buf
)
struct
kobj_attribute
*
attr
,
char
*
buf
)
{
{
return
sprintf
(
buf
,
"%d
\n
"
,
!!
acpi_force_hot_remove
);
return
sprintf
(
buf
,
"%d
\n
"
,
0
);
}
}
static
ssize_t
force_remove_store
(
struct
kobject
*
kobj
,
static
ssize_t
force_remove_store
(
struct
kobject
*
kobj
,
...
@@ -935,9 +935,10 @@ static ssize_t force_remove_store(struct kobject *kobj,
...
@@ -935,9 +935,10 @@ static ssize_t force_remove_store(struct kobject *kobj,
if
(
ret
<
0
)
if
(
ret
<
0
)
return
ret
;
return
ret
;
lock_device_hotplug
();
if
(
val
)
{
acpi_force_hot_remove
=
val
;
pr_err
(
"Enabling force_remove is not supported anymore. Please report to linux-acpi@vger.kernel.org if you depend on this functionality
\n
"
);
unlock_device_hotplug
();
return
-
EINVAL
;
}
return
size
;
return
size
;
}
}
...
...
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