All of lore.kernel.org
 help / color / mirror / Atom feed
From: keith <kmannth-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org
Cc: naveen.b.s-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	acpi-devel
	<acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	external hotplug mem list
	<lhms-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: [PATCH 1/1]  patch to fix acpi_memhotplug.c
Date: Mon, 14 Nov 2005 21:36:42 -0800	[thread overview]
Message-ID: <1132033003.3798.21.camel@knk> (raw)
In-Reply-To: <1131771825.20603.44.camel@knk>

[-- Attachment #1: Type: text/plain, Size: 1239 bytes --]

Hello,

  I am submitting this patch for inclusion in the acpi development tree.
I have not received any feedback of my beta patch or emails over the
past week.  I cleaned my previous patch up and made the error handling
match the rest of the driver.  I need this patch to support my hardware
(IBM x460/x366/x445) acpi hot-add memory events.   

  In general acpi_bus_get_device fails for my event. 
acpi_bus-0072 [04] bus_get_device        : No context for object [ffff81007ff397f0] 
  The current driver relies on acpi_bus_get_device to create the acpi
memory_device but these call fails for my hardware.  
  
  My event is a single notify with a memory range passed along as data.
The current driver is expecting some other event or series of events (As
I have posted before I am a little confused on how the current driver
works at all).  My code provides a way for the data that is passed along
during the event to be converted directly to the memory_device without
reliance on acpi_bus_get_device.  My code in no way breaks the current
implementation and seems a reasonable addition for increased
flexibility. 

This patch is against 2.6.15-rc1. 

Signed-off-by:  Keith Mannthey <kmannth-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>





[-- Attachment #2: acpi_mem_fixv2.patch --]
[-- Type: text/x-patch, Size: 1680 bytes --]

--- linux-2.6.15-rc1-orig/drivers/acpi/acpi_memhotplug.c	2005-11-14 10:56:13.000000000 -0800
+++ linux-2.6.15-rc1/drivers/acpi/acpi_memhotplug.c	2005-11-14 21:01:43.000000000 -0800
@@ -110,6 +110,30 @@
 	return_VALUE(0);
 }
 
+static int 
+acpi_memory_get_current_resource(acpi_handle handle, struct acpi_memory_device **return_device) {
+	
+	int result;
+	struct acpi_memory_device *mem_device;
+	
+	mem_device = kmalloc(sizeof(struct acpi_memory_device), GFP_KERNEL);
+	if (!mem_device)
+		return_VALUE(-ENOMEM);
+	memset(mem_device,0, sizeof(struct acpi_memory_device));
+
+	mem_device->handle = handle;
+	result = acpi_memory_get_device_resources(mem_device);
+	if (result) {
+		kfree(mem_device);
+		return_VALUE(result);
+	}
+	mem_device->state = MEMORY_POWER_ON_STATE;
+	*return_device = mem_device;
+	
+	return_VALUE(result);
+}
+
+
 static int
 acpi_memory_get_device(acpi_handle handle,
 		       struct acpi_memory_device **mem_device)
@@ -118,6 +142,7 @@
 	acpi_handle phandle;
 	struct acpi_device *device = NULL;
 	struct acpi_device *pdevice = NULL;
+	int result;
 
 	ACPI_FUNCTION_TRACE("acpi_memory_get_device");
 
@@ -147,14 +172,17 @@
 		ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n"));
 		return_VALUE(-EINVAL);
 	}
-
       end:
 	*mem_device = acpi_driver_data(device);
+
 	if (!(*mem_device)) {
-		printk(KERN_ERR "\n driver data not found");
-		return_VALUE(-ENODEV);
+		/* Try and get the memory_device from the current handle */
+		result = acpi_memory_get_current_resource(handle,mem_device);
+		if (result) {
+			printk(KERN_ERR "\nThere is no data for this memory device\n");
+			return_VALUE(-EINVAL);
+		}
 	}
-
 	return_VALUE(0);
 }
 

  reply	other threads:[~2005-11-15  5:36 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-07 21:44 acpi_memhotplug driver is not working for me. Any ideas? keith
2005-11-11  2:45 ` keith
2005-11-12  5:03   ` [RFC][PATCH] patch to fix acpi_memhotplug.c for my hardware keith
2005-11-15  5:36     ` keith [this message]
2005-11-15  9:29       ` [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c KAMEZAWA Hiroyuki
     [not found]         ` <4379AA86.5040901-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2005-11-15  9:33           ` KAMEZAWA Hiroyuki
2005-11-16  2:49           ` keith
2005-11-16  3:26             ` KAMEZAWA Hiroyuki
2005-11-15 10:20       ` Yasunori Goto
     [not found]         ` <20051115171221.7E99.Y-GOTO-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2005-11-17  4:18           ` keith
2005-11-17  6:08             ` KAMEZAWA Hiroyuki
     [not found]               ` <437C1E6C.6000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2005-11-18  2:22                 ` keith
2005-11-18  2:56                   ` KAMEZAWA Hiroyuki
     [not found]                     ` <437D42F1.6080407-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2005-11-18 18:54                       ` keith
2005-11-17  7:01             ` Yasunori Goto

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1132033003.3798.21.camel@knk \
    --to=kmannth-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
    --cc=acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=lhms-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=naveen.b.s-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.