Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 945222 Details for
Bug 1150510
kernel ignores ACPI memory devices (PNP0C80) present at boot time
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
[RHEL6.7 3/7] ACPI / memhotplug: deal with eject request in hotplug queue
0003-ACPI-memhotplug-deal-with-eject-request-in-hotplug-q.patch (text/plain), 4.97 KB, created by
Igor Mammedov
on 2014-10-09 08:12:40 UTC
(
hide
)
Description:
[RHEL6.7 3/7] ACPI / memhotplug: deal with eject request in hotplug queue
Filename:
MIME Type:
Creator:
Igor Mammedov
Created:
2014-10-09 08:12:40 UTC
Size:
4.97 KB
patch
obsolete
>From 424a5eeba0bf75e6e05eb289700f86d330dbdce4 Mon Sep 17 00:00:00 2001 >From: Igor Mammedov <imammedo@redhat.com> >Date: Wed, 8 Oct 2014 12:53:59 +0000 >Subject: [RHEL6.7 3/7] ACPI / memhotplug: deal with eject request in hotplug > queue > >Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1150510 >Upstream: 315bbae9c5cb1f54a6d6fd47b9cf325fbedccf05 >Brew: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=8073569 > >-- > Author: Wen Congyang <wency@cn.fujitsu.com> 2012-11-16 01:04:05 > ACPI / memhotplug: deal with eject request in hotplug queue > > The memory device can be removed by 2 ways: > 1. send eject request by SCI > 2. echo 1 >/sys/bus/pci/devices/PNP0C80:XX/eject > > We handle the 1st case in the module acpi_memhotplug, and handle > the 2nd case in ACPI eject notification. This 2 events may happen > at the same time, so we may touch acpi_memory_device.res_list at > the same time. This patch reimplements memory-hotremove support > through an ACPI eject notification. Now the memory device is > offlined and hotremoved only in the function acpi_memory_device_remove() > which is protected by device_lock(). > > Signed-off-by: Wen Congyang <wency@cn.fujitsu.com> > Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> > Reviewed-by: Toshi Kani <toshi.kani@hp.com> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> >-- > >Signed-off-by: Igor Mammedov <imammedo@redhat.com> >--- > drivers/acpi/acpi_memhotplug.c | 88 +++++------------------------------------- > 1 file changed, 9 insertions(+), 79 deletions(-) > >diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c >index 1c36bf4..0675975 100644 >--- a/drivers/acpi/acpi_memhotplug.c >+++ b/drivers/acpi/acpi_memhotplug.c >@@ -307,40 +307,6 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device) > return 0; > } > >-static int acpi_memory_powerdown_device(struct acpi_memory_device *mem_device) >-{ >- acpi_status status; >- struct acpi_object_list arg_list; >- union acpi_object arg; >- unsigned long long current_status; >- >- >- /* Issue the _EJ0 command */ >- arg_list.count = 1; >- arg_list.pointer = &arg; >- arg.type = ACPI_TYPE_INTEGER; >- arg.integer.value = 1; >- status = acpi_evaluate_object(mem_device->device->handle, >- "_EJ0", &arg_list, NULL); >- /* Return on _EJ0 failure */ >- if (ACPI_FAILURE(status)) { >- ACPI_EXCEPTION((AE_INFO, status, "_EJ0 failed")); >- return -ENODEV; >- } >- >- /* Evalute _STA to check if the device is disabled */ >- status = acpi_evaluate_integer(mem_device->device->handle, "_STA", >- NULL, ¤t_status); >- if (ACPI_FAILURE(status)) >- return -ENODEV; >- >- /* Check for device status. Device should be disabled */ >- if (current_status & ACPI_STA_DEVICE_ENABLED) >- return -EINVAL; >- >- return 0; >-} >- > static int acpi_memory_remove_memory(struct acpi_memory_device *mem_device) > { > int result; >@@ -360,34 +326,11 @@ static int acpi_memory_remove_memory(struct acpi_memory_device *mem_device) > return 0; > } > >-static int acpi_memory_disable_device(struct acpi_memory_device *mem_device) >-{ >- int result; >- >- /* >- * Ask the VM to offline this memory range. >- * Note: Assume that this function returns zero on success >- */ >- result = acpi_memory_remove_memory(mem_device); >- if (result) >- return result; >- >- /* Power-off and eject the device */ >- result = acpi_memory_powerdown_device(mem_device); >- if (result) { >- /* Set the status of the device to invalid */ >- mem_device->state = MEMORY_INVALID_STATE; >- return result; >- } >- >- mem_device->state = MEMORY_POWER_OFF_STATE; >- return result; >-} >- > static void acpi_memory_device_notify(acpi_handle handle, u32 event, void *data) > { > struct acpi_memory_device *mem_device; > struct acpi_device *device; >+ struct acpi_eject_event *ej_event = NULL; > u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; /* default */ > > switch (event) { >@@ -429,32 +372,19 @@ static void acpi_memory_device_notify(acpi_handle handle, u32 event, void *data) > break; > } > >- /* >- * Currently disabling memory device from kernel mode >- * TBD: Can also be disabled from user mode scripts >- * TBD: Can also be disabled by Callback registration >- * with generic sysfs driver >- */ >- if (acpi_memory_disable_device(mem_device)) { >- printk(KERN_ERR PREFIX "Disable memory device\n"); >- /* >- * If _EJ0 was called but failed, _OST is not >- * necessary. >- */ >- if (mem_device->state == MEMORY_INVALID_STATE) >- return; >- >+ ej_event = kmalloc(sizeof(*ej_event), GFP_KERNEL); >+ if (!ej_event) { >+ pr_err(PREFIX "No memory, dropping EJECT\n"); > break; > } > >- /* >- * Invoke acpi_bus_trim() to remove memory device >- */ >- acpi_bus_trim(device, 1); >+ ej_event->handle = handle; >+ ej_event->event = ACPI_NOTIFY_EJECT_REQUEST; >+ acpi_os_hotplug_execute(acpi_bus_hot_remove_device, >+ (void *)ej_event); > >- /* _EJ0 succeeded; _OST is not necessary */ >+ /* eject is performed asynchronously */ > return; >- > default: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Unsupported event [0x%x]\n", event)); >-- >1.8.3.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1150510
:
945218
|
945221
| 945222 |
945223
|
945224
|
945225
|
945226